00001 #ifndef BDSModularPhysicsList_h 00002 #define BDSModularPhysicsList_h 1 00003 00004 #include "G4VModularPhysicsList.hh" 00005 #include "G4OpticalPhysics.hh" 00006 #include "BDSDebug.hh" 00007 #include "G4VPhysicsConstructor.hh" 00008 #include "BDSMuonPhysics.hh" 00009 #include "BDSCutsAndLimits.hh" 00010 00011 #include <vector> 00012 00013 class BDSModularPhysicsList: public G4VModularPhysicsList 00014 { 00015 public: 00016 BDSModularPhysicsList(); 00017 virtual ~BDSModularPhysicsList(); 00018 void Print(); 00019 virtual void SetCuts(); 00020 00021 private: 00022 void SetParticleDefinition(); 00023 void ConstructMinimumParticleSet(); 00024 G4VPhysicsConstructor* _emPhysics; 00025 G4VPhysicsConstructor* _hadronicPhysics; 00026 G4VPhysicsConstructor* _muonPhysics; 00027 G4OpticalPhysics* _opticalPhysics; 00028 G4VPhysicsConstructor* _decayPhysics; 00029 G4VPhysicsConstructor* _paramPhysics; 00030 G4VPhysicsConstructor* _synchRadPhysics; 00031 G4VPhysicsConstructor* _cutsAndLimits; 00032 std::vector<G4VPhysicsConstructor*> _constructors; 00033 void ParsePhysicsList(); 00034 void ConfigurePhysics(); 00035 void ConfigureOptical(); 00036 void Register(); 00037 G4String _physListName; 00038 //Physics constructor loaders. 00039 void LoadEm(); 00040 void LoadEmLow(); 00041 void LoadParameterisationPhysics(); 00042 void LoadHadronic(); 00043 void LoadHadronicHP(); 00044 void LoadSynchRad(); 00045 void LoadMuon(); 00046 void LoadOptical(); 00047 void LoadDecay(); 00048 void LoadCutsAndLimits(); 00049 }; 00050 00051 #endif 00052