50 fCofXsc *= hbarc*hbarc*electron_mass_c2;
80 G4double fmass, emass = electron_mass_c2;
82 if( pName ==
"anti_nu_e" || pName ==
"nu_mu" || pName ==
"anti_nu_mu" ) fmass =
theMuonMinus->
GetPDGMass();
86 minEnergy = (fmass-emass)*(fmass+emass)/emass;
88 if( ( pName ==
"nu_mu" || pName ==
"anti_nu_mu" ||
89 pName ==
"nu_tau" || pName ==
"anti_nu_tau" ) &&
103 G4double result = 0., totS, fmass, fmass2, emass=electron_mass_c2, emass2;
108 emass2 = emass*emass;
109 totS = 2.*energy*emass + emass2;
111 if( pName ==
"anti_nu_e" || pName ==
"nu_mu")
114 fmass2 = fmass*fmass;
115 result = (1. - fmass2/totS)*(1. - fmass2/totS);
117 else if( pName ==
"anti_nu_mu")
120 fmass2 = fmass*fmass;
122 result = (1.+ emass2/totS)*(1.+ fmass2/totS);
123 result += (1.- emass2/totS)*(1.- fmass2/totS)/3.;
124 result *= 0.25*(1. - fmass2/totS)*(1. - fmass2/totS);
126 else if( pName ==
"nu_tau")
129 fmass2 = fmass*fmass;
130 result = (1. - fmass2/totS)*(1. - fmass2/totS);
132 else if( pName ==
"anti_nu_tau")
135 fmass2 = fmass*fmass;
137 result = (1.+ emass2/totS)*(1.+ fmass2/totS);
138 result += (1.- emass2/totS)*(1.- fmass2/totS)/3.;
139 result *= 0.25*(1. - fmass2/totS)*(1. - fmass2/totS);
153 if( energy > 50.*GeV )
156 result /= 1.+ aa*totS/mw/mw;
158 if( pName ==
"anti_nu_e")
160 result *= 1. + dd*gw*gw*totS/( (totS-mw*mw)*(totS-mw*mw)+gw*gw*mw*mw );
164 result *= energy + 0.5*emass;
G4ParticleDefinition * GetDefinition() const
G4double GetTotalEnergy() const
static G4MuonMinus * MuonMinus()
virtual G4bool IsElementApplicable(const G4DynamicParticle *, G4int Z, const G4Material *)
virtual G4double GetElementCrossSection(const G4DynamicParticle *, G4int Z, const G4Material *)
~G4NeutrinoElectronCcXsc()
G4NeutrinoElectronCcXsc()
G4ParticleDefinition * theMuonMinus
G4ParticleDefinition * theTauMinus
G4double GetPDGMass() const
const G4String & GetParticleName() const
static G4TauMinus * TauMinus()