MUON + CheckCompiler
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALQADataMakerRec.h
1 #ifndef ALIEMCALQADATAMAKERREC_H
2 #define ALIEMCALQADATAMAKERREC_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /*
7   Produces the data needed to calculate the quality assurance. 
8   All data must be mergeable objects.
9
10   Based on PHOS code written by
11   Y. Schutz CERN July 2007
12  
13  Created one histogram for QA shifter;-- Yaxian Mao: 11/2009
14  The idea:average counts for all the towers should be flat 
15  Change all existing histograms as experts
16  
17  Change histograms for DQM shifter: --  Yaxian Mao 04/2010
18  Calcuate the amplitude ratio from current run and the LED reference, for QAChecker use
19  Also calculate the ratio of amplitude from LED Monitor system (current/Reference), to check LED system  
20  
21 */
22
23 // --- ROOT system ---
24 class TH1F ; 
25 class TH1I ;
26 class TH2F ;
27 class TH2 ; 
28 class TLine ;
29 class TText ;
30 class TProfile ;
31 class TObjArray ; 
32
33 // --- AliRoot header files ---
34 #include "AliQADataMakerRec.h"
35 class AliCaloRawAnalyzer;
36 class AliEMCALGeometry;
37 #include "AliCaloConstants.h"
38
39 class AliEMCALQADataMakerRec: public AliQADataMakerRec {
40
41 public:
42   
43   //Histograms for Raw data control
44   enum HRawType_t { 
45     // first normal Low Gain and High Gain info
46     kNsmodLG,kNsmodHG,kTimeLG,kTimeHG,
47     kNtotLG,kNtotHG,kSigHG,kSigLG,
48     kPedLG,kPedHG,
49     k2DRatioAmp,kRatioDist, kLEDMonRatio, kLEDMonRatioDist,
50     // then TRU info
51     kNsmodTRU,
52     kSigTRU,kNtotTRU,
53     kNL0TRU, kTimeL0TRU,
54                 kNL0FirstTRU, kTimeL0FirstTRU,
55     // and also LED Mon info
56     kNsmodLGLEDMon,kNsmodHGLEDMon,kTimeLGLEDMon,kTimeHGLEDMon,
57     kSigLGLEDMon,kSigHGLEDMon,kNtotLGLEDMon,kNtotHGLEDMon,
58     kPedLGLEDMon,kPedHGLEDMon,
59                 //and STU info
60                 kAmpL1, kGL1, kJL1,
61                 kGL1V0, kJL1V0, kSTUTRU  
62   } ;
63
64   //Histograms for RecPoints  control
65   enum HRPType_t {kRecPE,kRecPM,kRecPDigM};
66
67   //Histograms for ESDs  control
68   enum HESDType_t {kESDCaloClusE,kESDCaloClusM,kESDCaloCellA,kESDCaloCellM} ;
69   
70 public:
71   
72   AliEMCALQADataMakerRec(Int_t fitAlgo = Algo::kStandard) ;  // ctor
73   // Default fitter is kStandard=0 (see AliCaloConstants)
74   
75   AliEMCALQADataMakerRec(const AliEMCALQADataMakerRec& qadm) ;   
76   AliEMCALQADataMakerRec& operator = (const AliEMCALQADataMakerRec& qadm) ;
77   virtual ~AliEMCALQADataMakerRec() {;} // dtor
78
79   Int_t GetFittingAlgorithm() const {return fFittingAlgorithm;}
80   void  SetFittingAlgorithm(Int_t val);
81   
82   AliCaloRawAnalyzer *GetRawAnalyzer()    const {return fRawAnalyzer   ;}
83   AliCaloRawAnalyzer *GetRawAnalyzerTRU() const {return fRawAnalyzerTRU;}
84
85   void SetSuperModules(int i) {fSuperModules = i;}; //The number of SuperModules
86   int GetSuperModules() const {return fSuperModules;}; //The number of SuperModules
87
88   // for pedestal calculation with raw data
89   void SetFirstPedestalSample(int i)  {fFirstPedestalSample = i;}          // first sample
90   int  GetFirstPedestalSample() const {return fFirstPedestalSample;}       // first sample
91   void SetLastPedestalSample(int i)   {fLastPedestalSample = i;}           // last sample
92   int  GetLastPedestalSample() const  {return fLastPedestalSample;}        // last sample
93   
94   void SetFirstPedestalSampleTRU(int i)  {fFirstPedestalSampleTRU = i;}    // first sample, TRU
95   int  GetFirstPedestalSampleTRU() const {return fFirstPedestalSampleTRU;} // first sample, TRU
96   void SetLastPedestalSampleTRU(int i)   {fLastPedestalSampleTRU = i;}     // last sample, TRU
97   int  GetLastPedestalSampleTRU() const  {return fLastPedestalSampleTRU;}  // last sample, TRU
98   
99   // for selection of interesting signal (max-min) range 
100   // Low Gain channels
101   void SetMinSignalLG(int i)  {fMinSignalLG = i;}
102   int  GetMinSignalLG() const {return fMinSignalLG;}
103   void SetMaxSignalLG(int i)  {fMaxSignalLG = i;}
104   int  GetMaxSignalLG() const {return fMaxSignalLG;}
105   
106   // High Gain channels
107   void SetMinSignalHG(int i)  {fMinSignalHG = i;}
108   int  GetMinSignalHG() const {return fMinSignalHG;}
109   void SetMaxSignalHG(int i)  {fMaxSignalHG = i;}
110   int  GetMaxSignalHG() const {return fMaxSignalHG;}
111   
112   // TRU channels
113   void SetMinSignalTRU(int i) {fMinSignalTRU = i;}
114   int GetMinSignalTRU() const {return fMinSignalTRU;}
115   void SetMaxSignalTRU(int i) {fMaxSignalTRU = i;}
116   int GetMaxSignalTRU() const {return fMaxSignalTRU;}
117   
118   // LEDMon channels
119   void SetMinSignalLGLEDMon(int i) {fMinSignalLGLEDMon = i;}
120   int GetMinSignalLGLEDMon() const {return fMinSignalLGLEDMon;}
121   void SetMaxSignalLGLEDMon(int i) {fMaxSignalLGLEDMon = i;}
122   int GetMaxSignalLGLEDMon() const {return fMaxSignalLGLEDMon;}
123   void SetMinSignalHGLEDMon(int i) {fMinSignalHGLEDMon = i;}
124   int GetMinSignalHGLEDMon() const {return fMinSignalHGLEDMon;}
125   void SetMaxSignalHGLEDMon(int i) {fMaxSignalHGLEDMon = i;}
126   int GetMaxSignalHGLEDMon() const {return fMaxSignalHGLEDMon;}
127
128   virtual void   EndOfDetectorCycle(AliQAv1::TASKINDEX_t, TObjArray ** list) ;
129   void           GetCalibRefFromOCDB() ;
130   void                 GetTruChannelPosition( Int_t &globRow, Int_t &globColumn, Int_t module, Int_t ddl, Int_t branch, Int_t column ) const;
131   virtual void   InitESDs() ; 
132   virtual void   InitDigits() ; 
133   virtual void   InitRecPoints() ; 
134   virtual void   InitRaws() ; 
135   virtual void   MakeESDs(AliESDEvent * esd) ;
136   virtual void   MakeDigits() ;
137   virtual void   MakeDigits(TTree * digTree) ; 
138   virtual void   MakeRecPoints(TTree * recpoTree) ; 
139   virtual void   MakeRaws(AliRawReader* rawReader) ;
140   virtual void   MakeRawsSTU(AliRawReader* rawReader);
141   virtual void   StartOfDetectorCycle() ; 
142
143 private:
144   
145   void ConvertProfile2H(TProfile * p, TH2 * histo) ; //change the profile plot to a 2D histogram
146   
147   Int_t fFittingAlgorithm;              // select the fitting algorithm, only used in copy ctor ...
148
149   AliCaloRawAnalyzer *fRawAnalyzer;     // for signal fitting
150   AliCaloRawAnalyzer *fRawAnalyzerTRU;  // for TRU signal fitting
151   AliEMCALGeometry   *fGeom;            // EMCAL geometry, needed for STU decoding
152
153   int fSuperModules;           // The number of SuperModules activated
154   int fFirstPedestalSample;    // first sample for pedestal calculation, in bunch
155   int fLastPedestalSample;     // last sample for pedestal calculation, in bunch
156   int fFirstPedestalSampleTRU; // first sample for pedestal calculation, in bunch
157   int fLastPedestalSampleTRU;  // last sample for pedestal calculation, in bunch
158   
159   int fMinSignalLG;       // minimum signal, for Low Gain channels
160   int fMaxSignalLG;       // maximum signal, for Low Gain channels
161   int fMinSignalHG;       // minimum signal, for High Gain channels
162   int fMaxSignalHG;       // maximum signal, for High Gain channels
163   int fMinSignalTRU;      // minimum signal, for TRU channels
164   int fMaxSignalTRU;      // maximum signal, for TRU channels
165   int fMinSignalLGLEDMon; // minimum signal, for LEDMon channels, low gain
166   int fMaxSignalLGLEDMon; // maximum signal, for LEDMon channels, low gain
167   int fMinSignalHGLEDMon; // minimum signal, for LEDMon channels, high gain
168   int fMaxSignalHGLEDMon; // maximum signal, for LEDMon channels, high gain
169
170   TProfile * fCalibRefHistoPro ; // Profile reference histogram from LED run
171   TH2F     * fCalibRefHistoH2F ; // H2F reference histogram from LED run
172   TProfile * fLEDMonRefHistoPro; // Profile reference histogram from LED monitor
173   TH2F     * fHighEmcHistoH2F  ; // H2F reference histogram from LED run
174   
175 //  TText **    fTextSM        ; //! Text info for each SM  
176 //  TLine *     fLineCol       ; //! line to distinguish the different SM side: A side and C side
177 //  TLine *     fLineRow       ; //! line to distinguish the different SM sector 0 and 1 
178
179   ClassDef(AliEMCALQADataMakerRec,6)  // description
180
181 };
182
183 #endif // AliEMCALQADATAMAKERREC_H