00001 #ifndef __MMUITRIGGEREMULATOR_HH__ 00002 #define __MMUITRIGGEREMULATOR_HH__ 00003 00004 #include<PHModule.h> 00005 #include<PHTimer.h> 00006 #include<TMuiMCHitMapO.h> 00007 #include<TMuiHitMapO.h> 00008 #include<mMuiTriggerEmulatorPar.h> 00009 #include<boost/array.hpp> 00010 #include<list> 00011 #include<bitset> 00012 00013 #include<gsl/gsl_rng.h> 00014 00042 class mMuiTriggerEmulator : public PHModule 00043 { 00044 public: 00045 00046 mMuiTriggerEmulator(); 00047 00048 ~mMuiTriggerEmulator(); 00049 00050 virtual PHBoolean event(PHCompositeNode*); 00051 00052 bool is_deep_deep() { return _deep_deep; } 00053 bool is_deep_shallow() { return _deep_shallow; } 00054 00055 private: 00056 00057 // private methods 00058 // 00059 void set_interface_ptrs(PHCompositeNode* top_node); 00060 00061 void clear_state_variables(); 00062 00063 void fill_quadrant_list(); 00064 00065 void set_plane_bitset(); 00066 00067 void set_trigger_status(); 00068 00069 // Interface pointers 00070 // 00071 const mMuiTriggerEmulatorPar* _mod_par; 00072 TMuiHitMapO* _hit_map; 00073 00074 // Four lists of hits, one for each quadrant 00075 // 00076 typedef std::list<TMuiHitMapO::value_type> hit_list; 00077 boost::array<hit_list,4> _quad_hit_list; 00078 00079 // Four bitsets one for each quadrant 00080 // 00081 boost::array<std::bitset<10>,4> _quad_bitset; 00082 00083 // Trigger bitmasks 00084 // 00085 std::bitset<10> _deep_mask; 00086 std::bitset<10> _shallow_mask; 00087 00088 // Trigger booleans 00089 // 00090 bool _deep_deep; 00091 bool _deep_shallow; 00092 00093 // Timer 00094 // 00095 PHTimer _timer; 00096 }; 00097 00098 #endif /* __MMUITRIGGEREMULATOR_HH__ */ 00099 00100 00101 00102 00103 00104 00105 00106 00107 00108 00109 00110 00111 00112 00113 00114 00115 00116 00117 00118 00119 00120