remove unnecessary redefinition of fitting algorithms index; remove extra semi-colons...
[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
24 // --- ROOT system ---
25 class TH1F ; 
26 class TH1I ;
27 class TH2F ;
28 class TH2 ; 
29 class TLine ;
30 class TText ;
31 class TProfile ;
32 class TObjArray ; 
33
34 // --- Standard library ---
35
36 // --- AliRoot header files ---
37 #include "AliQADataMakerRec.h"
38 class AliCaloRawAnalyzer;
39 class AliCaloRawAnalyzerKStandard;
40 //class AliEMCALGeoParams;
41 class AliEMCALGeometry;
42
43 #include "AliCaloConstants.h"
44
45 class AliEMCALQADataMakerRec: public AliQADataMakerRec {
46
47 public:
48   
49   //Histograms for Raw data control
50   enum HRawType_t { 
51     // first normal Low Gain and High Gain info
52     kNsmodLG,kNsmodHG,kTimeLG,kTimeHG,
53     kNtotLG,kNtotHG,kSigHG,kSigLG,
54     kPedLG,kPedHG,
55     k2DRatioAmp,kRatioDist, kLEDMonRatio, kLEDMonRatioDist,
56     // then TRU info
57     kNsmodTRU,
58     kSigTRU,kNtotTRU,
59     kNL0TRU, kTimeL0TRU,
60                 kNL0FirstTRU, kTimeL0FirstTRU,
61     // and also LED Mon info
62     kNsmodLGLEDMon,kNsmodHGLEDMon,kTimeLGLEDMon,kTimeHGLEDMon,
63     kSigLGLEDMon,kSigHGLEDMon,kNtotLGLEDMon,kNtotHGLEDMon,
64     kPedLGLEDMon,kPedHGLEDMon,
65                 //and STU info
66                 kAmpL1, kGL1, kJL1,
67                 kGL1V0, kJL1V0, kSTUTRU  
68   } ;
69
70   //Histograms for RecPoints  control
71   enum HRPType_t {kRecPE,kRecPM,kRecPDigM};
72
73   //Histograms for ESDs  control
74   enum HESDType_t {kESDCaloClusE,kESDCaloClusM,kESDCaloCellA,kESDCaloCellM} ;
75   
76 public:
77   
78   AliEMCALQADataMakerRec(Int_t fitAlgo = 0) ;          // ctor
79  
80   AliEMCALQADataMakerRec(const AliEMCALQADataMakerRec& qadm) ;   
81   AliEMCALQADataMakerRec& operator = (const AliEMCALQADataMakerRec& qadm) ;
82   virtual ~AliEMCALQADataMakerRec() {;} // dtor
83
84   Int_t GetFittingAlgorithm() const {return fFittingAlgorithm; }
85   void  SetFittingAlgorithm(Int_t val);
86   AliCaloRawAnalyzer *GetRawAnalyzer() const { return fRawAnalyzer;}
87   AliCaloRawAnalyzerKStandard *GetRawAnalyzerTRU() const { return fRawAnalyzerTRU;}
88
89   void SetSuperModules(int i) {fSuperModules = i;}; //The number of SuperModules
90   int GetSuperModules() const {return fSuperModules;}; //The number of SuperModules
91
92   // for pedestal calculation with raw data
93   void SetFirstPedestalSample(int i) {fFirstPedestalSample = i;}           // first sample
94   int  GetFirstPedestalSample() const {return fFirstPedestalSample;}       // first sample
95   void SetLastPedestalSample(int i) {fLastPedestalSample = i;}             // last sample
96   int  GetLastPedestalSample() const {return fLastPedestalSample;}         // last sample
97   
98   void SetFirstPedestalSampleTRU(int i) {fFirstPedestalSampleTRU = i;}     // first sample, TRU
99   int  GetFirstPedestalSampleTRU() const {return fFirstPedestalSampleTRU;} // first sample, TRU
100   void SetLastPedestalSampleTRU(int i) {fLastPedestalSampleTRU = i;}       // last sample, TRU
101   int  GetLastPedestalSampleTRU() const {return fLastPedestalSampleTRU;}   // last sample, TRU
102   
103   // for selection of interesting signal (max-min) range 
104   // Low Gain channels
105   void SetMinSignalLG(int i) {fMinSignalLG = i;}
106   int  GetMinSignalLG() const {return fMinSignalLG;}
107   void SetMaxSignalLG(int i) {fMaxSignalLG = i;}
108   int  GetMaxSignalLG() const {return fMaxSignalLG;}
109   
110   // High Gain channels
111   void SetMinSignalHG(int i) {fMinSignalHG = i;}
112   int  GetMinSignalHG() const {return fMinSignalHG;}
113   void SetMaxSignalHG(int i) {fMaxSignalHG = i;}
114   int  GetMaxSignalHG() const {return fMaxSignalHG;}
115   
116   // TRU channels
117   void SetMinSignalTRU(int i) {fMinSignalTRU = i;}
118   int GetMinSignalTRU() const {return fMinSignalTRU;}
119   void SetMaxSignalTRU(int i) {fMaxSignalTRU = i;}
120   int GetMaxSignalTRU() const {return fMaxSignalTRU;}
121   
122   // LEDMon channels
123   void SetMinSignalLGLEDMon(int i) {fMinSignalLGLEDMon = i;}
124   int GetMinSignalLGLEDMon() const {return fMinSignalLGLEDMon;}
125   void SetMaxSignalLGLEDMon(int i) {fMaxSignalLGLEDMon = i;}
126   int GetMaxSignalLGLEDMon() const {return fMaxSignalLGLEDMon;}
127   void SetMinSignalHGLEDMon(int i) {fMinSignalHGLEDMon = i;}
128   int GetMinSignalHGLEDMon() const {return fMinSignalHGLEDMon;}
129   void SetMaxSignalHGLEDMon(int i) {fMaxSignalHGLEDMon = i;}
130   int GetMaxSignalHGLEDMon() const {return fMaxSignalHGLEDMon;}
131
132   virtual void   EndOfDetectorCycle(AliQAv1::TASKINDEX_t, TObjArray ** list) ;
133   void           GetCalibRefFromOCDB() ;
134   void                 GetTruChannelPosition( Int_t &globRow, Int_t &globColumn, Int_t module, Int_t ddl, Int_t branch, Int_t column ) const;
135   virtual void   InitESDs() ; 
136   virtual void   InitDigits() ; 
137   virtual void   InitRecPoints() ; 
138   virtual void   InitRaws() ; 
139   virtual void   MakeESDs(AliESDEvent * esd) ;
140   virtual void   MakeDigits() ;
141   virtual void   MakeDigits(TTree * digTree) ; 
142   virtual void   MakeRecPoints(TTree * recpoTree) ; 
143   virtual void   MakeRaws(AliRawReader* rawReader) ;
144   virtual void   MakeRawsSTU(AliRawReader* rawReader);
145   virtual void   StartOfDetectorCycle() ; 
146
147 private:
148   
149   void ConvertProfile2H(TProfile * p, TH2 * histo) ; //change the profile plot to a 2D histogram
150   
151   Int_t fFittingAlgorithm;             // select the fitting algorithm
152
153   AliCaloRawAnalyzer *fRawAnalyzer;                // for signal fitting
154   AliCaloRawAnalyzerKStandard *fRawAnalyzerTRU;    // for TRU signal fitting
155   AliEMCALGeometry *fGeom;                         // EMCAL geometry, needed for STU decoding
156
157   int fSuperModules;           // The number of SuperModules activated
158   int fFirstPedestalSample;    // first sample for pedestal calculation, in bunch
159   int fLastPedestalSample;     // last sample for pedestal calculation, in bunch
160   int fFirstPedestalSampleTRU; // first sample for pedestal calculation, in bunch
161   int fLastPedestalSampleTRU;  // last sample for pedestal calculation, in bunch
162   int fMinSignalLG;       // minimum signal, for Low Gain channels
163   int fMaxSignalLG;       // maximum signal, for Low Gain channels
164   int fMinSignalHG;       // minimum signal, for High Gain channels
165   int fMaxSignalHG;       // maximum signal, for High Gain channels
166   int fMinSignalTRU;      // minimum signal, for TRU channels
167   int fMaxSignalTRU;      // maximum signal, for TRU channels
168   int fMinSignalLGLEDMon; // minimum signal, for LEDMon channels, low gain
169   int fMaxSignalLGLEDMon; // maximum signal, for LEDMon channels, low gain
170   int fMinSignalHGLEDMon; // minimum signal, for LEDMon channels, high gain
171   int fMaxSignalHGLEDMon; // maximum signal, for LEDMon channels, high gain
172
173   TProfile * fCalibRefHistoPro ; // Profile reference histogram from LED run
174   TH2F     * fCalibRefHistoH2F ; // H2F reference histogram from LED run
175   TProfile * fLEDMonRefHistoPro; // Profile reference histogram from LED monitor
176   TH2F     * fHighEmcHistoH2F  ; // H2F reference histogram from LED run
177 //  TText **    fTextSM        ; //! Text info for each SM  
178 //  TLine *     fLineCol       ; //! line to distinguish the different SM side: A side and C side
179 //  TLine *     fLineRow       ; //! line to distinguish the different SM sector 0 and 1 
180
181   ClassDef(AliEMCALQADataMakerRec,5)  // description 
182
183 };
184
185 #endif // AliEMCALQADATAMAKERREC_H