Line data Source code
1 : #ifndef ALIEMCALQACHECKER_H
2 : #define ALIEMCALQACHECKER_H
3 :
4 : //===============================================================
5 : /// \class AliEMCALQAChecker
6 : /// \brief QA checker class
7 : ///
8 : /// Checks the quality assurance.
9 : /// By comparing with reference data
10 : ///
11 : /// Based on PHOS code written by
12 : /// Y. Schutz CERN July 2007
13 : ///
14 : /// For the moment we only implement the checking of raw data QA.
15 : /// The checked for ESD and RecPoints will be implemented later.
16 : ///
17 : /// \author Yaxian Mao, <Yaxian.Mao@cern.ch>, CCNU, 2009-2011.
18 : ///
19 : //===============================================================
20 :
21 : // --- ROOT system ---
22 : class TFile ;
23 : class TH1F ;
24 : class TH1I ;
25 : class TH1 ;
26 : class TLine ;
27 : class TText ;
28 : class TObjArray;
29 : class TPaveText ;
30 :
31 : // --- AliRoot header files ---
32 : #include "AliQACheckerBase.h"
33 : #include "AliEMCALTriggerMappingV2.h"
34 : class AliEMCALLoader ;
35 :
36 : class AliEMCALQAChecker: public AliQACheckerBase {
37 :
38 : public:
39 :
40 : // Histograms for Raw data control
41 : enum HRawType_t {
42 : // first normal Low Gain and High Gain info
43 : kNsmodLG,kNsmodHG,kTimeLG,kTimeHG,
44 : kNtotLG,kNtotHG,kSigHG,kSigLG,
45 : kPedLG,kPedHG,
46 : k2DRatioAmp,kRatioDist, kLEDMonRatio, kLEDMonRatioDist,
47 : // then TRU info
48 : kNsmodTRU,
49 : kSigTRU,kNtotTRU,
50 : kNL0TRU, kTimeL0TRU,
51 : kNL0FirstTRU, kTimeL0FirstTRU,kNL0TRUSamples,kNL0TRURMS,
52 : // and also LED Mon info
53 : kNsmodLGLEDMon,kNsmodHGLEDMon,kTimeLGLEDMon,kTimeHGLEDMon,
54 : kSigLGLEDMon,kSigHGLEDMon,kNtotLGLEDMon,kNtotHGLEDMon,
55 : kPedLGLEDMon,kPedHGLEDMon,
56 : // and STU info
57 : kAmpL1, kGL1, kJL1,
58 : kGL1V0, kJL1V0, kSTUTRU
59 : } ;
60 :
61 : // Histograms for RecPoints control
62 : enum HRPType_t {kRecPE,kRecPM,kRecPDigM};
63 :
64 : // Histograms for ESDs control
65 : enum HESDType_t {kESDCaloClusE,kESDCaloClusM,kESDCaloCellA,kESDCaloCellM} ;
66 :
67 : AliEMCALQAChecker() ; // ctor
68 :
69 : virtual ~AliEMCALQAChecker() ; // dtor
70 :
71 : virtual void Init(const AliQAv1::DETECTORINDEX_t det) ;
72 :
73 : protected:
74 :
75 : virtual void Check( Double_t * test, AliQAv1::ALITASK_t index, TObjArray ** list,
76 : const AliDetectorRecoParam * /*recoParam*/) ;
77 : //virtual void SetQA(AliQAv1::ALITASK_t index, Double_t * value) const ;
78 :
79 : void CheckRaws(Double_t* test, TObjArray ** list);
80 :
81 0 : void CheckRecPoints(Double_t* /*test*/, TObjArray** /*list*/) const {;}
82 :
83 0 : void CheckESD(Double_t* /*test*/, TObjArray** /*list*/) const {;}
84 :
85 : void CleanListOfFunctions(TList *list);
86 :
87 : TH1* GetHisto(TObjArray* list, const char* hname, Int_t specie) const;
88 :
89 : Double_t MarkHisto(TH1& histo, Double_t value) const;
90 :
91 : private:
92 :
93 : AliEMCALQAChecker( const AliEMCALQAChecker& qac);
94 : AliEMCALQAChecker& operator = (const AliEMCALQAChecker& qac) ;
95 :
96 : //TH1F * htemp; //a tempory histrogram for getting the mean and sigma
97 : //Double_t fMean; //mean value
98 : //Double_t fWidth; //sigma of the distribution
99 :
100 : static const Int_t fgknSM = 20; //!<! number of current SM; EMCal + DCal
101 : static const Int_t fgknSectLines = 9; //!<! lines between SM sectors
102 :
103 : //TLine ** fLine ; //!<! line to distinguish the different SM
104 : //TLine ** fHref ; //!<! Line marking the average value for each SM
105 : TText ** fTextSM ; //!<! Text info for each SM
106 : TLine * fLineCol ; //!<! line to distinguish the different SM side: A side and C side
107 : TLine * fLineRow[fgknSectLines] ; //!<! line to distinguish the different SM sectors (0-5, 9-12)
108 : TPaveText * fText ; //!<! Information text for the quality of each SM
109 : TPaveText * fTextL1[3] ; //!<! Information text for the quality of L1 plots (3 plots in total)
110 :
111 : /// \cond CLASSIMP
112 150 : ClassDef(AliEMCALQAChecker,5) ;
113 : /// \endcond
114 : };
115 :
116 : #endif /// AliEMCALQAChecker_H
|