G4EmDNAPhysics Class Reference

#include <G4EmDNAPhysics.hh>

Inheritance diagram for G4EmDNAPhysics:

G4VPhysicsConstructor

Public Member Functions

 G4EmDNAPhysics (G4int ver=1)
 G4EmDNAPhysics (G4int ver, const G4String &name)
virtual ~G4EmDNAPhysics ()
virtual void ConstructParticle ()
virtual void ConstructProcess ()

Detailed Description

Definition at line 37 of file G4EmDNAPhysics.hh.


Constructor & Destructor Documentation

G4EmDNAPhysics::G4EmDNAPhysics ( G4int  ver = 1  ) 

Definition at line 86 of file G4EmDNAPhysics.cc.

References bElectromagnetic, and G4VPhysicsConstructor::SetPhysicsType().

00087   : G4VPhysicsConstructor("G4EmDNAPhysics"), verbose(ver)
00088 {
00089   SetPhysicsType(bElectromagnetic);
00090 }

G4EmDNAPhysics::G4EmDNAPhysics ( G4int  ver,
const G4String name 
)

Definition at line 94 of file G4EmDNAPhysics.cc.

References bElectromagnetic, and G4VPhysicsConstructor::SetPhysicsType().

00095   : G4VPhysicsConstructor("G4EmDNAPhysics"), verbose(ver)
00096 {
00097   SetPhysicsType(bElectromagnetic);
00098 }

G4EmDNAPhysics::~G4EmDNAPhysics (  )  [virtual]

Definition at line 102 of file G4EmDNAPhysics.cc.

00103 {}


Member Function Documentation

void G4EmDNAPhysics::ConstructParticle (  )  [virtual]

Implements G4VPhysicsConstructor.

Definition at line 107 of file G4EmDNAPhysics.cc.

References G4Electron::Electron(), G4Gamma::Gamma(), G4GenericIon::GenericIonDefinition(), G4DNAGenericIonsManager::GetIon(), G4DNAGenericIonsManager::Instance(), G4Positron::Positron(), and G4Proton::Proton().

00108 {
00109 // bosons
00110   G4Gamma::Gamma();
00111 
00112 // leptons
00113   G4Electron::Electron();
00114   G4Positron::Positron();
00115   
00116 // baryons
00117   G4Proton::Proton();
00118 
00119   G4GenericIon::GenericIonDefinition();
00120 
00121   G4DNAGenericIonsManager * genericIonsManager;
00122   genericIonsManager=G4DNAGenericIonsManager::Instance();
00123   genericIonsManager->GetIon("alpha++");
00124   genericIonsManager->GetIon("alpha+");
00125   genericIonsManager->GetIon("helium");
00126   genericIonsManager->GetIon("hydrogen");
00127   genericIonsManager->GetIon("carbon");
00128   genericIonsManager->GetIon("nitrogen");
00129   genericIonsManager->GetIon("oxygen");
00130   genericIonsManager->GetIon("iron");
00131 
00132 }

void G4EmDNAPhysics::ConstructProcess (  )  [virtual]

Implements G4VPhysicsConstructor.

Definition at line 136 of file G4EmDNAPhysics.cc.

References G4VEmProcess::AddEmModel(), G4VMultipleScattering::AddEmModel(), fUseDistanceToBoundary, G4ParticleDefinition::GetParticleName(), G4PhysicsListHelper::GetPhysicsListHelper(), G4LossTableManager::Instance(), G4PhysicsListHelper::RegisterProcess(), G4ParticleTableIterator< K, V >::reset(), G4LossTableManager::SetAtomDeexcitation(), G4VEmProcess::SetEmModel(), G4VAtomDeexcitation::SetFluo(), G4VEmModel::SetHighEnergyLimit(), G4VEnergyLossProcess::SetStepFunction(), G4VMultipleScattering::SetStepLimitType(), G4VPhysicsConstructor::theParticleIterator, and G4ParticleTableIterator< K, V >::value().

00137 {
00138   G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
00139 
00140   theParticleIterator->reset();
00141   while( (*theParticleIterator)() )
00142   {
00143     G4ParticleDefinition* particle = theParticleIterator->value();
00144     G4String particleName = particle->GetParticleName();
00145 
00146     if (particleName == "e-") {
00147 
00148       // *** Elastic scattering (two alternative models available) ***
00149       
00150       G4DNAElastic* theDNAElasticProcess = new G4DNAElastic("e-_G4DNAElastic");
00151       theDNAElasticProcess->SetEmModel(new G4DNAChampionElasticModel());
00152       
00153       // or alternative model
00154       //theDNAElasticProcess->SetEmModel(new G4DNAScreenedRutherfordElasticModel());
00155       
00156       ph->RegisterProcess(theDNAElasticProcess, particle);
00157 
00158       // *** Excitation ***
00159       ph->RegisterProcess(new G4DNAExcitation("e-_G4DNAExcitation"), particle);
00160 
00161       // *** Ionisation ***
00162       ph->RegisterProcess(new G4DNAIonisation("e-_G4DNAIonisation"), particle);
00163 
00164       // *** Vibrational excitation ***
00165       ph->RegisterProcess(new G4DNAVibExcitation("e-_G4DNAVibExcitation"), particle);
00166       
00167       // *** Attachment ***
00168       ph->RegisterProcess(new G4DNAAttachment("e-_G4DNAAttachment"), particle); 
00169     
00170     } else if ( particleName == "proton" ) {
00171       ph->RegisterProcess(new G4DNAExcitation("proton_G4DNAExcitation"), particle);
00172       ph->RegisterProcess(new G4DNAIonisation("proton_G4DNAIonisation"), particle);
00173       ph->RegisterProcess(new G4DNAChargeDecrease("proton_G4DNAChargeDecrease"), particle);
00174 
00175     } else if ( particleName == "hydrogen" ) {
00176       ph->RegisterProcess(new G4DNAExcitation("hydrogen_G4DNAExcitation"), particle);
00177       ph->RegisterProcess(new G4DNAIonisation("hydrogen_G4DNAIonisation"), particle);
00178       ph->RegisterProcess(new G4DNAChargeIncrease("hydrogen_G4DNAChargeIncrease"), particle);
00179 
00180     } else if ( particleName == "alpha" ) {
00181       ph->RegisterProcess(new G4DNAExcitation("alpha_G4DNAExcitation"), particle);
00182       ph->RegisterProcess(new G4DNAIonisation("alpha_G4DNAIonisation"), particle);
00183       ph->RegisterProcess(new G4DNAChargeDecrease("alpha_G4DNAChargeDecrease"), particle);
00184 
00185     } else if ( particleName == "alpha+" ) {
00186       ph->RegisterProcess(new G4DNAExcitation("alpha+_G4DNAExcitation"), particle);
00187       ph->RegisterProcess(new G4DNAIonisation("alpha+_G4DNAIonisation"), particle);
00188       ph->RegisterProcess(new G4DNAChargeDecrease("alpha+_G4DNAChargeDecrease"), particle);
00189       ph->RegisterProcess(new G4DNAChargeIncrease("alpha+_G4DNAChargeIncrease"), particle);
00190 
00191     } else if ( particleName == "helium" ) {
00192       ph->RegisterProcess(new G4DNAExcitation("helium_G4DNAExcitation"), particle);
00193       ph->RegisterProcess(new G4DNAIonisation("helium_G4DNAIonisation"), particle);
00194       ph->RegisterProcess(new G4DNAChargeIncrease("helium_G4DNAChargeIncrease"), particle);
00195     
00196     // Extension to HZE proposed by Z. Francis
00197 
00198     } else if ( particleName == "carbon" ) {
00199       ph->RegisterProcess(new G4DNAIonisation("carbon_G4DNAIonisation"), particle);
00200 
00201     } else if ( particleName == "nitrogen" ) {
00202       ph->RegisterProcess(new G4DNAIonisation("nitrogen_G4DNAIonisation"), particle);
00203 
00204     } else if ( particleName == "oxygen" ) {
00205       ph->RegisterProcess(new G4DNAIonisation("oxygen_G4DNAIonisation"), particle);
00206 
00207     } else if ( particleName == "iron" ) {
00208       ph->RegisterProcess(new G4DNAIonisation("iron_G4DNAIonisation"), particle);
00209 
00210     }
00211     
00212     // Warning : the following particles and processes are needed by EM Physics builders
00213     // They are taken from the default Livermore Physics list
00214     // These particles are currently not handled by Geant4-DNA
00215     
00216       // e+
00217       
00218       else if (particleName == "e+") {
00219 
00220       // Identical to G4EmStandardPhysics_option3
00221       
00222       G4eMultipleScattering* msc = new G4eMultipleScattering();
00223       msc->AddEmModel(0, new G4UrbanMscModel95());
00224       msc->SetStepLimitType(fUseDistanceToBoundary);
00225       G4eIonisation* eIoni = new G4eIonisation();
00226       eIoni->SetStepFunction(0.2, 100*um);      
00227 
00228       ph->RegisterProcess(msc, particle);
00229       ph->RegisterProcess(eIoni, particle);
00230       ph->RegisterProcess(new G4eBremsstrahlung(), particle);
00231       ph->RegisterProcess(new G4eplusAnnihilation(), particle);
00232 
00233     } else if (particleName == "gamma") {
00234     
00235       G4double LivermoreHighEnergyLimit = GeV;
00236 
00237       G4PhotoElectricEffect* thePhotoElectricEffect = new G4PhotoElectricEffect();
00238       G4LivermorePhotoElectricModel* theLivermorePhotoElectricModel = 
00239         new G4LivermorePhotoElectricModel();
00240       theLivermorePhotoElectricModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
00241       thePhotoElectricEffect->AddEmModel(0, theLivermorePhotoElectricModel);
00242       ph->RegisterProcess(thePhotoElectricEffect, particle);
00243 
00244       G4ComptonScattering* theComptonScattering = new G4ComptonScattering();
00245       G4LivermoreComptonModel* theLivermoreComptonModel = 
00246         new G4LivermoreComptonModel();
00247       theLivermoreComptonModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
00248       theComptonScattering->AddEmModel(0, theLivermoreComptonModel);
00249       ph->RegisterProcess(theComptonScattering, particle);
00250 
00251       G4GammaConversion* theGammaConversion = new G4GammaConversion();
00252       G4LivermoreGammaConversionModel* theLivermoreGammaConversionModel = 
00253         new G4LivermoreGammaConversionModel();
00254       theLivermoreGammaConversionModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
00255       theGammaConversion->AddEmModel(0, theLivermoreGammaConversionModel);
00256       ph->RegisterProcess(theGammaConversion, particle);
00257 
00258       G4RayleighScattering* theRayleigh = new G4RayleighScattering();
00259       G4LivermoreRayleighModel* theRayleighModel = new G4LivermoreRayleighModel();
00260       theRayleighModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
00261       theRayleigh->AddEmModel(0, theRayleighModel);
00262       ph->RegisterProcess(theRayleigh, particle);
00263     }
00264     
00265    // Warning : end of particles and processes are needed by EM Physics builders 
00266     
00267   }
00268 
00269   // Deexcitation
00270   //
00271   G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
00272   G4LossTableManager::Instance()->SetAtomDeexcitation(de);
00273   de->SetFluo(true);
00274 }


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