00001 #ifndef FIXEDWINDOW_H__ 00002 #define FIXEDWINDOW_H__ 00003 00004 #include "TSetupData.h" 00005 #include "TVMuonEventGenerator.h" 00006 #include "definitions.h" 00007 00008 class FixedWindowMEGenerator:public TVMuonEventGenerator { 00009 struct Detector_t{ 00010 const IDs::source* source; 00011 const DetectorPulseList* pulses; 00012 DetectorPulseList::const_iterator start_window; 00013 DetectorPulseList::const_iterator end_window; 00014 Detector_t():source(NULL),pulses(NULL){}; 00015 Detector_t(const SourceDetPulseMap::const_iterator& pair): 00016 source(NULL),pulses(NULL){ Init(pair);} 00017 void Init(const SourceDetPulseMap::const_iterator& pair){ 00018 source=&pair->first; 00019 pulses=&pair->second; 00020 Reset(); 00021 } 00022 void Reset(){ 00023 if(pulses){ 00024 start_window=pulses->begin(); 00025 end_window=pulses->begin(); 00026 } 00027 } 00028 }; 00029 typedef std::vector<Detector_t> SourceList; 00030 00031 public: 00032 FixedWindowMEGenerator(TMEGeneratorOptions* opts); 00033 virtual ~FixedWindowMEGenerator(){}; 00034 00035 virtual int ProcessPulses(MuonEventList& muonEventsOut, 00036 const SourceDetPulseMap& detectorPulsesIn); 00037 00038 private: 00039 int Init(const SourceDetPulseMap&); 00040 void Reset(); 00041 void AddPulsesInWindow(TMuonEvent* tme, 00042 double window, Detector_t& detector); 00043 00044 private: 00045 bool fInit; 00046 double fEventWindow; 00047 Detector_t fMuSc; 00048 SourceList fDetectors; 00049 00050 }; 00051 00052 #endif //FIXEDWINDOW_H__