00001 // $Header: /cvs/lcd/slic/include/PhysicsListManager.hh,v 1.17 2007/07/03 18:01:30 jeremy Exp $ 00002 00003 #ifndef SLIC_PHYSICSLISTMANAGER_HH 00004 #define SLIC_PHYSICSLISTMANAGER_HH 1 00005 00006 // lcdd 00007 #include "Module.hh" 00008 00009 // slic 00010 #include "PhysicsListFactory.hh" 00011 #include "PhysicsMessenger.hh" 00012 #include "Singleton.hh" 00013 00014 // geant4 00015 #include "G4VUserPhysicsList.hh" 00016 #include "G4RunManager.hh" 00017 00018 // std 00019 #include <string> 00020 00021 namespace slic 00022 { 00023 00031 class PhysicsListManager : public Module, public Singleton<PhysicsListManager> 00032 { 00033 00034 public: 00035 00036 PhysicsListManager(); 00037 00038 virtual ~PhysicsListManager(); 00039 00040 public: 00041 00042 void initializePhysicsList(); 00043 00044 void setCurrentListName( const std::string& n ); 00045 00046 inline const std::string& getCurrentListName() 00047 { 00048 return m_currentListName; 00049 } 00050 00051 inline bool isInitialized() 00052 { 00053 return m_isInitialized; 00054 } 00055 00056 inline void enableLimits(bool l) 00057 { 00058 m_enableLimits = l; 00059 } 00060 00061 inline bool enableLimits() 00062 { 00063 return m_enableLimits; 00064 } 00065 00066 inline bool enableOptical() 00067 { 00068 return m_enableOptical; 00069 } 00070 00071 inline void enableOptical(bool b) 00072 { 00073 m_enableOptical = b; 00074 } 00075 00076 void setupUserLimitsProcesses(); 00077 00078 void setupOpticalProcesses(); 00079 00080 private: 00081 00082 G4VUserPhysicsList* m_currentList; 00083 bool m_isInitialized; 00084 bool m_isFromDefault; 00085 bool m_enableLimits; 00086 bool m_setupLimits; 00087 bool m_enableOptical; 00088 00089 PhysicsMessenger* m_messenger; 00090 00091 std::string m_currentListName; 00092 static const std::string m_defaultListName; 00093 }; 00094 } 00095 00096 #endif
1.5.4