/scratch0/jsnuveri/BDSIM/BDSIMgit/bdsim/src/BDSCutsAndLimits.cc

00001 #include "BDSCutsAndLimits.hh"
00002 #include "G4Gamma.hh"
00003 #include "G4Electron.hh"
00004 #include "G4Positron.hh"
00005 #include "G4Proton.hh"
00006 #include "G4StepLimiter.hh"
00007 #include "G4UserSpecialCuts.hh"
00008 #include "G4ProcessManager.hh"
00009 #include "G4Version.hh"
00010 
00011 BDSCutsAndLimits::BDSCutsAndLimits():G4VPhysicsConstructor("BDSCutsAndLimits"),_wasActivated(false)
00012 {;}
00013 
00014 BDSCutsAndLimits::~BDSCutsAndLimits()
00015 {;}
00016 
00017 void BDSCutsAndLimits::ConstructParticle(){
00018   G4Gamma::Gamma();
00019   G4Electron::Electron();
00020   G4Positron::Positron();    
00021   G4Proton::Proton();
00022   return;
00023 }
00024 
00025 void BDSCutsAndLimits::ConstructProcess(){
00026   if(_wasActivated) return;
00027   _wasActivated=true;
00028   
00029 #if G4VERSION_NUMBER < 1000
00030   theParticleTable = G4ParticleTable::GetParticleTable();
00031   theParticleIterator = theParticleTable->GetIterator();
00032   G4ParticleTable::G4PTblDicIterator* aParticleIterator = theParticleIterator;
00033 #endif
00034 
00035   aParticleIterator->reset();
00036   while( (*aParticleIterator)() ){
00037     G4ParticleDefinition* particle = aParticleIterator->value();
00038     G4ProcessManager *pmanager = particle->GetProcessManager();
00039     if((particle->GetParticleName()=="gamma")||
00040        (particle->GetParticleName()=="e-")||
00041        (particle->GetParticleName()=="e+")||
00042        (particle->GetParticleName()=="proton")){
00043       particle->SetApplyCutsFlag(true);
00044     }
00045     pmanager->AddProcess(new G4StepLimiter,-1,-1,1);
00046 #ifndef NOUSERSPECIALCUTS
00047     pmanager->AddDiscreteProcess(new G4UserSpecialCuts);
00048 #endif
00049   }
00050   return;
00051 }
00052 

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7