00001 00009 #ifndef BDSPhysicsList_h 00010 #define BDSPhysicsList_h 00011 00012 #include "G4VModularPhysicsList.hh" 00013 #include "globals.hh" 00014 00015 #include "G4Cerenkov.hh" 00016 #include "G4Scintillation.hh" 00017 #include "G4OpAbsorption.hh" 00018 #include "G4OpRayleigh.hh" 00019 #include "G4OpMieHG.hh" 00020 #include "G4OpBoundaryProcess.hh" 00021 #include "G4CoulombScattering.hh" 00022 00023 class BDSPhysicsList: public G4VUserPhysicsList 00024 { 00025 public: 00026 BDSPhysicsList(); 00027 virtual ~BDSPhysicsList(); 00028 00029 public: 00030 00031 void AddParameterisation(); 00032 00033 virtual void ConstructParticle(); 00034 virtual void ConstructProcess(); 00035 00036 virtual void SetCuts(); 00037 00038 // construct particular physics list processes 00039 00040 void ConstructEM(); 00041 void ConstructEMSingleScatter(); 00042 void ConstructEMMisc(); 00043 void ConstructMultipleScattering(); 00044 void ConstructCoulombScattering(); 00045 00046 void ConstructMuon(); 00047 00048 void ConstructDecay(); 00049 00050 void ConstructOptical(); 00051 00052 void ConstructMerlin(); 00053 00054 void ConstructEM_Low_Energy(); 00055 00056 void ConstructLaserWire(); 00057 00058 void ConstructHadronic(); 00059 00060 void ConstructSR(); 00061 00062 private: 00063 G4bool verbose; 00064 00065 G4Cerenkov* theCerenkovProcess; 00066 G4Scintillation* theScintillationProcess; 00067 G4OpAbsorption* theAbsorptionProcess; 00068 G4OpRayleigh* theRayleighScatteringProcess; 00069 G4OpMieHG* theMieHGScatteringProcess; 00070 G4OpBoundaryProcess* theBoundaryProcess; 00071 00073 // standard physics list 00074 G4VPhysicsConstructor* theReferenceHadronicPhysList; 00075 G4VPhysicsConstructor* theReferenceEmPhysList; 00076 // BDSIM physics lists 00077 G4VPhysicsConstructor* theBDSIMPhysList; 00078 // hadronic physics lists 00079 G4VPhysicsConstructor* theHadPhysList1; 00080 G4VPhysicsConstructor* theHadPhysList2; 00081 }; 00082 00083 #endif 00084 00085 00086