Geant4  10.02.p03
G4IonYangFluctuationModel Class Reference

#include <G4IonYangFluctuationModel.hh>

Inheritance diagram for G4IonYangFluctuationModel:
Collaboration diagram for G4IonYangFluctuationModel:

Public Member Functions

 G4IonYangFluctuationModel (const G4String &name)
 
 ~G4IonYangFluctuationModel ()
 
G4double TheValue (const G4DynamicParticle *particle, const G4Material *material)
 
G4double TheValue (const G4ParticleDefinition *aParticle, const G4Material *material, G4double kineticEnergy)
 
G4double HighEnergyLimit (const G4ParticleDefinition *aParticle, const G4Material *material) const
 
G4double LowEnergyLimit (const G4ParticleDefinition *aParticle, const G4Material *material) const
 
G4double HighEnergyLimit (const G4ParticleDefinition *aParticle) const
 
G4double LowEnergyLimit (const G4ParticleDefinition *aParticle) const
 
G4bool IsInCharge (const G4DynamicParticle *particle, const G4Material *material) const
 
G4bool IsInCharge (const G4ParticleDefinition *aParticle, const G4Material *material) const
 
- Public Member Functions inherited from G4VLowEnergyModel
 G4VLowEnergyModel (const G4String &name)
 
virtual ~G4VLowEnergyModel ()
 

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)

Definition at line 68 of file G4IonYangFluctuationModel.cc.

69  : G4VLowEnergyModel(name)
70 {;}
G4VLowEnergyModel(const G4String &name)

◆ ~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 G4Material material 
) const
virtual

Implements G4VLowEnergyModel.

Definition at line 107 of file G4IonYangFluctuationModel.cc.

109 {
110  return 1.0*TeV ;
111 }
static const double TeV
Definition: G4SIunits.hh:215

◆ HighEnergyLimit() [2/2]

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

Implements G4VLowEnergyModel.

Definition at line 123 of file G4IonYangFluctuationModel.cc.

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

◆ IsInCharge() [1/2]

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

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
virtual

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 G4Material material 
) const
virtual

Implements G4VLowEnergyModel.

Definition at line 115 of file G4IonYangFluctuationModel.cc.

117 {
118  return 0.0 ;
119 }

◆ LowEnergyLimit() [2/2]

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

Implements G4VLowEnergyModel.

Definition at line 130 of file G4IonYangFluctuationModel.cc.

132 {
133  return 0.0 ;
134 }

◆ TheValue() [1/2]

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

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 
86  G4double q = YangFluctuationModel(material,energy,mass,charge) ;
87 
88  return q ;
89 }
G4double GetMass() const
G4double GetKineticEnergy() const
double energy
Definition: plottest35.C:25
G4double GetCharge() const
double G4double
Definition: G4Types.hh:76
static const double eplus
Definition: G4SIunits.hh:196
G4double YangFluctuationModel(const G4Material *material, G4double kineticEnergy, G4double particleMass, G4double charge) const
Here is the call graph for this function:

◆ TheValue() [2/2]

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

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 }
double G4double
Definition: G4Types.hh:76
static const double eplus
Definition: G4SIunits.hh:196
G4double YangFluctuationModel(const G4Material *material, G4double kineticEnergy, G4double particleMass, G4double charge) const
G4double GetPDGCharge() const
Here is the call graph for this function:

◆ 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 }
static const double MeV
Definition: G4SIunits.hh:211
G4State GetState() const
Definition: G4Material.hh:181
G4double GetTotNbOfAtomsPerVolume() const
Definition: G4Material.hh:209
int G4int
Definition: G4Types.hh:78
double energy
Definition: plottest35.C:25
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:183
static const G4double factor
G4double GetElectronDensity() const
Definition: G4Material.hh:217
size_t GetNumberOfElements() const
Definition: G4Material.hh:186
double G4double
Definition: G4Types.hh:76
float amu_c2
Definition: hepunit.py:277
Here is the call graph for this function:
Here is the caller graph for this function:

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