43 G4VEmModel(nam), isInitialised(false), fTableData(0)
45 fpMolWaterDensity = 0;
48 fParticleDefinition = 0;
60 G4cout <<
"Born excitation model is constructed " <<
G4endl;
86 G4cout <<
"Calling G4DNABornExcitationModel1::Initialise()" <<
G4endl;
89 if(fParticleDefinition != 0 && fParticleDefinition != particle)
91 G4Exception(
"G4DNABornExcitationModel1::Initialise",
"em0001",
92 FatalException,
"Model already initialized for another particle type.");
95 fParticleDefinition = particle;
99 fTableFile =
"dna/sigma_excitation_e_born";
105 fTableFile =
"dna/sigma_excitation_p_born";
106 fLowEnergy = 500. *
keV;
107 fHighEnergy = 100. *
MeV;
113 G4double scaleFactor = (1.e-22 / 3.343) *
m*
m;
119 G4cout <<
"Born excitation model is initialized " <<
G4endl
133 isInitialised =
true;
144 if (verboseLevel > 3)
146 G4cout <<
"Calling CrossSectionPerVolume() of G4DNABornExcitationModel1"
150 if(particleDefinition != fParticleDefinition)
return 0;
158 if(waterDensity!= 0.0)
160 if (ekin >= fLowEnergy && ekin < fHighEnergy)
165 if (verboseLevel > 2)
167 G4cout <<
"__________________________________" <<
G4endl;
168 G4cout <<
"G4DNABornExcitationModel1 - XS INFO START" <<
G4endl;
170 G4cout <<
"Cross section per water molecule (cm^2)=" << sigma/
cm/
cm <<
G4endl;
171 G4cout <<
"Cross section per water molecule (cm^-1)=" << sigma*waterDensity/(1./
cm) << G4endl;
172 G4cout <<
"G4DNABornExcitationModel1 - XS INFO END" <<
G4endl;
176 return sigma*waterDensity;
188 if (verboseLevel > 3)
190 G4cout <<
"Calling SampleSecondaries() of G4DNABornExcitationModel1"
196 G4int level = RandomSelect(k);
198 G4double newEnergy = k - excitationEnergy;
223 if (fParticleDefinition != particle)
225 G4Exception(
"G4DNABornExcitationModel1::GetPartialCrossSection",
228 "Model initialized for another particle type.");
249 value += valuesBuffer[i];
259 if (valuesBuffer[i] > value)
261 delete[] valuesBuffer;
264 value -= valuesBuffer[i];
268 delete[] valuesBuffer;
G4double LowEnergyLimit() const
virtual G4double FindValue(G4double x, G4int componentId=0) const =0
G4double ExcitationEnergy(G4int level)
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)
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &=*(new G4DataVector()))
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy)
const G4String & GetParticleName() const
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
void SetHighEnergyLimit(G4double)
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
virtual G4double GetPartialCrossSection(const G4Material *, G4int level, const G4ParticleDefinition *, G4double kineticEnergy)
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()
void CreateWaterMolecule(ElectronicModification, G4int, const G4Track *)
G4DNABornExcitationModel1(const G4ParticleDefinition *p=0, const G4String &nam="DNABornExcitationModel")
const G4Track * GetCurrentTrack() const
void SetProposedKineticEnergy(G4double proposedKinEnergy)
static constexpr double MeV
G4ParticleChangeForGamma * fParticleChangeForGamma
void SetLowEnergyLimit(G4double)
virtual ~G4DNABornExcitationModel1()
static constexpr double keV
G4ParticleChangeForGamma * GetParticleChangeForGamma()
virtual G4double CrossSectionPerVolume(const G4Material *material, const G4ParticleDefinition *p, G4double ekin, G4double emin, G4double emax)