51 G4VEmModel(nam), isInitialised(false), fTableData(0)
63 G4cout <<
"Dirac R-matrix excitation model is constructed " <<
G4endl;
86 "Calling G4DNADiracRMatrixExcitationModel::Initialise()"
94 fTableFile =
"dna/sigma_excitation_e_diracrmatrix_Z79";
101 G4Exception(
"G4DNADiracRMatrixExcitationModel::Initialise",
"em0001",
102 FatalException,
"Not defined for other particles than electrons.");
113 G4cout <<
"Dirac R-matrix excitation model is initialized " <<
G4endl
137 "Calling CrossSectionPerVolume() of G4DNADiracRMatrixExcitationModel"
144 if(
material->GetNumberOfElements()>1)
return 0.;
149 if(z!=79){
return 0.;}
153 if(atomicNDensity!= 0.0)
167 G4cout<<
"=== G4DNADiracRMatrixExcitationModel - XS INFO START"<<
G4endl;
168 G4cout<<
"=== Kinetic energy (eV)=" << ekin/
eV <<
" particle : "
170 G4cout<<
"=== Cross section per atom for Z="<<z<<
" is (cm^2)"
172 G4cout<<
"=== Cross section per atom for Z="<<z<<
" is (cm^-1)="
173 <<sigma*atomicNDensity/(1./
cm) <<
G4endl;
174 G4cout<<
"=== G4DNADiracRMatrixExcitationModel - XS INFO END"<<
G4endl;
178 return sigma*atomicNDensity;
184 (std::vector<G4DynamicParticle*>* ,
193 "Calling SampleSecondaries() of G4DNADiracRMatrixExcitationModel"
203 G4double newEnergy = k - excitationEnergy;
227 for(
int i=0;i<(int)N;i++){
303 value += valuesBuffer[i];
310 if (valuesBuffer[i] > value)
312 delete[] valuesBuffer;
315 value -= valuesBuffer[i];
317 if (valuesBuffer)
delete[] valuesBuffer;
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
G4double G4Log(G4double x)
static constexpr double keV
static constexpr double eV
static constexpr double GeV
static constexpr double cm
G4GLOB_DLL std::ostream G4cout
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)
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy)
const std::vector< G4double > * fpMaterialDensity
const G4double paramFuncTCS_5dto6s1[3]
virtual ~G4DNADiracRMatrixExcitationModel()
const G4double paramFuncTCS_5dto6s2[3]
G4DNADiracRMatrixExcitationModel(const G4ParticleDefinition *p=0, const G4String &nam="DNADiracRMatrixExcitationModel")
const G4ParticleDefinition * fParticleDefinition
virtual G4double GetExtendedTotalCrossSection(const G4Material *material, const G4ParticleDefinition *, G4double kineticEnergy)
G4double fExperimentalEnergyLimit
const G4double paramFuncTCS_6sto6p2[3]
const G4double ExcitationEnergyAu[4]
virtual G4double CrossSectionPerVolume(const G4Material *material, const G4ParticleDefinition *p, G4double ekin, G4double emin, G4double emax)
virtual G4double GetExtendedPartialCrossSection(const G4Material *material, G4int level, const G4ParticleDefinition *, G4double kineticEnergy)
G4int RandomSelect(const G4Material *material, const G4ParticleDefinition *, G4double kineticEnergy)
G4ParticleChangeForGamma * fParticleChangeForGamma
const G4double paramFuncTCS_6sto6p1[3]
G4DNACrossSectionDataSet * fTableData
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &= *(new G4DataVector()))
G4double fHighEnergyLimit
const G4ThreeVector & GetMomentumDirection() const
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4Material * GetMaterial() 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
G4ParticleChangeForGamma * GetParticleChangeForGamma()
G4double LowEnergyLimit() const
G4double HighEnergyLimit() const
void ProposeLocalEnergyDeposit(G4double anEnergyPart)