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;
102 G4double fmass, emass = electron_mass_c2;
104 if( pName ==
"nu_mu" ) fmass = theMuonMinus->
GetPDGMass();
105 else if( pName ==
"nu_tau" ) fmass = theTauMinus->
GetPDGMass();
108 minEnergy = (fmass-emass)*(fmass+emass)/emass;
111 if( ( pName ==
"nu_mu" || pName ==
"nu_tau" || pName ==
"anti_nu_e" ) && energy > minEnergy )
134 G4double minEnergy(0.), fmass(0.), emass = electron_mass_c2;
136 if( pName ==
"nu_mu" ) fmass = theMuonMinus->
GetPDGMass();
137 else if( pName ==
"nu_tau" ) fmass = theTauMinus->
GetPDGMass();
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 );
164 if( pName ==
"nu_mu" ) massf = theMuonMinus->
GetPDGMass();
165 else if( pName ==
"nu_tau" ) massf = theTauMinus->
GetPDGMass();
167 massf2 = massf*massf;
169 G4double epf = 0.5*(sTot - massf2)/sqrt(sTot);
181 if( pName ==
"nu_mu" || pName ==
"nu_tau")
185 else if( pName ==
"anti_nu_e" ) aNu =
new G4DynamicParticle( theAntiNeutrinoMu, lvp2 );
187 if( pName ==
"nu_mu" || pName ==
"anti_nu_e")
191 else if( pName ==
"nu_tau" )
210 G4double result = 0., cofL, cofR, cofLR, massf2, sTot, emass = electron_mass_c2, emass2;
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.;
273 if (A1 < 0.) A1 = -A1;
274 A = std::pow(A1,1./3.);
279 if(B1 < 0.) B1 = -B1;
280 B = std::pow(B1,1./3.);
double B(double temperature)
double A(double temperature)
std::complex< G4double > G4complex
Hep3Vector boostVector() const
HepLorentzVector & boost(double, double, double)
static G4AntiNeutrinoE * AntiNeutrinoE()
static G4AntiNeutrinoMu * AntiNeutrinoMu()
static G4AntiNeutrinoTau * AntiNeutrinoTau()
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
void SetEnergyChange(G4double anEnergy)
void SetMomentumChange(const G4ThreeVector &aV)
const G4ParticleDefinition * GetDefinition() const
const G4LorentzVector & Get4Momentum() const
G4double GetTotalEnergy() const
G4HadFinalState theParticleChange
void SetMinEnergy(G4double anEnergy)
void SetMaxEnergy(const G4double anEnergy)
G4double GetMaxEnergy() const
static G4HadronicParameters * Instance()
static G4MuonMinus * MuonMinus()
static G4NeutrinoE * NeutrinoE()
virtual ~G4NeutrinoElectronCcModel()
virtual G4bool IsApplicable(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
G4double SampleCosCMS(const G4HadProjectile *aParticle)
virtual void ModelDescription(std::ostream &) const
G4NeutrinoElectronCcModel(const G4String &name="nu-e-elastic")
static G4NeutrinoMu * NeutrinoMu()
static G4NeutrinoTau * NeutrinoTau()
G4double GetPDGMass() const
const G4String & GetParticleName() const
static G4TauMinus * TauMinus()