45 double upper =
Kallbach(1., anEnergy);
46 double lower =
Kallbach(-1., anEnergy);
47 if(upper>max) max=upper;
48 if(lower>max) max=lower;
53 value =
Kallbach(result, anEnergy)/max;
66 result = 0.5*(std::exp( theX)*(1+theCompoundFraction)
67 +std::exp(-theX)*(1-theCompoundFraction));
74 if ( theCompoundFraction == 1 )
77 theCompoundFraction *= (1-1.0e-15);
79 result = 0.5 * (1./
A(anEnergy)) * std::log((1-theCompoundFraction)/(1+theCompoundFraction));
90 G4double epsa = anEnergy*theTargetMass/(theTargetMass+theIncidentMass);
91 G4int Ac = theTargetA+1;
92 G4int Nc = Ac - theTargetZ;
93 G4int AA = theTargetA;
94 G4int ZA = theTargetZ;
99 G4double epsb = theProductEnergy*(theProductMass+theResidualMass)/theResidualMass;
100 G4int AB = theResidualA;
101 G4int ZB = theResidualZ;
109 G4int productA = theTargetA+1-theResidualA;
110 G4int productZ = theTargetZ-theResidualZ;
122 if(productA==3) mb=1;
126 throw G4HadronicException(__FILE__, __LINE__,
"Severe error in the sampling of Kallbach-Mann Systematics");
129 result =
C1*X1 + C2*std::pow(X1, 3.) +
C3*Ma*mb*std::pow(X3, 4.);
138 result = 15.68*(Ac-AA);
139 result += -28.07*((Nc-Zc)*(Nc-Zc)/Ac - (NA-ZA)*(NA-ZA)/AA);
140 result += -18.56*(std::pow(
G4double(Ac), 2./3.) - std::pow(
G4double(AA), 2./3.));
141 result += 33.22*((Nc-Zc)*(Nc-Zc)/std::pow(
G4double(Ac), 4./3.) - (NA-ZA)*(NA-ZA)/std::pow(
G4double(AA), 4./3.));
142 result += -0.717*(Zc*Zc/std::pow(
G4double(Ac),1./3.)-ZA*ZA/std::pow(
G4double(AA),1./3.));
143 result += 1.211*(Zc*Zc/Ac-ZA*ZA/AA);
145 G4int productA = theTargetA+1-theResidualA;
146 G4int productZ = theTargetZ-theResidualZ;
147 if(productZ==0&&productA==1) totalBinding=0;
148 if(productZ==1&&productA==1) totalBinding=0;
149 if(productZ==1&&productA==2) totalBinding=2.22;
150 if(productZ==1&&productA==3) totalBinding=8.48;
151 if(productZ==2&&productA==3) totalBinding=7.72;
152 if(productZ==2&&productA==4) totalBinding=28.3;
153 result += -totalBinding;
G4double Sample(G4double anEnergy)
G4double A(G4double anEnergy)
G4double Kallbach(G4double cosTh, G4double anEnergy)
G4double SeparationEnergy(G4int Ac, G4int Nc, G4int AA, G4int ZA)
G4double GetKallbachZero(G4double anEnergy)