44   fLowerLimit( 0.03 * 
MeV ),
    45   fTotalXsc(0.0), fElasticXsc(0.0), fInelasticXsc(0.0)
    88   outFile << 
"G4HadronNucleonXsc calculates the total, inelastic and elastic\n"    89           << 
"hadron-nucleon cross sections using several different\n"    90           << 
"parameterizations within the Glauber-Gribov approach. It is\n"    91           << 
"valid for all incident gammas and long-lived hadrons at\n"    92           << 
"energies above 30 keV.  This is a cross section component which\n"    93           << 
"is to be used to build a cross section data set.\n"; 
   112   G4bool applicable = 
false;
   131          theParticle == 
thePiMinus       ) )    ) applicable = 
true;
   158   proj_momentum /= 
GeV;
   165   if(theParticle == 
theGamma && pORn ) 
   167     xsection = (0.0677*std::pow(sMand,0.0808) + 0.129*std::pow(sMand,-0.4525));
   171     xsection = (21.70*std::pow(sMand,0.0808) + 56.08*std::pow(sMand,-0.4525));
   173   else if(theParticle == 
theProton && pORn ) 
   175     xsection = (21.70*std::pow(sMand,0.0808) + 56.08*std::pow(sMand,-0.4525));
   182     xsection = ( 21.70*std::pow(sMand,0.0808) + 98.39*std::pow(sMand,-0.4525));
   184   else if(theParticle == 
thePiPlus && pORn ) 
   186     xsection = (13.63*std::pow(sMand,0.0808) + 27.56*std::pow(sMand,-0.4525));
   191     xsection = (13.63*std::pow(sMand,0.0808) + 36.02*std::pow(sMand,-0.4525));
   193   else if(theParticle == 
theKPlus && pORn ) 
   195     xsection = (11.82*std::pow(sMand,0.0808) + 8.15*std::pow(sMand,-0.4525));
   197   else if(theParticle == 
theKMinus && pORn ) 
   199     xsection = (11.82*std::pow(sMand,0.0808) + 26.36*std::pow(sMand,-0.4525));
   203     xsection = (21.70*std::pow(sMand,0.0808) + 56.08*std::pow(sMand,-0.4525));
   227   G4int Zt=1, Nt=1, At=1;
   255       xsection = Zt*( 35.80 + B*std::pow(
G4Log(sMand/s0),2.) 
   256          + 40.15*std::pow(sMand,-eta1) - 30.*std::pow(sMand,-eta2));
   260       xsection  = Nt*( 35.45 + B*std::pow(
G4Log(sMand/s0),2.) 
   261               + 42.53*std::pow(sMand,-eta1) - 33.34*std::pow(sMand,-eta2)); 
   268       xsection  = Zt*( 35.45 + B*std::pow(
G4Log(sMand/s0),2.) 
   269                           + 42.53*std::pow(sMand,-eta1) - 33.34*std::pow(sMand,-eta2));
   273       xsection = Nt*( 35.80 + B*std::pow(
G4Log(sMand/s0),2.) 
   274                           + 40.15*std::pow(sMand,-eta1) - 30.*std::pow(sMand,-eta2));
   281       xsection  = Zt*( 35.45 + B*std::pow(
G4Log(sMand/s0),2.) 
   282                           + 42.53*std::pow(sMand,-eta1) + 33.34*std::pow(sMand,-eta2));
   286       xsection = Nt*( 35.80 + B*std::pow(
G4Log(sMand/s0),2.) 
   287                           + 40.15*std::pow(sMand,-eta1) + 30.*std::pow(sMand,-eta2));
   290   else if(theParticle == 
thePiPlus && pORn ) 
   292     xsection  = At*( 20.86 + B*std::pow(
G4Log(sMand/s0),2.) 
   293                           + 19.24*std::pow(sMand,-eta1) - 6.03*std::pow(sMand,-eta2));
   297     xsection  = At*( 20.86 + B*std::pow(
G4Log(sMand/s0),2.) 
   298                           + 19.24*std::pow(sMand,-eta1) + 6.03*std::pow(sMand,-eta2));
   304       xsection  = Zt*( 17.91 + B*std::pow(
G4Log(sMand/s0),2.) 
   305                           + 7.14*std::pow(sMand,-eta1) - 13.45*std::pow(sMand,-eta2));
   309       xsection = Nt*( 17.87 + B*std::pow(
G4Log(sMand/s0),2.) 
   310                           + 5.17*std::pow(sMand,-eta1) - 7.23*std::pow(sMand,-eta2));
   317       xsection  = Zt*( 17.91 + B*std::pow(
G4Log(sMand/s0),2.) 
   318                           + 7.14*std::pow(sMand,-eta1) + 13.45*std::pow(sMand,-eta2));
   322       xsection = Nt*( 17.87 + B*std::pow(
G4Log(sMand/s0),2.) 
   323                           + 5.17*std::pow(sMand,-eta1) + 7.23*std::pow(sMand,-eta2) );
   326   else if(theParticle == 
theSMinus && pORn ) 
   328     xsection  = At*( 35.20 + B*std::pow(
G4Log(sMand/s0),2.) 
   329                           - 199.*std::pow(sMand,-eta1) + 264.*std::pow(sMand,-eta2) );
   331   else if(theParticle == 
theGamma && pORn ) 
   333     xsection  = At*( 0.0 + B*std::pow(
G4Log(sMand/s0),2.) 
   334                           + 0.032*std::pow(sMand,-eta1) - 0.0*std::pow(sMand,-eta2) );
   341       xsection  = Zt*( 35.45 + B*std::pow(
G4Log(sMand/s0),2.) 
   342                        + 42.53*std::pow(sMand,-eta1) - 33.34*std::pow(sMand,-eta2) );
   346       xsection = Nt*( 35.80 + B*std::pow(
G4Log(sMand/s0),2.) 
   347                       + 40.15*std::pow(sMand,-eta1) - 30.*std::pow(sMand,-eta2));
   418       fElasticXsc = 6.5 + 0.308*std::pow(
G4Log(sMand/400.),1.65) + 9.19*std::pow(sMand,-0.458);
   423     else if( pLab >= 100.)
   426       A0 = 100. - B0*
G4Log(3.0e7);
   428       xsection = A0 + B0*
G4Log(pE) - 11
   430                   + 103*std::pow(sMand,-0.165);        
   432       fElasticXsc = 5.53 + 0.308*std::pow(
G4Log(sMand/28.9),1.1) + 9.19*std::pow(sMand,-0.458);
   436     else if( pLab >= 10.)
   439         A0 = 100. - B0*
G4Log(3.0e7);
   441         xsection = A0 + B0*
G4Log(pE) - 11
   442                   + 103*std::pow(2*0.93827*pE + pM*pM+
   443                      0.93827*0.93827,-0.165);        
   445       fElasticXsc =  6 + 20/( (logP-0.182)*(logP-0.182) + 1.0 );
   453           hnXsc = 23 + 50*( std::pow( 
G4Log(0.73/pLab), 3.5 ) );
   456         else if( pLab < 0.73 )
   458           hnXsc = 23 + 50*( std::pow( 
G4Log(0.73/pLab), 3.5 ) );
   461         else if( pLab < 1.05  )
   463           hnXsc = 23 + 40*(
G4Log(pLab/0.73))*
   470           hnXsc = 39.0+75*(pLab - 1.2)/(std::pow(pLab,3.0) + 0.15);
   472           fElasticXsc =  6 + 20/( (logP-0.182)*(logP-0.182) + 1.0 );
   480           hpXsc = 4100+30*std::pow(
G4Log(1.3/pLab),3.6); 
   483         else if( pLab < 0.8 )
   485           hpXsc = 33+30*std::pow(
G4Log(pLab/1.3),4.0);
   488         else if( pLab < 1.05 )
   490           hpXsc = 33+30*std::pow(
G4Log(pLab/0.95),2.0);
   493         else if( pLab < 1.4 )
   495           hpXsc = 33+30*std::pow(
G4Log(pLab/0.95),2.0);
   500           hpXsc = 33.3 + 20.8*(std::pow(pLab,2.0) - 1.35)/(std::pow(pLab,2.50) + 0.95);
   502           fElasticXsc =  6 + 20/( (logP-0.182)*(logP-0.182) + 1.0 );
   508   else if( theParticle == 
theProton && pORn ) 
   514       fElasticXsc = 6.5 + 0.308*std::pow(
G4Log(sMand/400.),1.65) + 9.19*std::pow(sMand,-0.458);
   518     else if( pLab >= 100.)
   521       A0 = 100. - B0*
G4Log(3.0e7);
   523       xsection = A0 + B0*
G4Log(pE) - 11 + 103*std::pow(sMand,-0.165);        
   525       fElasticXsc = 5.53 + 0.308*std::pow(
G4Log(sMand/28.9),1.1) + 9.19*std::pow(sMand,-0.458);
   529     else if( pLab >= 10.)
   532       A0 = 100. - B0*
G4Log(3.0e7);
   534       xsection = A0 + B0*
G4Log(pE) - 11 + 103*std::pow(sMand,-0.165);        
   536       fElasticXsc =  6 + 20/( (logP-0.182)*(logP-0.182) + 1.0 );
   548           hpXsc = 23 + 50*( std::pow( 
G4Log(0.73/pLab), 3.5 ) );
   551         else if( pLab < 0.73 )
   553           hpXsc = 23 + 50*( std::pow( 
G4Log(0.73/pLab), 3.5 ) );
   556         else if( pLab < 1.05  )
   558           hpXsc = 23 + 40*(
G4Log(pLab/0.73))*
   565           hpXsc = 39.0+75*(pLab - 1.2)/(std::pow(pLab,3.0) + 0.15);
   567           fElasticXsc =  6 + 20/( (logP-0.182)*(logP-0.182) + 1.0 );
   575           hnXsc = 4100+30*std::pow(
G4Log(1.3/pLab),3.6); 
   578         else if( pLab < 0.8 )
   580           hnXsc = 33+30*std::pow(
G4Log(pLab/1.3),4.0);
   583         else if( pLab < 1.05 )
   585           hnXsc = 33+30*std::pow(
G4Log(pLab/0.95),2.0);
   588         else if( pLab < 1.4 )
   590           hnXsc = 33+30*std::pow(
G4Log(pLab/0.95),2.0);
   595           hnXsc = 33.3 + 20.8*(std::pow(pLab,2.0) - 1.35)/(std::pow(pLab,2.50) + 0.95);
   597           fElasticXsc =  6 + 20/( (logP-0.182)*(logP-0.182) + 1.0 );
   607       xsection  = 35.45 + B*std::pow(
G4Log(sMand/s0),2.) 
   608                           + 42.53*std::pow(sMand,-eta1) + 33.34*std::pow(sMand,-eta2);
   612       xsection = 35.80 + B*std::pow(
G4Log(sMand/s0),2.) 
   613                           + 40.15*std::pow(sMand,-eta1) + 30.*std::pow(sMand,-eta2);
   617   else if( theParticle == 
thePiPlus && pORn ) 
   623         hpXsc       = 10./((logP + 1.273)*(logP + 1.273) + 0.05);
   626       else if( pLab < 0.4 )
   628         hpXsc       = 14./( (logP + 1.273)*(logP + 1.273) + 0.07);
   631       else if( pLab < 0.68 )
   633         hpXsc       = 14./( (logP + 1.273)*(logP + 1.273) + 0.07);
   636       else if( pLab < 0.85 )
   642       else if( pLab < 1.15 )
   647         fElasticXsc = 6.0 + 1.4/(( pLab - 1.4)*( pLab - 1.4) + 0.1);
   651         G4double Ex1 = 3.2*
G4Exp(-(pLab-2.55)*(pLab-2.55)/0.55/0.55);
   652         G4double Ex2 = 12*
G4Exp(-(pLab-1.47)*(pLab-1.47)/0.225/0.225);
   653         hpXsc        = Ex1 + Ex2 + 27.5;
   654         fElasticXsc = 6.0 + 1.4/(( pLab - 1.4)*( pLab - 1.4) + 0.1);
   656       else if( pLab < 2.0 ) 
   658         G4double Ex1 = 3.2*
G4Exp(-(pLab-2.55)*(pLab-2.55)/0.55/0.55);
   659         G4double Ex2 = 12*
G4Exp(-(pLab-1.47)*(pLab-1.47)/0.225/0.225);
   660         hpXsc        = Ex1 + Ex2 + 27.5;
   661         fElasticXsc = 3.0 + 1.36/( (logP - 0.336)*(logP - 0.336) + 0.08);    
   663       else if( pLab < 3.5 ) 
   665         G4double Ex1 = 3.2*
G4Exp(-(pLab-2.55)*(pLab-2.55)/0.55/0.55);
   666         G4double Ex2 = 12*
G4Exp(-(pLab-1.47)*(pLab-1.47)/0.225/0.225);
   667         hpXsc        = Ex1 + Ex2 + 27.5;
   668         fElasticXsc = 3.0 + 6.20/( (logP - 0.336)*(logP - 0.336) + 0.8);    
   670       else if( pLab < 200. ) 
   672         hpXsc = 10.6 + 2.*
G4Log(pE) + 25*std::pow(pE, -0.43 ); 
   674         fElasticXsc = 3.0 + 6.20/( (logP - 0.336)*(logP - 0.336) + 0.8);    
   679         fElasticXsc = 3.0 + 6.20/( (logP - 0.336)*(logP - 0.336) + 0.8);    
   687         hnXsc       = 0.288/((pLab - 0.28)*(pLab - 0.28) + 0.004);
   688         fElasticXsc = 1.8/((logP + 1.273)*(logP + 1.273) + 0.07);
   690       else if( pLab < 0.395676 ) 
   692         hnXsc       = 0.648/((pLab - 0.28)*(pLab - 0.28) + 0.009);
   693         fElasticXsc = 0.257/((pLab - 0.28)*(pLab - 0.28) + 0.01);
   695       else if( pLab < 0.5 )
   697         hnXsc       = 26 + 110*(
G4Log(pLab/0.48))*(
G4Log(pLab/0.48));
   700       else if( pLab < 0.65 )
   702         hnXsc       = 26 + 110*(
G4Log(pLab/0.48))*(
G4Log(pLab/0.48));
   703         fElasticXsc = 0.95/((pLab - 0.72)*(pLab - 0.72) + 0.049);
   705       else if( pLab < 0.72 )
   707         hnXsc = 36.1 + 10*
G4Exp(-(pLab-0.72)*(pLab-0.72)/0.06/0.06)+
   708                 24*
G4Exp(-(pLab-1.015)*(pLab-1.015)/0.075/0.075);
   709         fElasticXsc = 0.95/((pLab - 0.72)*(pLab - 0.72) + 0.049);
   711       else if( pLab < 0.88 )
   713         hnXsc = 36.1 + 10*
G4Exp(-(pLab-0.72)*(pLab-0.72)/0.06/0.06)+
   714                 24*
G4Exp(-(pLab-1.015)*(pLab-1.015)/0.075/0.075);
   715         fElasticXsc = 0.95/((pLab - 0.72)*(pLab - 0.72) + 0.049);
   717       else if( pLab < 1.03 )
   719         hnXsc = 36.1 + 10*
G4Exp(-(pLab-0.72)*(pLab-0.72)/0.06/0.06)+
   720                 24*
G4Exp(-(pLab-1.015)*(pLab-1.015)/0.075/0.075);
   721         fElasticXsc = 2.0 + 0.4/((pLab - 1.03)*(pLab - 1.03) + 0.016);
   723       else if( pLab < 1.15 )
   725         hnXsc = 36.1 + 10*
G4Exp(-(pLab-0.72)*(pLab-0.72)/0.06/0.06)+
   726                 24*
G4Exp(-(pLab-1.015)*(pLab-1.015)/0.075/0.075);
   727         fElasticXsc = 2.0 + 0.4/((pLab - 1.03)*(pLab - 1.03) + 0.016);
   729       else if( pLab < 1.3 )
   731         hnXsc = 36.1 + 10*
G4Exp(-(pLab-0.72)*(pLab-0.72)/0.06/0.06)+
   732                 24*
G4Exp(-(pLab-1.015)*(pLab-1.015)/0.075/0.075);
   735       else if( pLab < 2.6 ) 
   737         hnXsc = 36.1 + 0.079-4.313*
G4Log(pLab)+
   738                 3*
G4Exp(-(pLab-2.1)*(pLab-2.1)/0.4/0.4)+
   739                 1.5*
G4Exp(-(pLab-1.4)*(pLab-1.4)/0.12/0.12);
   742       else if( pLab < 20. ) 
   744         hnXsc = 36.1 + 0.079 - 4.313*
G4Log(pLab)+
   745                 3*
G4Exp(-(pLab-2.1)*(pLab-2.1)/0.4/0.4)+
   746                 1.5*
G4Exp(-(pLab-1.4)*(pLab-1.4)/0.12/0.12);
   763         hnXsc       = 10./((logP + 1.273)*(logP + 1.273) + 0.05);
   766       else if( pLab < 0.4 )
   768         hnXsc       = 14./( (logP + 1.273)*(logP + 1.273) + 0.07);
   771       else if( pLab < 0.68 )
   773         hnXsc       = 14./( (logP + 1.273)*(logP + 1.273) + 0.07);
   776       else if( pLab < 0.85 )
   782       else if( pLab < 1.15 )
   787         fElasticXsc = 6.0 + 1.4/(( pLab - 1.4)*( pLab - 1.4) + 0.1);
   791         G4double Ex1 = 3.2*
G4Exp(-(pLab-2.55)*(pLab-2.55)/0.55/0.55);
   792         G4double Ex2 = 12*
G4Exp(-(pLab-1.47)*(pLab-1.47)/0.225/0.225);
   793         hnXsc        = Ex1 + Ex2 + 27.5;
   794         fElasticXsc = 6.0 + 1.4/(( pLab - 1.4)*( pLab - 1.4) + 0.1);
   796       else if( pLab < 2.0 ) 
   798         G4double Ex1 = 3.2*
G4Exp(-(pLab-2.55)*(pLab-2.55)/0.55/0.55);
   799         G4double Ex2 = 12*
G4Exp(-(pLab-1.47)*(pLab-1.47)/0.225/0.225);
   800         hnXsc        = Ex1 + Ex2 + 27.5;
   801         fElasticXsc = 3.0 + 1.36/( (logP - 0.336)*(logP - 0.336) + 0.08);    
   803       else if( pLab < 3.5 ) 
   805         G4double Ex1 = 3.2*
G4Exp(-(pLab-2.55)*(pLab-2.55)/0.55/0.55);
   806         G4double Ex2 = 12*
G4Exp(-(pLab-1.47)*(pLab-1.47)/0.225/0.225);
   807         hnXsc        = Ex1 + Ex2 + 27.5;
   808         fElasticXsc = 3.0 + 6.20/( (logP - 0.336)*(logP - 0.336) + 0.8);    
   810       else if( pLab < 200. ) 
   812         hnXsc = 10.6 + 2.*
G4Log(pE) + 25*std::pow(pE, -0.43 ); 
   813         fElasticXsc = 3.0 + 6.20/( (logP - 0.336)*(logP - 0.336) + 0.8);    
   818         fElasticXsc = 3.0 + 6.20/( (logP - 0.336)*(logP - 0.336) + 0.8);    
   826         hpXsc       = 0.288/((pLab - 0.28)*(pLab - 0.28) + 0.004);
   827         fElasticXsc = 1.8/((logP + 1.273)*(logP + 1.273) + 0.07);
   829       else if( pLab < 0.395676 ) 
   831         hpXsc       = 0.648/((pLab - 0.28)*(pLab - 0.28) + 0.009);
   832         fElasticXsc = 0.257/((pLab - 0.28)*(pLab - 0.28) + 0.01);
   834       else if( pLab < 0.5 )
   836         hpXsc       = 26 + 110*(
G4Log(pLab/0.48))*(
G4Log(pLab/0.48));
   839       else if( pLab < 0.65 )
   841         hpXsc       = 26 + 110*(
G4Log(pLab/0.48))*(
G4Log(pLab/0.48));
   842         fElasticXsc = 0.95/((pLab - 0.72)*(pLab - 0.72) + 0.049);
   844       else if( pLab < 0.72 )
   847                 10*
G4Exp(-(pLab-0.72)*(pLab-0.72)/0.06/0.06)+
   848                 24*
G4Exp(-(pLab-1.015)*(pLab-1.015)/0.075/0.075);
   849         fElasticXsc = 0.95/((pLab - 0.72)*(pLab - 0.72) + 0.049);
   851       else if( pLab < 0.88 )
   854                 10*
G4Exp(-(pLab-0.72)*(pLab-0.72)/0.06/0.06)+
   855                 24*
G4Exp(-(pLab-1.015)*(pLab-1.015)/0.075/0.075);
   856         fElasticXsc = 0.95/((pLab - 0.72)*(pLab - 0.72) + 0.049);
   858       else if( pLab < 1.03 )
   861                 10*
G4Exp(-(pLab-0.72)*(pLab-0.72)/0.06/0.06)+
   862                 24*
G4Exp(-(pLab-1.015)*(pLab-1.015)/0.075/0.075);
   863         fElasticXsc = 2.0 + 0.4/((pLab - 1.03)*(pLab - 1.03) + 0.016);
   865       else if( pLab < 1.15 )
   868                 10*
G4Exp(-(pLab-0.72)*(pLab-0.72)/0.06/0.06)+
   869                 24*
G4Exp(-(pLab-1.015)*(pLab-1.015)/0.075/0.075);
   870         fElasticXsc = 2.0 + 0.4/((pLab - 1.03)*(pLab - 1.03) + 0.016);
   872       else if( pLab < 1.3 )
   875                 10*
G4Exp(-(pLab-0.72)*(pLab-0.72)/0.06/0.06)+
   876                 24*
G4Exp(-(pLab-1.015)*(pLab-1.015)/0.075/0.075);
   879       else if( pLab < 2.6 ) 
   881         hpXsc = 36.1+0.079-4.313*
G4Log(pLab)+
   882                 3*
G4Exp(-(pLab-2.1)*(pLab-2.1)/0.4/0.4)+
   883                 1.5*
G4Exp(-(pLab-1.4)*(pLab-1.4)/0.12/0.12);
   894   else if( (theParticle == 
theKMinus || theParticle == 
theK0S) && proton )   
   898       G4double psp = pLab*std::sqrt(pLab);
   902     else if( pLab > pMax )
   929       fElasticXsc  = 5.2/psp + (1.1*cofLogE*ld2 + 2.23)/(1. - .7/sp + .075/p4) 
   930                  + .004/md + 0.005/hd1+ 0.01/hd2 +.15/hd; 
   932       fTotalXsc    = 14./psp + (1.1*cofLogT*ld2 + 19.5)/(1. - .21/sp + .52/p4) 
   933                  + .006/md  + 0.01/hd1+ 0.02/hd2 + .20/hd ;
   952       G4double sqrLogPlab = LogPlab * LogPlab;
   955                      5.0 +  8.1*std::pow(pLab,-1.8 ) + 0.16*sqrLogPlab - 1.3*LogPlab + .15/hd;
   959                      25.2 +  0.38*sqrLogPlab - 2.9*LogPlab               
   964   else if(  (theParticle == 
theKPlus || theParticle == 
theK0L) && proton  )  
   974     else if( pLab > pMax )
   992       fElasticXsc  = LE + (cofLogE*ld2 + 2.23)/(1. - .7/sp + .1/p4) + 2./md;
   993       fTotalXsc    = LE + (cofLogT*ld2 + 19.5)/(1. + .46/sp + 1.6/p4) + 2.6/md;
  1005     else if( pLab > pMax )
  1021       fElasticXsc  = (cofLogE*ld2 + 2.23)/(1. - .7/sp + .1/p4) + 2./md;
  1022       fTotalXsc    = (cofLogT*ld2 + 19.5)/(1. + .46/sp + 1.6/p4) + 4.6/md;
  1025   else if( theParticle == 
theSMinus && pORn ) 
  1027     xsection  = 35.20 + B*std::pow(
G4Log(sMand/s0),2.) 
  1028                           - 199.*std::pow(sMand,-eta1) + 264.*std::pow(sMand,-eta2);
  1030   else if( theParticle == 
theGamma && pORn ) 
  1032     xsection  = 0.0 + B*std::pow(
G4Log(sMand/s0),2.) 
  1033       + 0.032*std::pow(sMand,-eta1); 
  1040       xsection  = 35.45 + B*std::pow(
G4Log(sMand/s0),2.) 
  1041                           + 42.53*std::pow(sMand,-eta1) - 33.34*std::pow(sMand,-eta2);
  1045       xsection += 35.80 + B*std::pow(
G4Log(sMand/s0),2.) 
  1046                           + 40.15*std::pow(sMand,-eta1) - 30.*std::pow(sMand,-eta2);
  1079   G4double sqrLogPlab = LogPlab * LogPlab;
  1097       G4double psp = pLab*std::sqrt(pLab);
  1101     else if( pLab > pMax )
  1121       fElasticXsc  = 5.2/psp + (cofLogE*ld2 + 2.23)/(1. - .7/sp + .075/p4) 
  1123       fTotalXsc    = 14./psp + (1.1*cofLogT*ld2 + 19.5)/(1. - .21/sp + .52/p4) 
  1144                      5.0 +  8.1*std::pow(pLab,-1.8 ) + 0.16*sqrLogPlab - 1.3*LogPlab + .15/hd;
  1148                      25.2 + 0.38*sqrLogPlab - 2.9*LogPlab                
  1153   else if(  (theParticle == 
theKPlus || theParticle == 
theK0L) && proton )  
  1164     else if( pLab > pMax )
  1182       fElasticXsc  = LE + (cofLogE*ld2 + 2.23)/(1. - .7/sp + .1/p4) + 2./md;
  1183       fTotalXsc    = (cofLogT*ld2 + 19.5)/(1. + .46/sp + 1.6/p4) + 7.6/md; 
  1195     else if( pLab > pMax )
  1211       fElasticXsc  = (cofLogE*ld2 + 2.23)/(1. - .7/sp + .1/p4) + 2./md;
  1212       fTotalXsc    = (cofLogT*ld2 + 19.5)/(1. + .46/sp + 1.6/p4) + 7.6/md;
  1242   G4int absPDGcode = std::abs(PDGcode);
  1252   G4double sqrLogPlab = LogPlab * LogPlab;
  1259   if( absPDGcode > 1000 && pORn )  
  1264       fTotalXsc   = 48.0 + 0.522*sqrLogPlab - 4.51*LogPlab;
  1265       fElasticXsc = 11.9 + 26.9*std::pow(Plab,-1.21) + 0.169*sqrLogPlab - 1.85*LogPlab;
  1270       fTotalXsc   = 47.3  + 0.513*sqrLogPlab - 4.27*LogPlab;
  1271       fElasticXsc = 11.9 + 26.9*std::pow(Plab,-1.21) + 0.169*sqrLogPlab - 1.85*LogPlab;
  1274   else if( PDGcode ==  211  && pORn )  
  1278       fTotalXsc  = 16.4 + 19.3 *std::pow(Plab,-0.42) + 0.19 *sqrLogPlab - 0.0 *LogPlab;
  1279       fElasticXsc =  0.0 + 11.4*std::pow(Plab,-0.40) + 0.079*sqrLogPlab - 0.0 *LogPlab;
  1283       fTotalXsc   =  33.0 + 14.0 *std::pow(Plab,-1.36) + 0.456*sqrLogPlab - 4.03*LogPlab;
  1284       fElasticXsc = 1.76 + 11.2*std::pow(Plab,-0.64) + 0.043*sqrLogPlab - 0.0 *LogPlab;
  1287   else if( PDGcode == -211  && pORn )  
  1291       fTotalXsc   = 33.0 + 14.0 *std::pow(Plab,-1.36) + 0.456*sqrLogPlab - 4.03*LogPlab;
  1292       fElasticXsc = 1.76 + 11.2*std::pow(Plab,-0.64) + 0.043*sqrLogPlab - 0.0 *LogPlab;
  1296       fTotalXsc   = 16.4 + 19.3 *std::pow(Plab,-0.42) + 0.19 *sqrLogPlab - 0.0 *LogPlab;
  1297       fElasticXsc =  0.0 + 11.4*std::pow(Plab,-0.40) + 0.079*sqrLogPlab - 0.0 *LogPlab;
  1300   else if( PDGcode ==  111  && pORn )  
  1304       fTotalXsc   = (16.4 + 19.3 *std::pow(Plab,-0.42) + 0.19 *sqrLogPlab - 0.0 *LogPlab +   
  1305                         33.0 + 14.0 *std::pow(Plab,-1.36) + 0.456*sqrLogPlab - 4.03*LogPlab)/2; 
  1307       fElasticXsc = ( 0.0 + 11.4*std::pow(Plab,-0.40) + 0.079*sqrLogPlab - 0.0 *LogPlab +    
  1308                          1.76 + 11.2*std::pow(Plab,-0.64) + 0.043*sqrLogPlab - 0.0 *LogPlab)/2; 
  1313       fTotalXsc   = (33.0 + 14.0 *std::pow(Plab,-1.36) + 0.456*sqrLogPlab - 4.03*LogPlab +   
  1314                         16.4 + 19.3 *std::pow(Plab,-0.42) + 0.19 *sqrLogPlab - 0.0 *LogPlab)/2; 
  1315       fElasticXsc = ( 1.76 + 11.2*std::pow(Plab,-0.64) + 0.043*sqrLogPlab - 0.0 *LogPlab +   
  1316                          0.0  + 11.4*std::pow(Plab,-0.40) + 0.079*sqrLogPlab - 0.0 *LogPlab)/2; 
  1319   else if( PDGcode == 321  && pORn )    
  1324       fTotalXsc   = 18.1 +  0.26 *sqrLogPlab - 1.0 *LogPlab;
  1325       fElasticXsc =  5.0 +  8.1*std::pow(Plab,-1.8 ) + 0.16 *sqrLogPlab - 1.3 *LogPlab;
  1331       fTotalXsc   = 18.7  + 0.21 *sqrLogPlab - 0.89*LogPlab;
  1332       fElasticXsc =  7.3  + 0.29 *sqrLogPlab - 2.4 *LogPlab;
  1335   else if( PDGcode ==-321  && pORn )  
  1341       fTotalXsc   = 32.1 + 0.66*sqrLogPlab - 5.6*LogPlab;
  1342       fElasticXsc =  7.3 + 0.29*sqrLogPlab - 2.4*LogPlab;
  1347       fTotalXsc   = 25.2 + 0.38*sqrLogPlab - 2.9*LogPlab;
  1348       fElasticXsc =  5.0 +  8.1*std::pow(Plab,-1.8 ) + 0.16*sqrLogPlab - 1.3*LogPlab;
  1351   else if( PDGcode == 311  && pORn )  
  1357       fTotalXsc   = ( 18.1 + 0.26 *sqrLogPlab - 1.0 *LogPlab +   
  1358                       32.1 + 0.66 *sqrLogPlab - 5.6 *LogPlab)/2; 
  1359       fElasticXsc = (  5.0 +  8.1*std::pow(Plab,-1.8 ) + 0.16 *sqrLogPlab - 1.3 *LogPlab +   
  1360                          7.3 + 0.29 *sqrLogPlab - 2.4 *LogPlab)/2; 
  1367       fTotalXsc   = ( 18.7 + 0.21 *sqrLogPlab - 0.89*LogPlab +   
  1368                       25.2 + 0.38 *sqrLogPlab - 2.9 *LogPlab)/2; 
  1370       fElasticXsc = (  7.3 + 0.29 *sqrLogPlab - 2.4 *LogPlab +   
  1371                        5.0 + 8.1*std::pow(Plab,-1.8 ) + 0.16 *sqrLogPlab - 1.3 *LogPlab)/2; 
  1379       fTotalXsc   = 48.0 + 0.522*sqrLogPlab - 4.51*LogPlab;
  1380       fElasticXsc = 11.9 + 26.9*std::pow(Plab,-1.21) + 0.169*sqrLogPlab - 1.85*LogPlab;
  1385       fTotalXsc   = 47.3 + 0.513*sqrLogPlab - 4.27*LogPlab;
  1386       fElasticXsc = 11.9 + 26.9*std::pow(Plab,-1.21) + 0.169*sqrLogPlab - 1.85*LogPlab;
  1405   G4double Elab = std::sqrt ( mp * mp + Plab * Plab );
  1406   G4double Ecm  = std::sqrt ( mp * mp + mt * mt + 2 * Elab * mt );
  1422   G4double Elab = std::sqrt ( mp * mp + Plab * Plab );
  1423   G4double sMand  = mp*mp + mt*mt + 2*Elab*mt ;
  1443   else                                               pR = 0.500*
fermi;
  1455   G4double totEcm  = std::sqrt(pM*pM + tM*tM + 2.*pElab*tM);
  1466   if( totTcm <= bC ) ratio = 0.;
  1467   else               ratio = 1. - bC/totTcm;
  1470   if( ratio < 0.) ratio = 0.;
 
G4ParticleDefinition * thePiMinus
 
G4ParticleDefinition * theXiMinus
 
G4ParticleDefinition * theXi0
 
virtual ~G4HadronNucleonXsc()
 
G4double GetCoulombBarrier(const G4DynamicParticle *aParticle, const G4ParticleDefinition *nucleon)
 
G4ParticleDefinition * theS0
 
static G4AntiOmegaMinus * AntiOmegaMinus()
 
G4ParticleDefinition * theNeutron
 
G4ParticleDefinition * theAProton
 
G4ParticleDefinition * theK0S
 
G4ParticleDefinition * theT
 
static G4OmegaMinus * OmegaMinus()
 
static G4KaonZeroLong * KaonZeroLong()
 
static G4AntiSigmaPlus * AntiSigmaPlus()
 
void CrossSectionDescription(std::ostream &) const
 
G4ParticleDefinition * theANeutron
 
G4double GetTotalEnergy() const
 
static G4SigmaZero * SigmaZero()
 
static G4KaonMinus * KaonMinus()
 
G4double GetHadronNucleonXscNS(const G4DynamicParticle *, const G4ParticleDefinition *)
 
static G4AntiSigmaMinus * AntiSigmaMinus()
 
static G4XiZero * XiZero()
 
G4double GetKineticEnergy() const
 
G4ThreeVector GetMomentum() const
 
G4ParticleDefinition * theASMinus
 
double A(double temperature)
 
G4int GetPDGEncoding() const
 
G4ParticleDefinition * theK0L
 
G4double GetKaonNucleonXscGG(const G4DynamicParticle *, const G4ParticleDefinition *)
 
static G4KaonZeroShort * KaonZeroShort()
 
G4bool nucleon(G4int ityp)
 
static G4AntiProton * AntiProton()
 
G4ParticleDefinition * theAXi0
 
G4double CalculateEcmValue(const G4double, const G4double, const G4double)
 
static G4XiMinus * XiMinus()
 
G4ParticleDefinition * theSMinus
 
static G4AntiXiMinus * AntiXiMinus()
 
static G4Triton * Triton()
 
static G4Proton * Proton()
 
static G4PionPlus * PionPlus()
 
virtual G4bool IsIsoApplicable(const G4DynamicParticle *aDP, G4int Z, G4int A)
 
G4ParticleDefinition * theProton
 
G4ParticleDefinition * theHe3
 
G4ParticleDefinition * theAS0
 
const G4double fLowerLimit
 
static G4Neutron * Neutron()
 
static G4PionZero * PionZero()
 
G4ParticleDefinition * theOmega
 
static G4Deuteron * Deuteron()
 
G4ParticleDefinition * theSPlus
 
G4double GetHadronNucleonXscVU(const G4DynamicParticle *, const G4ParticleDefinition *)
 
static G4SigmaMinus * SigmaMinus()
 
G4double G4Log(G4double x)
 
G4ParticleDefinition * theA
 
G4double G4Exp(G4double initial_x)
Exponential Function double precision. 
 
virtual G4bool IsApplicable(const G4DynamicParticle *aDP, const G4Element *)
 
static G4AntiLambda * AntiLambda()
 
G4ParticleDefinition * theAXiMinus
 
G4double GetPDGMass() const
 
static G4PionMinus * PionMinus()
 
static G4AntiSigmaZero * AntiSigmaZero()
 
G4ParticleDefinition * theGamma
 
static const double millibarn
 
static G4AntiXiZero * AntiXiZero()
 
G4double GetHadronNucleonXscPDG(const G4DynamicParticle *, const G4ParticleDefinition *)
 
G4ParticleDefinition * GetDefinition() const
 
static G4SigmaPlus * SigmaPlus()
 
G4ParticleDefinition * theKPlus
 
static G4Lambda * Lambda()
 
G4ParticleDefinition * theKMinus
 
G4ParticleDefinition * theAOmega
 
G4ParticleDefinition * theAntiL
 
static G4KaonPlus * KaonPlus()
 
G4ParticleDefinition * theASPlus
 
G4double GetHadronNucleonXscEL(const G4DynamicParticle *, const G4ParticleDefinition *)
 
G4double GetPDGCharge() const
 
static const double fermi
 
static G4AntiNeutron * AntiNeutron()
 
G4ParticleDefinition * thePiZero
 
G4ParticleDefinition * theD
 
G4ParticleDefinition * thePiPlus
 
G4ParticleDefinition * theL
 
G4double CalcMandelstamS(const G4double, const G4double, const G4double)