44    fRadiusConst(1.08*
fermi),  
    45    fTotalXsc(0.0), fElasticXsc(0.0), fInelasticXsc(0.0), fProductionXsc(0.0),
   149     if(ratio < 0.) ratio = 0.;
   159   outFile << 
"G4ComponentGGNuclNuclXsc calculates total, inelastic and\n"   160           << 
"elastic cross sections for nucleus-nucleus collisions using\n"   161           << 
"the Glauber model with Gribov corrections.  It is valid for\n"   162           << 
"all incident energies above 100 keV./n";
   171   G4bool applicable = 
false;
   174   if (kineticEnergy >= 
fLowerLimit && Z > 1) applicable = 
true;
   222   if( pN < 0. ) pN = 0.;
   225   if( tN < 0. ) tN = 0.;
   249     nucleusSquare = cofTotal*
pi*( pR*pR + tR*tR );   
   251     ratio      = sigma/nucleusSquare;
   252     xsection   = nucleusSquare*
G4Log( 1. + ratio );
   272     sigma = (pZ*tZ+pN*tN)*ppInXsc + (pZ*tN+pN*tZ)*npInXsc;
   274     ratio = sigma/nucleusSquare;
   306   G4double totEcm  = std::sqrt(pM*pM + tM*tM + 2.*pElab*tM);
   318   if( totTcm <= bC ) ratio = 0.;
   319   else             ratio = 1. - bC/totTcm;
   322   if( ratio < 0.) ratio = 0.;
   336   G4double sigma, cofInelastic = 2.4, cofTotal = 2.0, nucleusSquare, ratio;
   345   if( pN < 0. ) pN = 0.;
   348   if( tN < 0. ) tN = 0.;
   356   nucleusSquare = cofTotal*
pi*( pR*pR + tR*tR );   
   357   ratio = sigma/nucleusSquare;
   359   G4double difratio = ratio/(1.+ratio);
   376   G4double sigma, cofInelastic = 2.4, cofTotal = 2.0, nucleusSquare, ratio;
   385   if( pN < 0. ) pN = 0.;
   388   if( tN < 0. ) tN = 0.;
   396   nucleusSquare = cofTotal*
pi*( pR*pR + tR*tR );   
   397   ratio = sigma/nucleusSquare;
   401   ratio = sigma/nucleusSquare;
   406   if ( ratio < 0. )                   ratio = 0.;
   444   GetIonTable()->GetIonMass(Zt, At);
   445   targ_mass = 0.939*
GeV;  
   452   proj_momentum /= 
GeV;
   547   G4double proj_energy   = proj_mass + pTkin; 
   548   G4double proj_momentum = std::sqrt(pTkin*(pTkin+2*proj_mass));
   553   proj_momentum /= 
GeV;
   564   if( proj_momentum >= 373.)
   568   else if( proj_momentum >= 10. ) 
   574     if (proj_momentum >= 10.) {
   576       A0 = 100. - B0*
G4Log(3.0e7);
   578       xsection = A0 + B0*
G4Log(proj_energy) - 11
   580                   0.93827*0.93827,-0.165);        
   585       if(pParticle == tParticle) 
   587         if( proj_momentum < 0.73 )
   591         else if( proj_momentum < 1.05  )
   593           hnXscv = 23 + 40*(
G4Log(proj_momentum/0.73))*
   594                          (
G4Log(proj_momentum/0.73));
   605         if( proj_momentum < 0.8 )
   609         else if( proj_momentum < 1.4 )
   635   G4int absPDGcode = std::abs(PDGcode);
   645   G4double sqrLogPlab = LogPlab * LogPlab;
   649   G4double NumberOfTargetProtons  = Zt; 
   650   G4double NumberOfTargetNucleons = At;
   651   G4double NumberOfTargetNeutrons = NumberOfTargetNucleons - NumberOfTargetProtons;
   653   if(NumberOfTargetNeutrons < 0.) NumberOfTargetNeutrons = 0.;
   655   G4double Xtotal = 0., Xelastic = 0., Xinelastic =0.;
   657   if( absPDGcode > 1000 )  
   660                          0.522*sqrLogPlab - 4.51*LogPlab;
   663                          0.513*sqrLogPlab - 4.27*LogPlab;
   666                          0.169*sqrLogPlab - 1.85*LogPlab;
   669                          0.169*sqrLogPlab - 1.85*LogPlab;
   671        Xtotal          = ( NumberOfTargetProtons  * XtotPP +
   672                            NumberOfTargetNeutrons * XtotPN  );
   674        Xelastic        = ( NumberOfTargetProtons  * XelPP  +
   675                            NumberOfTargetNeutrons * XelPN   );
   678   Xinelastic = Xtotal - Xelastic;
   679   if(Xinelastic < 0.) Xinelastic = 0.;
   712     R *= ( a1 + b1*
G4Exp( -(At - meanA)/tauA1) ); 
   716     R *= ( 1.0 + b2*( 1. - 
G4Exp( (At - meanA)/tauA2) ) ); 
   720     R *= ( 1.0 + b3*( 1. - 
G4Exp( (At - meanA)/tauA3) ) ); 
   756     R *= ( 0.8 + 0.2*
G4Exp( -(At - meanA)/tauA) ); 
   760     R *= ( 1.0 + 0.1*( 1. - 
G4Exp( (At - meanA)/tauA) ) ); 
   787     if     (std::abs(A-1.) < 0.5)                         
return 0.89*
fermi; 
   788     else if(std::abs(A-2.) < 0.5)                         
return 2.13*
fermi; 
   789     else if(std::abs(Z-1.) < 0.5 && std::abs(A-3.) < 0.5) 
return 1.80*
fermi; 
   791     else if(std::abs(Z-2.) < 0.5 && std::abs(A-3.) < 0.5) 
return 1.96*
fermi; 
   792     else if(std::abs(Z-2.) < 0.5 && std::abs(A-4.) < 0.5) 
return 1.68*
fermi; 
   794     else if(std::abs(Z-3.) < 0.5)                         
return 2.40*
fermi; 
   795     else if(std::abs(Z-4.) < 0.5)                         
return 2.51*
fermi; 
   822   if     (std::abs(A-1.) < 0.5)                         
return 0.89*
fermi; 
   823   else if(std::abs(A-2.) < 0.5)                         
return 2.13*
fermi; 
   824   else if(std::abs(Z-1.) < 0.5 && std::abs(A-3.) < 0.5) 
return 1.80*
fermi; 
   826   else if(std::abs(Z-2.) < 0.5 && std::abs(A-3.) < 0.5) 
return 1.96*
fermi; 
   827   else if(std::abs(Z-2.) < 0.5 && std::abs(A-4.) < 0.5) 
return 1.68*
fermi; 
   829   else if(std::abs(Z-3.) < 0.5)                         
return 2.40*
fermi; 
   830   else if(std::abs(Z-4.) < 0.5)                         
return 2.51*
fermi; 
   844   G4double Elab = std::sqrt ( mp * mp + Plab * Plab );
   845   G4double Ecm  = std::sqrt ( mp * mp + mt * mt + 2 * Elab * mt );
   861   G4double Elab = std::sqrt ( mp * mp + Plab * Plab );
   862   G4double sMand  = mp*mp + mt*mt + 2*Elab*mt ;
 static G4Pow * GetInstance()
 
G4double GetNucleusRadiusGG(G4double At)
 
G4int GetBaryonNumber() const
 
G4DynamicParticle cacheDP
 
G4double GetHadronNucleonXscNS(const G4ParticleDefinition *, G4double pTkin, const G4ParticleDefinition *)
 
G4double GetNucleusRadius(const G4DynamicParticle *, const G4Element *)
 
virtual G4double GetInelasticElementCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A)
 
G4ComponentGGNuclNuclXsc()
 
virtual G4double GetTotalElementCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A)
 
virtual ~G4ComponentGGNuclNuclXsc()
 
static G4NistManager * Instance()
 
G4double GetIonMass(G4int Z, G4int A, G4int L=0, G4int lvl=0) const
 
G4double GetTotalEnergy() const
 
G4double GetHadronNucleonXscNS(const G4DynamicParticle *, const G4ParticleDefinition *)
 
G4double GetKineticEnergy() const
 
G4ThreeVector GetMomentum() const
 
const G4ParticleDefinition * theNeutron
 
double A(double temperature)
 
G4IonTable * GetIonTable() const
 
G4int GetPDGEncoding() const
 
G4double CalcMandelstamS(const G4double, const G4double, const G4double)
 
G4DynamicParticle dNeutron
 
static G4Proton * Proton()
 
G4double GetHadronNucleonXsc(const G4DynamicParticle *, const G4Element *)
 
G4double GetNucleusRadiusRMS(G4double Zt, G4double At)
 
static G4Neutron * Neutron()
 
G4double GetRatioQE(const G4DynamicParticle *, G4double At, G4double Zt)
 
virtual void CrossSectionDescription(std::ostream &) const
 
void SetKineticEnergy(G4double aEnergy)
 
G4double G4Log(G4double x)
 
G4double G4Exp(G4double initial_x)
Exponential Function double precision. 
 
const G4double fRadiusConst
 
G4double CalculateEcmValue(const G4double, const G4double, const G4double)
 
G4HadronNucleonXsc * hnXsc
 
static G4ParticleTable * GetParticleTable()
 
const G4ParticleDefinition * theProton
 
G4DynamicParticle dProton
 
G4double GetPDGMass() const
 
G4double GetRatioSD(const G4DynamicParticle *, G4double At, G4double Zt)
 
static const double millibarn
 
virtual G4double GetTotalIsotopeCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A)
 
G4ParticleDefinition * GetDefinition() const
 
G4double GetHNinelasticXscVU(const G4DynamicParticle *, G4int At, G4int Zt)
 
G4bool IsElementApplicable(const G4DynamicParticle *, G4int Z, const G4Material *)
 
G4double powA(G4double A, G4double y) const
 
void SetDefinition(const G4ParticleDefinition *aParticleDefinition)
 
virtual G4double GetInelasticIsotopeCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A)
 
G4double GetElementCrossSection(const G4DynamicParticle *, G4int Z, const G4Material *)
 
G4double GetNucleusRadiusDE(G4double Zt, G4double At)
 
G4double GetCoulombBarier(const G4DynamicParticle *, G4double Z, G4double A, G4double pR, G4double tR)
 
virtual G4double GetElasticIsotopeCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A)
 
G4double GetPDGCharge() const
 
G4double GetHadronNucleonXscPDG(const G4ParticleDefinition *, G4double sMand, const G4ParticleDefinition *)
 
static const double fermi
 
virtual G4double GetElasticElementCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A)
 
G4double GetInelasticHadronNucleonXsc()
 
virtual G4double ComputeQuasiElasticRatio(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A)
 
G4double GetZandACrossSection(const G4DynamicParticle *, G4int Z, G4int A)