45 using namespace CLHEP;
75 outFile <<
"G4NeutrinoElectronCcModel is a neutrino-electron (neutral current) elastic scattering\n"
76 <<
"model which uses the standard model \n"
77 <<
"transfer parameterization. The model is fully relativistic\n";
95 minEnergy = (fmass-emass)*(fmass+emass)/emass;
98 if( ( pName ==
"nu_mu" || pName ==
"anti_nu_mu" ||
99 pName ==
"nu_tau" || pName ==
"anti_nu_tau" ) &&
129 minEnergy = (fmass-emass)*(fmass+emass)/emass;
131 if( energy <= minEnergy )
138 G4double sTot = 2.*energy*emass + emass*emass;
148 G4double sint = std::sqrt( (1.0 - cost)*(1.0 + cost) );
151 G4ThreeVector eP( sint*std::cos(phi), sint*std::sin(phi), cost );
156 massf2 = massf*massf;
158 G4double epf = 0.5*(sTot - massf2)/sqrt(sTot);
170 if( pName ==
"nu_mu" || pName ==
"nu_tau")
174 else if( pName ==
"anti_nu_mu" || pName ==
"anti_nu_tau")
178 if( pName ==
"nu_mu" || pName ==
"anti_nu_mu")
182 else if( pName ==
"nu_tau" || pName ==
"anti_nu_tau")
205 if( energy == 0.)
return result;
209 if( pName ==
"nu_mu" || pName ==
"nu_tau")
213 else if( pName ==
"anti_nu_mu" || pName ==
"anti_nu_tau")
215 emass2 = emass*emass;
216 sTot = 2.*energy*emass + emass2;
218 cofL = (sTot-emass2)/(sTot+emass2);
223 cofR = (sTot-massf2)/(sTot+massf2);
225 cofLR = cofL*cofR/3.;
245 q += 2*b*b*b/a/a/a/27.;
263 G4double A1 = - q/2. + std::sqrt(D);
264 if (A1 < 0.) A1 = -A1;
265 A = std::pow(A1,1./3.);
268 G4double B1 = - q/2. - std::sqrt(D);
270 if(B1 < 0.) B1 = -B1;
271 B = std::pow(B1,1./3.);
void SetMinEnergy(G4double anEnergy)
std::vector< ExP01TrackerHit * > a
void SetMaxEnergy(const G4double anEnergy)
Float_t y1[n_points_granero]
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
void SetMomentumChange(const G4ThreeVector &aV)
Float_t x1[n_points_granero]
const G4String & GetParticleName() const
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
static G4MuonMinus * MuonMinus()
G4NeutrinoElectronCcModel(const G4String &name="nu-e-elastic")
G4double GetTotalEnergy() const
virtual ~G4NeutrinoElectronCcModel()
virtual void ModelDescription(std::ostream &) const
G4double GetPDGMass() const
G4ParticleDefinition * theMuonMinus
G4double SampleCosCMS(const G4HadProjectile *aParticle)
void SetEnergyChange(G4double anEnergy)
static constexpr double TeV
std::complex< G4double > G4complex
G4ParticleDefinition * theAntiNeutrinoE
static G4AntiNeutrinoE * AntiNeutrinoE()
G4ParticleDefinition * theNeutrinoE
static constexpr double electron_mass_c2
virtual G4bool IsApplicable(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
double A(double temperature)
static constexpr double eV
const G4LorentzVector & Get4Momentum() const
G4double G4ParticleHPJENDLHEData::G4double result
static constexpr double twopi
const G4ParticleDefinition * GetDefinition() const
static G4TauMinus * TauMinus()
static G4NeutrinoE * NeutrinoE()
G4ParticleDefinition * theTauMinus
Hep3Vector boostVector() const
double B(double temperature)
static constexpr double GeV
G4HadFinalState theParticleChange
HepLorentzVector & boost(double, double, double)