00001 #ifndef BDSACCELERATORMODEL_H 00002 #define BDSACCELERATORMODEL_H 00003 00004 #include "globals.hh" // geant4 globals / types 00005 #include "G4LogicalVolume.hh" 00006 #include "G4VPhysicalVolume.hh" 00007 00008 #include "BDSBeamline.hh" 00009 00025 class BDSAcceleratorModel { 00026 public: 00027 static BDSAcceleratorModel* Instance(); 00028 ~BDSAcceleratorModel(); 00029 00031 inline void RegisterWorldPV(G4VPhysicalVolume* worldIn); 00032 00034 inline G4VPhysicalVolume* GetWorldPV(); 00035 00037 inline void RegisterReadOutWorldPV(G4VPhysicalVolume* readOutWorldIn); 00038 00040 inline G4VPhysicalVolume* GetReadOutWorldPV(); 00041 00044 inline void RegisterReadOutWorldLV(G4LogicalVolume* readOutWorldIn); 00045 00047 inline G4LogicalVolume* GetReadOutWorldLV(); 00048 00051 inline void RegisterFlatBeamline(BDSBeamline* beamlineIn); 00052 00054 inline BDSBeamline* GetFlatBeamline(); 00055 00056 00057 private: 00058 BDSAcceleratorModel(); 00059 00060 static BDSAcceleratorModel* _instance; 00061 00062 G4VPhysicalVolume* worldPV; 00063 G4VPhysicalVolume* readOutWorldPV; 00064 G4LogicalVolume* readOutWorldLV; 00065 00066 BDSBeamline* flatBeamline; 00067 00068 }; 00069 00070 inline void BDSAcceleratorModel::RegisterWorldPV(G4VPhysicalVolume* worldIn) 00071 {worldPV = worldIn;} 00072 00073 inline G4VPhysicalVolume* BDSAcceleratorModel::GetWorldPV() 00074 {return worldPV;} 00075 00076 inline void BDSAcceleratorModel::RegisterReadOutWorldPV(G4VPhysicalVolume* readOutWorldIn) 00077 {readOutWorldPV = readOutWorldIn;} 00078 00079 inline G4VPhysicalVolume* BDSAcceleratorModel::GetReadOutWorldPV() 00080 {return readOutWorldPV;} 00081 00082 inline void BDSAcceleratorModel::RegisterReadOutWorldLV(G4LogicalVolume* readOutWorldIn) 00083 {readOutWorldLV = readOutWorldIn;} 00084 00085 inline G4LogicalVolume* BDSAcceleratorModel::GetReadOutWorldLV() 00086 {return readOutWorldLV;} 00087 00088 inline void BDSAcceleratorModel::RegisterFlatBeamline(BDSBeamline* beamlineIn) 00089 {flatBeamline = beamlineIn;} 00090 00091 inline BDSBeamline* BDSAcceleratorModel::GetFlatBeamline() 00092 {return flatBeamline;} 00093 00094 #endif