G4DNATransformElectronModel Class Reference

#include <G4DNATransformElectronModel.hh>

Inheritance diagram for G4DNATransformElectronModel:

G4VEmModel

Public Member Functions

 G4DNATransformElectronModel (const G4ParticleDefinition *p=0, const G4String &nam="DNATransformElectronModel")
virtual ~G4DNATransformElectronModel ()
virtual void Initialise (const G4ParticleDefinition *, const 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)
void SetVerbose (int)
void SetEpsilonEnergy (G4double)

Protected Attributes

G4ParticleChangeForGamma * fParticleChangeForGamma

Detailed Description

When an electron reaches the highest energy domain of G4DNATransformElectronModel, it is then automatically converted into a solvated electron without thermalization displacement (assumed to be already thermalized).

Definition at line 51 of file G4DNATransformElectronModel.hh.


Constructor & Destructor Documentation

G4DNATransformElectronModel::G4DNATransformElectronModel ( const G4ParticleDefinition *  p = 0,
const G4String &  nam = "DNATransformElectronModel" 
)

Definition at line 36 of file G4DNATransformElectronModel.cc.

References fParticleChangeForGamma, G4VEmModel::SetHighEnergyLimit(), and G4VEmModel::SetLowEnergyLimit().

00037                                                                              :
00038     G4VEmModel(nam),fIsInitialised(false)
00039 {
00040     fVerboseLevel = 0 ;
00041     SetLowEnergyLimit(0.*eV);
00042     SetHighEnergyLimit(0.025*eV);
00043     fParticleChangeForGamma = 0;
00044   //  fNistWater  = G4NistManager::Instance()->FindOrBuildMaterial("G4_WATER");
00045     fpWaterDensity = 0;
00046     fpWaterDensity = 0;
00047     fEpsilon = 0.0001*eV;
00048 }

G4DNATransformElectronModel::~G4DNATransformElectronModel (  )  [virtual]

Definition at line 51 of file G4DNATransformElectronModel.cc.

00052 {}


Member Function Documentation

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

Reimplemented from G4VEmModel.

Definition at line 83 of file G4DNATransformElectronModel.cc.

References DBL_MAX, G4cout, G4endl, G4Material::GetIndex(), and G4VEmModel::HighEnergyLimit().

00088 {
00089 #if G4VERBOSE
00090     if (fVerboseLevel > 1)
00091         G4cout << "Calling CrossSectionPerVolume() of G4DNATransformElectronModel" << G4endl;
00092 #endif
00093 
00094     if(ekin - fEpsilon > HighEnergyLimit())
00095     {
00096         return 0.0;
00097     }
00098 
00099     G4double waterDensity = (*fpWaterDensity)[material->GetIndex()];
00100 
00101     if(waterDensity!= 0.0)
00102    //  if (material == nistwater || material->GetBaseMaterial() == nistwater)
00103     {
00104         if (ekin - fEpsilon <= HighEnergyLimit())
00105         {
00106             return DBL_MAX;
00107         }
00108     }
00109 
00110     return 0.0 ;
00111 }

void G4DNATransformElectronModel::Initialise ( const G4ParticleDefinition *  ,
const G4DataVector &   
) [virtual]

Implements G4VEmModel.

Definition at line 55 of file G4DNATransformElectronModel.cc.

References G4Electron::ElectronDefinition(), FatalErrorInArgument, fParticleChangeForGamma, G4cout, G4endl, G4Exception(), G4Material::GetMaterial(), G4DNAMolecularMaterial::GetNumMolPerVolTableFor(), G4VEmModel::GetParticleChangeForGamma(), and G4DNAMolecularMaterial::Instance().

00057 {
00058 #ifdef G4VERBOSE
00059     if (fVerboseLevel)
00060         G4cout << "Calling G4DNATransformElectronModel::Initialise()" << G4endl;
00061 #endif
00062 
00063     if (particleDefinition != G4Electron::ElectronDefinition())
00064     {
00065         G4ExceptionDescription exceptionDescription ;
00066         exceptionDescription << "Attempting to calculate cross section for wrong particle";
00067         G4Exception("G4DNATransformElectronModel::CrossSectionPerVolume","G4DNATransformElectronModel001",
00068                     FatalErrorInArgument,exceptionDescription);
00069         return;
00070     }
00071 
00072     // Initialize water density pointer
00073     fpWaterDensity = G4DNAMolecularMaterial::Instance()->GetNumMolPerVolTableFor(G4Material::GetMaterial("G4_WATER"));
00074 
00075     if(!fIsInitialised)
00076     {
00077         fIsInitialised = true;
00078         fParticleChangeForGamma = GetParticleChangeForGamma();
00079     }
00080 }

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

Implements G4VEmModel.

Definition at line 114 of file G4DNATransformElectronModel.cc.

References G4DNAChemistryManager::CreateSolvatedElectron(), fParticleChangeForGamma, fStopAndKill, G4cout, G4endl, G4ParticleChangeForGamma::GetCurrentTrack(), G4DynamicParticle::GetKineticEnergy(), G4DNAChemistryManager::Instance(), G4VParticleChange::ProposeLocalEnergyDeposit(), and G4VParticleChange::ProposeTrackStatus().

00119 {
00120 #if G4VERBOSE
00121     if (fVerboseLevel)
00122         G4cout << "Calling SampleSecondaries() of G4DNATransformElectronModel" << G4endl;
00123 #endif
00124 
00125     G4double k = particle->GetKineticEnergy();
00126 
00127 //    if (k - fEpsilon <= HighEnergyLimit())
00128 //    {
00129         const G4Track * track = fParticleChangeForGamma->GetCurrentTrack();
00130         G4DNAChemistryManager::Instance()->CreateSolvatedElectron(track);
00131         fParticleChangeForGamma->ProposeTrackStatus(fStopAndKill);
00132         fParticleChangeForGamma->ProposeLocalEnergyDeposit(k);
00133 //    }
00134 }

void G4DNATransformElectronModel::SetEpsilonEnergy ( G4double   )  [inline]

Definition at line 99 of file G4DNATransformElectronModel.hh.

00100 {
00101     fEpsilon = eps ;
00102 }

void G4DNATransformElectronModel::SetVerbose ( int   )  [inline]

Definition at line 94 of file G4DNATransformElectronModel.hh.

00095 {
00096     fVerboseLevel = flag ;
00097 }


Field Documentation

G4ParticleChangeForGamma* G4DNATransformElectronModel::fParticleChangeForGamma [protected]

Definition at line 78 of file G4DNATransformElectronModel.hh.

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


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