Ignore:
Timestamp:
Apr 6, 2009, 12:30:29 PM (15 years ago)
Author:
garnier
Message:

update processes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundNucleon.cc

    r819 r962  
    2424// ********************************************************************
    2525//
    26 // by V. Lara
     26//
     27// $Id: G4PreCompoundNucleon.cc,v 1.13 2009/02/11 18:06:00 vnivanch Exp $
     28// GEANT4 tag $Name: geant4-09-02-ref-02 $
     29//
     30// -------------------------------------------------------------------
     31//
     32// GEANT4 Class file
     33//
     34//
     35// File name:     G4PreCompoundNucleon
     36//
     37// Author:         V.Lara
     38//
     39// Modified: 
     40// 10.02.2009 J. M. Quesada cleanup
     41//
    2742
    2843#include "G4PreCompoundNucleon.hh"
    2944#include "G4PreCompoundParameters.hh"
    3045
     46G4bool G4PreCompoundNucleon::IsItPossible(const G4Fragment& aFragment)
     47{
     48  G4int pplus = aFragment.GetNumberOfCharged();   
     49  G4int pneut = aFragment.GetNumberOfParticles()-pplus;
     50  return (pneut >= (GetA()-GetZ()) && pplus >= GetZ());
     51}
    3152
    3253G4double G4PreCompoundNucleon::
     
    3657  if ( !IsItPossible(aFragment) ) return 0.0;
    3758
    38   const G4double r0 = G4PreCompoundParameters::GetAddress()->Getr0();
    39 
    4059  G4double U = aFragment.GetExcitationEnergy();
    4160  G4double P = aFragment.GetNumberOfParticles();
     
    4362  G4double N = P + H;
    4463 
    45   // g = (6.0/pi2)*a*A
    46   //  G4EvaporationLevelDensityParameter theLDP;
    4764  G4double g0 = (6.0/pi2)*aFragment.GetA() *
    4865    G4PreCompoundParameters::GetAddress()->GetLevelDensity();
    49   //    theLDP.LevelDensityParameter(static_cast<G4int>(aFragment.GetA()),static_cast<G4int>(aFragment.GetZ()),U);
     66 
    5067  G4double g1 = (6.0/pi2)*GetRestA() *
    5168    G4PreCompoundParameters::GetAddress()->GetLevelDensity();
    52     //    theLDP.LevelDensityParameter(static_cast<G4int>(GetRestA()),static_cast<G4int>(GetRestZ()),U);
    5369
    5470  G4double A0 = ((P*P+H*H+P-H)/4.0 - H/2.0)/g0;
    55   G4double A1 = (A0*g0 - P/2.0)/g1;
     71
     72  G4double A1 = (A0 - P/2.0)/g1;
    5673 
    5774  G4double E0 = std::max(0.0,U - A0);
     
    6178
    6279
    63   G4double Probability = 2.0/(hbarc*hbarc*hbarc) * GetReducedMass() *
    64       GetRj(aFragment.GetNumberOfParticles(), aFragment.GetNumberOfCharged()) * r0 * r0 * std::pow(GetRestA(),2.0/3.0) * GetAlpha() * (eKin + GetBeta()) *
    65       P*(N-1.0) * std::pow(g1*E1/(g0*E0),N-2.0)/E0 *
    66       g1/(g0*g0);
     80  G4double Probability = 1.0/pi2*2.0/(hbarc*hbarc*hbarc) * GetReducedMass()
     81    * GetRj(aFragment.GetNumberOfParticles(), aFragment.GetNumberOfCharged()) 
     82    * eKin*CrossSection(eKin)*millibarn * P*(N-1.0) * std::pow(g1*E1/(g0*E0),N-2.0)/E0 * g1/(g0*g0);
     83
     84  if (GetRj(aFragment.GetNumberOfParticles(), aFragment.GetNumberOfCharged())<0.0
     85      || CrossSection(eKin) <0) { 
     86    std::ostringstream errOs;
     87    G4cout<<"WARNING:  NEGATIVE VALUES "<<G4endl;     
     88    errOs << "Rj=" << GetRj(aFragment.GetNumberOfParticles(), aFragment.GetNumberOfCharged())
     89          <<G4endl;
     90    errOs <<"  xsec("<<eKin<<" MeV) ="<<CrossSection(eKin)<<G4endl;
     91    errOs <<"  A="<<GetA()<<"  Z="<<GetZ()<<G4endl;
     92    throw G4HadronicException(__FILE__, __LINE__, errOs.str());
     93  }
    6794
    6895  return Probability;
    6996}
     97
     98
     99
     100
     101
     102
     103
     104
     105
     106
     107
     108
     109
     110
     111
     112
Note: See TracChangeset for help on using the changeset viewer.