00001 #ifndef MuonSlaveSD_h 00002 #define MuonSlaveSD_h 00003 00015 #include "SimG4Core/Notification/interface/Observer.h" 00016 #include "SimDataFormats/TrackingHit/interface/PSimHit.h" 00017 00018 class EndOfEvent; 00019 class EventAction; 00020 00021 #include <string> 00022 00023 class MuonSubDetector; 00024 class SimTrackManager; 00025 #include "SimDataFormats/SimHitMaker/interface/TrackingSlaveSD.h" 00026 00027 class MuonSlaveSD : 00028 public TrackingSlaveSD 00029 { 00030 public: 00031 typedef std::vector<PSimHit> Collection; 00032 typedef Collection::const_iterator const_iterator; 00033 MuonSlaveSD(MuonSubDetector*,const SimTrackManager*); 00034 virtual ~MuonSlaveSD(); 00035 virtual void clearHits(); 00036 virtual bool format(); 00037 virtual const_iterator begin() { return hits_.begin();} 00038 virtual const_iterator end() { return hits_.end();} 00039 00040 protected: 00041 Collection hits_; 00042 00043 private: 00044 MuonSubDetector* detector; 00045 00046 const SimTrackManager* m_trackManager; 00047 00048 }; 00049 00050 class FormatBarrelHits { 00051 public: 00052 bool operator() (const PSimHit & a, const PSimHit & b); 00053 int sortId (const PSimHit & a) const; 00054 }; 00055 00056 class FormatEndcapHits { 00057 public: 00058 bool operator() (const PSimHit & a, const PSimHit & b); 00059 int sortId (const PSimHit & a) const; 00060 }; 00061 00062 class FormatRpcHits { 00063 public: 00064 bool operator() (const PSimHit & a, const PSimHit & b); 00065 int sortId (const PSimHit & a) const; 00066 }; 00067 00068 #endif // MuonSlaveSD_h