42G4VEmModel(nam), isInitialised(false), fTableData(0)
44 fpMolWaterDensity = 0;
47 fParticleDefinition = 0;
59 G4cout <<
"Born excitation model is constructed " <<
G4endl;
85 G4cout <<
"Calling G4DNABornExcitationModel1::Initialise()" <<
G4endl;
88 if(fParticleDefinition != 0 && fParticleDefinition != particle)
90 G4Exception(
"G4DNABornExcitationModel1::Initialise",
"em0001",
91 FatalException,
"Model already initialized for another particle type.");
94 fParticleDefinition = particle;
98 fTableFile =
"dna/sigma_excitation_e_born";
104 fTableFile =
"dna/sigma_excitation_p_born";
105 fLowEnergy = 500. * keV;
106 fHighEnergy = 100. * MeV;
112 G4double scaleFactor = (1.e-22 / 3.343) * m*m;
118 G4cout <<
"Born excitation model is initialized " <<
G4endl
132 isInitialised =
true;
143 if (verboseLevel > 3)
145 G4cout <<
"Calling CrossSectionPerVolume() of G4DNABornExcitationModel1"
149 if(particleDefinition != fParticleDefinition)
return 0;
157 if (ekin >= fLowEnergy && ekin <= fHighEnergy)
162 if (verboseLevel > 2)
164 G4cout <<
"__________________________________" <<
G4endl;
165 G4cout <<
"G4DNABornExcitationModel1 - XS INFO START" <<
G4endl;
167 G4cout <<
"Cross section per water molecule (cm^2)=" << sigma/cm/cm <<
G4endl;
168 G4cout <<
"Cross section per water molecule (cm^-1)=" << sigma*waterDensity/(1./cm) <<
G4endl;
169 G4cout <<
"G4DNABornExcitationModel1 - XS INFO END" <<
G4endl;
172 return sigma*waterDensity;
184 if (verboseLevel > 3)
186 G4cout <<
"Calling SampleSecondaries() of G4DNABornExcitationModel1"
192 G4int level = RandomSelect(k);
194 G4double newEnergy = k - excitationEnergy;
219 if (fParticleDefinition != particle)
221 G4Exception(
"G4DNABornExcitationModel1::GetPartialCrossSection",
224 "Model initialized for another particle type.");
245 value += valuesBuffer[i];
255 if (valuesBuffer[i] > value)
257 delete[] valuesBuffer;
260 value -= valuesBuffer[i];
264 delete[] valuesBuffer;
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
G4GLOB_DLL std::ostream G4cout
virtual G4double CrossSectionPerVolume(const G4Material *material, const G4ParticleDefinition *p, G4double ekin, G4double emin, G4double emax)
virtual ~G4DNABornExcitationModel1()
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &= *(new G4DataVector()))
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy)
G4ParticleChangeForGamma * fParticleChangeForGamma
virtual G4double GetPartialCrossSection(const G4Material *, G4int level, const G4ParticleDefinition *, G4double kineticEnergy)
G4DNABornExcitationModel1(const G4ParticleDefinition *p=0, const G4String &nam="DNABornExcitationModel")
static G4DNAChemistryManager * Instance()
void CreateWaterMolecule(ElectronicModification, G4int, const G4Track *)
virtual G4double FindValue(G4double e, G4int componentId=0) const
virtual size_t NumberOfComponents(void) const
virtual const G4VEMDataSet * GetComponent(G4int componentId) const
virtual G4bool LoadData(const G4String &argFileName)
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()
G4double ExcitationEnergy(G4int level)
const G4ThreeVector & GetMomentumDirection() const
G4double GetKineticEnergy() 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
virtual G4double FindValue(G4double x, G4int componentId=0) const =0
void SetHighEnergyLimit(G4double)
G4ParticleChangeForGamma * GetParticleChangeForGamma()
G4double LowEnergyLimit() const
G4double HighEnergyLimit() const
void SetLowEnergyLimit(G4double)
void ProposeLocalEnergyDeposit(G4double anEnergyPart)