#include <G4EmDNAPhysics.hh>
Inheritance diagram for G4EmDNAPhysics:
Public Member Functions | |
G4EmDNAPhysics (G4int ver=1) | |
G4EmDNAPhysics (G4int ver, const G4String &name) | |
virtual | ~G4EmDNAPhysics () |
virtual void | ConstructParticle () |
virtual void | ConstructProcess () |
Definition at line 37 of file G4EmDNAPhysics.hh.
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 }
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] |
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 }