00001 #ifndef BDSSDMANAGER_H 00002 #define BDSSDMANAGER_H 00003 00004 #include "BDSSamplerSD.hh" 00005 #include "BDSEnergyCounterSD.hh" 00006 00017 class BDSSDManager 00018 { 00019 public: 00020 static BDSSDManager* Instance(); 00021 00022 ~BDSSDManager(); 00023 00025 BDSSamplerSD* GetSamplerPlaneSD() {return samplerPlane;} 00027 BDSSamplerSD* GetSamplerCylinderSD() {return samplerCylinder;} 00029 BDSEnergyCounterSD* GetEnergyCounterOnAxisSD(){return eCounterOnAxis;} 00032 BDSEnergyCounterSD* GetEnergyCounterOnAxisSDRO(); 00033 00034 private: 00035 BDSSDManager(); 00036 static BDSSDManager* _instance; 00037 00038 //SD instances 00039 BDSSamplerSD* samplerPlane; 00040 BDSSamplerSD* samplerCylinder; 00041 BDSEnergyCounterSD* eCounterOnAxis; 00042 00043 // duplicate ecounter here that's made on demand 00044 // and registered to read out geometry - this requires 00045 // the readout geometry to be already created so can't 00046 // be used during object construction 00047 BDSEnergyCounterSD* eCounterOnAxisRO; 00048 00050 void ConstructECounterSDOnAxisOnDemand(); 00051 }; 00052 00053 00054 00055 00056 #endif