90 outFile <<
"G4NeutrinoElectronCcModel is a neutrino-electron (neutral current) elastic scattering\n"
91 <<
"model which uses the standard model \n"
92 <<
"transfer parameterization. The model is fully relativistic\n";
103 if(pName ==
"anti_nu_mu" || pName ==
"anti_nu_tau")
return result;
105 G4double fmass, emass = electron_mass_c2;
107 if( pName ==
"nu_mu" ) fmass = theMuonMinus->
GetPDGMass();
108 else if( pName ==
"nu_tau" ) fmass = theTauMinus->
GetPDGMass();
111 minEnergy = (fmass-emass)*(fmass+emass)/emass;
114 if( ( pName ==
"nu_mu" || pName ==
"nu_tau" || pName ==
"anti_nu_e" ) && energy > minEnergy )
135 G4double minEnergy(0.), fmass(0.), emass = electron_mass_c2;
137 if( pName ==
"nu_mu" ) fmass = theMuonMinus->
GetPDGMass();
138 else if( pName ==
"nu_tau" ) fmass = theTauMinus->
GetPDGMass();
141 minEnergy = (fmass-emass)*(fmass+emass)/emass;
143 if( energy <= minEnergy )
150 G4double sTot = 2.*energy*emass + emass*emass;
160 G4double sint = std::sqrt( (1.0 - cost)*(1.0 + cost) );
163 G4ThreeVector eP( sint*std::cos(phi), sint*std::sin(phi), cost );
165 if( pName ==
"nu_mu" ) massf = theMuonMinus->
GetPDGMass();
166 else if( pName ==
"nu_tau" ) massf = theTauMinus->
GetPDGMass();
168 massf2 = massf*massf;
170 G4double epf = 0.5*(sTot - massf2)/sqrt(sTot);
182 if( pName ==
"nu_mu" || pName ==
"nu_tau")
186 else if( pName ==
"anti_nu_e" ) aNu =
new G4DynamicParticle( theAntiNeutrinoMu, lvp2 );
188 if( pName ==
"nu_mu" || pName ==
"anti_nu_e")
192 else if( pName ==
"nu_tau" )
208 G4double result = 0., cofL, cofR, cofLR, massf2, sTot, emass = electron_mass_c2, emass2;
212 if( energy == 0.)
return result;
216 if( pName ==
"nu_mu" || pName ==
"nu_tau")
220 else if( pName ==
"anti_nu_mu" || pName ==
"anti_nu_tau")
222 emass2 = emass*emass;
223 sTot = 2.*energy*emass + emass2;
225 cofL = (sTot-emass2)/(sTot+emass2);
230 cofR = (sTot-massf2)/(sTot+massf2);
232 cofLR = cofL*cofR/3.;
252 q += 2*b*b*b/a/a/a/27.;
271 if (A1 < 0.) A1 = -A1;
272 A = std::pow(A1,1./3.);
277 if(B1 < 0.) B1 = -B1;
278 B = std::pow(B1,1./3.);
G4double B(G4double temperature)
G4double D(G4double temp)
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)
const G4String & GetModelName() const
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)
G4NeutrinoElectronCcModel(const G4String &name="nu-e-inelastic")
virtual void ModelDescription(std::ostream &) const
static G4NeutrinoMu * NeutrinoMu()
static G4NeutrinoTau * NeutrinoTau()
G4double GetPDGMass() const
const G4String & GetParticleName() const
static G4int GetModelID(const G4int modelIndex)
static G4TauMinus * TauMinus()