Coding violations corrected by Mark Heinz
[u/mrichter/AliRoot.git] / EMCAL / SMcalib / result / AliEMCALSMCalibCosmicResult.h
1 #ifndef ALIEMCALSMCALIBCOSMICRESULT_H
2 #define ALIEMCALSMCALIBCOSMICRESULT_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id: $ */
8
9 ///////////////////////////////////////////////////////////////////////////////
10 //                                                                           //
11 // class for EMCAL cosmic calibration results                                //
12 //                                                                           //
13 ///////////////////////////////////////////////////////////////////////////////
14
15
16 /*
17   Objects of this class read files with info on
18   1) gain balanced voltage values per APD/tower
19   2) MIP peak values per tower
20   3) LED peak values per tower
21   4) LED reference values per strip
22
23   Other values (arrays of smaller dimensions) are assigned via set/get calls:
24   a) SM id a la US1, EU1 etc., or W1,Y1 or G1 or whatever you prefer, set via ctor 
25   b) run numbers used
26   c) start of run, end of run 
27   d) temperatures (min, max, mean)
28
29 */
30
31
32
33 #include <TObject.h>
34
35 class TString;
36
37
38 class AliEMCALSMCalibCosmicResult : public TObject {
39 public:
40
41   AliEMCALSMCalibCosmicResult(); // default ctor
42   AliEMCALSMCalibCosmicResult(const TString &smId); // ctor
43   
44   virtual ~AliEMCALSMCalibCosmicResult(); // dtor
45
46   // simple setters and getters: b)-d) above
47   // first setters
48   void SetRunNumber(int ipart, int i)  { fRunNumber[ipart]=i; }; // runnumber used for the datataking of a certain part 'ipart' of the SM
49   void SetStartTime(int ipart, int i)  { fStartTime[ipart]=i; }; // start of run timestamp for the datataking of 'ipart'
50   void SetEndTime(int ipart, int i)    { fEndTime[ipart]=i;   }; // stop/end of run timestamp for the datataking of 'ipart'
51   void SetMinTemp(int ipart, double d) { fMinTemp[ipart]=d;   }; // minimum temperature for the datataking of 'ipart'
52   void SetMaxTemp(int ipart, double d) { fMaxTemp[ipart]=d;   }; // maximum temperature for the datataking of 'ipart'
53   void SetMeanTemp(int ipart, double d){ fMeanTemp[ipart]=d;  }; // mean (not necessary (max+min)/2) temperature for the datataking of 'ipart'
54  
55   void InitArrays();                     //init all arrays.
56   void ReadSMPart(int ipart);
57  
58   // then getters
59   int GetRunNumber(int ipart)   const { return fRunNumber[ipart]; }; // runnumber used for the datataking of a certain part 'ipart' of the SM
60   int GetStartTime(int ipart)   const { return fStartTime[ipart]; }; // start of run timestamp for the datataking of 'ipart'
61   int GetEndTime(int ipart)     const { return fEndTime[ipart];   }; // stop/end of run timestamp for the datataking of 'ipart'
62   double GetMinTemp(int ipart)  const { return fMinTemp[ipart];   }; // minimum temperature for the datataking of 'ipart'
63   double GetMaxTemp(int ipart)  const { return fMaxTemp[ipart];   }; // maximum temperature for the datataking of 'ipart'
64   double GetMeanTemp(int ipart) const { return fMeanTemp[ipart];   }; // mean (not necessary (max+min)/2) temperature for the datataking of 'ipart'
65
66
67   // readers: To interface with Yale's output files 
68   int  ReadAPDVoltageValues(int ipart, const TString &txtFile); 
69   void ReadLEDRefADCValues(int ipart); 
70   int  ReadMIPPeakADCValues(int th); 
71   int  ReadLEDPeakADCValues(int th); 
72   void ReadTempSensors(int ipart, int run); 
73   
74   // and some methods to access the info stored in the larger arrays
75   double GetAPDVoltage(int icol, int irow) const { return fAPDVoltage[icol][irow]; }; 
76   double GetMIPPeakADC(int icol, int irow) const { return fMIPPeakADC[icol][irow]; }; 
77   double GetLEDPeakADC(int icol, int irow) const { return fLEDPeakADC[icol][irow]; }; 
78   double GetLEDRefADC(int icol)            const { return fLEDRefADC[icol]; }; 
79
80   // print functions
81   void PrintAPD();
82   void PrintMIP();
83   void PrintLED();
84   void PrintLEDref();
85   void PrintTemps();
86  
87 private:
88   AliEMCALSMCalibCosmicResult(const AliEMCALSMCalibCosmicResult &);
89   AliEMCALSMCalibCosmicResult &operator = (const AliEMCALSMCalibCosmicResult &);
90
91 protected:
92
93   TString fSMId; // assigned in ctor
94     
95   TTree *fTree;  //tree containing results from MIP and LED peak fitting  
96   TH2D  *fhref;  // histograms of LED reference data
97   
98   float fMip;   // mean ADC of MIP for a given tower
99   float fLed;   // mean ADC of LED for a given tower    
100   int fCol;     // column index of tower
101   int fRow;     // row index of tower
102     
103   static const int fgkEmCalRows = 24; // number of rows per module for EMCAL
104   static const int fgkEmCalCols = 48; // number of columns per module for EMCAL
105   static const int fgkEmCalStrips = 24; // number of strips per module for EMCAL (fgkEmCalCols/2)
106   static const int fgkCalibParts = 3; // we do the calibrations in 3 different parts; 8 strips or 16 columns at a time
107
108   // small dim array values; assigned via Set methods above
109   int fRunNumber[fgkCalibParts];  //runnumber of calibration part
110   int fStartTime[fgkCalibParts];  //start time of calibration part
111   int fEndTime[fgkCalibParts];    //end time of calibration part
112
113   double fMinTemp[fgkCalibParts];  // min temperature of calibration part
114   double fMaxTemp[fgkCalibParts];  // max temperature of calibration part
115   double fMeanTemp[fgkCalibParts]; // mean temperature of calibration part
116
117   // larger arrays; assigned via ReadXValues methods above
118   double fAPDVoltage[fgkEmCalCols][fgkEmCalRows];  // Adjusted APD bias voltage
119   double fMIPPeakADC[fgkEmCalCols][fgkEmCalRows];  // mean of MIP peak
120   double fLEDPeakADC[fgkEmCalCols][fgkEmCalRows];  // mean of LED peak
121   double fLEDRefADC[fgkEmCalCols];                 // LED reference 
122
123   ClassDef(AliEMCALSMCalibCosmicResult, 1) //SMCalibCosmicResult data reader
124 };
125
126 #endif