68 outFile <<
"G4NeutrinoElectronNcModel is a neutrino-electron (neutral current) elastic scattering\n"
69 <<
"model which uses the standard model \n"
70 <<
"transfer parameterization. The model is fully relativistic\n";
84 minEnergy = 0.5*(fCutEnergy+sqrt(fCutEnergy*(fCutEnergy+2.*electron_mass_c2)));
86 if( ( pName ==
"nu_e" || pName ==
"anti_nu_e" ||
87 pName ==
"nu_mu" || pName ==
"anti_nu_nu" ||
88 pName ==
"nu_tau" || pName ==
"anti_nu_tau" ) &&
118 if( eTkin > fCutEnergy )
120 G4double ePlab = sqrt( eTkin*(eTkin + 2.*electron_mass_c2) );
122 G4double cost2 = eTkin*(nuTkin + electron_mass_c2)*(nuTkin + electron_mass_c2);
123 cost2 /= nuTkin*nuTkin*(eTkin + 2.*electron_mass_c2);
125 if( cost2 > 1. ) cost2 = 1.;
126 if( cost2 < 0. ) cost2 = 0.;
129 G4double sint = std::sqrt( (1.0 - cost)*(1.0 + cost) );
132 G4ThreeVector eP( sint*std::cos(phi), sint*std::sin(phi), cost );
147 else if( eTkin > 0.0 )
172 G4double result = 0., xi, cofL, cofR, cofL2, cofR2, cofLR;
175 if( energy == 0.)
return result;
181 cofL = 0.5 + fSin2tW;
184 else if( pName ==
"anti_nu_e")
187 cofR = 0.5 + fSin2tW;
189 else if( pName ==
"nu_mu")
191 cofL = -0.5 + fSin2tW;
194 else if( pName ==
"anti_nu_mu")
197 cofR = -0.5 + fSin2tW;
199 else if( pName ==
"nu_tau")
201 cofL = -0.5 + fSin2tW;
204 else if( pName ==
"anti_nu_tau")
207 cofR = -0.5 + fSin2tW;
213 xi = 0.5*electron_mass_c2/energy;
229 G4double d = -( a*xMax3 + b*xMax2 + c*xMax );
240 q += 2*b*b*b/a/a/a/27.;
276 result = real(x1)*energy;
G4double B(G4double temperature)
G4double D(G4double temp)
std::complex< G4double > G4complex
static G4Electron * Electron()
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
void SetEnergyChange(G4double anEnergy)
void SetMomentumChange(const G4ThreeVector &aV)
void SetLocalEnergyDeposit(G4double aE)
const G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4LorentzVector & Get4Momentum() const
G4double GetTotalEnergy() const
G4double LowestEnergyLimit() const
void SetLowestEnergyLimit(G4double value)
G4HadFinalState theParticleChange
void SetMinEnergy(G4double anEnergy)
void SetMaxEnergy(const G4double anEnergy)
G4double GetMaxEnergy() const
static G4HadronicParameters * Instance()
G4NeutrinoElectronNcModel(const G4String &name="nu-e-elastic")
virtual void ModelDescription(std::ostream &) const
G4double SampleElectronTkin(const G4HadProjectile *aParticle)
virtual G4bool IsApplicable(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
virtual ~G4NeutrinoElectronNcModel()
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
G4double GetPDGMass() const
const G4String & GetParticleName() const
static G4int GetModelID(const G4int modelIndex)