#include <G4ErrorPhysicsList.hh>
Inheritance diagram for G4ErrorPhysicsList:
Public Member Functions | |
G4ErrorPhysicsList () | |
virtual | ~G4ErrorPhysicsList () |
Protected Member Functions | |
virtual void | ConstructParticle () |
virtual void | ConstructProcess () |
virtual void | SetCuts () |
virtual void | ConstructEM () |
Definition at line 49 of file G4ErrorPhysicsList.hh.
G4ErrorPhysicsList::G4ErrorPhysicsList | ( | ) |
Definition at line 72 of file G4ErrorPhysicsList.cc.
References G4VUserPhysicsList::defaultCutValue.
00072 : G4VUserPhysicsList() 00073 { 00074 defaultCutValue = 1.0E+9*cm; // set big step so that AlongStep computes all the energy 00075 }
G4ErrorPhysicsList::~G4ErrorPhysicsList | ( | ) | [virtual] |
void G4ErrorPhysicsList::ConstructEM | ( | ) | [protected, virtual] |
Definition at line 167 of file G4ErrorPhysicsList.cc.
References G4ProcessManager::AddContinuousProcess(), G4ProcessManager::AddDiscreteProcess(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetProcessManager(), G4ParticleDefinition::IsShortLived(), G4ParticleTableIterator< K, V >::reset(), G4VUserPhysicsList::theParticleIterator, and G4ParticleTableIterator< K, V >::value().
Referenced by ConstructProcess().
00168 { 00169 00170 G4ErrorEnergyLoss* eLossProcess = new G4ErrorEnergyLoss; 00171 G4ErrorStepLengthLimitProcess* stepLengthLimitProcess = new G4ErrorStepLengthLimitProcess; 00172 G4ErrorMagFieldLimitProcess* magFieldLimitProcess = new G4ErrorMagFieldLimitProcess; 00173 new G4ErrorMessenger( stepLengthLimitProcess, magFieldLimitProcess, eLossProcess ); 00174 00175 theParticleIterator->reset(); 00176 while( (*theParticleIterator)() ){ 00177 G4ParticleDefinition* particle = theParticleIterator->value(); 00178 G4ProcessManager* pmanager = particle->GetProcessManager(); 00179 G4String particleName = particle->GetParticleName(); 00180 00181 if (particleName == "gamma") { 00182 // gamma 00183 pmanager->AddDiscreteProcess(new G4GammaConversion()); 00184 pmanager->AddDiscreteProcess(new G4ComptonScattering()); 00185 pmanager->AddDiscreteProcess(new G4PhotoElectricEffect()); 00186 00187 // } else if (particleName == "e-" || particleName == "e+" 00188 // || particleName == "mu+" || particleName == "mu-" ) { 00189 }else if (!particle->IsShortLived() && particle->GetPDGCharge() != 0 ) { 00190 00191 pmanager->AddContinuousProcess(eLossProcess,1); 00192 pmanager->AddDiscreteProcess( stepLengthLimitProcess, 2 ); 00193 pmanager->AddDiscreteProcess( magFieldLimitProcess, 3 ); 00194 00195 /* } else if ((!particle->IsShortLived()) && 00196 (particle->GetPDGCharge() != 0.0) && 00197 (particle->GetParticleName() != "chargedgeantino")) { 00198 // all others charged particles except geantino 00199 // G4VProcess* aMultipleScattering = new G4MultipleScattering(); 00200 G4VProcess* anIonisation = new G4hIonisation(); 00202 00203 // 00204 // add processes 00205 pmanager->AddProcess(anIonisation); 00206 // pmanager->AddProcess(aMultipleScattering); 00208 00209 // 00210 // set ordering for AlongStepDoIt 00211 // pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep,1); 00212 pmanager->SetProcessOrdering(anIonisation, idxAlongStep,1); 00213 00214 // 00215 // set ordering for PostStepDoIt 00216 // pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep,1); 00217 pmanager->SetProcessOrdering(anIonisation, idxPostStep,1); 00219 */ 00220 } 00221 } 00222 }
void G4ErrorPhysicsList::ConstructParticle | ( | ) | [protected, virtual] |
Implements G4VUserPhysicsList.
Definition at line 85 of file G4ErrorPhysicsList.cc.
References G4Electron::ElectronDefinition(), G4Gamma::GammaDefinition(), G4MuonMinus::MuonMinusDefinition(), G4MuonPlus::MuonPlusDefinition(), G4PionMinus::PionMinusDefinition(), G4PionPlus::PionPlusDefinition(), G4Positron::PositronDefinition(), and G4Proton::ProtonDefinition().
00086 { 00087 // In this method, static member functions should be called 00088 // for all particles which you want to use. 00089 // This ensures that objects of these particle types will be 00090 // created in the program. 00091 // gamma 00092 G4Gamma::GammaDefinition(); 00093 // e+/- 00094 G4Electron::ElectronDefinition(); 00095 G4Positron::PositronDefinition(); 00096 // mu+/- 00097 G4MuonPlus::MuonPlusDefinition(); 00098 G4MuonMinus::MuonMinusDefinition(); 00099 00100 // pi+/- 00101 G4PionPlus::PionPlusDefinition(); 00102 G4PionMinus::PionMinusDefinition(); 00103 00104 // proton 00105 G4Proton::ProtonDefinition(); 00106 00107 }
void G4ErrorPhysicsList::ConstructProcess | ( | ) | [protected, virtual] |
Implements G4VUserPhysicsList.
Definition at line 111 of file G4ErrorPhysicsList.cc.
References G4ProcessManager::AddProcess(), ConstructEM(), G4cout, G4endl, G4Exception(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetProcessManager(), idxAlongStep, idxPostStep, G4ParticleDefinition::IsShortLived(), G4ParticleTableIterator< K, V >::reset(), RunMustBeAborted, G4ProcessManager::SetProcessOrderingToFirst(), G4VUserPhysicsList::theParticleIterator, G4ParticleTableIterator< K, V >::value(), and G4VUserPhysicsList::verboseLevel.
00112 { 00113 G4Transportation* theTransportationProcess= new G4Transportation(); 00114 00115 #ifdef G4VERBOSE 00116 if (verboseLevel >= 4){ 00117 G4cout << "G4VUserPhysicsList::ConstructProcess() "<< G4endl; 00118 } 00119 #endif 00120 00121 // loop over all particles in G4ParticleTable 00122 theParticleIterator->reset(); 00123 while( (*theParticleIterator)() ){ 00124 G4ParticleDefinition* particle = theParticleIterator->value(); 00125 G4ProcessManager* pmanager = particle->GetProcessManager(); 00126 if (!particle->IsShortLived()) { 00127 G4cout << particle << "G4ErrorPhysicsList:: particle process manager " << particle->GetParticleName() << " = " << particle->GetProcessManager() << G4endl; 00128 // Add transportation process for all particles other than "shortlived" 00129 if ( pmanager == 0) { 00130 // Error !! no process manager 00131 G4String particleName = particle->GetParticleName(); 00132 G4Exception("G4ErrorPhysicsList::ConstructProcess","No process manager", 00133 RunMustBeAborted, particleName ); 00134 } else { 00135 // add transportation with ordering = ( -1, "first", "first" ) 00136 pmanager ->AddProcess(theTransportationProcess); 00137 pmanager ->SetProcessOrderingToFirst(theTransportationProcess, idxAlongStep); 00138 pmanager ->SetProcessOrderingToFirst(theTransportationProcess, idxPostStep); 00139 } 00140 } else { 00141 // shortlived particle case 00142 } 00143 } 00144 00145 ConstructEM(); 00146 }
void G4ErrorPhysicsList::SetCuts | ( | ) | [protected, virtual] |
Reimplemented from G4VUserPhysicsList.
Definition at line 226 of file G4ErrorPhysicsList.cc.
References G4VUserPhysicsList::SetCutsWithDefault().
00227 { 00228 // " G4VUserPhysicsList::SetCutsWithDefault" method sets 00229 // the default cut value or all particle types 00230 SetCutsWithDefault(); 00231 // if (verboseLevel>0) 00232 // DumpCutValuesTable(); 00233 }