#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. | 
