#include <mMuiResponse.h>
Public Methods | |
mMuiResponse () | |
~mMuiResponse () | |
virtual PHBoolean | event (PHCompositeNode *) |
Private Methods | |
void | set_interface_ptrs (PHCompositeNode *top_node) |
bool | initialize_rng () |
bool | is_alive (TMuiMCHitMapO::const_pointer mc_hit_ptr) |
void | response_loop () |
void | fill_hit (TMuiMCHitMapO::pointer mc_hit_ptr) |
void | associate_mc (TMuiHitMapO::iterator hit_iter, TMuiMCHitMapO::const_pointer mc_hit_ptr) |
bool | check_efficiency (UShort_t arm, UShort_t plane, UShort_t panel, UShort_t orientation, UShort_t twopack) const |
Private Attributes | |
const mMuiResponsePar * | _mod_par |
TMuiMCHitMapO * | _mc_hit_map |
const TMutMCTrkMap * | _mc_trk_map |
TMuiHitMapO * | _hit_map |
gsl_rng * | _rng |
PHTimeServer::timer | _timer |
Reads TMuiMCHit and TMutMCTrk and generates TMutHit objects with appropriate masking for dead/low efficiency twopacks. Currently outputs fills the TMuiHitMapO (new framework).
Object | Description | Privilege |
const mMuiResponsePar* | Parameter Table | immutable |
const TMuiMCHitMapO* | Parameter Table | immutable |
const TMutMCTrkMap* | Parameter Table | immutable |
TMuiHitMapO* | Parameter Table | mutable |
Definition at line 52 of file mMuiResponse.h.
|
Definition at line 48 of file mMuiResponse.cxx.
00048 { } |
|
Definition at line 188 of file mMuiResponse.cxx. Referenced by fill_hit.
00190 { 00191 TMuiHitMapO::pointer hit_ptr = hit_iter.current(); 00192 PHKey::associate(TMuiMCHitMapO::pointer(mc_hit_ptr), hit_ptr); 00193 } |
|
Definition at line 209 of file mMuiResponse.cxx. References _mod_par, _rng, TMuiHVMask::get_effic_twopack, mMuiResponsePar::get_twopack_eff, and mMuiResponsePar::get_use_hv_mask. Referenced by fill_hit.
00214 { 00215 // Efficiency due to HV Mask 00216 // 00217 if(_mod_par->get_use_hv_mask()){ 00218 // Check HV state 00219 // 00220 double random = gsl_ran_flat(_rng,0.0,1.0); 00221 double effic = TMuiHVMask::get_effic_twopack(arm,plane,panel,orientation,twopack); 00222 if (random > effic) return false; 00223 } 00224 00225 // Efficiency due to everything else 00226 // 00227 double random = gsl_ran_flat(_rng,0.0,1.0); 00228 double effic = _mod_par->get_twopack_eff(); 00229 if (random > effic) return false; 00230 00231 return true; 00232 } |
|
Definition at line 52 of file mMuiResponse.cxx. References _hit_map, _mod_par, _timer, TMuiParBase::get_verbosity, initialize_rng, response_loop, set_interface_ptrs, and MUIOO::TRACE.
00053 { 00054 _timer.get()->restart(); 00055 try { 00056 // Reset IOC pointers 00057 // 00058 set_interface_ptrs(top_node); 00059 // Function scope static gets initialized once 00060 // Placed here instead of constructor so initialization is done 00061 // only if module is used. 00062 // 00063 static bool rng_initialized = initialize_rng(); 00064 if(rng_initialized != true) throw std::runtime_error(DESCRIPTION("mMuiResponse::event: failed to initialize rng")); 00065 // Loop over TMuiMCHits and generate TMuiHits. 00066 // Add noise and apply masking where appropriate. 00067 // 00068 response_loop(); 00069 00070 } catch(std::exception& e) { 00071 MUIOO::TRACE(e.what()); 00072 return False; 00073 } 00074 // If verbose dump the contents of the hit map 00075 // 00076 _timer.get()->stop(); 00077 if(_mod_par->get_verbosity() >= MUIOO::ALOT) _hit_map->print(); 00078 if(_mod_par->get_verbosity() >= MUIOO::SOME) _timer.get()->print(); 00079 return True; 00080 } |
|
Definition at line 134 of file mMuiResponse.cxx. References _hit_map, _mod_par, associate_mc, check_efficiency, TMuiHitMapO::get, mMuiResponsePar::get_use_hv_mask, TMuiHitMapO::insert_new, TMuiMCTwoPack::MASKED, and TMuiMCHitO::twopack_list. Referenced by response_loop.
00135 { 00136 UShort_t arm = mc_hit_ptr->get()->get_arm(); 00137 UShort_t plane = mc_hit_ptr->get()->get_plane(); 00138 00139 typedef TMuiMCHitO::twopack_list twopack_list; 00140 typedef TMuiMCHitO::twopack_list::iterator twopack_iterator; 00141 00142 // Get an iterator for list of TMuiMCTwoPack from TMuiMCHit 00143 // 00144 twopack_list* twopacks = mc_hit_ptr->get()->get_mutable_twopack_list(); 00145 twopack_iterator twopack_iter = twopacks->begin(); 00146 00147 for(;twopack_iter!=twopacks->end();++twopack_iter){ 00148 00149 // If TMuiHit exists then do nothing 00150 // if not create a new TMuiHit 00151 // 00152 UShort_t panel = twopack_iter->get_panel(); 00153 UShort_t orientation = twopack_iter->get_orient(); 00154 UShort_t twopack = twopack_iter->get_twopack_index(); 00155 00156 // Check the HV and set the two pack status if this hit 00157 // is masked 00158 // 00159 if(_mod_par->get_use_hv_mask() && 00160 !check_efficiency(arm,plane,panel,orientation,twopack)){ 00161 twopack_iter->set_status(TMuiMCTwoPack::MASKED); 00162 continue; 00163 } 00164 TMuiHitMapO::iterator hit_iter = _hit_map->get(arm, 00165 plane, 00166 panel, 00167 orientation, 00168 twopack); 00169 00170 // Look for existing hit on this strip, if none then 00171 // make a new one. 00172 // 00173 if(hit_iter.at_end()){ 00174 hit_iter = _hit_map->insert_new(arm, 00175 plane, 00176 panel, 00177 orientation, 00178 twopack); 00179 00180 } 00181 00182 associate_mc(hit_iter, mc_hit_ptr); 00183 } 00184 00185 } |
|
Definition at line 197 of file mMuiResponse.cxx. References _rng. Referenced by event.
00198 { 00199 const gsl_rng_type *T; 00200 gsl_rng_env_setup(); 00201 T = gsl_rng_default; 00202 _rng = gsl_rng_alloc(T); 00203 00204 return true; 00205 } |
|
Definition at line 113 of file mMuiResponse.cxx. References _mod_par, _rng, mMuiResponsePar::get_twopack_eff, and TMuiParBase::get_verbosity.
00114 { 00115 // TBI, some kind of code to check if the hit is in dead 00116 // area. 00117 // ....................... 00118 // return flase 00119 00120 // Kill the hit if a random number is larger than the eff. 00121 // 00122 double x = gsl_ran_flat(_rng,0.0,100.0); 00123 if (x > _mod_par->get_twopack_eff()) return false; 00124 if(_mod_par->get_verbosity() >= MUIOO::ALOT) { 00125 cout <<" ######## check gsl_ran in mMuiRespose ######### " << endl; 00126 cout <<" # gsl_ran_uniform = " << x << " in mMuiRespose #" << endl; 00127 cout <<" # twopack efficiency = "<<_mod_par->get_twopack_eff() <<" #" << endl; 00128 cout <<" #####################################################" <<endl; 00129 } 00130 return true; 00131 } |
|
Definition at line 98 of file mMuiResponse.cxx. References _mc_hit_map, and fill_hit. Referenced by event.
00099 { 00100 // Get an iterator to all the TMuiMCHits 00101 // 00102 TMuiMCHitMapO::iterator mc_hit_iter = _mc_hit_map->range(); 00103 // Loop over TMuiMCHits 00104 // 00105 while(TMuiMCHitMapO::pointer mc_hit_ptr = mc_hit_iter.next()){ 00106 // fill hit map and associate it with MC hit. 00107 // 00108 fill_hit(mc_hit_ptr); 00109 } 00110 } |
|
Reset IOC and external interface pointers Definition at line 84 of file mMuiResponse.cxx. References _hit_map, _mc_hit_map, _mc_trk_map, and _mod_par. Referenced by event.
00085 { 00086 // Module runtime parameters 00087 // 00088 _mod_par = TMutNode<mMuiResponsePar>::find_node(top_node,"mMuiResponsePar"); 00089 00090 // IOC 00091 // 00092 _mc_hit_map = TMutNode<TMuiMCHitMapO>::find_node(top_node,"TMuiMCHitMapO"); 00093 _mc_trk_map = TMutNode<TMutMCTrkMap>::find_node(top_node,"TMutMCTrkMap"); 00094 _hit_map = TMutNode<TMuiHitMapO>::find_node(top_node,"TMuiHitMapO"); 00095 } |
|
Definition at line 88 of file mMuiResponse.h. Referenced by event, fill_hit, and set_interface_ptrs. |
|
Definition at line 86 of file mMuiResponse.h. Referenced by response_loop, and set_interface_ptrs. |
|
Definition at line 87 of file mMuiResponse.h. Referenced by set_interface_ptrs. |
|
Definition at line 85 of file mMuiResponse.h. Referenced by check_efficiency, event, fill_hit, is_alive, and set_interface_ptrs. |
|
Definition at line 92 of file mMuiResponse.h. Referenced by check_efficiency, initialize_rng, and is_alive. |
|
Definition at line 96 of file mMuiResponse.h. Referenced by event. |