50 using namespace CLHEP;
87 outFile <<
"G4NeutrinoElectronCcModel is a neutrino-electron (neutral current) elastic scattering\n"
88 <<
"model which uses the standard model \n"
89 <<
"transfer parameterization. The model is fully relativistic\n";
100 if(pName ==
"anti_nu_mu" || pName ==
"anti_nu_tau")
return result;
108 minEnergy = (fmass-emass)*(fmass+emass)/emass;
111 if( ( pName ==
"nu_mu" || pName ==
"nu_tau" || pName ==
"anti_nu_e" ) &&
energy > minEnergy )
140 minEnergy = (fmass-emass)*(fmass+emass)/emass;
142 if( energy <= minEnergy )
149 G4double sTot = 2.*energy*emass + emass*emass;
159 G4double sint = std::sqrt( (1.0 - cost)*(1.0 + cost) );
162 G4ThreeVector eP( sint*std::cos(phi), sint*std::sin(phi), cost );
167 massf2 = massf*massf;
169 G4double epf = 0.5*(sTot - massf2)/sqrt(sTot);
181 if( pName ==
"nu_mu" || pName ==
"nu_tau")
187 if( pName ==
"nu_mu" || pName ==
"anti_nu_e")
191 else if( pName ==
"nu_tau" )
214 if( energy == 0.)
return result;
218 if( pName ==
"nu_mu" || pName ==
"nu_tau")
222 else if( pName ==
"anti_nu_mu" || pName ==
"anti_nu_tau")
224 emass2 = emass*emass;
225 sTot = 2.*energy*emass + emass2;
227 cofL = (sTot-emass2)/(sTot+emass2);
232 cofR = (sTot-massf2)/(sTot+massf2);
234 cofLR = cofL*cofR/3.;
254 q += 2*b*b*b/a/a/a/27.;
272 G4double A1 = - q/2. + std::sqrt(D);
273 if (A1 < 0.) A1 = -A1;
274 A = std::pow(A1,1./3.);
277 G4double B1 = - q/2. - std::sqrt(D);
279 if(B1 < 0.) B1 = -B1;
280 B = std::pow(B1,1./3.);