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