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

#include <G4NeutrinoElectronCcXsc.hh>

+ Inheritance diagram for G4NeutrinoElectronCcXsc:

Public Member Functions

 G4NeutrinoElectronCcXsc ()
 
 ~G4NeutrinoElectronCcXsc ()
 
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
 
G4ParticleDefinitiontheMuonMinus
 
G4ParticleDefinitiontheTauMinus
 
- Protected Attributes inherited from G4VCrossSectionDataSet
G4int verboseLevel
 
G4String name
 

Detailed Description

Definition at line 41 of file G4NeutrinoElectronCcXsc.hh.

Constructor & Destructor Documentation

◆ G4NeutrinoElectronCcXsc()

G4NeutrinoElectronCcXsc::G4NeutrinoElectronCcXsc ( )

Definition at line 43 of file G4NeutrinoElectronCcXsc.cc.

44 : G4VCrossSectionDataSet("NuElectronCcXsc")
45{
46 // PDG2016: Gf=1.1663787(6)e-5*(hc)^3/GeV^2
47 // fCofXsc = Gf*Gf*MeC2*2/pi
48
49 fCofXsc = 1.36044e-22;
50 fCofXsc *= hbarc*hbarc*electron_mass_c2;
51 fCofXsc /= halfpi;
52
53 // G4cout<<"fCofXsc = "<<fCofXsc*GeV/cm2<<" cm2/GeV"<<G4endl;
54
55 // G4cout<<"hbarc = "<<hbarc/MeV/fermi<<" MeV*fermi"<<G4endl;
56
57 // PDG2016: sin^2 theta Weinberg
58
59 fSin2tW = 0.23129; // 0.2312;
60
61 fCutEnergy = 0.; // default value
62
63 fBiasingFactor = 1.; // default as physics
64
67}
static G4MuonMinus * MuonMinus()
G4ParticleDefinition * theMuonMinus
G4ParticleDefinition * theTauMinus
static G4TauMinus * TauMinus()
G4VCrossSectionDataSet(const G4String &nam="")

◆ ~G4NeutrinoElectronCcXsc()

G4NeutrinoElectronCcXsc::~G4NeutrinoElectronCcXsc ( )

Definition at line 69 of file G4NeutrinoElectronCcXsc.cc.

70{}

Member Function Documentation

◆ GetBiasingFactor()

G4double G4NeutrinoElectronCcXsc::GetBiasingFactor ( )
inline

Definition at line 60 of file G4NeutrinoElectronCcXsc.hh.

60{return fBiasingFactor;};

◆ GetCutEnergy()

G4double G4NeutrinoElectronCcXsc::GetCutEnergy ( )
inline

Definition at line 57 of file G4NeutrinoElectronCcXsc.hh.

57{return fCutEnergy;};

◆ GetElementCrossSection()

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

Reimplemented from G4VCrossSectionDataSet.

Definition at line 99 of file G4NeutrinoElectronCcXsc.cc.

102{
103 G4double result = 0., totS, fmass, fmass2, emass=electron_mass_c2, emass2;
104
105 G4double energy = aPart->GetTotalEnergy();
106 G4String pName = aPart->GetDefinition()->GetParticleName();
107
108 emass2 = emass*emass;
109 totS = 2.*energy*emass + emass2;
110
111 if( pName == "anti_nu_e" || pName == "nu_mu")
112 {
113 fmass = theMuonMinus->GetPDGMass();
114 fmass2 = fmass*fmass;
115 result = (1. - fmass2/totS)*(1. - fmass2/totS);
116 }
117 else if( pName == "anti_nu_mu")
118 {
119 fmass = theMuonMinus->GetPDGMass();
120 fmass2 = fmass*fmass;
121
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);
125 }
126 else if( pName == "nu_tau")
127 {
128 fmass = theTauMinus->GetPDGMass();
129 fmass2 = fmass*fmass;
130 result = (1. - fmass2/totS)*(1. - fmass2/totS);
131 }
132 else if( pName == "anti_nu_tau")
133 {
134 fmass = theTauMinus->GetPDGMass();
135 fmass2 = fmass*fmass;
136
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);
140 }
141 else
142 {
143 return result;
144 }
145 // if( energy <= electron_mass_c2 ) return result;
146
147 G4double aa = 1.;
148 G4double bb = 1.7;
149 G4double gw = 2.141*GeV;
150 G4double dd = 5000.;
151 G4double mw = 80.385*GeV;
152
153 if( energy > 50.*GeV )
154 {
155 result *= bb;
156 result /= 1.+ aa*totS/mw/mw;
157
158 if( pName == "anti_nu_e")
159 {
160 result *= 1. + dd*gw*gw*totS/( (totS-mw*mw)*(totS-mw*mw)+gw*gw*mw*mw );
161 }
162 }
163 result *= fCofXsc; //*energy;
164 result *= energy + 0.5*emass;
165 result *= ZZ; // incoherent sum over all element electrons
166
167 result *= fBiasingFactor; // biasing up, if set >1
168
169 return result;
170}
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 G4NeutrinoElectronCcXsc::IsElementApplicable ( const G4DynamicParticle * aPart,
G4int Z,
const G4Material *  )
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 75 of file G4NeutrinoElectronCcXsc.cc.

76{
77 G4bool result = false;
78 G4String pName = aPart->GetDefinition()->GetParticleName();
79 G4double minEnergy = 0., energy = aPart->GetTotalEnergy();
80 G4double fmass, emass = electron_mass_c2;
81
82 if( pName == "anti_nu_e" || pName == "nu_mu" || pName == "anti_nu_mu" ) fmass = theMuonMinus->GetPDGMass();
83 else if( pName == "nu_tau" || pName == "anti_nu_tau" ) fmass = theTauMinus->GetPDGMass();
84 else fmass = emass;
85
86 minEnergy = (fmass-emass)*(fmass+emass)/emass;
87
88 if( ( pName == "nu_mu" || pName == "anti_nu_mu" ||
89 pName == "nu_tau" || pName == "anti_nu_tau" ) &&
90 energy > minEnergy )
91 {
92 result = true;
93 }
94 return result;
95}
bool G4bool
Definition G4Types.hh:86

Referenced by G4NeutrinoElectronTotXsc::IsElementApplicable().

◆ SetBiasingFactor()

void G4NeutrinoElectronCcXsc::SetBiasingFactor ( G4double bf)
inline

◆ SetCutEnergy()

void G4NeutrinoElectronCcXsc::SetCutEnergy ( G4double ec)
inline

Definition at line 56 of file G4NeutrinoElectronCcXsc.hh.

56{fCutEnergy=ec;};

Member Data Documentation

◆ fBiasingFactor

G4double G4NeutrinoElectronCcXsc::fBiasingFactor
protected

◆ fCofXsc

G4double G4NeutrinoElectronCcXsc::fCofXsc
protected

Definition at line 64 of file G4NeutrinoElectronCcXsc.hh.

Referenced by G4NeutrinoElectronCcXsc(), and GetElementCrossSection().

◆ fCutEnergy

G4double G4NeutrinoElectronCcXsc::fCutEnergy
protected

Definition at line 66 of file G4NeutrinoElectronCcXsc.hh.

Referenced by G4NeutrinoElectronCcXsc(), GetCutEnergy(), and SetCutEnergy().

◆ fSin2tW

G4double G4NeutrinoElectronCcXsc::fSin2tW
protected

Definition at line 65 of file G4NeutrinoElectronCcXsc.hh.

Referenced by G4NeutrinoElectronCcXsc().

◆ theMuonMinus

G4ParticleDefinition* G4NeutrinoElectronCcXsc::theMuonMinus
protected

◆ theTauMinus

G4ParticleDefinition* G4NeutrinoElectronCcXsc::theTauMinus
protected

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