58 G4cout <<
"Quinn plasmon excitation model is constructed " <<
G4endl;
81 "Calling G4DNAQuinnPlasmonExcitationModel::Initialise()"
92 G4Exception(
"G4DNAQuinnPlasmonExcitationModel::Initialise",
"em0001",
103 for(
G4int i=0;i<numOfCouples;i++){
125 G4cout <<
"Quinn plasmon excitation model is initialized " <<
G4endl
150 "Calling CrossSectionPerVolume() of G4DNAQuinnPlasmonExcitationModel"
155 if(
material->GetNumberOfElements()>1)
return 0.;
159 if (z!=79){
return 0.;}
165 if(atomicNDensity!= 0.0)
175 G4cout<<
"=== G4DNAQuinnPlasmonExcitationModel - XS INFO START"<<
G4endl;
176 G4cout<<
"=== Kinetic energy (eV)=" << ekin/
eV <<
" particle : "
178 G4cout<<
"=== Cross section per atom for Z="<<z<<
" is (cm^2)"
180 G4cout<<
"=== Cross section per atom for Z="<<z<<
" is (cm^-1)="
181 <<sigma*atomicNDensity/(1./
cm) <<
G4endl;
182 G4cout<<
"=== G4DNAQuinnPlasmonExcitationModel - XS INFO END" <<
G4endl;
186 return sigma*atomicNDensity;
192 (std::vector<G4DynamicParticle*>* ,
201 "Calling SampleSecondaries() of G4DNAQuinnPlasmonExcitationModel"
224 G4double omega_p = std::sqrt(veDens*std::pow(e,2)/
229 G4double newEnergy = k - excitationEnergy;
271 G4double omega_p = std::sqrt(veDens*std::pow(e,2)
287 (
G4Log((std::pow(std::pow(p0,2)
297 if((0<mfp)&&(0<veDens)&&(excitationEnergy<kineticEnergy)){
298 value = 1./(veDens*mfp);
312 if (z!=79){
return 0.;}
317 "Calling GetNValenceElectron() of G4DNAQuinnPlasmonExcitationModel"
321 const char *datadir=0;
325 datadir = getenv(
"G4LEDATA");
328 G4Exception(
"G4DNAQuinnPlasmonExcitationModel::GetNValenceElectron()"
330 "Enviroment variable G4LEDATA not defined");
335 std::ostringstream targetfile;
337 targetfile.clear(stringstream::goodbit);
338 targetfile << datadir <<
"/dna/atomicstate_Z"<< z <<
".dat";
339 std::ifstream fin(targetfile.str().c_str());
343 G4cout<<
" Error : "<< targetfile.str() <<
" is not found "<<endl;
344 G4Exception(
"G4DNAQuinnPlasmonExcitationModel::GetNValenceElectron()"
346 "There is no target file");
350 string buff0,buff1,buff2,buff3,buff4,buff5,buff6;
351 fin >> buff0 >>buff1>>buff2>>buff3>>buff4>>buff5>>buff6;
354 fin >> buff0 >>buff1>>buff2>>buff3>>buff4>>buff5>>buff6;
std::vector< const G4Element * > G4ElementVector
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
G4double G4Log(G4double x)
static constexpr double mole
static constexpr double keV
static constexpr double eV
static constexpr double g
static constexpr double GeV
static constexpr double cm
G4GLOB_DLL std::ostream G4cout
G4int GetNValenceElectron(G4int z)
G4int nValenceElectron[100]
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &= *(new G4DataVector()))
virtual G4double GetCrossSection(const G4Material *material, const G4ParticleDefinition *, G4double kineticEnergy)
G4ParticleChangeForGamma * fParticleChangeForGamma
G4DNAQuinnPlasmonExcitationModel(const G4ParticleDefinition *p=0, const G4String &nam="DNAQuinnPlasmonExcitationModel")
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy)
G4double fHighEnergyLimit
virtual G4double CrossSectionPerVolume(const G4Material *material, const G4ParticleDefinition *p, G4double ekin, G4double emin, G4double emax)
const std::vector< G4double > * fpMaterialDensity
virtual ~G4DNAQuinnPlasmonExcitationModel()
const G4ThreeVector & GetMomentumDirection() const
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
static G4Electron * ElectronDefinition()
const G4Material * GetMaterial() const
void SetProposedKineticEnergy(G4double proposedKinEnergy)
const G4String & GetParticleName() const
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
std::size_t GetTableSize() const
static G4ProductionCutsTable * GetProductionCutsTable()
G4ParticleChangeForGamma * GetParticleChangeForGamma()
G4double LowEnergyLimit() const
G4double HighEnergyLimit() const
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
static constexpr double electron_mass_c2
static constexpr double h_Planck
static constexpr double hbar_Planck
static constexpr double Bohr_radius
static constexpr double epsilon0
static constexpr double c_squared
static constexpr double Avogadro
static constexpr double pi