Geant4-11
Public Member Functions | Private Member Functions
G4IonYangFluctuationModel Class Reference

#include <G4IonYangFluctuationModel.hh>

Inheritance diagram for G4IonYangFluctuationModel:
G4VLowEnergyModel

Public Member Functions

 G4IonYangFluctuationModel (const G4String &name)
 
G4double HighEnergyLimit (const G4ParticleDefinition *aParticle) const override
 
G4double HighEnergyLimit (const G4ParticleDefinition *aParticle, const G4Material *material) const override
 
G4bool IsInCharge (const G4DynamicParticle *particle, const G4Material *material) const override
 
G4bool IsInCharge (const G4ParticleDefinition *aParticle, const G4Material *material) const override
 
G4double LowEnergyLimit (const G4ParticleDefinition *aParticle) const override
 
G4double LowEnergyLimit (const G4ParticleDefinition *aParticle, const G4Material *material) const override
 
G4double TheValue (const G4DynamicParticle *particle, const G4Material *material) override
 
G4double TheValue (const G4ParticleDefinition *aParticle, const G4Material *material, G4double kineticEnergy) override
 
 ~G4IonYangFluctuationModel ()
 

Private Member Functions

G4double YangFluctuationModel (const G4Material *material, G4double kineticEnergy, G4double particleMass, G4double charge) const
 

Detailed Description

Definition at line 56 of file G4IonYangFluctuationModel.hh.

Constructor & Destructor Documentation

◆ G4IonYangFluctuationModel()

G4IonYangFluctuationModel::G4IonYangFluctuationModel ( const G4String name)
explicit

Definition at line 68 of file G4IonYangFluctuationModel.cc.

70{;}
G4VLowEnergyModel(const G4String &name)
const char * name(G4int ptype)

◆ ~G4IonYangFluctuationModel()

G4IonYangFluctuationModel::~G4IonYangFluctuationModel ( )

Definition at line 74 of file G4IonYangFluctuationModel.cc.

75{;}

Member Function Documentation

◆ HighEnergyLimit() [1/2]

G4double G4IonYangFluctuationModel::HighEnergyLimit ( const G4ParticleDefinition aParticle) const
overridevirtual

Implements G4VLowEnergyModel.

Definition at line 123 of file G4IonYangFluctuationModel.cc.

124{
125 return 1.0*TeV ;
126}
static constexpr double TeV
Definition: G4SIunits.hh:204

References TeV.

◆ HighEnergyLimit() [2/2]

G4double G4IonYangFluctuationModel::HighEnergyLimit ( const G4ParticleDefinition aParticle,
const G4Material material 
) const
overridevirtual

Implements G4VLowEnergyModel.

Definition at line 107 of file G4IonYangFluctuationModel.cc.

109{
110 return 1.0*TeV ;
111}

References TeV.

◆ IsInCharge() [1/2]

G4bool G4IonYangFluctuationModel::IsInCharge ( const G4DynamicParticle particle,
const G4Material material 
) const
overridevirtual

Implements G4VLowEnergyModel.

Definition at line 138 of file G4IonYangFluctuationModel.cc.

140{
141 return true ;
142}

◆ IsInCharge() [2/2]

G4bool G4IonYangFluctuationModel::IsInCharge ( const G4ParticleDefinition aParticle,
const G4Material material 
) const
overridevirtual

Implements G4VLowEnergyModel.

Definition at line 146 of file G4IonYangFluctuationModel.cc.

148{
149 return true ;
150}

◆ LowEnergyLimit() [1/2]

G4double G4IonYangFluctuationModel::LowEnergyLimit ( const G4ParticleDefinition aParticle) const
overridevirtual

Implements G4VLowEnergyModel.

Definition at line 130 of file G4IonYangFluctuationModel.cc.

132{
133 return 0.0 ;
134}

◆ LowEnergyLimit() [2/2]

G4double G4IonYangFluctuationModel::LowEnergyLimit ( const G4ParticleDefinition aParticle,
const G4Material material 
) const
overridevirtual

Implements G4VLowEnergyModel.

Definition at line 115 of file G4IonYangFluctuationModel.cc.

117{
118 return 0.0 ;
119}

◆ TheValue() [1/2]

G4double G4IonYangFluctuationModel::TheValue ( const G4DynamicParticle particle,
const G4Material material 
)
overridevirtual

Implements G4VLowEnergyModel.

Definition at line 79 of file G4IonYangFluctuationModel.cc.

81{
82 G4double energy = particle->GetKineticEnergy() ;
83 G4double mass = particle->GetMass() ;
84 G4double charge = (particle->GetCharge())/eplus ;
85
87
88 return q ;
89}
static constexpr double eplus
Definition: G4SIunits.hh:184
double G4double
Definition: G4Types.hh:83
G4double GetMass() const
G4double GetCharge() const
G4double GetKineticEnergy() const
G4double YangFluctuationModel(const G4Material *material, G4double kineticEnergy, G4double particleMass, G4double charge) const
G4double energy(const ThreeVector &p, const G4double m)
string material
Definition: eplot.py:19

References G4INCL::KinematicsUtils::energy(), eplus, G4DynamicParticle::GetCharge(), G4DynamicParticle::GetKineticEnergy(), G4DynamicParticle::GetMass(), eplot::material, and YangFluctuationModel().

◆ TheValue() [2/2]

G4double G4IonYangFluctuationModel::TheValue ( const G4ParticleDefinition aParticle,
const G4Material material,
G4double  kineticEnergy 
)
overridevirtual

Implements G4VLowEnergyModel.

Definition at line 93 of file G4IonYangFluctuationModel.cc.

96{
97 G4double mass = aParticle->GetPDGMass() ;
98 G4double charge = (aParticle->GetPDGCharge())/eplus ;
99
100 G4double q = YangFluctuationModel(material,kineticEnergy,mass,charge);
101
102 return q ;
103}
G4double GetPDGCharge() const

References eplus, G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), eplot::material, and YangFluctuationModel().

◆ YangFluctuationModel()

G4double G4IonYangFluctuationModel::YangFluctuationModel ( const G4Material material,
G4double  kineticEnergy,
G4double  particleMass,
G4double  charge 
) const
private

Definition at line 154 of file G4IonYangFluctuationModel.cc.

158{
159 // The aproximation of energy loss fluctuations
160 // Q.Yang et al., NIM B61(1991)149-155.
161
162 // Reduced energy in MeV/AMU
163 G4double energy = kineticEnergy *amu_c2/(particleMass*MeV) ;
164
165 G4int i = 0 ;
166 G4double factor = 1.0 ;
167
168 // The index of set of parameters i = 0 for protons(hadrons) in gases
169 // 1 for protons(hadrons) in solids
170 // 2 for ions in atomic gases
171 // 3 for ions in molecular gases
172 // 4 for ions in solids
173 static const G4double b[5][4] = {
174 {0.1014, 0.3700, 0.9642, 3.987},
175 {0.1955, 0.6941, 2.522, 1.040},
176 {0.05058, 0.08975, 0.1419, 10.80},
177 {0.05009, 0.08660, 0.2751, 3.787},
178 {0.01273, 0.03458, 0.3951, 3.812}
179 } ;
180
181 // protons (hadrons)
182 if(1.5 > charge) {
183 if( kStateGas != material->GetState() ) i = 1 ;
184
185 // ions
186 } else {
187 G4double zeff = (material->GetElectronDensity())/
188 (material->GetTotNbOfAtomsPerVolume()) ;
189 factor = charge * std::pow(charge/zeff, 0.3333) ;
190
191 if( kStateGas == material->GetState() ) {
192 energy /= (charge * std::sqrt(charge)) ;
193
194 if(1 == (material->GetNumberOfElements())) {
195 i = 2 ;
196 } else {
197 i = 3 ;
198 }
199
200 } else {
201 energy /= (charge * std::sqrt(charge*zeff)) ;
202 i = 4 ;
203 }
204 }
205
206 G4double x = b[i][2] * (1.0 - G4Exp( - energy * b[i][3] )) ;
207
208 G4double q = factor * x * b[i][0] /
209 ((energy - b[i][1])*(energy - b[i][1]) + x*x) ;
210
211 return q ;
212}
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:179
@ kStateGas
Definition: G4Material.hh:111
static constexpr double MeV
Definition: G4SIunits.hh:200
int G4int
Definition: G4Types.hh:85
float amu_c2
Definition: hepunit.py:276

References source.hepunit::amu_c2, G4INCL::KinematicsUtils::energy(), G4Exp(), kStateGas, eplot::material, and MeV.

Referenced by TheValue().


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