00001 00015 #ifndef ALGO_TRIG_DECODER 00016 #define ALGO_TRIG_DECODER 00017 00018 #include <sstream> 00019 #include "algo_base.hh" 00020 00025 class algo_trig_decoder : public algo_base { 00026 00027 public: 00028 00030 algo_trig_decoder(); 00031 00033 virtual ~algo_trig_decoder(){}; 00034 00036 00039 virtual bool process_word(const PMT::word_t word); 00040 00043 virtual bool check_event_quality(); 00044 00046 void clear_event_info(); 00047 00049 virtual void reset(); 00050 00052 virtual bool is_event_empty(){ 00053 if(_data) return (_data->trig_id()==PMT::INVALID_WORD); 00054 else return true; 00055 }; 00056 00057 protected: 00058 00059 bool decode_trigger_words(PMT::word_t *trigger_words); 00060 00061 static const size_t TRIGGER_WORD_COUNT=4; 00062 static const UInt_t TRIGGER_LAST_WORD=0xffffffff; 00063 trig_info *_data; 00064 00065 UInt_t _nevents; 00066 UInt_t _last_event_id; 00067 size_t _trigger_word_count; 00068 PMT::word_t _trigger_words[TRIGGER_WORD_COUNT]; 00069 00070 }; 00071 #endif 00072 // end of doxygen group
1.4.7