00001 #ifndef BesMucTrig_h 00002 #define BesMucTrig_h 1 00003 00004 #include <vector> 00005 00006 class MucTrigHit; 00007 class IBesGlobalTrigSvc; 00008 class BesGlobalTrigSvc; 00009 00010 class BesMucTrig{ 00011 public: 00012 BesMucTrig(); 00013 ~BesMucTrig(); 00014 00015 void startMucTrig(); 00016 00017 //get the fired layer number 00018 std::vector<int> getNlayerSeg(); 00019 00020 //get the total fired layer number in barrel and endcaps 00021 int getNlayerPart(int part); 00022 00023 //get the hits in each layer 00024 std::vector<int> getNhitLayer(); 00025 00026 //get the hits in each segment 00027 std::vector<int> getNhitSeg(); 00028 00029 //get the hits in each part 00030 int getNhitPart(int i); 00031 00032 //get the hits including barrel and endcaps 00033 int getNhitTotal(); 00034 00035 void setIndex(); 00036 00037 void readIndex(); 00038 00039 void findTrack(); 00040 00041 private: 00042 MucTrigHit* m_MucTrigHit; 00043 00044 int nfireLayerBR[8][4], nhitLayerBR[8][4], nhitSegBR[8], nhitBR; 00045 int nfireLayerEC[2][4][4], nhitLayerEC[2][4][4], nhitSegEC[2][4], nhitEC[2]; 00046 00047 std::vector<int> vfireLayer; 00048 std::vector<int> vhitLayer; 00049 std::vector<int> vhitSeg; 00050 00051 std::vector<int> vIndex; //container of fired strip number 00052 00053 int foBR[8][4][7]; //barrel fastOr signal, seg, gap, fastOr 00054 int foEC[2][4][4][4]; //endcaps fastOr signal, part, seg, gap, fastOr 00055 00056 int trackBR[8]; //track in each segment in barrel 00057 int trackEE[4]; //track in each segment in east endcap 00058 int trackWE[4]; //track in each segment in west endcap 00059 00060 int track3lBR[8]; 00061 int track3lEE[4]; 00062 int track3lWE[4]; 00063 00064 int btrack, etrack; 00065 00066 std::vector<std::vector<int> > vindexb; 00067 std::vector<std::vector<int> > vindexb3; 00068 std::vector<std::vector<int> > vindexe; 00069 00070 BesGlobalTrigSvc* m_pIBGT; 00071 IBesGlobalTrigSvc* m_tmpSvc; 00072 }; 00073 #endif