48 lowEnergyLimit = 8.23 * eV;
49 highEnergyLimit = 10 * MeV;
66 G4cout <<
"Emfietzoglou Excitation model is constructed " <<
G4endl
68 << lowEnergyLimit / eV <<
" eV - "
69 << highEnergyLimit / MeV <<
" MeV"
87 G4cout <<
"Calling G4DNAEmfietzoglouExcitationModel::Initialise()" <<
G4endl;
93 G4cout <<
"G4DNAEmfietzoglouExcitationModel: low energy limit increased from " <<
100 G4cout <<
"G4DNAEmfietzoglouExcitationModel: high energy limit decreased from " <<
108 G4cout <<
"Emfietzoglou Excitation model is initialized " <<
G4endl
118 if (isInitialised) {
return; }
120 isInitialised =
true;
132 if (verboseLevel > 3)
133 G4cout <<
"Calling CrossSectionPerVolume() of G4DNAEmfietzoglouExcitationModel" <<
G4endl;
141 if(waterDensity!= 0.0)
147 if (ekin >= lowEnergyLimit && ekin < highEnergyLimit)
153 if (verboseLevel > 2)
155 G4cout <<
"__________________________________" <<
G4endl;
156 G4cout <<
"°°° G4DNAEmfietzoglouExcitationModel - XS INFO START" <<
G4endl;
158 G4cout <<
"°°° Cross section per water molecule (cm^2)=" << sigma/cm/cm <<
G4endl;
159 G4cout <<
"°°° Cross section per water molecule (cm^-1)=" << sigma*waterDensity/(1./cm) <<
G4endl;
161 G4cout <<
"°°° G4DNAEmfietzoglouExcitationModel - XS INFO END" <<
G4endl;
178 if (verboseLevel > 3)
179 G4cout <<
"Calling SampleSecondaries() of G4DNAEmfietzoglouExcitationModel" <<
G4endl;
183 G4int level = RandomSelect(electronEnergy0);
186 G4double newEnergy = electronEnergy0 - excitationEnergy;
188 if (electronEnergy0 < highEnergyLimit)
221 const G4double density = 3.34192e+19 * mm3;
223 const G4double aj[]={0.0205, 0.0209, 0.0130, 0.0026, 0.0025};
224 const G4double cj[]={4.9801, 3.3850, 2.8095, 1.9242, 3.4624};
225 const G4double pj[]={0.4757, 0.3483, 0.4443, 0.3429, 0.4379};
234 G4double excitationSigma = ( aj[level] / (2.*pi*Bohr_radius))
236 * std::log(cj[level]*(t/r))
237 * std::pow((1.- (exc/t)), pj[level]);
238 sigma = excitationSigma / density;
246G4int G4DNAEmfietzoglouExcitationModel::RandomSelect(
G4double k)
250 std::deque<double> values;
256 values.push_front(partial);
267 if (values[i] > value)
return i;
280 for (
G4int i=0; i<nLevels; i++)
284 return totalCrossSection;
G4DLLIMPORT std::ostream G4cout
static G4DNAChemistryManager * Instance()
void CreateWaterMolecule(ElectronicModification, G4int, const G4Track *)
G4double PartialCrossSection(G4double energy, G4int level)
virtual ~G4DNAEmfietzoglouExcitationModel()
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy)
virtual G4double CrossSectionPerVolume(const G4Material *material, const G4ParticleDefinition *p, G4double ekin, G4double emin, G4double emax)
G4ParticleChangeForGamma * fParticleChangeForGamma
G4DNAEmfietzoglouExcitationModel(const G4ParticleDefinition *p=0, const G4String &nam="DNAEmfietzoglouExcitationModel")
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &= *(new G4DataVector()))
static G4DNAMolecularMaterial * Instance()
const std::vector< double > * GetNumMolPerVolTableFor(const G4Material *) const
G4double ExcitationEnergy(G4int level)
const G4ThreeVector & GetMomentumDirection() const
G4double GetKineticEnergy() const
static G4Electron * ElectronDefinition()
const G4double * GetAtomicNumDensityVector() const
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)
const G4Track * GetCurrentTrack() const
void SetProposedKineticEnergy(G4double proposedKinEnergy)
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
const G4String & GetParticleName() const
void SetHighEnergyLimit(G4double)
G4ParticleChangeForGamma * GetParticleChangeForGamma()
G4double LowEnergyLimit() const
G4double HighEnergyLimit() const
void SetLowEnergyLimit(G4double)
void ProposeLocalEnergyDeposit(G4double anEnergyPart)