Geant4-11
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Protected Attributes | Static Protected Attributes | Private Attributes
G4MuNeutrinoNucleusTotXsc Class Reference

#include <G4MuNeutrinoNucleusTotXsc.hh>

Inheritance diagram for G4MuNeutrinoNucleusTotXsc:
G4VCrossSectionDataSet

Public Member Functions

virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
G4double ComputeCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)
 
virtual void CrossSectionDescription (std::ostream &) const
 
virtual void DumpPhysicsTable (const G4ParticleDefinition &)
 
bool ForAllAtomsAndEnergies () const
 
 G4MuNeutrinoNucleusTotXsc ()
 
G4double GetANuMuTotCsArray (G4int index)
 
G4double GetANuMuTotCsXsc (G4int index, G4double energy, G4int Z, G4int A)
 
G4double GetBiasingFactor ()
 
G4double GetCcTotRatio ()
 
G4double GetCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)
 
G4double GetCutEnergy ()
 
virtual G4double GetElementCrossSection (const G4DynamicParticle *dynPart, G4int Z, const G4Material *mat)
 
G4int GetEnergyIndex (G4double energy)
 
virtual G4double GetIsoCrossSection (const G4DynamicParticle *aPart, G4int Z, G4int A, const G4Isotope *, const G4Element *, const G4Material *)
 
G4double GetMaxKinEnergy () const
 
G4double GetMinKinEnergy () const
 
const G4StringGetName () const
 
G4double GetNuMuTotCsArray (G4int index)
 
G4double GetNuMuTotCsXsc (G4int index, G4double energy, G4int Z, G4int A)
 
G4double GetQEratio ()
 
G4double GetTotXsc ()
 
virtual G4int GetVerboseLevel () const
 
virtual G4bool IsElementApplicable (const G4DynamicParticle *, G4int, const G4Material *)
 
virtual G4bool IsIsoApplicable (const G4DynamicParticle *, G4int Z, G4int A, const G4Element *, const G4Material *)
 
virtual const G4IsotopeSelectIsotope (const G4Element *, G4double kinEnergy, G4double logE)
 
void SetBiasingFactor (G4double bf)
 
void SetCutEnergy (G4double ec)
 
void SetForAllAtomsAndEnergies (G4bool val)
 
void SetMaxKinEnergy (G4double value)
 
void SetMinKinEnergy (G4double value)
 
void SetName (const G4String &nam)
 
virtual void SetVerboseLevel (G4int value)
 
 ~G4MuNeutrinoNucleusTotXsc ()
 

Protected Attributes

G4double fBiasingFactor
 
G4double fCcFactor
 
G4double fCcTotRatio
 
G4double fCofL
 
G4double fCofS
 
G4double fCofXsc
 
G4double fCutEnergy
 
G4int fIndex
 
G4double fNcFactor
 
G4double fQEratio
 
G4double fSin2tW
 
G4double fTotXsc
 
G4String name
 
G4ParticleDefinitiontheMuonMinus
 
G4ParticleDefinitiontheMuonPlus
 
G4int verboseLevel
 

Static Protected Attributes

static const G4double fANuMuInXsc [50]
 
static const G4double fANuMuQeXsc [50]
 
static const G4double fNuMuEnergy [50]
 
static const G4double fNuMuInXsc [50]
 
static const G4double fNuMuQeXsc [50]
 

Private Attributes

G4bool isForAllAtomsAndEnergies
 
G4double maxKinEnergy
 
G4double minKinEnergy
 
G4CrossSectionDataSetRegistryregistry
 

Detailed Description

Definition at line 42 of file G4MuNeutrinoNucleusTotXsc.hh.

Constructor & Destructor Documentation

◆ G4MuNeutrinoNucleusTotXsc()

G4MuNeutrinoNucleusTotXsc::G4MuNeutrinoNucleusTotXsc ( )

Definition at line 47 of file G4MuNeutrinoNucleusTotXsc.cc.

48 : G4VCrossSectionDataSet("NuMuNuclTotXsc")
49{
50 fCofXsc = 1.e-38*cm2/GeV;
51
52 // G4cout<<"fCofXsc = "<<fCofXsc*GeV/cm2<<" cm2/GeV"<<G4endl;
53
54 // PDG2016: sin^2 theta Weinberg
55
56 fSin2tW = 0.23129; // 0.2312;
57
58 // 9 <-> 6, 5/9 or 5/6 ?
59
60 fCofS = 5.*fSin2tW*fSin2tW/9.;
61 fCofL = 1. - fSin2tW + fCofS;
62
63 // G4cout<<"fCosL = "<<fCofL<<", fCofS = "<<fCofS<<G4endl;
64
65 fCutEnergy = 0.; // default value
66
67 fBiasingFactor = 1.; // default as physics
68
69 fIndex = 50;
70
71 fTotXsc = 0.;
72 fCcTotRatio = 0.75; // from nc/cc~0.33 ratio
73 fCcFactor = fNcFactor = 1.;
74 fQEratio = 0.5; // mean in the 1 GeV range
75
78}
static constexpr double cm2
Definition: G4SIunits.hh:100
static constexpr double GeV
Definition: G4SIunits.hh:203
static G4MuonMinus * MuonMinus()
Definition: G4MuonMinus.cc:99
static G4MuonPlus * MuonPlus()
Definition: G4MuonPlus.cc:98
G4VCrossSectionDataSet(const G4String &nam="")

References cm2, fBiasingFactor, fCcFactor, fCcTotRatio, fCofL, fCofS, fCofXsc, fCutEnergy, fIndex, fNcFactor, fQEratio, fSin2tW, fTotXsc, GeV, G4MuonMinus::MuonMinus(), G4MuonPlus::MuonPlus(), theMuonMinus, and theMuonPlus.

◆ ~G4MuNeutrinoNucleusTotXsc()

G4MuNeutrinoNucleusTotXsc::~G4MuNeutrinoNucleusTotXsc ( )

Definition at line 80 of file G4MuNeutrinoNucleusTotXsc.cc.

81{}

Member Function Documentation

◆ BuildPhysicsTable()

void G4VCrossSectionDataSet::BuildPhysicsTable ( const G4ParticleDefinition )
virtualinherited

◆ ComputeCrossSection()

G4double G4VCrossSectionDataSet::ComputeCrossSection ( const G4DynamicParticle part,
const G4Element elm,
const G4Material mat = nullptr 
)
inherited

Definition at line 81 of file G4VCrossSectionDataSet.cc.

84{
85 G4int Z = elm->GetZasInt();
86
87 if (IsElementApplicable(part, Z, mat)) {
88 return GetElementCrossSection(part, Z, mat);
89 }
90
91 // isotope-wise cross section making sum over available
92 // isotope cross sections, which may be incomplete, so
93 // the result is corrected
94 size_t nIso = elm->GetNumberOfIsotopes();
95 G4double fact = 0.0;
96 G4double xsec = 0.0;
97
98 // user-defined isotope abundances
99 const G4IsotopeVector* isoVector = elm->GetIsotopeVector();
100 const G4double* abundVector = elm->GetRelativeAbundanceVector();
101
102 for (size_t j=0; j<nIso; ++j) {
103 const G4Isotope* iso = (*isoVector)[j];
104 G4int A = iso->GetN();
105 if(abundVector[j] > 0.0 && IsIsoApplicable(part, Z, A, elm, mat)) {
106 fact += abundVector[j];
107 xsec += abundVector[j]*GetIsoCrossSection(part, Z, A, iso, elm, mat);
108 }
109 }
110 return (fact > 0.0) ? xsec/fact : 0.0;
111}
std::vector< G4Isotope * > G4IsotopeVector
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
const G4double A[17]
G4double * GetRelativeAbundanceVector() const
Definition: G4Element.hh:167
size_t GetNumberOfIsotopes() const
Definition: G4Element.hh:159
G4int GetZasInt() const
Definition: G4Element.hh:132
G4IsotopeVector * GetIsotopeVector() const
Definition: G4Element.hh:163
G4int GetN() const
Definition: G4Isotope.hh:93
virtual G4double GetElementCrossSection(const G4DynamicParticle *, G4int Z, 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 G4bool IsIsoApplicable(const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm=nullptr, const G4Material *mat=nullptr)
virtual G4bool IsElementApplicable(const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr)

References A, G4VCrossSectionDataSet::GetElementCrossSection(), G4VCrossSectionDataSet::GetIsoCrossSection(), G4Element::GetIsotopeVector(), G4Isotope::GetN(), G4Element::GetNumberOfIsotopes(), G4Element::GetRelativeAbundanceVector(), G4Element::GetZasInt(), G4VCrossSectionDataSet::IsElementApplicable(), G4VCrossSectionDataSet::IsIsoApplicable(), and Z.

Referenced by G4VCrossSectionDataSet::GetCrossSection().

◆ CrossSectionDescription()

void G4VCrossSectionDataSet::CrossSectionDescription ( std::ostream &  outFile) const
virtualinherited

◆ DumpPhysicsTable()

void G4VCrossSectionDataSet::DumpPhysicsTable ( const G4ParticleDefinition )
virtualinherited

◆ ForAllAtomsAndEnergies()

bool G4VCrossSectionDataSet::ForAllAtomsAndEnergies ( ) const
inlineinherited

◆ GetANuMuTotCsArray()

G4double G4MuNeutrinoNucleusTotXsc::GetANuMuTotCsArray ( G4int  index)

Definition at line 308 of file G4MuNeutrinoNucleusTotXsc.cc.

309{
310 if( index >= 0 && index < fIndex) return fANuMuInXsc[index] + fANuMuQeXsc[index];
311 else
312 {
313 G4cout<<"Improper index of fANuMuTotXsc array"<<G4endl;
314 return 0.;
315 }
316}
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
static const G4double fANuMuQeXsc[50]
static const G4double fANuMuInXsc[50]

References fANuMuInXsc, fANuMuQeXsc, fIndex, G4cout, and G4endl.

◆ GetANuMuTotCsXsc()

G4double G4MuNeutrinoNucleusTotXsc::GetANuMuTotCsXsc ( G4int  index,
G4double  energy,
G4int  Z,
G4int  A 
)

Definition at line 258 of file G4MuNeutrinoNucleusTotXsc.cc.

259{
260 G4double xsc(0.), qexsc(0.), inxsc(0.);
261
262 if( index <= 0 || energy < theMuonPlus->GetPDGMass() ) xsc = aa*fANuMuInXsc[0] + zz*fANuMuQeXsc[0];
263 else if (index >= fIndex) xsc = aa*fANuMuInXsc[fIndex-1] + zz*fANuMuQeXsc[fIndex-1];
264 else
265 {
266 G4double x1 = fNuMuEnergy[index-1]*GeV;
267 G4double x2 = fNuMuEnergy[index]*GeV;
268 G4double y1 = fANuMuInXsc[index-1];
269 G4double y2 = fANuMuInXsc[index];
270 G4double z1 = fANuMuQeXsc[index-1];
271 G4double z2 = fANuMuQeXsc[index];
272
273 if( x1 >= x2 ) return aa*fANuMuInXsc[index] + zz*fANuMuQeXsc[index];
274 else
275 {
276 G4double angle = (y2-y1)/(x2-x1);
277 inxsc = y1 + (energy-x1)*angle;
278
279 angle = (z2-z1)/(x2-x1);
280 qexsc = z1 + (energy-x1)*angle;
281 qexsc *= zz;
282 xsc = inxsc*aa + qexsc;
283
284 if( xsc > 0.) fQEratio = qexsc/xsc;
285 }
286 }
287 return xsc;
288}
static const G4double angle[DIMMOTT]
static const G4double fNuMuEnergy[50]
G4double energy(const ThreeVector &p, const G4double m)

References angle, G4INCL::KinematicsUtils::energy(), fANuMuInXsc, fANuMuQeXsc, fIndex, fNuMuEnergy, fQEratio, and GeV.

Referenced by GetIsoCrossSection().

◆ GetBiasingFactor()

G4double G4MuNeutrinoNucleusTotXsc::GetBiasingFactor ( )
inline

Definition at line 77 of file G4MuNeutrinoNucleusTotXsc.hh.

77{return fBiasingFactor;};

References fBiasingFactor.

◆ GetCcTotRatio()

G4double G4MuNeutrinoNucleusTotXsc::GetCcTotRatio ( )
inline

Definition at line 80 of file G4MuNeutrinoNucleusTotXsc.hh.

80{return fCcTotRatio;};

References fCcTotRatio.

Referenced by G4MuNeutrinoNucleusProcess::PostStepDoIt().

◆ GetCrossSection()

G4double G4VCrossSectionDataSet::GetCrossSection ( const G4DynamicParticle dp,
const G4Element elm,
const G4Material mat = nullptr 
)
inlineinherited

Definition at line 187 of file G4VCrossSectionDataSet.hh.

190{
191 return ComputeCrossSection(dp, elm, mat);
192}
G4double ComputeCrossSection(const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)

References G4VCrossSectionDataSet::ComputeCrossSection().

◆ GetCutEnergy()

G4double G4MuNeutrinoNucleusTotXsc::GetCutEnergy ( )
inline

Definition at line 74 of file G4MuNeutrinoNucleusTotXsc.hh.

74{return fCutEnergy;};

References fCutEnergy.

◆ GetElementCrossSection()

G4double G4MuNeutrinoNucleusTotXsc::GetElementCrossSection ( const G4DynamicParticle dynPart,
G4int  Z,
const G4Material mat 
)
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 100 of file G4MuNeutrinoNucleusTotXsc.cc.

102{
103 G4int Zi(0);
104 size_t i(0), j(0);
105 const G4ElementVector* theElementVector = mat->GetElementVector();
106
107 for ( i = 0; i < theElementVector->size(); ++i )
108 {
109 Zi = (*theElementVector)[i]->GetZasInt();
110 if( Zi == Z ) break;
111 }
112 const G4Element* elm = (*theElementVector)[i];
113 size_t nIso = elm->GetNumberOfIsotopes();
114 G4double fact = 0.0;
115 G4double xsec = 0.0;
116 const G4Isotope* iso = nullptr;
117 const G4IsotopeVector* isoVector = elm->GetIsotopeVector();
118 const G4double* abundVector = elm->GetRelativeAbundanceVector();
119
120 for (j = 0; j<nIso; ++j)
121 {
122 iso = (*isoVector)[j];
123 G4int A = iso->GetN();
124
125 if( abundVector[j] > 0.0 && IsIsoApplicable(part, Z, A, elm, mat) )
126 {
127 fact += abundVector[j];
128 xsec += abundVector[j]*GetIsoCrossSection( part, Z, A, iso, elm, mat);
129 }
130 }
131 if( fact > 0.0) { xsec /= fact; }
132 return xsec;
133}
std::vector< const G4Element * > G4ElementVector
const G4ElementVector * GetElementVector() const
Definition: G4Material.hh:186
virtual G4double GetIsoCrossSection(const G4DynamicParticle *aPart, G4int Z, G4int A, const G4Isotope *, const G4Element *, const G4Material *)
virtual G4bool IsIsoApplicable(const G4DynamicParticle *, G4int Z, G4int A, const G4Element *, const G4Material *)

References A, G4Material::GetElementVector(), GetIsoCrossSection(), G4Element::GetIsotopeVector(), G4Isotope::GetN(), G4Element::GetNumberOfIsotopes(), G4Element::GetRelativeAbundanceVector(), IsIsoApplicable(), and Z.

◆ GetEnergyIndex()

G4int G4MuNeutrinoNucleusTotXsc::GetEnergyIndex ( G4double  energy)

Definition at line 200 of file G4MuNeutrinoNucleusTotXsc.cc.

201{
202 G4int i, eIndex = 0;
203
204 for( i = 0; i < fIndex; i++)
205 {
206 if( energy <= fNuMuEnergy[i]*GeV )
207 {
208 eIndex = i;
209 break;
210 }
211 }
212 if( i >= fIndex ) eIndex = i;
213 // G4cout<<"eIndex = "<<eIndex<<G4endl;
214 return eIndex;
215}

References G4INCL::KinematicsUtils::energy(), fIndex, fNuMuEnergy, and GeV.

Referenced by GetIsoCrossSection().

◆ GetIsoCrossSection()

G4double G4MuNeutrinoNucleusTotXsc::GetIsoCrossSection ( const G4DynamicParticle aPart,
G4int  Z,
G4int  A,
const G4Isotope ,
const G4Element ,
const G4Material  
)
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 139 of file G4MuNeutrinoNucleusTotXsc.cc.

141{
142 fCcFactor = fNcFactor = 1.;
143 fCcTotRatio = 0.25;
144
145 G4double ccnuXsc, ccanuXsc, ncXsc, totXsc(0.);
146
147 G4double energy = aPart->GetTotalEnergy();
148 G4String pName = aPart->GetDefinition()->GetParticleName();
149
150 G4int index = GetEnergyIndex(energy);
151
152 if( index >= fIndex )
153 {
155 G4double s2 = 2.*energy*pm+pm*pm;
156 G4double aa = 1.;
157 G4double bb = 1.085;
158 G4double mw = 80.385*GeV;
159 fCcFactor = bb/(1.+ aa*s2/mw/mw);
160
161 G4double mz = 91.1876*GeV;
162 fNcFactor = bb/(1.+ aa*s2/mz/mz);
163 }
164 ccnuXsc = GetNuMuTotCsXsc(index, energy, Z, A);
165 ccnuXsc *= fCcFactor;
166 ccanuXsc = GetANuMuTotCsXsc(index, energy, Z, A);
167 ccanuXsc *= fCcFactor;
168
169 if( pName == "nu_mu")
170 {
171 ncXsc = fCofL*ccnuXsc + fCofS*ccanuXsc;
172 ncXsc *= fNcFactor/fCcFactor;
173 totXsc = ccnuXsc + ncXsc;
174 if( totXsc > 0.) fCcTotRatio = ccnuXsc/totXsc;
175 }
176 else if( pName == "anti_nu_mu")
177 {
178 ncXsc = fCofL*ccanuXsc + fCofS*ccnuXsc;
179 ncXsc *= fNcFactor/fCcFactor;
180 totXsc = ccanuXsc + ncXsc;
181 if( totXsc > 0.) fCcTotRatio = ccanuXsc/totXsc;
182 }
183 else return totXsc;
184
185 totXsc *= fCofXsc;
186 totXsc *= energy;
187 // totXsc *= A; // incoherent sum over all isotope nucleons
188
189 totXsc *= fBiasingFactor; // biasing up, if set >1
190
191 fTotXsc = totXsc;
192
193 return totXsc;
194}
G4ParticleDefinition * GetDefinition() const
G4double GetTotalEnergy() const
G4double GetNuMuTotCsXsc(G4int index, G4double energy, G4int Z, G4int A)
G4double GetANuMuTotCsXsc(G4int index, G4double energy, G4int Z, G4int A)
G4int GetEnergyIndex(G4double energy)
const G4String & GetParticleName() const
float proton_mass_c2
Definition: hepunit.py:274

References A, G4INCL::KinematicsUtils::energy(), fBiasingFactor, fCcFactor, fCcTotRatio, fCofL, fCofS, fCofXsc, fIndex, fNcFactor, fTotXsc, GetANuMuTotCsXsc(), G4DynamicParticle::GetDefinition(), GetEnergyIndex(), GetNuMuTotCsXsc(), G4ParticleDefinition::GetParticleName(), G4DynamicParticle::GetTotalEnergy(), GeV, source.hepunit::proton_mass_c2, and Z.

Referenced by GetElementCrossSection().

◆ GetMaxKinEnergy()

G4double G4VCrossSectionDataSet::GetMaxKinEnergy ( ) const
inlineinherited

◆ GetMinKinEnergy()

G4double G4VCrossSectionDataSet::GetMinKinEnergy ( ) const
inlineinherited

◆ GetName()

const G4String & G4VCrossSectionDataSet::GetName ( ) const
inlineinherited

◆ GetNuMuTotCsArray()

G4double G4MuNeutrinoNucleusTotXsc::GetNuMuTotCsArray ( G4int  index)

Definition at line 294 of file G4MuNeutrinoNucleusTotXsc.cc.

295{
296 if( index >= 0 && index < fIndex) return fNuMuInXsc[index] + fNuMuInXsc[index];
297 else
298 {
299 G4cout<<"Improper index of fNuMuTotXsc array"<<G4endl;
300 return 0.;
301 }
302}
static const G4double fNuMuInXsc[50]

References fIndex, fNuMuInXsc, G4cout, and G4endl.

◆ GetNuMuTotCsXsc()

G4double G4MuNeutrinoNucleusTotXsc::GetNuMuTotCsXsc ( G4int  index,
G4double  energy,
G4int  Z,
G4int  A 
)

Definition at line 221 of file G4MuNeutrinoNucleusTotXsc.cc.

222{
223 G4double xsc(0.), qexsc(0.), inxsc(0.);
224 G4int nn = aa - zz;
225 if(nn < 1) nn = 0;
226
227 if( index <= 0 || energy < theMuonMinus->GetPDGMass() ) xsc = aa*fNuMuInXsc[0] + nn*fNuMuQeXsc[0];
228 else if (index >= fIndex) xsc = aa*fNuMuInXsc[fIndex-1] + nn*fNuMuQeXsc[fIndex-1];
229 else
230 {
231 G4double x1 = fNuMuEnergy[index-1]*GeV;
232 G4double x2 = fNuMuEnergy[index]*GeV;
233 G4double y1 = fNuMuInXsc[index-1];
234 G4double y2 = fNuMuInXsc[index];
235 G4double z1 = fNuMuQeXsc[index-1];
236 G4double z2 = fNuMuQeXsc[index];
237
238 if(x1 >= x2) return aa*fNuMuInXsc[index] + nn*fNuMuQeXsc[index];
239 else
240 {
241 G4double angle = (y2-y1)/(x2-x1);
242 inxsc = y1 + (energy-x1)*angle;
243 angle = (z2-z1)/(x2-x1);
244 qexsc = z1 + (energy-x1)*angle;
245 qexsc *= nn;
246 xsc = inxsc*aa + qexsc;
247
248 if( xsc > 0.) fQEratio = qexsc/xsc;
249 }
250 }
251 return xsc;
252}
static const G4double fNuMuQeXsc[50]

References angle, G4INCL::KinematicsUtils::energy(), fIndex, fNuMuEnergy, fNuMuInXsc, fNuMuQeXsc, fQEratio, GeV, and G4InuclParticleNames::nn.

Referenced by GetIsoCrossSection().

◆ GetQEratio()

G4double G4MuNeutrinoNucleusTotXsc::GetQEratio ( )
inline

Definition at line 81 of file G4MuNeutrinoNucleusTotXsc.hh.

81{return fQEratio;};

References fQEratio.

◆ GetTotXsc()

G4double G4MuNeutrinoNucleusTotXsc::GetTotXsc ( )
inline

Definition at line 79 of file G4MuNeutrinoNucleusTotXsc.hh.

79{return fTotXsc;};

References fTotXsc.

◆ GetVerboseLevel()

G4int G4VCrossSectionDataSet::GetVerboseLevel ( ) const
inlinevirtualinherited

◆ IsElementApplicable()

virtual G4bool G4MuNeutrinoNucleusTotXsc::IsElementApplicable ( const G4DynamicParticle ,
G4int  ,
const G4Material  
)
inlinevirtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 53 of file G4MuNeutrinoNucleusTotXsc.hh.

53{ return true; };

◆ IsIsoApplicable()

G4bool G4MuNeutrinoNucleusTotXsc::IsIsoApplicable ( const G4DynamicParticle aPart,
G4int  Z,
G4int  A,
const G4Element ,
const G4Material  
)
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 86 of file G4MuNeutrinoNucleusTotXsc.cc.

87{
88 G4bool result = false;
89 G4String pName = aPart->GetDefinition()->GetParticleName();
90
91 if( pName == "nu_mu" || pName == "anti_nu_mu" )
92 {
93 result = true;
94 }
95 return result;
96}
bool G4bool
Definition: G4Types.hh:86

References G4DynamicParticle::GetDefinition(), and G4ParticleDefinition::GetParticleName().

Referenced by GetElementCrossSection().

◆ SelectIsotope()

const G4Isotope * G4VCrossSectionDataSet::SelectIsotope ( const G4Element anElement,
G4double  kinEnergy,
G4double  logE 
)
virtualinherited

Reimplemented in G4GammaNuclearXS, G4NeutronCaptureXS, G4NeutronElasticXS, G4NeutronInelasticXS, and G4ParticleInelasticXS.

Definition at line 149 of file G4VCrossSectionDataSet.cc.

151{
152 size_t nIso = anElement->GetNumberOfIsotopes();
153 const G4Isotope* iso = anElement->GetIsotope(0);
154
155 // more than 1 isotope
156 if(1 < nIso) {
157 const G4double* abundVector = anElement->GetRelativeAbundanceVector();
158 G4double sum = 0.0;
160 for (size_t j=0; j<nIso; ++j) {
161 sum += abundVector[j];
162 if(q <= sum) {
163 iso = anElement->GetIsotope(j);
164 break;
165 }
166 }
167 }
168 return iso;
169}
#define G4UniformRand()
Definition: Randomize.hh:52
const G4Isotope * GetIsotope(G4int iso) const
Definition: G4Element.hh:170

References G4UniformRand, G4Element::GetIsotope(), G4Element::GetNumberOfIsotopes(), and G4Element::GetRelativeAbundanceVector().

◆ SetBiasingFactor()

void G4MuNeutrinoNucleusTotXsc::SetBiasingFactor ( G4double  bf)
inline

Definition at line 76 of file G4MuNeutrinoNucleusTotXsc.hh.

76{fBiasingFactor=bf;};

References fBiasingFactor.

Referenced by G4MuNeutrinoNucleusProcess::SetBiasingFactor().

◆ SetCutEnergy()

void G4MuNeutrinoNucleusTotXsc::SetCutEnergy ( G4double  ec)
inline

Definition at line 73 of file G4MuNeutrinoNucleusTotXsc.hh.

73{fCutEnergy=ec;};

References fCutEnergy.

◆ SetForAllAtomsAndEnergies()

void G4VCrossSectionDataSet::SetForAllAtomsAndEnergies ( G4bool  val)
inlineinherited

◆ SetMaxKinEnergy()

void G4VCrossSectionDataSet::SetMaxKinEnergy ( G4double  value)
inlineinherited

◆ SetMinKinEnergy()

void G4VCrossSectionDataSet::SetMinKinEnergy ( G4double  value)
inlineinherited

◆ SetName()

void G4VCrossSectionDataSet::SetName ( const G4String nam)
inlineinherited

Definition at line 240 of file G4VCrossSectionDataSet.hh.

241{
242 name = nam;
243}

References G4VCrossSectionDataSet::name.

Referenced by G4ParticleHPInelasticData::G4ParticleHPInelasticData().

◆ SetVerboseLevel()

void G4VCrossSectionDataSet::SetVerboseLevel ( G4int  value)
inlinevirtualinherited

Field Documentation

◆ fANuMuInXsc

const G4double G4MuNeutrinoNucleusTotXsc::fANuMuInXsc
staticprotected
Initial value:
=
{
0, 0, 0, 0, 0,
0, 0, 0.00437363, 0.0161485, 0.0333162,
0.0557621, 0.0814548, 0.108838, 0.136598, 0.163526,
0.188908, 0.212041, 0.232727, 0.250872, 0.26631,
0.279467, 0.290341, 0.299177, 0.306299, 0.311864,
0.316108, 0.319378, 0.321892, 0.323583, 0.324909,
0.325841, 0.326568, 0.327111, 0.327623, 0.32798,
0.328412, 0.328704, 0.328988, 0.329326, 0.329559,
0.329791, 0.330051, 0.330327, 0.33057, 0.330834,
0.331115, 0.331416, 0.331678, 0.33192, 0.332124 }

Definition at line 97 of file G4MuNeutrinoNucleusTotXsc.hh.

Referenced by GetANuMuTotCsArray(), and GetANuMuTotCsXsc().

◆ fANuMuQeXsc

const G4double G4MuNeutrinoNucleusTotXsc::fANuMuQeXsc
staticprotected
Initial value:
=
{
0.0770264, 0.138754, 0.177006, 0.202417, 0.21804,
0.225742, 0.227151, 0.223805, 0.21709, 0.208137,
0.197763, 0.186496, 0.174651, 0.162429, 0.14999,
0.137498, 0.125127, 0.113057, 0.101455, 0.0904642,
0.0801914, 0.0707075, 0.0620483, 0.0542192, 0.0472011,
0.0409571, 0.0354377, 0.0305862, 0.0263422, 0.0226451,
0.0194358, 0.0166585, 0.0142613, 0.0121968, 0.0104221,
0.00889912, 0.00759389, 0.00647662, 0.00552119, 0.00470487,
0.00400791, 0.00341322, 0.00290607, 0.00247377, 0.0021054,
0.00179162, 0.00152441, 0.00129691, 0.00110323, 0.000938345 }

Definition at line 98 of file G4MuNeutrinoNucleusTotXsc.hh.

Referenced by GetANuMuTotCsArray(), and GetANuMuTotCsXsc().

◆ fBiasingFactor

G4double G4MuNeutrinoNucleusTotXsc::fBiasingFactor
protected

◆ fCcFactor

G4double G4MuNeutrinoNucleusTotXsc::fCcFactor
protected

Definition at line 90 of file G4MuNeutrinoNucleusTotXsc.hh.

Referenced by G4MuNeutrinoNucleusTotXsc(), and GetIsoCrossSection().

◆ fCcTotRatio

G4double G4MuNeutrinoNucleusTotXsc::fCcTotRatio
protected

◆ fCofL

G4double G4MuNeutrinoNucleusTotXsc::fCofL
protected

Definition at line 87 of file G4MuNeutrinoNucleusTotXsc.hh.

Referenced by G4MuNeutrinoNucleusTotXsc(), and GetIsoCrossSection().

◆ fCofS

G4double G4MuNeutrinoNucleusTotXsc::fCofS
protected

Definition at line 87 of file G4MuNeutrinoNucleusTotXsc.hh.

Referenced by G4MuNeutrinoNucleusTotXsc(), and GetIsoCrossSection().

◆ fCofXsc

G4double G4MuNeutrinoNucleusTotXsc::fCofXsc
protected

Definition at line 85 of file G4MuNeutrinoNucleusTotXsc.hh.

Referenced by G4MuNeutrinoNucleusTotXsc(), and GetIsoCrossSection().

◆ fCutEnergy

G4double G4MuNeutrinoNucleusTotXsc::fCutEnergy
protected

◆ fIndex

G4int G4MuNeutrinoNucleusTotXsc::fIndex
protected

◆ fNcFactor

G4double G4MuNeutrinoNucleusTotXsc::fNcFactor
protected

Definition at line 90 of file G4MuNeutrinoNucleusTotXsc.hh.

Referenced by G4MuNeutrinoNucleusTotXsc(), and GetIsoCrossSection().

◆ fNuMuEnergy

const G4double G4MuNeutrinoNucleusTotXsc::fNuMuEnergy
staticprotected
Initial value:
=
{
0.12, 0.141136, 0.165996, 0.195233, 0.229621,
0.270066, 0.317634, 0.373581, 0.439382, 0.516773,
0.607795, 0.714849, 0.84076, 0.988848, 1.16302,
1.36787, 1.6088, 1.89217, 2.22545, 2.61743,
3.07845, 3.62068, 4.25841, 5.00847, 5.89065,
6.9282, 8.14851, 9.58376, 11.2718, 13.2572,
15.5922, 18.3386, 21.5687, 25.3677, 29.8359,
35.0911, 41.2719, 48.5413, 57.0912, 67.147,
78.974, 92.8842, 109.244, 128.486, 151.117,
177.735, 209.04, 245.86, 289.164, 340.097 }

Definition at line 94 of file G4MuNeutrinoNucleusTotXsc.hh.

Referenced by GetANuMuTotCsXsc(), GetEnergyIndex(), and GetNuMuTotCsXsc().

◆ fNuMuInXsc

const G4double G4MuNeutrinoNucleusTotXsc::fNuMuInXsc
staticprotected
Initial value:
=
{
0, 0, 0, 0, 0,
0, 0, 0.0166853, 0.0649693, 0.132346,
0.209102, 0.286795, 0.3595, 0.423961, 0.479009,
0.524797, 0.562165, 0.592225, 0.61612, 0.63491,
0.649524, 0.660751, 0.669245, 0.675546, 0.680092,
0.683247, 0.685307, 0.686521, 0.687093, 0.687184,
0.686919, 0.686384, 0.685631, 0.684689, 0.68357,
0.682275, 0.680806, 0.67917, 0.677376, 0.675442,
0.673387, 0.671229, 0.668985, 0.666665, 0.664272,
0.661804, 0.65925, 0.656593, 0.65381, 0.650871 }

Definition at line 95 of file G4MuNeutrinoNucleusTotXsc.hh.

Referenced by GetNuMuTotCsArray(), and GetNuMuTotCsXsc().

◆ fNuMuQeXsc

const G4double G4MuNeutrinoNucleusTotXsc::fNuMuQeXsc
staticprotected
Initial value:
=
{
0.20787, 0.411055, 0.570762, 0.705379, 0.814702,
0.89543, 0.944299, 0.959743, 0.942906, 0.897917,
0.831331, 0.750948, 0.66443, 0.578191, 0.496828,
0.423071, 0.358103, 0.302016, 0.254241, 0.213889,
0.179971, 0.151527, 0.12769, 0.107706, 0.0909373,
0.0768491, 0.0649975, 0.0550143, 0.0465948, 0.0394861,
0.0334782, 0.0283964, 0.0240945, 0.0204506, 0.0173623,
0.0147437, 0.0125223, 0.0106374, 0.00903737, 0.00767892,
0.00652531, 0.00554547, 0.0047131, 0.0040059, 0.003405,
0.00289436, 0.00246039, 0.00209155, 0.00177804, 0.00151152 }

Definition at line 96 of file G4MuNeutrinoNucleusTotXsc.hh.

Referenced by GetNuMuTotCsXsc().

◆ fQEratio

G4double G4MuNeutrinoNucleusTotXsc::fQEratio
protected

◆ fSin2tW

G4double G4MuNeutrinoNucleusTotXsc::fSin2tW
protected

Definition at line 86 of file G4MuNeutrinoNucleusTotXsc.hh.

Referenced by G4MuNeutrinoNucleusTotXsc().

◆ fTotXsc

G4double G4MuNeutrinoNucleusTotXsc::fTotXsc
protected

◆ isForAllAtomsAndEnergies

G4bool G4VCrossSectionDataSet::isForAllAtomsAndEnergies
privateinherited

◆ maxKinEnergy

G4double G4VCrossSectionDataSet::maxKinEnergy
privateinherited

◆ minKinEnergy

G4double G4VCrossSectionDataSet::minKinEnergy
privateinherited

◆ name

G4String G4VCrossSectionDataSet::name
protectedinherited

◆ registry

G4CrossSectionDataSetRegistry* G4VCrossSectionDataSet::registry
privateinherited

◆ theMuonMinus

G4ParticleDefinition* G4MuNeutrinoNucleusTotXsc::theMuonMinus
protected

Definition at line 100 of file G4MuNeutrinoNucleusTotXsc.hh.

Referenced by G4MuNeutrinoNucleusTotXsc().

◆ theMuonPlus

G4ParticleDefinition* G4MuNeutrinoNucleusTotXsc::theMuonPlus
protected

Definition at line 101 of file G4MuNeutrinoNucleusTotXsc.hh.

Referenced by G4MuNeutrinoNucleusTotXsc().

◆ verboseLevel

G4int G4VCrossSectionDataSet::verboseLevel
protectedinherited

Definition at line 168 of file G4VCrossSectionDataSet.hh.

Referenced by G4BGGNucleonElasticXS::BuildPhysicsTable(), G4BGGPionElasticXS::BuildPhysicsTable(), G4BGGPionInelasticXS::BuildPhysicsTable(), G4GammaNuclearXS::BuildPhysicsTable(), G4NeutronCaptureXS::BuildPhysicsTable(), G4NeutronElasticXS::BuildPhysicsTable(), G4NeutronInelasticXS::BuildPhysicsTable(), G4ParticleInelasticXS::BuildPhysicsTable(), G4BGGNucleonInelasticXS::BuildPhysicsTable(), G4LENDCrossSection::create_used_target_map(), G4BGGNucleonElasticXS::G4BGGNucleonElasticXS(), G4BGGNucleonInelasticXS::G4BGGNucleonInelasticXS(), G4BGGPionElasticXS::G4BGGPionElasticXS(), G4BGGPionInelasticXS::G4BGGPionInelasticXS(), G4GammaNuclearXS::G4GammaNuclearXS(), G4NeutronCaptureXS::G4NeutronCaptureXS(), G4NeutronElasticXS::G4NeutronElasticXS(), G4NeutronInelasticXS::G4NeutronInelasticXS(), G4ParticleInelasticXS::G4ParticleInelasticXS(), G4NeutronCaptureXS::GetElementCrossSection(), G4NeutronElasticXS::GetElementCrossSection(), G4NeutronInelasticXS::GetElementCrossSection(), G4BGGNucleonElasticXS::GetElementCrossSection(), G4BGGPionElasticXS::GetElementCrossSection(), G4BGGPionInelasticXS::GetElementCrossSection(), G4BGGNucleonInelasticXS::GetElementCrossSection(), G4GammaNuclearXS::GetElementCrossSection(), G4ParticleInelasticXS::GetElementCrossSection(), G4BGGNucleonElasticXS::GetIsoCrossSection(), G4BGGPionElasticXS::GetIsoCrossSection(), G4BGGPionInelasticXS::GetIsoCrossSection(), G4GammaNuclearXS::GetIsoCrossSection(), G4BGGNucleonInelasticXS::GetIsoCrossSection(), G4VCrossSectionDataSet::GetVerboseLevel(), G4NeutronElasticXS::Initialise(), G4ParticleInelasticXS::IsoCrossSection(), G4NeutronCaptureXS::IsoCrossSection(), G4NeutronInelasticXS::IsoCrossSection(), G4GammaNuclearXS::RetrieveVector(), G4NeutronCaptureXS::RetrieveVector(), G4NeutronInelasticXS::RetrieveVector(), G4ParticleInelasticXS::RetrieveVector(), and G4VCrossSectionDataSet::SetVerboseLevel().


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