#include <G4ICRU49NuclearStoppingModel.hh>
Inheritance diagram for G4ICRU49NuclearStoppingModel:
Public Member Functions | |
G4ICRU49NuclearStoppingModel (const G4String &nam="ICRU49NucStopping") | |
virtual | ~G4ICRU49NuclearStoppingModel () |
virtual void | Initialise (const G4ParticleDefinition *, const G4DataVector &) |
virtual G4double | ComputeDEDXPerVolume (const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX) |
virtual void | SampleSecondaries (std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double, G4double) |
void | SetFluctuationFlag (G4bool) |
Definition at line 62 of file G4ICRU49NuclearStoppingModel.hh.
G4ICRU49NuclearStoppingModel::G4ICRU49NuclearStoppingModel | ( | const G4String & | nam = "ICRU49NucStopping" |
) |
Definition at line 70 of file G4ICRU49NuclearStoppingModel.cc.
References G4Pow::GetInstance().
00071 : G4VEmModel(nam),lossFlucFlag(false) 00072 { 00073 theZieglerFactor = eV*cm2*1.0e-15; 00074 g4pow = G4Pow::GetInstance(); 00075 if(ad[0] == 0.0) { InitialiseNuclearStopping(); } 00076 }
G4ICRU49NuclearStoppingModel::~G4ICRU49NuclearStoppingModel | ( | ) | [virtual] |
G4double G4ICRU49NuclearStoppingModel::ComputeDEDXPerVolume | ( | const G4Material * | , | |
const G4ParticleDefinition * | , | |||
G4double | kineticEnergy, | |||
G4double | cutEnergy = DBL_MAX | |||
) | [virtual] |
Reimplemented from G4VEmModel.
Definition at line 102 of file G4ICRU49NuclearStoppingModel.cc.
References G4Material::GetAtomicNumDensityVector(), G4Material::GetElementVector(), G4Material::GetNumberOfElements(), G4ParticleDefinition::GetPDGCharge(), and G4ParticleDefinition::GetPDGMass().
00107 { 00108 G4double nloss = 0.0; 00109 if(kinEnergy <= 0.0) { return nloss; } 00110 00111 // projectile 00112 G4double mass1 = p->GetPDGMass(); 00113 G4double z1 = std::fabs(p->GetPDGCharge()/eplus); 00114 00115 if(kinEnergy*proton_mass_c2/mass1 > z1*z1*MeV) { return nloss; } 00116 00117 // Projectile nucleus 00118 mass1 /= amu_c2; 00119 00120 // loop for the elements in the material 00121 G4int numberOfElements = mat->GetNumberOfElements(); 00122 const G4ElementVector* theElementVector = mat->GetElementVector(); 00123 const G4double* atomDensity = mat->GetAtomicNumDensityVector(); 00124 00125 for (G4int iel=0; iel<numberOfElements; iel++) { 00126 const G4Element* element = (*theElementVector)[iel] ; 00127 G4double z2 = element->GetZ(); 00128 G4double mass2 = element->GetA()*mole/g ; 00129 nloss += (NuclearStoppingPower(kinEnergy, z1, z2, mass1, mass2)) 00130 * atomDensity[iel] ; 00131 } 00132 nloss *= theZieglerFactor; 00133 return nloss; 00134 }
void G4ICRU49NuclearStoppingModel::Initialise | ( | const G4ParticleDefinition * | , | |
const G4DataVector & | ||||
) | [virtual] |
void G4ICRU49NuclearStoppingModel::SampleSecondaries | ( | std::vector< G4DynamicParticle * > * | , | |
const G4MaterialCutsCouple * | , | |||
const G4DynamicParticle * | , | |||
G4double | , | |||
G4double | ||||
) | [virtual] |
void G4ICRU49NuclearStoppingModel::SetFluctuationFlag | ( | G4bool | ) | [inline] |
Definition at line 110 of file G4ICRU49NuclearStoppingModel.hh.
Referenced by G4NuclearStopping::AlongStepDoIt().