22 static const double Ma = 72.425;
23 static const double Mb = -49.417;
24 static const double Mc = 5.858;
25 static const double Md = 207.252;
26 static const double Me = 132.784;
27 static const double Mf = -10.277;
28 static const double Mg = -19.441;
29 static const double Mh = 58.598;
30 static const double Mi = 53.161;
31 static const double Mkref = 2.698;
33 static const double Mlc = (Ma-Mf)/Mkref;
35 double num, denom, lognp, Ee, logE;
45 num = Me + Md*logE + Mc*pow(logE,2) + Mb*pow(logE,3) + Ma *pow(logE,4) + Mlc*pow(logE,5);
46 denom = Mi + Mh*logE + Mg*pow(logE,2) + Mf*pow(logE,3) + Mlc*pow(logE,4);
53 Ee = pow(10.0, lognp-Mkref);
173 inline double opa_efrac(
const int ipart,
const double ekin)
177 double etemp, weight_part;
180 if (ipart == GEANT4_TYPE_NEUTRINO ||
181 ipart == GEANT4_TYPE_ANTIMUON ||
182 ipart == GEANT4_TYPE_MUON ||
183 ipart == GEANT4_TYPE_ANTITAU ||
184 ipart == GEANT4_TYPE_TAU) {
189 if (ipart == GEANT4_TYPE_PHOTON ||
190 ipart == GEANT4_TYPE_ANTIELECTRON ||
191 ipart == GEANT4_TYPE_ELECTRON ||
192 ipart == GEANT4_TYPE_NEUTRAL_PION ||
193 ipart == GEANT4_TYPE_ETA) {
205 if (ipart == GEANT4_TYPE_PION_PLUS ||
206 ipart == GEANT4_TYPE_PION_MINUS)
208 else if (ipart == GEANT4_TYPE_KAON_LONG)
210 else if (ipart == GEANT4_TYPE_KAON_SHORT)
212 else if (ipart == GEANT4_TYPE_KAON_PLUS ||
213 ipart == GEANT4_TYPE_KAON_MINUS)
215 else if (ipart == GEANT4_TYPE_NEUTRON)
217 else if (ipart == GEANT4_TYPE_PROTON ||
218 ipart == GEANT4_TYPE_ANTIPROTON)
226 else if (ekin >= 1e7)
230 const double wp40 = weight_part;
233 return whex - (whe40-wp40)*(7.-log10(ekin))/5.398;