00001 #ifndef Physics_Analysis_DQA_MUC_H 00002 #define Physics_Analysis_DQA_MUC_H 00003 00004 #include "GaudiKernel/AlgFactory.h" 00005 #include "GaudiKernel/Algorithm.h" 00006 #include "GaudiKernel/NTuple.h" 00007 00008 #include "TH1F.h" 00009 #include "TF1.h" 00010 00011 #include "MucCalibAlg/MucStructConst.h" 00012 #include "MucCalibAlg/MucMark.h" 00013 #include "MucCalibAlg/MucIdTransform.h" 00014 00015 class ITHistSvc; 00016 const int TAGN = 2; // 0-all; 1-dimu 00017 const int LVLN = 3; // 0-layer; 1-box; 2-strip 00018 const char ENAME[TAGN][10] = {"All","Dimu"}; 00019 const char HTYPE[2][10] = {"Num","Den"}; 00020 const char LNAME[LVLN][10] = {"Layer","Box","Strip"}; 00021 00022 class DQA_MUC : public Algorithm { 00023 00024 public: 00025 DQA_MUC(const std::string& name, ISvcLocator* pSvcLocator); 00026 StatusCode initialize(); 00027 StatusCode execute(); 00028 StatusCode finalize(); 00029 00030 private: 00031 StatusCode FillHistograms( bool isDimu ); 00032 00033 private: 00034 // Interface 00035 ITHistSvc* m_thsvc; 00036 long m_run, m_event; 00037 00038 int m_effWindow; 00039 // Muc variables 00040 // Digi and hit container for total events 00041 // 0-digi number, 1-rec track number, 2-efficiency hit number, 00042 // 3-incidental and noise hit number, 4-rec/fit hit number 00043 long m_recordAll[PART_MAX][SEGMENT_MAX][LAYER_MAX][STRIP_INBOX_MAX][5]; 00044 long m_recordDimu[PART_MAX][SEGMENT_MAX][LAYER_MAX][STRIP_INBOX_MAX][5]; 00045 00046 // Digi or hit mark collection for one event 00047 MucMark* m_ptrMucMark; 00048 mark_col m_digiCol; // container of digis in an event 00049 mark_col m_expHitCol; // container of fitting hits in all rec tracks in an event 00050 mark_col m_effHitCol; // container of fired hits in all rec tracks in an event 00051 mark_col m_nosHitCol; // container of noise hits in all rec tracks in an event 00052 00053 mark_col m_segDigiCol[PART_MAX][SEGMENT_MAX]; // container of digis in segment of part 00054 vector< mark_col > m_clusterCol; // container of clusters in all digits of an event 00055 vector<float> m_lineResCol; // container of residual by line fit 00056 00057 // Muc id transformer 00058 MucIdTransform* m_ptrIdTr; 00059 00060 // Spacial resolution 00061 TH1F* m_hBrResDist[B_LAY_NUM][TAGN]; // barrel spacial resolution 00062 TH1F* m_hEcResDist[E_LAY_NUM][TAGN]; // endcap spacial resolution 00063 // TH1F* m_hBrRes[TAGN]; // barrel spacial resolution vs layer 00064 // TH1F* m_hEcRes[TAGN]; // endcap spacial resolution vs layer 00065 00066 // Efficiency and noise ratio 00067 TH1F* m_hEff[LVLN][TAGN][2]; 00068 TH1F* m_hNosRatio[TAGN][2]; 00069 00070 // Costheta and phi of MUC track position on 1st layer 00071 TH1F* m_hCostheta[TAGN]; 00072 TH1F* m_hPhi[TAGN]; 00073 00074 }; 00075 00076 00077 #endif