49 tableMeanEnergyPTB[
"THF"] = 8.01*eV;
50 tableMeanEnergyPTB[
"PY"] = 7.61*eV;
51 tableMeanEnergyPTB[
"PU"] = 7.61*eV;
52 tableMeanEnergyPTB[
"TMP"] = 8.01*eV;
56 G4cout <<
"PTB excitation model is constructed " <<
G4endl;
73 G4cout <<
"Calling G4DNAPTBExcitationModel::Initialise()" <<
G4endl;
76 G4double scaleFactorBorn = (1.e-22 / 3.343) * m*m;
84 if(particle == electronDef)
90 "dna/sigma_excitation_e-_PTB_THF",
97 "dna/sigma_excitation_e-_PTB_PY",
104 "dna/sigma_excitation_e-_PTB_PU",
111 "dna/sigma_excitation_e-_PTB_TMP",
118 "dna/sigma_excitation_e_born",
127 "dna/sigma_excitation_e-_PTB_THF",
134 "dna/sigma_excitation_e-_PTB_PY",
141 "dna/sigma_excitation_e-_PTB_PY",
148 "dna/sigma_excitation_e-_PTB_PU",
155 "dna/sigma_excitation_e-_PTB_PU",
162 "dna/sigma_excitation_e-_PTB_TMP",
170 "dna/sigma_excitation_e-_PTB_N2",
189 G4cout <<
"PTB excitation model is initialized " <<
G4endl;
202 if (verboseLevel > 3)
203 G4cout <<
"Calling CrossSectionPerVolume() of G4DNAPTBExcitationModel" <<
G4endl;
220 if (ekin >= lowLim && ekin < highLim)
226 sigma = (*tableData)[materialName][particleName]->FindValue(ekin);
228 if (verboseLevel > 2)
230 G4cout <<
"__________________________________" <<
G4endl;
231 G4cout <<
"°°° G4DNAPTBExcitationModel - XS INFO START" <<
G4endl;
232 G4cout <<
"°°° Kinetic energy(eV)=" << ekin/eV <<
" particle : " << particleName <<
G4endl;
233 G4cout <<
"°°° Cross section per "<< materialName <<
" molecule (cm^2)=" << sigma/cm/cm <<
G4endl;
234 G4cout <<
"°°° G4DNAPTBExcitationModel - XS INFO END" <<
G4endl;
253 if (verboseLevel > 3)
254 G4cout <<
"Calling SampleSecondaries() of G4DNAPTBExcitationModel" <<
G4endl;
265 if (k >= lowLim && k < highLim)
267 if(materialName==
"N2")
275 G4double newEnergy = k - excitationEnergy;
290 G4double secondaryKinetic = excitationEnergy - ioniThres;
293 G4double sinTheta = std::sqrt(1. - cosTheta*cosTheta);
294 G4double ux = sinTheta*std::cos(phi),
295 uy = sinTheta*std::sin(phi),
300 fvect->push_back(dp);
304 description<<
"Kinetic energy <= 0 at "<<materialName<<
" material !!!";
307 }
else if(materialName!=
"G4_WATER"){
309 G4double excitationEnergy = tableMeanEnergyPTB[materialName];
311 G4double newEnergy = k - excitationEnergy;
320 description<<
"Kinetic energy <= 0 at "<<materialName<<
" material !!!";
326 G4double newEnergy = k - excitationEnergy;
338 description<<
"Kinetic energy <= 0 at "<<materialName<<
" material !!!";
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
G4GLOB_DLL std::ostream G4cout
static G4DNAChemistryManager * Instance()
void CreateWaterMolecule(ElectronicModification, G4int, const G4Track *)
virtual ~G4DNAPTBExcitationModel()
~G4DNAPTBExcitationModel Destructor
G4DNAPTBExcitationModel(const G4String &applyToMaterial="all", const G4ParticleDefinition *p=0, const G4String &nam="DNAPTBExcitationModel")
G4DNAPTBExcitationModel Constructor.
virtual G4double CrossSectionPerVolume(const G4Material *material, const G4String &materialName, const G4ParticleDefinition *p, G4double ekin, G4double emin, G4double emax)
CrossSectionPerVolume Retrieve the cross section corresponding to the current material,...
virtual void Initialise(const G4ParticleDefinition *particle, const G4DataVector &= *(new G4DataVector()), G4ParticleChangeForGamma *fpChangeForGamme=nullptr)
Initialise Set the materials for which the model can be used and defined the energy limits.
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4String &materialName, const G4DynamicParticle *, G4ParticleChangeForGamma *particleChangeForGamma, G4double tmin, G4double tmax)
SampleSecondaries If the model is selected for the ModelInterface then the SampleSecondaries method w...
G4double ExcitationEnergy(G4int ExcLevel, const G4String &materialName)
G4double IonisationEnergy(G4int level, const G4String &materialName)
G4double ExcitationEnergy(G4int level)
const G4ThreeVector & GetMomentumDirection() const
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
static G4Electron * ElectronDefinition()
static G4Electron * Electron()
void SetProposedKineticEnergy(G4double proposedKinEnergy)
void ProposeMomentumDirection(const G4ThreeVector &Pfinal)
const G4String & GetParticleName() const
G4int RandomSelectShell(G4double k, const G4String &particle, const G4String &materialName)
RandomSelectShell Method to randomely select a shell from the data table uploaded....
TableMapData * GetTableData()
GetTableData.
void SetHighELimit(const G4String &material, const G4String &particle, G4double lim)
SetHighEnergyLimit.
std::map< G4String, std::map< G4String, G4DNACrossSectionDataSet *, std::less< G4String > > > TableMapData
void AddCrossSectionData(G4String materialName, G4String particleName, G4String fileCS, G4String fileDiffCS, G4double scaleFactor)
AddCrossSectionData Method used during the initialization of the model class to add a new material....
void SetLowELimit(const G4String &material, const G4String &particle, G4double lim)
SetLowEnergyLimit.
G4double GetHighELimit(const G4String &material, const G4String &particle)
GetHighEnergyLimit.
void LoadCrossSectionData(const G4String &particleName)
LoadCrossSectionData Method to loop on all the registered materials in the model and load the corresp...
G4double GetLowELimit(const G4String &material, const G4String &particle)
GetLowEnergyLimit.
const G4Track * GetCurrentTrack() const
void ProposeLocalEnergyDeposit(G4double anEnergyPart)