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

mMuiFastRoadFinder.h

Go to the documentation of this file.
00001 #ifndef __MMUIFASTROADFINDER_H__
00002 #define __MMUIFASTROADFINDER_H__
00003 
00004 #include "PHModule.h"
00005 #include "PHTimeServer.h"
00006 #include <MUIOO.h>
00007 
00008 #include <mMuiFastRoadFinderPar.h>
00009 #include <TMuiRoadMapO.h>
00010 #include <TMuiHitMapO.h>
00011 
00012 #include <vector>
00013 
00015 struct mui_symset
00016 {
00017   UShort_t idx;    // Symset index corresponding to gap0 twopack  
00018   Float_t cos;     // Slope of 1D projection
00019   UShort_t depth;  // Tracked to gap 1-4
00020   UShort_t nhit;   // How many hits?
00021   UShort_t dof;    // Degrees of freedom (nhit - 2)
00022   UShort_t gapbit;      // which gaps were hit (bit coded)
00023   // start coordinates
00024   Float_t x;
00025   Float_t y;
00026   Float_t z;
00027   Float_t chisq;
00028   
00029   mui_symset() : idx(0), cos(0.), depth(0), nhit(0), dof(1), gapbit(0), 
00030     x(0.0), y(0.0), z(0.0), chisq(1.0) {}
00031 };
00032 typedef std::vector<mui_symset> symset_list;
00033 typedef symset_list::iterator symset_iterator;
00034 
00042 class mMuiFastRoadFinder : public PHModule
00043 {
00044   enum{kTwoPacksPerPlaneMax=326};
00045  public:
00047   mMuiFastRoadFinder();
00049   ~mMuiFastRoadFinder();
00050   
00052   PHBoolean event(PHCompositeNode* top_node);
00053   
00054  private:
00055   
00057   void set_interface_ptrs(PHCompositeNode* top_node);
00058   
00060   PHBoolean init();
00061   
00063   void read_idx_XoZ_map(const char* filename = "L2MuiIdxXoZ.adb");
00064   
00066   void read_twopack_idx_map(const char* filename = "muioomap.adb");
00067   
00069   void find_tracks();
00070   
00072   void hit_to_logical(UShort_t arm, UShort_t orient);
00073   
00075   void calc_symset(UShort_t arm, UShort_t orient);
00076 
00079   void hit_to_logical_per_panel(UShort_t arm, UShort_t orient,
00080                                 UShort_t virt_panel);
00081   
00083   void mui_trigger_edge_finder(int nsymsets, 
00084                                const float idx_XoZ[kTwoPacksPerPlaneMax],
00085                                bool *gap0bit,
00086                                bool *gap1bit, bool *gap2bit, 
00087                                bool *gap3bit, bool *gap4bit,
00088                                UShort_t arm, UShort_t orient);
00089   
00091   void simple_trigger_road_finder(bool **p,
00092                                   bool& gap1bit, bool& gap2bit, 
00093                                   bool& gap3bit, bool& gap4bit);
00095   void orig_trigger_road_finder(bool **p,
00096                                   bool& gap1bit, bool& gap2bit, 
00097                                   bool& gap3bit, bool& gap4bit);
00098   
00099   /* Methods for orig road finding (copied from LVL2) */
00100   void gap0(bool **p, short* showermax);
00101   
00102   void gap1(bool **p, short swi, short* showermax, bool* roadfound);
00103                    
00104   void gap2(bool **p, short swi, short* showermax, bool* roadfound);
00105                    
00106   void gap3(bool **p, short swi, short* showermax, bool* roadfound);
00107 
00108   void gap4(bool **p, short swi, short* showermax, bool* roadfound);
00109 
00110   short bsum (bool *st, long n);
00111 
00113   bool _signal[kTwoPacksPerPlaneMax][MUIOO::MAX_PLANE];
00114   bool* _trigger_signal[kTwoPacksPerPlaneMax][mMuiFastRoadFinderPar::MAX_SYMSET];
00115   
00116   Float_t _idx_XoZ[MUIOO::MAX_ARM][MUIOO::MAX_ORIENTATION][kTwoPacksPerPlaneMax];
00117   UShort_t _twopack_idx[MUIOO::MAX_ARM][MUIOO::MAX_PLANE][MUIOO::MAX_PANEL][MUIOO::MAX_ORIENTATION][kTwoPacksPerPlaneMax];
00118   
00120   symset_list _symsets[MUIOO::MAX_ARM][MUIOO::MAX_ORIENTATION];
00121   
00123   const mMuiFastRoadFinderPar* _mod_par;   
00124   TMuiRoadMapO* _roadmap;
00125   TMuiHitMapO* _hitmap;
00126   PHTimeServer::timer _timer;  
00127 };
00128 
00129 
00130 #endif /*__MMUIFASTROADFINDER_H__*/

MUIOO: PHENIX Muon Identifier Analysis Framework. Documentation by doxygen
Last modified: