00001 #ifndef _M_HEATERFLAGBYCOINCIDENCE_HH_ 00002 #define _M_HEATERFLAGBYCOINCIDENCE_HH_ 00003 00071 #include "MSetHeaterFlag.hh" 00072 #include "QTime.hh" 00073 00074 #include <list> 00075 #include <set> 00076 00077 class MHeaterFlagByCoincidence : public MSetHeaterFlag { 00078 00079 public: 00081 MHeaterFlagByCoincidence(QSequence* s); 00082 00084 ~MHeaterFlagByCoincidence(); 00085 00087 void Init(); 00088 00090 QEvent* Do(QEvent* ev); 00091 00093 void Done(); 00094 private: 00095 00096 class EventInfo { 00097 00098 public: 00099 00100 EventInfo() { fChannel = -1; } 00101 00102 bool operator<(const EventInfo& ev) const {return (this->fNumber < ev.fNumber);} 00103 00104 int fChannel; 00105 unsigned long long int fTime; 00106 unsigned int fNumber; 00107 int fHeaterChannel; 00108 int fRelative; 00109 }; 00110 00111 class ChannelInfo { 00112 public: 00113 int fHeaterChan; 00114 int fRelative; 00115 }; 00116 00118 double fExpectedTimeInterval; 00119 00121 double fTimeWindow; 00122 00124 bool fFlagRawEvent; 00125 00127 std::string fFlagName; 00128 00130 std::list<EventInfo> fEventQueue; 00131 00133 std::map<int, ChannelInfo> fRelatedMap; 00134 00136 std::set<unsigned int> fCoincidentEvents; 00137 00139 std::map<int, std::set<int> > fBolosOnHeaters; 00140 00142 std::set<EventInfo> fHeaterEvents; 00143 00145 std::set<EventInfo> fHeaterEventsTimed; 00146 00148 std::set<EventInfo> fHeaterEventsTimedMultipleInterval; 00149 00151 std::map<int, int> fNumberOfHeaterEvents; 00152 00154 int fCurrentRun; 00155 00157 std::string fDetectorSetupFile; 00158 00159 }; 00160 00161 #endif 00162