Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4hQAOModel Class Reference

#include <G4hQAOModel.hh>

+ Inheritance diagram for G4hQAOModel:

Public Member Functions

 G4hQAOModel ()
 
 ~G4hQAOModel ()
 
G4bool HasMaterial (const G4Material *)
 
G4double StoppingPower (const G4Material *material, G4double kineticEnergy)
 
G4double ElectronicStoppingPower (G4double z, G4double kineticEnergy) const
 
- Public Member Functions inherited from G4VhElectronicStoppingPower
 G4VhElectronicStoppingPower ()
 
virtual ~G4VhElectronicStoppingPower ()
 
virtual G4double StoppingPower (const G4Material *material, G4double kineticEnergy)=0
 
virtual G4bool HasMaterial (const G4Material *material)=0
 
virtual G4double ElectronicStoppingPower (G4double z, G4double kineticEnergy) const =0
 

Additional Inherited Members

- Protected Member Functions inherited from G4VhElectronicStoppingPower
G4double HeEffChargeSquare (const G4double z, const G4double kineticEnergyHe) const
 
G4double GetHeMassAMU () const
 

Detailed Description

Definition at line 57 of file G4hQAOModel.hh.

Constructor & Destructor Documentation

◆ G4hQAOModel()

G4hQAOModel::G4hQAOModel ( )

Definition at line 59 of file G4hQAOModel.cc.

60 numberOfMaterials(6),
61 sizeL0(67),
62 sizeL1(22),
63 sizeL2(14),
64 currentMaterial(0),
65 currentElement(0)
66{
67 theZieglerFactor = eV*cm2*1.0e-15;
68 thePlasmonFactor = 28.816 * 28.816 * 1e-6;
69}

◆ ~G4hQAOModel()

G4hQAOModel::~G4hQAOModel ( )

Definition at line 73 of file G4hQAOModel.cc.

74{}

Member Function Documentation

◆ ElectronicStoppingPower()

G4double G4hQAOModel::ElectronicStoppingPower ( G4double  z,
G4double  kineticEnergy 
) const
virtual

Implements G4VhElectronicStoppingPower.

Definition at line 100 of file G4hQAOModel.cc.

102{
103 G4int Z = (G4int)z;
104 G4int nbOfShell = GetNumberOfShell(Z);
105 if(nbOfShell < 1) nbOfShell = 1;
106
107 G4double dedx=0.0;
108
109 G4double v = c_light * std::sqrt( 2.0 * kineticEnergy / proton_mass_c2 );
110 G4double coeff = twopi*proton_mass_c2*z / (electron_mass_c2*theZieglerFactor) ;
111 G4double fBetheVelocity = fine_structure_const * c_light / v;
112 coeff *= fine_structure_const * fine_structure_const * hbarc_squared /
113 kineticEnergy ;
114
115 G4double l0Term = 0, l1Term = 0, l2Term = 0;
116
117 for (G4int nos = 0 ; nos < nbOfShell ; nos++){
118
119 G4double l0 = 0, l1 = 0, l2 = 0;
120 G4double NormalizedEnergy = ( 2.0 * electron_mass_c2 * v * v ) /
121 ( c_squared * GetShellEnergy(Z, nos) );
122 G4double shStrength = GetShellStrength(Z, nos);
123
124 l0 = GetL0(NormalizedEnergy);
125 l0Term += shStrength * l0;
126
127 l1 = GetL1(NormalizedEnergy);
128 l1Term += shStrength * l1;
129
130 l2 = GetL2(NormalizedEnergy);
131 l2Term += shStrength * l2;
132
133/*
134 //if(Z == 6){
135 G4cout << nos << ". "
136 << " E(MeV)= " << kineticEnergy/MeV
137 << " normE= " << NormalizedEnergy
138 << " sh en= " << GetShellEnergy(Z,nos)
139 << " str= " << shStrength
140 << " v0/v= " << fBetheVelocity
141 << " l0= " << l0Term
142 << " l1= " << l1Term
143 << " l2= " << l2Term
144 << G4endl;
145 // }
146*/
147 }
148
149 dedx = coeff * (l0Term - fBetheVelocity*l1Term + fBetheVelocity*fBetheVelocity*l2Term);
150
151 //G4cout << " E(MeV)= " << kineticEnergy/MeV
152 // << " dedx(Mev/mm)= " << dedx*mm/MeV << G4endl;
153
154 if(dedx < 0.0) dedx = 0.0;
155 return dedx;
156}
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66

Referenced by StoppingPower().

◆ HasMaterial()

G4bool G4hQAOModel::HasMaterial ( const G4Material )
inlinevirtual

Implements G4VhElectronicStoppingPower.

Definition at line 66 of file G4hQAOModel.hh.

66{return true;};

◆ StoppingPower()

G4double G4hQAOModel::StoppingPower ( const G4Material material,
G4double  kineticEnergy 
)
virtual

Implements G4VhElectronicStoppingPower.

Definition at line 78 of file G4hQAOModel.cc.

80{
81 G4double eloss = 0.0 ;
82 G4int numberOfElements = material->GetNumberOfElements() ;
83 const G4ElementVector* theElementVector = material->GetElementVector();
84 const G4double* theAtomicNumDensityVector = material->GetAtomicNumDensityVector() ;
85 currentMaterial = material;
86
87 // loop for the elements in the material
88 for (G4int i=0; i<numberOfElements; i++)
89 {
90 currentElement = (*theElementVector)[i] ;
91 G4double z = currentElement->GetZ() ;
92 eloss += ElectronicStoppingPower(z,kineticEnergy)*theAtomicNumDensityVector[i];
93 }
94
95 return eloss;
96}
std::vector< G4Element * > G4ElementVector
G4double GetZ() const
Definition: G4Element.hh:131
const G4ElementVector * GetElementVector() const
Definition: G4Material.hh:189
size_t GetNumberOfElements() const
Definition: G4Material.hh:185
const G4double * GetAtomicNumDensityVector() const
Definition: G4Material.hh:215
G4double ElectronicStoppingPower(G4double z, G4double kineticEnergy) const
Definition: G4hQAOModel.cc:100

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