Main Page   Modules   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

mMuiTriggerEmulator Class Reference
[Analysis Modules]

MUID/MUIOO Trigger Emulator. More...

#include <mMuiTriggerEmulator.h>

List of all members.

Public Methods

 mMuiTriggerEmulator ()
 ~mMuiTriggerEmulator ()
virtual PHBoolean event (PHCompositeNode *)
bool is_deep_deep ()
bool is_deep_shallow ()

Private Types

typedef std::list< TMuiHitMapO::value_type > hit_list

Private Methods

void set_interface_ptrs (PHCompositeNode *top_node)
void clear_state_variables ()
void fill_quadrant_list ()
void set_plane_bitset ()
void set_trigger_status ()

Private Attributes

const mMuiTriggerEmulatorPar_mod_par
TMuiHitMapO_hit_map
boost::array< hit_list, 4 > _quad_hit_list
boost::array< std::bitset< 10 >, 4 > _quad_bitset
std::bitset< 10 > _deep_mask
std::bitset< 10 > _shallow_mask
bool _deep_deep
bool _deep_shallow
PHTimer _timer


Detailed Description

MUID/MUIOO Trigger Emulator.

Analysis Module Interface Specification

Object Description Privilege
const mMuiTriggerEmulatorPar* Parameter Table immutable
TMuiHitMapO* Parameter Table immutable

Definition at line 42 of file mMuiTriggerEmulator.h.


Member Typedef Documentation

typedef std::list<TMuiHitMapO::value_type> hit_list [private]
 

Definition at line 76 of file mMuiTriggerEmulator.h.


Constructor & Destructor Documentation

~mMuiTriggerEmulator  
 

Definition at line 43 of file mMuiTriggerEmulator.cxx.

00043 { }


Member Function Documentation

void clear_state_variables   [private]
 

Definition at line 95 of file mMuiTriggerEmulator.cxx.

References _deep_deep, _deep_shallow, _quad_bitset, and _quad_hit_list.

Referenced by event.

00096 {
00097   _deep_deep = false;
00098   _deep_shallow = false;
00099   for(size_t i=0;i<_quad_hit_list.size();++i){
00100     _quad_hit_list[i].clear();
00101     _quad_bitset[i].reset();
00102   }
00103 }

PHBoolean event PHCompositeNode *    [virtual]
 

Definition at line 47 of file mMuiTriggerEmulator.cxx.

References _timer, clear_state_variables, fill_quadrant_list, set_interface_ptrs, set_plane_bitset, and set_trigger_status.

00048 {
00049 
00050   _timer.restart(); 
00051   
00052   try { 
00053 
00054     // Reset IOC pointers
00055     //
00056     set_interface_ptrs(top_node);
00057 
00058     // Clear all lists, bitmasks and trigger booleans
00059     //
00060     clear_state_variables();
00061 
00062     // Populate quadrant lists
00063     //
00064     fill_quadrant_list();
00065 
00066     // Set plane bitset
00067     //
00068     set_plane_bitset();
00069 
00070     // Set trigger status
00071     //
00072     set_trigger_status();
00073 
00074   } catch(std::exception& e) {
00075     MUTOO::TRACE(e.what());
00076     return False;
00077   }  
00078 
00079   // Timer
00080   //
00081   _timer.print(); 
00082   return True;
00083 }

void fill_quadrant_list   [private]
 

Definition at line 106 of file mMuiTriggerEmulator.cxx.

References _hit_map, and _quad_hit_list.

Referenced by event.

00107 {
00108   // Loop over all hits in the MUID.  Store hit point in
00109   // lists by quadrant.  Note small panel hits contribute 
00110   // a hit to 2 quadrants.
00111   //
00112   TMuiHitMapO::const_iterator hit_iter = _hit_map->range();
00113   while(TMuiHitMapO::const_pointer hit_ptr = hit_iter.next()){
00114     UShort_t panel = hit_ptr->get()->get_panel();
00115     // plane 1 (small panel) contributes to quadrant 0 and 1
00116     // plane 4 (small panel) contributes to quadrant 2 and 3
00117     if(panel == 0 || panel == 1) {
00118       _quad_hit_list[0].push_back(*hit_ptr);
00119     }
00120     if(panel == 1 || panel == 2) {
00121       _quad_hit_list[1].push_back(*hit_ptr);
00122     }
00123     if(panel == 3 || panel == 4) {
00124       _quad_hit_list[2].push_back(*hit_ptr);
00125     }
00126     if(panel == 4 || panel == 5) {
00127       _quad_hit_list[3].push_back(*hit_ptr);
00128     }
00129   }
00130 }

bool is_deep_deep   [inline]
 

Definition at line 52 of file mMuiTriggerEmulator.h.

References _deep_deep.

00052 { return _deep_deep; }

bool is_deep_shallow   [inline]
 

Definition at line 53 of file mMuiTriggerEmulator.h.

References _deep_shallow.

00053 { return _deep_shallow; }

void set_interface_ptrs PHCompositeNode *    top_node [private]
 

Reset IOC and external interface pointers

Definition at line 87 of file mMuiTriggerEmulator.cxx.

References _hit_map, and _mod_par.

Referenced by event.

00087                                                                 {  
00088   // module runtime parameters
00089   //
00090   _mod_par = TMutNode<mMuiTriggerEmulatorPar>::find_node(top_node,"mMuiTriggerEmulatorPar");
00091   _hit_map = TMutNode<TMuiHitMapO>::find_node(top_node,"TMuiHitMapO");
00092 } 

void set_plane_bitset   [private]
 

Definition at line 134 of file mMuiTriggerEmulator.cxx.

References _quad_bitset, and _quad_hit_list.

Referenced by event.

00135 {
00136   for(size_t quad=0;quad<_quad_hit_list.size();++quad) {
00137     // Loop over all hits in quadrant hit list
00138     //
00139     hit_list::iterator hit_iter = _quad_hit_list[quad].begin();
00140     for(;hit_iter!= _quad_hit_list[quad].begin();++hit_iter){
00141       // Set the plane bit
00142       //
00143       UShort_t plane = hit_iter->get()->get_plane();
00144       _quad_bitset[quad].set(plane);
00145     }
00146   }
00147 }

void set_trigger_status   [private]
 

Definition at line 150 of file mMuiTriggerEmulator.cxx.

References _deep_deep, _deep_mask, _deep_shallow, _quad_bitset, and _shallow_mask.

Referenced by event.

00151 {
00152   // The BLT deep deep trigger is 7/8 in the first 8 planes,
00153   // the BLT deep shallow trigger is 5/6 in the first 6 planes.
00154   //
00155   UShort_t ndeep=0, nshallow=0;
00156   for(size_t quad=0;quad<_quad_bitset.size();++quad) {
00157     // Deep is 7 of 8
00158     //
00159     if ((_quad_bitset[quad] & _deep_mask).count() >= 7) ++ndeep;
00160     // Shallow is 5 of 6
00161     // 
00162     if ((_quad_bitset[quad] & _shallow_mask).count() >= 5) ++nshallow;
00163   }
00164   if(ndeep>=2) _deep_deep = true;
00165   if(ndeep>=1 && nshallow>=1) _deep_shallow = true;
00166 }


Member Data Documentation

bool _deep_deep [private]
 

Definition at line 90 of file mMuiTriggerEmulator.h.

Referenced by clear_state_variables, is_deep_deep, and set_trigger_status.

std::bitset<10> _deep_mask [private]
 

Definition at line 85 of file mMuiTriggerEmulator.h.

Referenced by mMuiTriggerEmulator, and set_trigger_status.

bool _deep_shallow [private]
 

Definition at line 91 of file mMuiTriggerEmulator.h.

Referenced by clear_state_variables, is_deep_shallow, and set_trigger_status.

TMuiHitMapO* _hit_map [private]
 

Definition at line 72 of file mMuiTriggerEmulator.h.

Referenced by fill_quadrant_list, and set_interface_ptrs.

const mMuiTriggerEmulatorPar* _mod_par [private]
 

Definition at line 71 of file mMuiTriggerEmulator.h.

Referenced by set_interface_ptrs.

boost::array<std::bitset<10>,4> _quad_bitset [private]
 

Definition at line 81 of file mMuiTriggerEmulator.h.

Referenced by clear_state_variables, set_plane_bitset, and set_trigger_status.

boost::array<hit_list,4> _quad_hit_list [private]
 

Definition at line 77 of file mMuiTriggerEmulator.h.

Referenced by clear_state_variables, fill_quadrant_list, and set_plane_bitset.

std::bitset<10> _shallow_mask [private]
 

Definition at line 86 of file mMuiTriggerEmulator.h.

Referenced by mMuiTriggerEmulator, and set_trigger_status.

PHTimer _timer [private]
 

Definition at line 95 of file mMuiTriggerEmulator.h.

Referenced by event.


The documentation for this class was generated from the following files:
MUIOO: PHENIX Muon Identifier Analysis Framework. Documentation by doxygen
Last modified: