G4DNAEmfietzoglouExcitationModel Class Reference

#include <G4DNAEmfietzoglouExcitationModel.hh>

Inheritance diagram for G4DNAEmfietzoglouExcitationModel:

G4VEmModel

Public Member Functions

 G4DNAEmfietzoglouExcitationModel (const G4ParticleDefinition *p=0, const G4String &nam="DNAEmfietzoglouExcitationModel")
virtual ~G4DNAEmfietzoglouExcitationModel ()
virtual void Initialise (const G4ParticleDefinition *, const G4DataVector &=*(new G4DataVector()))
virtual G4double CrossSectionPerVolume (const G4Material *material, const G4ParticleDefinition *p, G4double ekin, G4double emin, G4double emax)
virtual void SampleSecondaries (std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy)
G4double PartialCrossSection (G4double energy, G4int level)

Protected Attributes

G4ParticleChangeForGammafParticleChangeForGamma

Detailed Description

Definition at line 42 of file G4DNAEmfietzoglouExcitationModel.hh.


Constructor & Destructor Documentation

G4DNAEmfietzoglouExcitationModel::G4DNAEmfietzoglouExcitationModel ( const G4ParticleDefinition p = 0,
const G4String nam = "DNAEmfietzoglouExcitationModel" 
)

Definition at line 41 of file G4DNAEmfietzoglouExcitationModel.cc.

References fParticleChangeForGamma, G4cout, G4endl, G4DNAWaterExcitationStructure::NumberOfLevels(), G4VEmModel::SetHighEnergyLimit(), and G4VEmModel::SetLowEnergyLimit().

00043     :G4VEmModel(nam),isInitialised(false)
00044 {
00045     //  nistwater = G4NistManager::Instance()->FindOrBuildMaterial("G4_WATER");
00046     fpWaterDensity = 0;
00047 
00048     lowEnergyLimit = 8.23 * eV;
00049     highEnergyLimit = 10 * MeV;
00050     SetLowEnergyLimit(lowEnergyLimit);
00051     SetHighEnergyLimit(highEnergyLimit);
00052 
00053     nLevels = waterExcitation.NumberOfLevels();
00054 
00055     verboseLevel= 0;
00056     // Verbosity scale:
00057     // 0 = nothing
00058     // 1 = warning for energy non-conservation
00059     // 2 = details of energy budget
00060     // 3 = calculation of cross sections, file openings, sampling of atoms
00061     // 4 = entering in methods
00062 
00063     if (verboseLevel > 3)
00064         if( verboseLevel>0 )
00065         {
00066             G4cout << "Emfietzoglou Excitation model is constructed " << G4endl
00067                    << "Energy range: "
00068                    << lowEnergyLimit / eV << " eV - "
00069                    << highEnergyLimit / MeV << " MeV"
00070                    << G4endl;
00071         }
00072     fParticleChangeForGamma = 0;
00073 }

G4DNAEmfietzoglouExcitationModel::~G4DNAEmfietzoglouExcitationModel (  )  [virtual]

Definition at line 77 of file G4DNAEmfietzoglouExcitationModel.cc.

00078 {}


Member Function Documentation

G4double G4DNAEmfietzoglouExcitationModel::CrossSectionPerVolume ( const G4Material material,
const G4ParticleDefinition p,
G4double  ekin,
G4double  emin,
G4double  emax 
) [virtual]

Reimplemented from G4VEmModel.

Definition at line 126 of file G4DNAEmfietzoglouExcitationModel.cc.

References G4Electron::ElectronDefinition(), G4cout, G4endl, G4Material::GetAtomicNumDensityVector(), G4Material::GetIndex(), and G4ParticleDefinition::GetParticleName().

00131 {
00132     if (verboseLevel > 3)
00133         G4cout << "Calling CrossSectionPerVolume() of G4DNAEmfietzoglouExcitationModel" << G4endl;
00134 
00135     // Calculate total cross section for model
00136 
00137     G4double sigma=0;
00138 
00139     G4double waterDensity = (*fpWaterDensity)[material->GetIndex()];
00140 
00141     if(waterDensity!= 0.0)
00142   //  if (material == nistwater || material->GetBaseMaterial() == nistwater)
00143     {
00144 
00145         if (particleDefinition == G4Electron::ElectronDefinition())
00146         {
00147             if (ekin >= lowEnergyLimit && ekin < highEnergyLimit)
00148             {
00149                 sigma = Sum(ekin);
00150             }
00151         }
00152 
00153         if (verboseLevel > 2)
00154         {
00155             G4cout << "__________________________________" << G4endl;
00156             G4cout << "°°° G4DNAEmfietzoglouExcitationModel - XS INFO START" << G4endl;
00157             G4cout << "°°° Kinetic energy(eV)=" << ekin/eV << " particle : " << particleDefinition->GetParticleName() << G4endl;
00158             G4cout << "°°° Cross section per water molecule (cm^2)=" << sigma/cm/cm << G4endl;
00159             G4cout << "°°° Cross section per water molecule (cm^-1)=" << sigma*waterDensity/(1./cm) << G4endl;
00160             //      G4cout << " - Cross section per water molecule (cm^-1)=" << sigma*material->GetAtomicNumDensityVector()[1]/(1./cm) << G4endl;
00161             G4cout << "°°° G4DNAEmfietzoglouExcitationModel - XS INFO END" << G4endl;
00162         }
00163 
00164     }
00165 
00166     return sigma*material->GetAtomicNumDensityVector()[1];
00167 }

void G4DNAEmfietzoglouExcitationModel::Initialise ( const G4ParticleDefinition ,
const G4DataVector = *(new G4DataVector()) 
) [virtual]

Implements G4VEmModel.

Definition at line 82 of file G4DNAEmfietzoglouExcitationModel.cc.

References fParticleChangeForGamma, G4cout, G4endl, G4Material::GetMaterial(), G4DNAMolecularMaterial::GetNumMolPerVolTableFor(), G4VEmModel::GetParticleChangeForGamma(), G4VEmModel::HighEnergyLimit(), G4DNAMolecularMaterial::Instance(), G4VEmModel::LowEnergyLimit(), G4VEmModel::SetHighEnergyLimit(), and G4VEmModel::SetLowEnergyLimit().

00084 {
00085 
00086     if (verboseLevel > 3)
00087         G4cout << "Calling G4DNAEmfietzoglouExcitationModel::Initialise()" << G4endl;
00088 
00089     // Energy limits
00090 
00091     if (LowEnergyLimit() < lowEnergyLimit)
00092     {
00093         G4cout << "G4DNAEmfietzoglouExcitationModel: low energy limit increased from " <<
00094                   LowEnergyLimit()/eV << " eV to " << lowEnergyLimit/eV << " eV" << G4endl;
00095         SetLowEnergyLimit(lowEnergyLimit);
00096     }
00097 
00098     if (HighEnergyLimit() > highEnergyLimit)
00099     {
00100         G4cout << "G4DNAEmfietzoglouExcitationModel: high energy limit decreased from " <<
00101                   HighEnergyLimit()/MeV << " MeV to " << highEnergyLimit/MeV << " MeV" << G4endl;
00102         SetHighEnergyLimit(highEnergyLimit);
00103     }
00104 
00105     //
00106     if( verboseLevel>0 )
00107     {
00108         G4cout << "Emfietzoglou Excitation model is initialized " << G4endl
00109                << "Energy range: "
00110                << LowEnergyLimit() / eV << " eV - "
00111                << HighEnergyLimit() / MeV << " MeV"
00112                << G4endl;
00113     }
00114 
00115     // Initialize water density pointer
00116     fpWaterDensity = G4DNAMolecularMaterial::Instance()->GetNumMolPerVolTableFor(G4Material::GetMaterial("G4_WATER"));
00117 
00118     if (isInitialised) { return; }
00119     fParticleChangeForGamma = GetParticleChangeForGamma();
00120     isInitialised = true;
00121 
00122 }

G4double G4DNAEmfietzoglouExcitationModel::PartialCrossSection ( G4double  energy,
G4int  level 
)

Definition at line 203 of file G4DNAEmfietzoglouExcitationModel.cc.

References G4DNAWaterExcitationStructure::ExcitationEnergy(), and G4INCL::Math::pi.

00204 {
00205     //                 Aj                        T
00206     // Sigma(T) = ------------- (Bj /  T) ln(Cj ---) [1 - Bj / T]^Pj
00207     //             2 pi alpha0                   R
00208     //
00209     // Sigma is the macroscopic cross section = N sigma, where N = number of target particles per unit volume
00210     // and sigma is the microscopic cross section
00211     // T      is the incoming electron kinetic energy
00212     // alpha0 is the Bohr Radius (Bohr_radius)
00213     // Aj, Bj, Cj & Pj are parameters that can be found in Emfietzoglou's papers
00214     //
00215     // From Phys. Med. Biol. 48 (2003) 2355-2371, D.Emfietzoglou,
00216     // Monte Carlo Simulation of the energy loss of low energy electrons in liquid Water
00217     //
00218     // Scaling for macroscopic cross section: number of water moleculs per unit volume
00219     // const G4double sigma0 = (10. / 3.343e22) * cm2;
00220 
00221     const G4double density = 3.34192e+19 * mm3;
00222 
00223     const G4double aj[]={0.0205, 0.0209, 0.0130, 0.0026, 0.0025};
00224     const G4double cj[]={4.9801, 3.3850, 2.8095, 1.9242, 3.4624};
00225     const G4double pj[]={0.4757, 0.3483, 0.4443, 0.3429, 0.4379};
00226     const G4double r = 13.6 * eV;
00227 
00228     G4double sigma = 0.;
00229 
00230     G4double exc = waterExcitation.ExcitationEnergy(level);
00231 
00232     if (t >= exc)
00233     {
00234         G4double excitationSigma = ( aj[level] / (2.*pi*Bohr_radius))
00235                 * (exc / t)
00236                 * std::log(cj[level]*(t/r))
00237                 * std::pow((1.- (exc/t)), pj[level]);
00238         sigma = excitationSigma / density;
00239     }
00240 
00241     return sigma;
00242 }

void G4DNAEmfietzoglouExcitationModel::SampleSecondaries ( std::vector< G4DynamicParticle * > *  ,
const G4MaterialCutsCouple ,
const G4DynamicParticle ,
G4double  tmin,
G4double  maxEnergy 
) [virtual]

Implements G4VEmModel.

Definition at line 171 of file G4DNAEmfietzoglouExcitationModel.cc.

References G4DNAChemistryManager::CreateWaterMolecule(), eExcitedMolecule, G4DNAWaterExcitationStructure::ExcitationEnergy(), fParticleChangeForGamma, G4cout, G4endl, G4ParticleChangeForGamma::GetCurrentTrack(), G4DynamicParticle::GetKineticEnergy(), G4DynamicParticle::GetMomentumDirection(), G4DNAChemistryManager::Instance(), G4VParticleChange::ProposeLocalEnergyDeposit(), G4ParticleChangeForGamma::ProposeMomentumDirection(), and G4ParticleChangeForGamma::SetProposedKineticEnergy().

00176 {
00177 
00178     if (verboseLevel > 3)
00179         G4cout << "Calling SampleSecondaries() of G4DNAEmfietzoglouExcitationModel" << G4endl;
00180 
00181     G4double electronEnergy0 = aDynamicElectron->GetKineticEnergy();
00182 
00183     G4int level = RandomSelect(electronEnergy0);
00184 
00185     G4double excitationEnergy = waterExcitation.ExcitationEnergy(level);
00186     G4double newEnergy = electronEnergy0 - excitationEnergy;
00187 
00188     if (electronEnergy0 < highEnergyLimit)
00189     {
00190             fParticleChangeForGamma->ProposeMomentumDirection(aDynamicElectron->GetMomentumDirection());
00191             fParticleChangeForGamma->SetProposedKineticEnergy(newEnergy);
00192             fParticleChangeForGamma->ProposeLocalEnergyDeposit(excitationEnergy);
00193 
00194         const G4Track * theIncomingTrack = fParticleChangeForGamma->GetCurrentTrack();
00195         G4DNAChemistryManager::Instance()->CreateWaterMolecule(eExcitedMolecule,
00196                                                                level,
00197                                                                theIncomingTrack);
00198     }
00199 }


Field Documentation

G4ParticleChangeForGamma* G4DNAEmfietzoglouExcitationModel::fParticleChangeForGamma [protected]

Definition at line 72 of file G4DNAEmfietzoglouExcitationModel.hh.

Referenced by G4DNAEmfietzoglouExcitationModel(), Initialise(), and SampleSecondaries().


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:51:47 2013 for Geant4 by  doxygen 1.4.7