Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4NeutrinoElectronNcXsc Class Reference

#include <G4NeutrinoElectronNcXsc.hh>

+ Inheritance diagram for G4NeutrinoElectronNcXsc:

Public Member Functions

 G4NeutrinoElectronNcXsc ()
 
 ~G4NeutrinoElectronNcXsc ()
 
virtual G4bool IsElementApplicable (const G4DynamicParticle *, G4int Z, const G4Material *)
 
virtual G4double GetElementCrossSection (const G4DynamicParticle *, G4int Z, const G4Material *)
 
void SetCutEnergy (G4double ec)
 
G4double GetCutEnergy ()
 
void SetBiasingFactor (G4double bf)
 
G4double GetBiasingFactor ()
 
- Public Member Functions inherited from G4VCrossSectionDataSet
 G4VCrossSectionDataSet (const G4String &nam="")
 
virtual ~G4VCrossSectionDataSet ()
 
virtual G4bool IsIsoApplicable (const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm=nullptr, const G4Material *mat=nullptr)
 
G4double GetCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)
 
G4double ComputeCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)
 
virtual G4double ComputeCrossSectionPerElement (G4double kinEnergy, G4double loge, const G4ParticleDefinition *, const G4Element *, const G4Material *mat=nullptr)
 
virtual G4double GetIsoCrossSection (const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=nullptr, const G4Element *elm=nullptr, const G4Material *mat=nullptr)
 
virtual G4double ComputeIsoCrossSection (G4double kinEnergy, G4double loge, const G4ParticleDefinition *, G4int Z, G4int A, const G4Isotope *iso=nullptr, const G4Element *elm=nullptr, const G4Material *mat=nullptr)
 
virtual const G4IsotopeSelectIsotope (const G4Element *, G4double kinEnergy, G4double logE)
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
virtual void DumpPhysicsTable (const G4ParticleDefinition &)
 
virtual void CrossSectionDescription (std::ostream &) const
 
virtual void SetVerboseLevel (G4int value)
 
G4double GetMinKinEnergy () const
 
void SetMinKinEnergy (G4double value)
 
G4double GetMaxKinEnergy () const
 
void SetMaxKinEnergy (G4double value)
 
bool ForAllAtomsAndEnergies () const
 
void SetForAllAtomsAndEnergies (G4bool val)
 
const G4StringGetName () const
 
void SetName (const G4String &nam)
 
G4VCrossSectionDataSetoperator= (const G4VCrossSectionDataSet &right)=delete
 
 G4VCrossSectionDataSet (const G4VCrossSectionDataSet &)=delete
 

Protected Attributes

G4double fCofXsc
 
G4double fSin2tW
 
G4double fCutEnergy
 
G4double fBiasingFactor
 
- Protected Attributes inherited from G4VCrossSectionDataSet
G4int verboseLevel
 
G4String name
 

Detailed Description

Definition at line 39 of file G4NeutrinoElectronNcXsc.hh.

Constructor & Destructor Documentation

◆ G4NeutrinoElectronNcXsc()

G4NeutrinoElectronNcXsc::G4NeutrinoElectronNcXsc ( )

Definition at line 41 of file G4NeutrinoElectronNcXsc.cc.

42 : G4VCrossSectionDataSet("NuElectronNcXsc")
43{
44 // PDG2016: Gf=1.1663787(6)e-5*(hc)^3/GeV^2
45 // fCofXsc = Gf*Gf*MeC2*2/pi
46
47 fCofXsc = 1.36044e-22;
48 fCofXsc *= hbarc*hbarc*electron_mass_c2;
49 fCofXsc /= halfpi;
50
51 // G4cout<<"hbarc = "<<hbarc/MeV/fermi<<" MeV*fermi"<<G4endl;
52
53 // PDG2016: sin^2 theta Weinberg
54
55 fSin2tW = 0.23129; // 0.2312;
56
57 fCutEnergy = 0.; // default value
58 fBiasingFactor = 1.;
59}
G4VCrossSectionDataSet(const G4String &nam="")

◆ ~G4NeutrinoElectronNcXsc()

G4NeutrinoElectronNcXsc::~G4NeutrinoElectronNcXsc ( )

Definition at line 61 of file G4NeutrinoElectronNcXsc.cc.

62{}

Member Function Documentation

◆ GetBiasingFactor()

G4double G4NeutrinoElectronNcXsc::GetBiasingFactor ( )
inline

Definition at line 58 of file G4NeutrinoElectronNcXsc.hh.

58{return fBiasingFactor;};

◆ GetCutEnergy()

G4double G4NeutrinoElectronNcXsc::GetCutEnergy ( )
inline

Definition at line 55 of file G4NeutrinoElectronNcXsc.hh.

55{return fCutEnergy;};

◆ GetElementCrossSection()

G4double G4NeutrinoElectronNcXsc::GetElementCrossSection ( const G4DynamicParticle * aPart,
G4int Z,
const G4Material *  )
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 89 of file G4NeutrinoElectronNcXsc.cc.

92{
93 G4double result = 0., cofL, cofR, cofL2, cofR2, cofLR;
94
96 G4String pName = aPart->GetDefinition()->GetParticleName();
97
98 if( pName == "nu_e")
99 {
100 cofL = 0.5 + fSin2tW;
101 cofR = fSin2tW;
102 }
103 else if( pName == "anti_nu_e")
104 {
105 cofL = fSin2tW;
106 cofR = 0.5 + fSin2tW;
107 }
108 else if( pName == "nu_mu")
109 {
110 cofL = -0.5 + fSin2tW;
111 cofR = fSin2tW;
112 }
113 else if( pName == "anti_nu_mu")
114 {
115 cofL = fSin2tW;
116 cofR = -0.5 + fSin2tW;
117 }
118 else if( pName == "nu_tau") // vmg: nu_tau as nu_mu ???
119 {
120 cofL = -0.5 + fSin2tW;
121 cofR = fSin2tW;
122 }
123 else if( pName == "anti_nu_tau")
124 {
125 cofL = fSin2tW;
126 cofR = -0.5 + fSin2tW;
127 }
128 else
129 {
130 return result;
131 }
132 // if( energy <= electron_mass_c2 ) return result;
133
134 cofL2 = cofL*cofL;
135 cofR2 = cofR*cofR;
136 cofLR = cofL*cofR;
137
138 if( fCutEnergy > 0. )
139 {
140 G4double tM = 2.*energy*energy/(electron_mass_c2 + 2.*energy);
141 G4double tM2 = tM*tM;
142 G4double tM3 = tM*tM2;
143 G4double tC = fCutEnergy;
144 G4double tC2 = tC*tC;
145 G4double tC3 = tC*tC2;
146
147 result = (cofL2+cofR2)*(tM-tC);
148 result -= (cofR2+cofLR*0.5*electron_mass_c2/energy)*(tM2-tC2)/energy;
149 result += cofR2*(tM3-tC3)/energy/energy/3.;
150 }
151 else
152 {
153 G4double rtM = 2.*energy/(electron_mass_c2 + 2.*energy);
154 G4double rtM2 = rtM*rtM;
155 G4double rtM3 = rtM*rtM2;
156
157 result = (cofL2+cofR2)*rtM*energy;
158 result -= (cofR2*energy+cofLR*0.5*electron_mass_c2)*rtM2;
159 result += cofR2*rtM3*energy/3.;
160 }
161 // result = cofL*cofL + cofR*cofR/3.;
162 // G4cout<<"cofL2 + cofR2/3. = "<<result<<G4endl;
163 // result -= 0.5*cofL*cofR*electron_mass_c2/energy;
164
165 G4double aa = 1.;
166 G4double bb = 1.7;
167 G4double gw = 2.141*GeV;
168 G4double dd = 5000.;
169 G4double mw = 80.385*GeV;
170 G4double mz = 91.1876*GeV;
171
172 G4double emass = electron_mass_c2;
173 G4double totS = 2.*energy*emass + emass*emass;
174
175 if( energy > 50.*GeV )
176 {
177 result *= bb;
178 result /= 1.+ aa*totS/mz/mz;
179
180 if( pName == "anti_nu_e")
181 {
182 result *= 1. + dd*gw*gw*totS/( (totS-mw*mw)*(totS-mw*mw)+gw*gw*mw*mw );
183 }
184 }
185
186 result *= fCofXsc; //*energy;
187
188 result *= ZZ; // incoherent sum over all element electrons
189
190 result *= fBiasingFactor;
191
192 return result;
193}
double G4double
Definition G4Types.hh:83
G4ParticleDefinition * GetDefinition() const
G4double GetTotalEnergy() const
const G4String & GetParticleName() const
G4double energy(const ThreeVector &p, const G4double m)

Referenced by G4NeutrinoElectronTotXsc::GetElementCrossSection().

◆ IsElementApplicable()

G4bool G4NeutrinoElectronNcXsc::IsElementApplicable ( const G4DynamicParticle * aPart,
G4int Z,
const G4Material *  )
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 67 of file G4NeutrinoElectronNcXsc.cc.

68{
69 G4bool result = false;
70 G4String pName = aPart->GetDefinition()->GetParticleName();
71 G4double minEnergy = 0., energy = aPart->GetTotalEnergy();
72 // Z *= 1;
73 if( fCutEnergy > 0. ) // min detected recoil electron energy
74 {
75 minEnergy = 0.5*(fCutEnergy+sqrt(fCutEnergy*(fCutEnergy+2.*electron_mass_c2)));
76 }
77 if( ( pName == "nu_e" || pName == "anti_nu_e" ||
78 pName == "nu_mu" || pName == "anti_nu_mu" ||
79 pName == "nu_tau" || pName == "anti_nu_tau" ) &&
80 energy > minEnergy )
81 {
82 result = true;
83 }
84 return result;
85}
bool G4bool
Definition G4Types.hh:86

Referenced by G4NeutrinoElectronTotXsc::IsElementApplicable().

◆ SetBiasingFactor()

void G4NeutrinoElectronNcXsc::SetBiasingFactor ( G4double bf)
inline

◆ SetCutEnergy()

void G4NeutrinoElectronNcXsc::SetCutEnergy ( G4double ec)
inline

Definition at line 54 of file G4NeutrinoElectronNcXsc.hh.

54{fCutEnergy=ec;};

Member Data Documentation

◆ fBiasingFactor

G4double G4NeutrinoElectronNcXsc::fBiasingFactor
protected

◆ fCofXsc

G4double G4NeutrinoElectronNcXsc::fCofXsc
protected

Definition at line 62 of file G4NeutrinoElectronNcXsc.hh.

Referenced by G4NeutrinoElectronNcXsc(), and GetElementCrossSection().

◆ fCutEnergy

G4double G4NeutrinoElectronNcXsc::fCutEnergy
protected

◆ fSin2tW

G4double G4NeutrinoElectronNcXsc::fSin2tW
protected

Definition at line 63 of file G4NeutrinoElectronNcXsc.hh.

Referenced by G4NeutrinoElectronNcXsc(), and GetElementCrossSection().


The documentation for this class was generated from the following files: