#include <G4StepLimiterBuilder.hh>
Inheritance diagram for G4StepLimiterBuilder:
Public Member Functions | |
G4StepLimiterBuilder (const G4String &name="stepLimiter") | |
virtual | ~G4StepLimiterBuilder () |
virtual void | ConstructParticle () |
virtual void | ConstructProcess () |
Definition at line 43 of file G4StepLimiterBuilder.hh.
G4StepLimiterBuilder::G4StepLimiterBuilder | ( | const G4String & | name = "stepLimiter" |
) |
Definition at line 57 of file G4StepLimiterBuilder.cc.
00058 : G4VPhysicsConstructor(name) 00059 { 00060 fStepLimiter = new G4StepLimiter(); 00061 fUserSpecialCuts = new G4UserSpecialCuts(); 00062 }
G4StepLimiterBuilder::~G4StepLimiterBuilder | ( | ) | [virtual] |
void G4StepLimiterBuilder::ConstructParticle | ( | ) | [virtual] |
void G4StepLimiterBuilder::ConstructProcess | ( | ) | [virtual] |
Implements G4VPhysicsConstructor.
Definition at line 79 of file G4StepLimiterBuilder.cc.
References G4ProcessManager::AddDiscreteProcess(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetProcessManager(), G4ParticleDefinition::IsShortLived(), G4ParticleTableIterator< K, V >::reset(), G4VPhysicsConstructor::theParticleIterator, and G4ParticleTableIterator< K, V >::value().
00080 { 00081 theParticleIterator->reset(); 00082 00083 while ((*theParticleIterator)()) { 00084 G4ParticleDefinition* particle = theParticleIterator->value(); 00085 G4ProcessManager* pmanager = particle->GetProcessManager(); 00086 G4double charge = particle->GetPDGCharge(); 00087 00088 if(!particle->IsShortLived()) { 00089 if (charge != 0.0) { 00090 // All charged particles should have a step limiter 00091 // to make sure that the steps do not get too long. 00092 pmanager->AddDiscreteProcess(fStepLimiter); 00093 pmanager->AddDiscreteProcess(fUserSpecialCuts); 00094 } else { 00095 // Energy cuts for all other neutral particles 00096 pmanager->AddDiscreteProcess(fUserSpecialCuts); 00097 } 00098 } 00099 } 00100 }