00001 #ifndef __MMUIRESPONSE_HH__ 00002 #define __MMUIRESPONSE_HH__ 00003 00004 #include<PHModule.h> 00005 #include<PHTimeServer.h> 00006 #include<TMuiMCHitMapO.h> 00007 #include<TMuiHitMapO.h> 00008 #include<mMuiResponsePar.h> 00009 00010 #include<gsl/gsl_rng.h> 00011 00012 class TMutMCTrkMap; 00013 00015 00016 00052 class mMuiResponse : public PHModule 00053 { 00054 public: 00055 00056 mMuiResponse(); 00057 ~mMuiResponse(); 00058 virtual PHBoolean event(PHCompositeNode*); 00059 00060 private: 00061 00062 // private methods 00063 // 00064 void set_interface_ptrs(PHCompositeNode* top_node); 00065 00066 bool initialize_rng(); 00067 00068 bool is_alive(TMuiMCHitMapO::const_pointer mc_hit_ptr); 00069 00070 void response_loop(); 00071 00072 void fill_hit(TMuiMCHitMapO::pointer mc_hit_ptr); 00073 00074 void associate_mc(TMuiHitMapO::iterator hit_iter, 00075 TMuiMCHitMapO::const_pointer mc_hit_ptr); 00076 00077 bool check_efficiency(UShort_t arm, 00078 UShort_t plane, 00079 UShort_t panel, 00080 UShort_t orientation, 00081 UShort_t twopack) const; 00082 00083 // Interface pointers 00084 // 00085 const mMuiResponsePar* _mod_par; 00086 TMuiMCHitMapO* _mc_hit_map; 00087 const TMutMCTrkMap* _mc_trk_map; 00088 TMuiHitMapO* _hit_map; 00089 00090 // Random number generator. 00091 // 00092 gsl_rng* _rng; 00093 00094 // Timer 00095 // 00096 PHTimeServer::timer _timer; 00097 }; 00098 00099 #endif /* __MMUIRESPONSE_HH__ */ 00100 00101 00102 00103 00104 00105 00106 00107 00108 00109 00110 00111 00112 00113 00114 00115 00116 00117 00118 00119 00120 00121