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)
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};
236 * std::log(cj[level]*(t/r))
237 * std::pow((1.- (exc/t)), pj[level]);
238 sigma = excitationSigma /
density;
246 G4int 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;
static G4Electron * ElectronDefinition()
G4double LowEnergyLimit() const
G4double ExcitationEnergy(G4int level)
G4double GetKineticEnergy() const
G4double HighEnergyLimit() const
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &=*(new G4DataVector()))
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
const G4String & GetParticleName() const
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
void SetHighEnergyLimit(G4double)
G4double PartialCrossSection(G4double energy, G4int level)
G4GLOB_DLL std::ostream G4cout
const std::vector< double > * GetNumMolPerVolTableFor(const G4Material *) const
const G4ThreeVector & GetMomentumDirection() const
const G4double * GetAtomicNumDensityVector() const
static G4DNAChemistryManager * Instance()
static G4DNAMolecularMaterial * Instance()
virtual G4double CrossSectionPerVolume(const G4Material *material, const G4ParticleDefinition *p, G4double ekin, G4double emin, G4double emax)
void CreateWaterMolecule(ElectronicModification, G4int, const G4Track *)
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy)
const G4Track * GetCurrentTrack() const
G4DNAEmfietzoglouExcitationModel(const G4ParticleDefinition *p=0, const G4String &nam="DNAEmfietzoglouExcitationModel")
const XML_Char int const XML_Char * value
void SetProposedKineticEnergy(G4double proposedKinEnergy)
G4ParticleChangeForGamma * fParticleChangeForGamma
void SetLowEnergyLimit(G4double)
virtual ~G4DNAEmfietzoglouExcitationModel()
G4ParticleChangeForGamma * GetParticleChangeForGamma()