Geant4  10.02.p03
G4hNuclearStoppingModel Class Reference

#include <G4hNuclearStoppingModel.hh>

Inheritance diagram for G4hNuclearStoppingModel:
Collaboration diagram for G4hNuclearStoppingModel:

Public Member Functions

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

Private Member Functions

 G4hNuclearStoppingModel (G4hNuclearStoppingModel &)
 
G4hNuclearStoppingModeloperator= (const G4hNuclearStoppingModel &right)
 
void InitializeMe ()
 
G4double StoppingPower (const G4Material *material, G4double kineticEnergy, G4double z1, G4double m1) const
 

Private Attributes

G4VhNuclearStoppingPowernStopingPowerTable
 
G4double factorPDG2AMU
 
G4double theZieglerFactor
 
G4String modelName
 
G4double lowEnergyLimit
 
G4double highEnergyLimit
 

Detailed Description

Definition at line 60 of file G4hNuclearStoppingModel.hh.

Constructor & Destructor Documentation

◆ G4hNuclearStoppingModel() [1/2]

G4hNuclearStoppingModel::G4hNuclearStoppingModel ( const G4String name)

Definition at line 69 of file G4hNuclearStoppingModel.cc.

70  :G4VLowEnergyModel(name), modelName(name)
71 {
72  InitializeMe() ;
73 }
G4VLowEnergyModel(const G4String &name)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~G4hNuclearStoppingModel()

G4hNuclearStoppingModel::~G4hNuclearStoppingModel ( )

Definition at line 111 of file G4hNuclearStoppingModel.cc.

112 {
113  delete nStopingPowerTable;
114 }
G4VhNuclearStoppingPower * nStopingPowerTable

◆ G4hNuclearStoppingModel() [2/2]

G4hNuclearStoppingModel::G4hNuclearStoppingModel ( G4hNuclearStoppingModel )
private

Member Function Documentation

◆ HighEnergyLimit() [1/2]

G4double G4hNuclearStoppingModel::HighEnergyLimit ( const G4ParticleDefinition ,
const G4Material  
) const
inlinevirtual

Implements G4VLowEnergyModel.

Definition at line 76 of file G4hNuclearStoppingModel.hh.

◆ HighEnergyLimit() [2/2]

G4double G4hNuclearStoppingModel::HighEnergyLimit ( const G4ParticleDefinition ) const
inlinevirtual

Implements G4VLowEnergyModel.

Definition at line 84 of file G4hNuclearStoppingModel.hh.

◆ InitializeMe()

void G4hNuclearStoppingModel::InitializeMe ( )
private

Definition at line 77 of file G4hNuclearStoppingModel.cc.

78 {
79  // Constants
80  highEnergyLimit = 100.*MeV ;
81  lowEnergyLimit = 1.*eV ;
82  factorPDG2AMU = 1.007276/proton_mass_c2 ;
83  theZieglerFactor= eV*cm2*1.0e-15 ;
84 
85  // Registration of parametrisation models of nuclear energy losses
86  G4String blank = G4String(" ") ;
87  G4String ir49 = G4String("ICRU_R49") ;
88  G4String zi85 = G4String("Ziegler1985") ;
89  if(ir49 == modelName || blank == modelName) {
91 
92  } else if(zi85 == modelName) {
94 
95  } else {
96  G4cout <<
97  "G4hLowEnergyIonisation warning: There is no table with the modelName <"
98  << modelName << ">"
99  << " for nuclear stopping, <ICRU_R49> is applied "
100  << G4endl;
102  }
103 
104  // Default is nuclear stopping fluctuations On
105  // nStopingPowerTable->SetNuclearStoppingFluctuationsOn();
107 }
static const double MeV
Definition: G4SIunits.hh:211
static const double cm2
Definition: G4SIunits.hh:119
G4VhNuclearStoppingPower * nStopingPowerTable
G4GLOB_DLL std::ostream G4cout
float proton_mass_c2
Definition: hepunit.py:275
static const double eV
Definition: G4SIunits.hh:212
#define G4endl
Definition: G4ios.hh:61
Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsInCharge() [1/2]

G4bool G4hNuclearStoppingModel::IsInCharge ( const G4DynamicParticle ,
const G4Material  
) const
inlinevirtual

Implements G4VLowEnergyModel.

Definition at line 90 of file G4hNuclearStoppingModel.hh.

92  {return true;};

◆ IsInCharge() [2/2]

G4bool G4hNuclearStoppingModel::IsInCharge ( const G4ParticleDefinition ,
const G4Material  
) const
inlinevirtual

Implements G4VLowEnergyModel.

Definition at line 94 of file G4hNuclearStoppingModel.hh.

96  {return true;};

◆ LowEnergyLimit() [1/2]

G4double G4hNuclearStoppingModel::LowEnergyLimit ( const G4ParticleDefinition ,
const G4Material  
) const
inlinevirtual

Implements G4VLowEnergyModel.

Definition at line 80 of file G4hNuclearStoppingModel.hh.

◆ LowEnergyLimit() [2/2]

G4double G4hNuclearStoppingModel::LowEnergyLimit ( const G4ParticleDefinition ) const
inlinevirtual

Implements G4VLowEnergyModel.

Definition at line 87 of file G4hNuclearStoppingModel.hh.

◆ operator=()

G4hNuclearStoppingModel& G4hNuclearStoppingModel::operator= ( const G4hNuclearStoppingModel right)
private
Here is the caller graph for this function:

◆ SetNuclearStoppingFluctuationsOff()

void G4hNuclearStoppingModel::SetNuclearStoppingFluctuationsOff ( )
inline

Definition at line 101 of file G4hNuclearStoppingModel.hh.

Here is the call graph for this function:

◆ SetNuclearStoppingFluctuationsOn()

void G4hNuclearStoppingModel::SetNuclearStoppingFluctuationsOn ( )
inline

Definition at line 98 of file G4hNuclearStoppingModel.hh.

Here is the call graph for this function:

◆ StoppingPower()

G4double G4hNuclearStoppingModel::StoppingPower ( const G4Material material,
G4double  kineticEnergy,
G4double  z1,
G4double  m1 
) const
private

Definition at line 151 of file G4hNuclearStoppingModel.cc.

155 {
156  // Target nucleus
157  G4int NumberOfElements = material->GetNumberOfElements() ;
158  if(0 == NumberOfElements) return 0.0 ;
159 
160  const G4ElementVector* theElementVector =
161  material->GetElementVector() ;
162  const G4double* theAtomicNumDensityVector =
163  material->GetAtomicNumDensityVector() ;
164 
165  // loop for the elements in the material
166 
167  G4double nloss = 0.0;
168 
169  for (G4int iel=0; iel<NumberOfElements; iel++) {
170  const G4Element* element = (*theElementVector)[iel] ;
171  G4double z2 = element->GetZ();
172  G4double m2Local = element->GetA()*mole/g ;
173  nloss += (nStopingPowerTable->
174  NuclearStoppingPower(kineticEnergy, z1, z2, m1, m2Local))
175  * theAtomicNumDensityVector[iel] ;
176  }
177 
178  return nloss;
179 }
G4double GetA() const
Definition: G4Element.hh:138
std::vector< G4Element * > G4ElementVector
G4VhNuclearStoppingPower * nStopingPowerTable
int G4int
Definition: G4Types.hh:78
function g(Y1, Y2, PT2)
Definition: hijing1.383.f:5206
const G4double * GetAtomicNumDensityVector() const
Definition: G4Material.hh:216
size_t GetNumberOfElements() const
Definition: G4Material.hh:186
static const double mole
Definition: G4SIunits.hh:283
const G4ElementVector * GetElementVector() const
Definition: G4Material.hh:190
double G4double
Definition: G4Types.hh:76
G4double GetZ() const
Definition: G4Element.hh:131
Here is the call graph for this function:
Here is the caller graph for this function:

◆ TheValue() [1/2]

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

Implements G4VLowEnergyModel.

Definition at line 118 of file G4hNuclearStoppingModel.cc.

121 {
122  // Projectile nucleus
123  G4double energy = particle->GetKineticEnergy() ;
124  G4double z1 = std::abs((particle->GetCharge())/eplus) ;
125  G4double m1 = (particle->GetMass())*factorPDG2AMU ;
126 
127  G4double nloss = StoppingPower(material, energy, z1, m1) * theZieglerFactor;
128 
129  return nloss;
130 }
G4double GetMass() const
G4double StoppingPower(const G4Material *material, G4double kineticEnergy, G4double z1, G4double m1) 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
Here is the call graph for this function:

◆ TheValue() [2/2]

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

Implements G4VLowEnergyModel.

Definition at line 134 of file G4hNuclearStoppingModel.cc.

138 {
139  // Projectile nucleus
140  G4double z1 = std::abs((aParticle->GetPDGCharge())/eplus) ;
141  G4double m1 = (aParticle->GetPDGMass())*factorPDG2AMU ;
142 
143  G4double nloss = StoppingPower(material, kineticEnergy, z1, m1)
144  * theZieglerFactor;
145 
146  return nloss;
147 }
G4double StoppingPower(const G4Material *material, G4double kineticEnergy, G4double z1, G4double m1) const
double G4double
Definition: G4Types.hh:76
static const double eplus
Definition: G4SIunits.hh:196
G4double GetPDGCharge() const
Here is the call graph for this function:

Member Data Documentation

◆ factorPDG2AMU

G4double G4hNuclearStoppingModel::factorPDG2AMU
private

Definition at line 123 of file G4hNuclearStoppingModel.hh.

◆ highEnergyLimit

G4double G4hNuclearStoppingModel::highEnergyLimit
private

Definition at line 131 of file G4hNuclearStoppingModel.hh.

◆ lowEnergyLimit

G4double G4hNuclearStoppingModel::lowEnergyLimit
private

Definition at line 130 of file G4hNuclearStoppingModel.hh.

◆ modelName

G4String G4hNuclearStoppingModel::modelName
private

Definition at line 129 of file G4hNuclearStoppingModel.hh.

◆ nStopingPowerTable

G4VhNuclearStoppingPower* G4hNuclearStoppingModel::nStopingPowerTable
private

Definition at line 121 of file G4hNuclearStoppingModel.hh.

◆ theZieglerFactor

G4double G4hNuclearStoppingModel::theZieglerFactor
private

Definition at line 126 of file G4hNuclearStoppingModel.hh.


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