51 fpMolWaterDensity =
nullptr;
63 G4cout <<
"Emfietzoglou excitation model is constructed " <<
G4endl;
80 std::map< G4String,G4DNACrossSectionDataSet*,std::less<G4String> >::iterator pos;
81 for (pos = tableData.begin(); pos != tableData.end(); ++pos)
96 G4cout <<
"Calling G4DNAEmfietzoglouExcitationModel::Initialise()" <<
G4endl;
98 G4String fileElectron(
"dna/sigma_excitation_e_emfietzoglou");
104 G4double scaleFactor = (1.e-22 / 3.343) * m*m;
110 tableFile[electron] = fileElectron;
115 tableE->LoadData(fileElectron);
117 tableData[electron] = tableE;
123 G4cout <<
"Emfietzoglou excitation model is initialized " <<
G4endl
134 if (isInitialised)
return;
136 isInitialised =
true;
147 if (verboseLevel > 3)
148 G4cout <<
"Calling CrossSectionPerVolume() of G4DNAEmfietzoglouExcitationModel" <<
G4endl;
162 std::map< G4String,G4DNACrossSectionDataSet*,std::less<G4String> >::iterator pos;
163 pos = tableData.find(particleName);
165 if (pos != tableData.end())
168 if (table !=
nullptr) sigma = table->
FindValue(ekin);
172 G4Exception(
"G4DNAEmfietzoglouExcitationModel::CrossSectionPerVolume",
"em0002",
177 if (verboseLevel > 2)
179 G4cout <<
"__________________________________" <<
G4endl;
180 G4cout <<
"G4DNAEmfietzoglouExcitationModel - XS INFO START" <<
G4endl;
181 G4cout <<
"Kinetic energy(eV)=" << ekin/eV <<
" particle : " << particleName <<
G4endl;
182 G4cout <<
"Cross section per water molecule (cm^2)=" << sigma/cm/cm <<
G4endl;
183 G4cout <<
"Cross section per water molecule (cm^-1)=" << sigma*waterDensity/(1./cm) <<
G4endl;
186 G4cout <<
"G4DNAEmfietzoglouExcitationModel - XS INFO END" <<
G4endl;
189 return sigma*waterDensity;
201 if (verboseLevel > 3)
202 G4cout <<
"Calling SampleSecondaries() of G4DNAEmfietzoglouExcitationModel" <<
G4endl;
208 G4int level = RandomSelect(k,particleName);
210 G4double newEnergy = k - excitationEnergy;
235 std::map< G4String,G4DNACrossSectionDataSet*,std::less<G4String> >::iterator pos;
236 pos = tableData.find(particle);
238 if (pos != tableData.end())
242 if (table !=
nullptr)
263 value += valuesBuffer[i];
274 if (valuesBuffer[i] > value)
276 delete[] valuesBuffer;
279 value -= valuesBuffer[i];
282 delete[] valuesBuffer;
288 G4Exception(
"G4DNAEmfietzoglouExcitationModel::RandomSelect",
"em0002",
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
G4GLOB_DLL std::ostream G4cout
static G4DNAChemistryManager * Instance()
void CreateWaterMolecule(ElectronicModification, G4int, const G4Track *)
size_t NumberOfComponents() const override
const G4VEMDataSet * GetComponent(G4int componentId) const override
G4double FindValue(G4double e, G4int componentId=0) const override
void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy) override
void Initialise(const G4ParticleDefinition *, const G4DataVector &= *(new G4DataVector())) override
G4DNAEmfietzoglouExcitationModel(const G4ParticleDefinition *p=nullptr, const G4String &nam="DNAEmfietzoglouExcitationModel")
G4double CrossSectionPerVolume(const G4Material *material, const G4ParticleDefinition *p, G4double ekin, G4double emin, G4double emax) override
G4ParticleChangeForGamma * fParticleChangeForGamma
~G4DNAEmfietzoglouExcitationModel() override
G4double ExcitationEnergy(G4int level)
const std::vector< G4double > * GetNumMolPerVolTableFor(const G4Material *) const
Retrieve a table of molecular densities (number of molecules per unit volume) in the G4 unit system f...
static G4DNAMolecularMaterial * Instance()
const G4ThreeVector & GetMomentumDirection() const
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
static G4Electron * ElectronDefinition()
std::size_t GetIndex() const
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)
void SetProposedKineticEnergy(G4double proposedKinEnergy)
void ProposeMomentumDirection(const G4ThreeVector &Pfinal)
const G4String & GetParticleName() const
virtual G4double FindValue(G4double x, G4int componentId=0) const =0
void SetHighEnergyLimit(G4double)
G4ParticleChangeForGamma * GetParticleChangeForGamma()
G4double LowEnergyLimit() const
G4double HighEnergyLimit() const
void SetLowEnergyLimit(G4double)
const G4Track * GetCurrentTrack() const
void ProposeLocalEnergyDeposit(G4double anEnergyPart)