977 HadrEnergy = std::sqrt(hMass2 + hLabMomentum2);
979 G4double sHadr = 2.*HadrEnergy*protonM+protonM2+hMass2;
981 G4double Ecm = 0.5*(sHadr-hMass2+protonM2)/sqrS;
982 MomentumCM = std::sqrt(Ecm*Ecm-protonM2);
985 G4cout <<
"GetHadrVall.: Z= " <<
Z <<
" iHadr= " << iHadron
986 <<
" E(GeV)= " << HadrEnergy <<
" sqrS= " << sqrS
987 <<
" plab= " << hLabMomentum
988 <<
" E - m "<<HadrEnergy - hMass<<
G4endl;
1000 if(hLabMomentum > 10)
1001 TotP = TotN = 7.5*logE - 40.12525 + 103*
G4Exp(-
G4Log(sHadr)*0.165);
1010 if( hLabMomentum > 1.4 )
1011 TotN = 33.3+15.2*(hLabMomentum2-1.35)/
1014 else if(hLabMomentum > 0.8)
1017 TotN = 33.0 + 25.5*A0*A0;
1022 TotN = 33.0 + 30.*A0*A0*A0*A0;
1027 if(hLabMomentum >= 1.05)
1029 TotP = 39.0+75.*(hLabMomentum-1.2)/
1030 (hLabMomentum2*hLabMomentum+0.15);
1033 else if(hLabMomentum >= 0.7)
1036 TotP = 23.0 + 40.*A0*A0;
1046 HadrTot = 0.5*(TotP+TotN);
1049 if(hLabMomentum >= 2.) HadrSlope = 5.44 + 0.88*logS;
1051 else if(hLabMomentum >= 0.5) HadrSlope = 3.73*hLabMomentum-0.37;
1053 else HadrSlope = 1.5;
1056 if(hLabMomentum >= 1.2)
1057 HadrReIm = 0.13*(logS - 5.8579332)*
G4Exp(-
G4Log(sHadr)*0.18);
1059 else if(hLabMomentum >= 0.6)
1060 HadrReIm = -75.5*(
G4Exp(
G4Log(hLabMomentum)*0.25)-0.95)/
1064 HadrReIm = 15.5*hLabMomentum/(27*hLabMomentum2*hLabMomentum+2);
1069 if( iHadrCode == 3122)
1075 else if( iHadrCode == 3222)
1081 else if(iHadrCode == 3112 || iHadrCode == 3212 )
1087 else if( iHadrCode == 3312 || iHadrCode == 3322 )
1093 else if( iHadrCode == 3334)
1104 HadrTot = 5.2+5.2*logE + 123.2/sqrS;
1105 HadrSlope = 8.32+0.57*logS;
1107 if( HadrEnergy < 1000 )
1108 HadrReIm = 0.06*(sqrS-2.236)*(sqrS-14.14)*
G4Exp(-
G4Log(sHadr)*0.8);
1110 HadrReIm = 0.6*(logS - 5.8579332)*
G4Exp(-
G4Log(sHadr)*0.25);
1115 if( iHadrCode == -3122)
1121 else if( iHadrCode == -3222)
1127 else if(iHadrCode == -3112 || iHadrCode == -3212 )
1133 else if( iHadrCode == -3312 || iHadrCode == -3322 )
1139 else if( iHadrCode == -3334)
1150 if(hLabMomentum >= 3.5)
1151 TotP = 10.6+2.*logE + 25.*
G4Exp(-
G4Log(HadrEnergy)*0.43);
1153 else if(hLabMomentum >= 1.15)
1155 G4double x = (hLabMomentum - 2.55)/0.55;
1156 G4double y = (hLabMomentum - 1.47)/0.225;
1157 TotP = 3.2*
G4Exp(-x*x) + 12.*
G4Exp(-y*y) + 27.5;
1160 else if(hLabMomentum >= 0.4)
1162 TotP = 88*(logE+0.2877)*(logE+0.2877)+14.0;
1167 G4double x = (hLabMomentum - 0.29)/0.085;
1168 TotP = 20. + 180.*
G4Exp(-x*x);
1172 if(hLabMomentum >= 3.0 )
1173 TotN = 10.6 + 2.*logE + 30.*
G4Exp(-
G4Log(HadrEnergy)*0.43);
1175 else if(hLabMomentum >= 1.3)
1177 G4double x = (hLabMomentum - 2.1)/0.4;
1178 G4double y = (hLabMomentum - 1.4)/0.12;
1179 TotN = 36.1+0.079 - 4.313*logE + 3.*
G4Exp(-x*x) +
1182 else if(hLabMomentum >= 0.65)
1184 G4double x = (hLabMomentum - 0.72)/0.06;
1185 G4double y = (hLabMomentum - 1.015)/0.075;
1186 TotN = 36.1 + 10.*
G4Exp(-x*x) + 24*
G4Exp(-y*y);
1188 else if(hLabMomentum >= 0.37)
1191 TotN = 26. + 110.*x*x;
1195 G4double x = (hLabMomentum - 0.29)/0.07;
1196 TotN = 28.0 + 40.*
G4Exp(-x*x);
1198 HadrTot = (TotP+TotN)/2;
1200 HadrSlope = 7.28+0.245*logS;
1201 HadrReIm = 0.2*(logS - 4.6051702)*
G4Exp(-
G4Log(sHadr)*0.15);
1210 HadrTot = 10.6+1.8*logE + 9.0*
G4Exp(-
G4Log(HadrEnergy)*0.55);
1211 if(HadrEnergy>100) HadrSlope = 15.0;
1212 else HadrSlope = 1.0+1.76*logS - 2.84/sqrS;
1214 HadrReIm = 0.4*(sHadr-20)*(sHadr-150)*
G4Exp(-
G4Log(sHadr+50)*2.1);
1221 HadrTot = 10+1.8*logE + 25./sqrS;
1222 HadrSlope = 6.98+0.127*logS;
1223 HadrReIm = 0.4*(sHadr-20)*(sHadr-20)*
G4Exp(-
G4Log(sHadr+50)*2.1);
1230 G4cout <<
"HadrTot= " << HadrTot <<
" HadrSlope= " << HadrSlope
1231 <<
" HadrReIm= " << HadrReIm <<
" DDSect2= " << DDSect2
1232 <<
" DDSect3= " << DDSect3 <<
G4endl;
1238 Coeff0 = Coeff1 = Coeff2 = 0.0;
1239 Slope0 = Slope1 = 1.0;
1243 static const G4double EnP0[6]={1.5,3.0,5.0,9.0,14.0,19.0};
1244 static const G4double C0P0[6]={0.15,0.02,0.06,0.08,0.0003,0.0002};
1245 static const G4double C1P0[6]={0.05,0.02,0.03,0.025,0.0,0.0};
1246 static const G4double B0P0[6]={1.5,2.5,3.0,4.5,1.4,1.25};
1247 static const G4double B1P0[6]={5.0,1.0,3.5,4.0,4.8,4.8};
1250 static const G4double EnN[5]={1.5,5.0,10.0,14.0,20.0};
1251 static const G4double C0N[5]={0.0,0.0,0.02,0.02,0.01};
1252 static const G4double C1N[5]={0.06,0.008,0.0015,0.001,0.0003};
1253 static const G4double B0N[5]={1.5,2.5,3.8,3.8,3.5};
1254 static const G4double B1N[5]={1.5,2.2,3.6,4.5,4.8};
1257 static const G4double EnP[2]={1.5,4.0};
1258 static const G4double C0P[2]={0.001,0.0005};
1259 static const G4double C1P[2]={0.003,0.001};
1260 static const G4double B0P[2]={2.5,4.5};
1261 static const G4double B1P[2]={1.0,4.0};
1264 static const G4double EnPP[4]={1.0,2.0,3.0,4.0};
1265 static const G4double C0PP[4]={0.0,0.0,0.0,0.0};
1266 static const G4double C1PP[4]={0.15,0.08,0.02,0.01};
1267 static const G4double B0PP[4]={1.5,2.8,3.8,3.8};
1268 static const G4double B1PP[4]={0.8,1.6,3.6,4.6};
1271 static const G4double EnPPN[4]={1.0,2.0,3.0,4.0};
1272 static const G4double C0PPN[4]={0.0,0.0,0.0,0.0};
1273 static const G4double C1PPN[4]={0.0,0.0,0.0,0.0};
1274 static const G4double B0PPN[4]={1.5,2.8,3.8,3.8};
1275 static const G4double B1PPN[4]={0.8,1.6,3.6,4.6};
1278 static const G4double EnK[4]={1.4,2.33,3.0,5.0};
1279 static const G4double C0K[4]={0.0,0.0,0.0,0.0};
1280 static const G4double C1K[4]={0.01,0.007,0.005,0.003};
1281 static const G4double B0K[4]={1.5,2.0,3.8,3.8};
1282 static const G4double B1K[4]={1.6,1.6,1.6,1.6};
1285 static const G4double EnKM[2]={1.4,4.0};
1286 static const G4double C0KM[2]={0.006,0.002};
1287 static const G4double C1KM[2]={0.00,0.00};
1288 static const G4double B0KM[2]={2.5,3.5};
1289 static const G4double B1KM[2]={1.6,1.6};
1295 if(hLabMomentum <BoundaryP[0])
1298 Coeff2 = 0.8/hLabMomentum/hLabMomentum;
1303 if(hLabMomentum < BoundaryP[1])
1306 Coeff2 = 0.8/hLabMomentum/hLabMomentum;
1311 if(hLabMomentum < BoundaryP[2])
1317 if(hLabMomentum < BoundaryP[3])
1320 Coeff2 = 0.02/hLabMomentum;
1325 if(hLabMomentum < BoundaryP[4])
1328 Coeff2 = 0.02/hLabMomentum;
1333 if(hLabMomentum < BoundaryP[5])
1336 if(hLabMomentum < 1) Coeff2 = 0.34;
1337 else Coeff2 = 0.34/hLabMomentum2/hLabMomentum;
1341 if(hLabMomentum < BoundaryP[6])
1344 if(hLabMomentum < 1) Coeff2 = 0.01;
1345 else Coeff2 = 0.01/hLabMomentum2/hLabMomentum;
1350 G4cout<<
" HadrVal : Plasb "<<hLabMomentum
1351 <<
" iHadron "<<iHadron<<
" HadrTot "<<HadrTot<<
G4endl;
G4GLOB_DLL std::ostream G4cout
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
void InterpolateHN(G4int n, const G4double EnP[], const G4double C0P[], const G4double C1P[], const G4double B0P[], const G4double B1P[])