66 G4Element* element = (*theElementVector)[i];
67 SIGMA += NbOfAtomsPerVolume[i] * CR_PerAtom(process, element, tkin, ep);
81 if (process ==
"muBrems")
84 else if (process ==
"muIoni")
88 else if (process ==
"muonNuclear")
91 else if (process ==
"muPairProd")
117 double e,v,delta,rab0,z_13,dn,b,b1,dn_star,rab1,fn,epmax1,
fe,rab2;
119 double ame=0.51099907e-3;
120 double lamu=0.105658389;
121 double re=2.81794092e-13;
122 double avno=6.022137e23;
123 double alpha=1./137.036;
124 double rmass=lamu/ame;
125 double coeff=16./3.*alpha*avno*(re/rmass)*(re/rmass);
126 double sqrte=1.64872127;
139 delta=lamu*lamu*v/(2.*(e-ep));
141 z_13=pow(z,-0.3333333);
154 dn_star=pow(dn,(1.-1./z));
158 fn=log(rab1/(dn_star*(ame+rab0*rab1))*(lamu+delta*(dn_star*sqrte-2.)));
161 epmax1=e/(1.+lamu*rmass/(2.*
e));
168 fe=log(rab2*lamu/((1.+delta*rmass/(ame*sqrte))*(ame+rab0*rab2)));
172 crb_g4=coeff*(1.-v*(1.-0.75*v))*z*(z*fn+
fe)/(a*ep);
191 double e,epmax,v,sigma0,a1,a3;
193 double ame=0.51099907e-3;
194 double lamu=0.105658389;
195 double re=2.81794092e-13;
196 double avno=6.022137e23;
197 double alpha=1./137.036;
198 double lpi=3.141592654;
199 double bmu=lamu*lamu/(2.*ame);
200 double coeff0=avno*2.*lpi*ame*re*re;
201 double coeff1=alpha/(2.*lpi);
211 sigma0=coeff0*(z/
a)*(1.-ep/epmax+0.5*v*v)/(ep*ep);
212 a1=log(1.+2.*ep/ame);
213 a3=log(4.*e*(e-ep)/(lamu*lamu));
214 crk_g4=sigma0*(1.+coeff1*a1*(a3-a1));
233 double e,aeff,sigph,v,v1,v2,amu2,up,down;
235 double lamu=0.105658389;
236 double avno=6.022137e23;
237 double amp=0.9382723;
238 double lpi=3.14159265;
239 double alpha=1./137.036;
241 double epmin_phn=0.20;
242 double alam2=0.400000;
243 double alam =0.632456;
244 double coeffn=alpha/lpi*avno*1e-30;
248 if(ep >= e-0.5*amp)
return crn_g4;
249 if(ep <= epmin_phn)
return crn_g4;
250 aeff=0.22*a+0.78*pow(a,0.89);
251 sigph=49.2+11.1*log(ep)+151.8/sqrt(ep);
256 up=e*e*v1/amu2*(1.+amu2*v2/(alam2*v1));
257 down=1.+ep/alam*(1.+alam/(2.*amp)+ep/alam);
258 crn_g4=coeffn*aeff/a*sigph/ep*(-v1+(v1+0.5*v2*(1.+2.*amu2/alam2))*log(up/down));
259 if(crn_g4 < 0.) crn_g4=0.;
283 double bbbtf,bbbh,g1tf,g2tf,g1h,g2h,
e,z13,e1,alf,a3,bbb;
284 double g1,g2,zeta1,zeta2,zeta,z2,screen0,
a0,a1,bet,
xi0,del;
285 double tmn,
sum,a4,a5,a6,a7,a9,xi,xii,xi1,screen,yeu,yed,ye1;
286 double ale,cre,be,
fe,ymu,ymd,ym1,alm_crm,a10,bm,fm;
288 double ame=0.51099907e-3;
289 double lamu=0.105658389;
290 double re=2.81794092e-13;
291 double avno=6.022137e23;
292 double lpi=3.14159265;
293 double alpha=1./137.036;
294 double rmass=lamu/ame;
295 double coeff=4./(3.*lpi)*(alpha*re)*(alpha*re)*avno;
296 double sqrte=1.64872127;
297 double c3=3.*sqrte*lamu/4.;
299 double c8=6.*lamu*lamu;
301 double xgi[8]={.0199,.1017,.2372,.4083,.5917,.7628,.8983,.9801};
302 double wgi[8]={.0506,.1112,.1569,.1813,.1813,.1569,.1112,.0506};
311 z13=pow(z,0.3333333);
314 if(e1 <= c3*z13)
return crp_g4;
317 if(a3 <= 0.)
return crp_g4;
331 zeta1=0.073*log(e/(lamu+g1*z13*z13*e))-0.26;
334 zeta2=0.058*log(e/(lamu+g2*z13*e))-0.14;
346 screen0=2.*ame*sqrte*bbb/(z13*ep);
350 xi0=0.25*rmass*rmass*a1;
352 tmn=log((alf+2.*del*a3)/(1.+(1.-del)*sqrt(a3)));
354 for(
int i=0; i<=7; i++)
364 screen=screen0*xi1/a5;
366 yed=2.*(1.+3.*bet)*log(3.+xii)-a6-a1*(2.-a6);
368 ale=log(bbb/z13*sqrt(xi1*ye1)/(1.+screen*ye1));
369 cre=0.5*log(1.+(1.5/rmass*z13)*(1.5/rmass*z13)*xi1*ye1);
372 be=((2.+a6)*(1.+bet)+xi*a9)*log(1.+xii)+(a5-bet)/xi1-a9;
376 be=(3.-a6+a1*a7)/(2.*xi);
378 fe=
max(0.,(ale-cre)*be);
380 ymd=a7*(1.5+a1)*log(3.+xi)+1.-1.5*a6;
382 alm_crm=log(bbb*rmass/(1.5*z13*z13*(1.+screen*ym1)));
386 bm=(a7*(1.+1.5*bet)-a10*xii)*log(xi1)+xi*(a5-bet)/xi1+a10;
390 bm=(5.-a6+bet*a9)*(xi/2.);
392 fm=
max(0.,(alm_crm)*bm);
394 sum=sum+a4*(fe+fm/(rmass*rmass))*wgi[i];
396 crp_g4=-tmn*sum*(z2/
a)*coeff*e1/(e*ep);
T max(const T t1, const T t2)
brief Return the largest of the two arguments
std::vector< ExP01TrackerHit * > a
const G4ElementVector * GetElementVector() const
G4double CRK_Mephi(G4double, G4double, G4double, G4double)
G4double CRB_Mephi(G4double, G4double, G4double, G4double)
const G4double * GetVecNbOfAtomsPerVolume() const
G4double CR_PerAtom(const G4String &, G4Element *, G4double, G4double)
G4double CRN_Mephi(G4double, G4double, G4double, G4double)
static constexpr double g
static constexpr double Avogadro
static constexpr double cm2
static const G4double alpha
static const G4double sqrte
std::vector< G4Element * > G4ElementVector
G4double CRP_Mephi(G4double, G4double, G4double, G4double)
Definition of the MuCrossSections class.
static constexpr double mole
static constexpr double GeV
size_t GetNumberOfElements() const
G4double CR_Macroscopic(const G4String &, G4Material *, G4double, G4double)