53 fpMolWaterDensity = 0;
65 G4cout <<
"Emfietzoglou excitation model is constructed " <<
G4endl;
82 std::map< G4String,G4DNACrossSectionDataSet*,std::less<G4String> >::iterator
pos;
83 for (pos = tableData.begin(); pos != tableData.end(); ++
pos)
98 G4cout <<
"Calling G4DNAEmfietzoglouExcitationModel::Initialise()" <<
G4endl;
100 G4String fileElectron(
"dna/sigma_excitation_e_emfietzoglou");
106 G4double scaleFactor = (1.e-22 / 3.343) *
m*
m;
126 if (particle==electronDef)
134 G4cout <<
"Emfietzoglou excitation model is initialized " << G4endl
145 if (isInitialised) {
return; }
147 isInitialised =
true;
158 if (verboseLevel > 3)
159 G4cout <<
"Calling CrossSectionPerVolume() of G4DNAEmfietzoglouExcitationModel" <<
G4endl;
171 if(waterDensity!= 0.0)
175 std::map< G4String,G4double,std::less<G4String> >::iterator pos1;
176 pos1 = lowEnergyLimit.find(particleName);
177 if (pos1 != lowEnergyLimit.end())
179 lowLim = pos1->second;
182 std::map< G4String,G4double,std::less<G4String> >::iterator pos2;
183 pos2 = highEnergyLimit.find(particleName);
184 if (pos2 != highEnergyLimit.end())
186 highLim = pos2->second;
189 if (ekin >= lowLim && ekin < highLim)
191 std::map< G4String,G4DNACrossSectionDataSet*,std::less<G4String> >::iterator
pos;
192 pos = tableData.find(particleName);
194 if (pos != tableData.end())
204 G4Exception(
"G4DNAEmfietzoglouExcitationModel::CrossSectionPerVolume",
"em0002",
209 if (verboseLevel > 2)
211 G4cout <<
"__________________________________" <<
G4endl;
212 G4cout <<
"G4DNAEmfietzoglouExcitationModel - XS INFO START" <<
G4endl;
213 G4cout <<
"Kinetic energy(eV)=" << ekin/
eV <<
" particle : " << particleName <<
G4endl;
214 G4cout <<
"Cross section per water molecule (cm^2)=" << sigma/
cm/
cm <<
G4endl;
215 G4cout <<
"Cross section per water molecule (cm^-1)=" << sigma*waterDensity/(1./
cm) << G4endl;
217 G4cout <<
"G4DNAEmfietzoglouExcitationModel - XS INFO END" <<
G4endl;
222 return sigma*waterDensity;
234 if (verboseLevel > 3)
235 G4cout <<
"Calling SampleSecondaries() of G4DNAEmfietzoglouExcitationModel" <<
G4endl;
241 G4int level = RandomSelect(k,particleName);
243 G4double newEnergy = k - excitationEnergy;
268 std::map< G4String,G4DNACrossSectionDataSet*,std::less<G4String> >::iterator
pos;
269 pos = tableData.find(particle);
271 if (pos != tableData.end())
296 value += valuesBuffer[i];
307 if (valuesBuffer[i] > value)
309 delete[] valuesBuffer;
312 value -= valuesBuffer[i];
315 if (valuesBuffer)
delete[] valuesBuffer;
321 G4Exception(
"G4DNAEmfietzoglouExcitationModel::RandomSelect",
"em0002",
static G4Electron * ElectronDefinition()
G4double LowEnergyLimit() const
virtual G4double FindValue(G4double x, G4int componentId=0) const =0
G4double GetKineticEnergy() const
G4double HighEnergyLimit() const
virtual const G4VEMDataSet * GetComponent(G4int componentId) const
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)
virtual G4bool LoadData(const G4String &argFileName)
G4ParticleDefinition * GetDefinition() const
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 ExcitationEnergy(G4int level)
G4GLOB_DLL std::ostream G4cout
const std::vector< double > * GetNumMolPerVolTableFor(const G4Material *) const
static constexpr double m
const XML_Char int const XML_Char * value
const G4ThreeVector & GetMomentumDirection() const
static constexpr double cm
static constexpr double eV
virtual G4double FindValue(G4double e, G4int componentId=0) const
virtual size_t NumberOfComponents(void) const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
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")
void SetProposedKineticEnergy(G4double proposedKinEnergy)
G4ParticleChangeForGamma * fParticleChangeForGamma
void SetLowEnergyLimit(G4double)
virtual ~G4DNAEmfietzoglouExcitationModel()
static constexpr double keV
static const G4double pos
G4ParticleChangeForGamma * GetParticleChangeForGamma()