/search.css" rel="stylesheet" type="text/css"/> /search.js">
00001 00006 #ifndef DSRPCSENSDET_H 00007 #define DSRPCSENSDET_H 00008 00009 #include "G4DataHelpers/G4DhHit.h" 00010 00011 #include "GiGa/GiGaSensDetBase.h" 00012 #include "GaudiKernel/RndmGenerators.h" 00013 00014 #include <string> 00015 #include <map> 00016 00017 namespace DayaBay { 00018 class SimRpcHit; 00019 } 00020 class ITouchableToDetectorElement; 00021 class DetectorElement; 00022 00023 class DsRpcSensDet : public GiGaSensDetBase { 00024 public: 00025 DsRpcSensDet(const std::string& type, 00026 const std::string& name, 00027 const IInterface* parent); 00028 virtual ~DsRpcSensDet(); 00029 00030 // G4VSensitiveDetector interface 00031 virtual void Initialize( G4HCofThisEvent* HCE ) ; 00032 virtual void EndOfEvent( G4HCofThisEvent* HCE ) ; 00033 virtual bool ProcessHits(G4Step* step, 00034 G4TouchableHistory* history); 00035 00036 // Tool interface 00037 virtual StatusCode initialize(); 00038 virtual StatusCode finalize(); 00039 00040 private: 00042 00045 std::string m_stripLogVol; 00046 00049 std::vector<std::string> m_sensorStructures; 00050 00054 std::string m_idParameter; 00055 00058 std::string m_t2deName; 00059 ITouchableToDetectorElement* m_t2de; 00060 00061 00062 // Store hit in a hit collection 00063 void StoreHit(DayaBay::SimRpcHit* hit, int trackid); 00064 00065 // lookup DE from touchable history 00066 const DetectorElement* SensDetElem(const G4TouchableHistory& hist); 00067 // lookup ID from DE or daughter DE 00068 int SensDetId(const DetectorElement& de); 00069 00070 typedef std::map<short int,G4DhHitCollection*> LocalHitCache; 00071 LocalHitCache m_hc; 00072 00073 Rndm::Numbers m_uni; 00074 }; 00075 00076 00077 #endif // DSPMTSENSDET_H