104G4double G4ElNeutrinoNucleusTotXsc::GetElementCrossSection(const G4DynamicParticle* part,
105 G4int Z, const G4Material* mat )
109 const G4ElementVector* theElementVector = mat->GetElementVector();
111 for ( i = 0; i < theElementVector->size(); ++i )
113 Zi = (*theElementVector)[i]->GetZasInt();
116 const G4Element* elm = (*theElementVector)[i];
117 size_t nIso = elm->GetNumberOfIsotopes();
120 const G4Isotope* iso = nullptr;
121 const G4IsotopeVector* isoVector = elm->GetIsotopeVector();
122 const G4double* abundVector = elm->GetRelativeAbundanceVector();
124 for (j = 0; j<nIso; ++j)
126 iso = (*isoVector)[j];
127 G4int A = iso->GetN();
129 if( abundVector[j] > 0.0 && IsIsoApplicable(part, Z, A, elm, mat) )
131 fact += abundVector[j];
132 xsec += abundVector[j]*GetIsoCrossSection( part, Z, A, iso, elm, mat);
135 if( fact > 0.0) { xsec /= fact; }
150 G4double ccnuXsc, ccanuXsc, ncXsc, totXsc(0.);
178 totXsc = ccnuXsc + ncXsc;
181 else if( pName ==
"anti_nu_e")
185 totXsc = ccanuXsc + ncXsc;
209 for( i = 0; i <
fIndex; i++)
230 if( index <= 0 || energy < theElectron->GetPDGMass() ) xsc =
fNuElTotXsc[0];
243 xsc = y1 + (energy-x1)*angle;
257 if( index <= 0 || energy < thePositron->GetPDGMass() ) xsc =
fANuElTotXsc[0];
270 xsc = y1 + (energy-x1)*angle;
311 0.000561138, 0.000735091, 0.000962969, 0.00126149, 0.00165255,
312 0.00216484, 0.00283594, 0.00371508, 0.00486676, 0.00637546,
313 0.00835185, 0.0109409, 0.0143326, 0.0187757, 0.0245962,
314 0.032221, 0.0422095, 0.0552945, 0.0724358, 0.0948908,
315 0.124307, 0.162842, 0.213323, 0.279453, 0.366084,
316 0.47957, 0.628237, 0.82299, 1.07812, 1.41233,
317 1.85016, 2.42371, 3.17505, 4.15932, 5.44871,
318 7.13781, 9.35053, 12.2492, 16.0464, 21.0208,
319 27.5373, 36.0739, 47.2568, 61.9064, 81.0973,
320 106.238, 139.171, 182.314, 238.832, 312.869
329 0.0026484, 0.00609503, 0.00939421, 0.0132163, 0.0178983,
330 0.0237692, 0.0312066, 0.0406632, 0.0526867, 0.0679357,
331 0.0871913, 0.111359, 0.141458, 0.178584, 0.223838,
332 0.27822, 0.342461, 0.416865, 0.501361, 0.596739,
333 0.713623, 0.905749, 1.20718, 1.52521, 1.75286,
334 1.82072, 1.67119, 1.50074, 1.3077, 1.14923,
335 1.0577, 0.977911, 0.918526, 0.792889, 0.702282,
336 0.678615, 0.687099, 0.725167, 0.706795, 0.678045,
337 0.649791, 0.651328, 0.651934, 0.658062, 0.660659,
338 0.662534, 0.662601, 0.660261, 0.656724, 0.65212
349 0.00103385, 0.00237807, 0.00366358, 0.00515192, 0.00697434,
350 0.00925859, 0.0121508, 0.0158252, 0.0204908, 0.0263959,
351 0.0338304, 0.0431234, 0.0546346, 0.068735, 0.0857738,
352 0.106025, 0.129614, 0.15643, 0.186063, 0.21784,
353 0.251065, 0.28525, 0.319171, 0.348995, 0.369448,
354 0.378165, 0.377353, 0.371224, 0.363257, 0.355433,
355 0.348618, 0.343082, 0.338825, 0.33574, 0.333684,
356 0.332504, 0.332052, 0.332187, 0.332781, 0.333716,
357 0.33489, 0.336213, 0.337608, 0.339008, 0.340362,
358 0.341606, 0.342706, 0.343628, 0.344305, 0.344675
double A(double temperature)
G4GLOB_DLL std::ostream G4cout
G4ParticleDefinition * GetDefinition() const
G4double GetTotalEnergy() const
const G4ParticleDefinition * thePositron
G4double GetNuElTotCsXsc(G4int index, G4double energy)
static const G4double fNuElTotXsc[50]
G4double GetANuElTotCsXsc(G4int index, G4double energy)
static const G4double fNuElEnergy[50]
G4int GetEnergyIndex(G4double energy)
G4ElNeutrinoNucleusTotXsc()
G4double GetANuElTotCsArray(G4int index)
G4double GetNuElTotCsArray(G4int index)
static const G4double fANuElTotXsc[50]
~G4ElNeutrinoNucleusTotXsc()
const G4ParticleDefinition * theElectron
G4double GetIsoCrossSection(const G4DynamicParticle *aPart, G4int Z, G4int A, const G4Isotope *, const G4Element *, const G4Material *) override
static G4Electron * Electron()
const G4String & GetParticleName() const
static G4Positron * Positron()