#include <G4KokoulinMuonNuclearXS.hh>
|
| G4KokoulinMuonNuclearXS () |
|
virtual | ~G4KokoulinMuonNuclearXS () |
|
virtual void | CrossSectionDescription (std::ostream &) const |
|
G4bool | IsElementApplicable (const G4DynamicParticle *particle, G4int Z, const G4Material *) |
|
G4double | GetElementCrossSection (const G4DynamicParticle *particle, G4int Z, const G4Material *) |
|
void | BuildPhysicsTable (const G4ParticleDefinition &) |
|
void | BuildCrossSectionTable () |
|
G4double | ComputeDDMicroscopicCrossSection (G4double incidentKE, G4double Z, G4double A, G4double epsilon) |
|
| G4VCrossSectionDataSet (const G4String &nam="") |
|
virtual | ~G4VCrossSectionDataSet () |
|
virtual G4bool | IsElementApplicable (const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr) |
|
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 | 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 const G4Isotope * | SelectIsotope (const G4Element *, G4double kinEnergy, G4double logE) |
|
virtual void | BuildPhysicsTable (const G4ParticleDefinition &) |
|
virtual void | DumpPhysicsTable (const G4ParticleDefinition &) |
|
virtual void | CrossSectionDescription (std::ostream &) const |
|
virtual G4int | GetVerboseLevel () 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 G4String & | GetName () const |
|
Definition at line 52 of file G4KokoulinMuonNuclearXS.hh.
◆ G4KokoulinMuonNuclearXS()
G4KokoulinMuonNuclearXS::G4KokoulinMuonNuclearXS |
( |
| ) |
|
Definition at line 58 of file G4KokoulinMuonNuclearXS.cc.
60 LowestKineticEnergy(1*GeV), HighestKineticEnergy(1*PeV),
61 TotBin(60), CutFixed(0.2*GeV), isInitialized(false), isMaster(false)
62{}
static const char * Default_Name()
◆ ~G4KokoulinMuonNuclearXS()
G4KokoulinMuonNuclearXS::~G4KokoulinMuonNuclearXS |
( |
| ) |
|
|
virtual |
Definition at line 64 of file G4KokoulinMuonNuclearXS.cc.
65{
66 if (isMaster) {
68 delete theCrossSection[i];
69 theCrossSection[i] = 0;
70 }
71 }
72}
◆ BuildCrossSectionTable()
void G4KokoulinMuonNuclearXS::BuildCrossSectionTable |
( |
| ) |
|
Definition at line 107 of file G4KokoulinMuonNuclearXS.cc.
108{
111
115
116 for (
G4int j = 0; j < nEl; j++) {
117 Z =
G4lrint((*theElementTable)[j]->GetZ());
118
119
120 const G4bool isHeavyElementAllowed =
true;
if ( isHeavyElementAllowed && Z>92 ) Z=92;
121
123 if(Z <
MAXZMUN && !theCrossSection[Z]) {
125 HighestKineticEnergy,
126 TotBin);
127 for (
G4int i = 0; i <= TotBin; ++i) {
129 Value = ComputeMicroscopicCrossSection(energy, A);
130 theCrossSection[Z]->
PutValue(i,Value);
131 }
132 }
133 }
134}
double A(double temperature)
std::vector< G4Element * > G4ElementTable
static G4ElementTable * GetElementTable()
static size_t GetNumberOfElements()
static G4NistManager * Instance()
G4double GetAtomicMassAmu(const G4String &symb) const
G4double Energy(std::size_t index) const
void PutValue(std::size_t index, G4double theValue)
G4double energy(const ThreeVector &p, const G4double m)
Referenced by BuildPhysicsTable().
◆ BuildPhysicsTable()
Reimplemented from G4VCrossSectionDataSet.
Definition at line 95 of file G4KokoulinMuonNuclearXS.cc.
96{
97 if(!isInitialized) {
98 isInitialized = true;
100 if(theCrossSection[i]) { return; }
101 }
102 isMaster = true;
103 }
105}
void BuildCrossSectionTable()
◆ ComputeDDMicroscopicCrossSection()
Definition at line 181 of file G4KokoulinMuonNuclearXS.cc.
184{
185
186
187
188
189 static const G4double alam2 = 0.400*GeV*GeV;
190 static const G4double alam = 0.632456*GeV;
191 static const G4double coeffn = fine_structure_const/
pi;
192
195
197
198 if ((
epsilon >= TotalEnergy - 0.5*proton_mass_c2) ||
199 (
epsilon <= CutFixed) ) {
return DCrossSection; }
200
203 G4double sigph = (49.2+11.1*
G4Log(ep)+151.8/std::sqrt(ep))*microbarn;
204
208 G4double mass2 = ParticleMass*ParticleMass;
209
210 G4double up = TotalEnergy*TotalEnergy*v1/mass2*(1.+mass2*v2/(alam2*v1));
212
213 DCrossSection = coeffn*aeff*sigph/
epsilon*
214 (-v1+(v1+0.5*v2*(1.+2.*mass2/alam2))*
G4Log(up/down));
215
216 if (DCrossSection < 0.) { DCrossSection = 0.; }
217 return DCrossSection;
218}
double epsilon(double density, double temperature)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
static G4MuonMinus * MuonMinus()
G4double GetPDGMass() const
◆ CrossSectionDescription()
void G4KokoulinMuonNuclearXS::CrossSectionDescription |
( |
std::ostream & |
outFile | ) |
const |
|
virtual |
Reimplemented from G4VCrossSectionDataSet.
Definition at line 76 of file G4KokoulinMuonNuclearXS.cc.
77{
78 outFile << "G4KokoulinMuonNuclearXS provides the total inelastic\n"
79 << "cross section for mu- and mu+ interactions with nuclei.\n"
80 << "R. Kokoulin's approximation of the Borog and Petrukhin double\n"
81 << "differential cross section at high energy and low Q**2 is integrated\n"
82 << "over the muon energy loss to get the total cross section as a\n"
83 << "function of muon kinetic energy\n" ;
84}
◆ Default_Name()
static const char * G4KokoulinMuonNuclearXS::Default_Name |
( |
| ) |
|
|
inlinestatic |
◆ GetElementCrossSection()
Reimplemented from G4VCrossSectionDataSet.
Definition at line 220 of file G4KokoulinMuonNuclearXS.cc.
223{
224
225 const G4bool isHeavyElementAllowed =
true;
if ( isHeavyElementAllowed && Z>92 ) Z=92;
226
227 return theCrossSection[Z]->
Value(aPart->GetKineticEnergy());
228}
G4double Value(G4double theEnergy, std::size_t &lastidx) const
◆ IsElementApplicable()
The documentation for this class was generated from the following files: