a7cd64fb655454352755fde0a7b51e0407e08d8b
[u/mrichter/AliRoot.git] / EMCAL / SMcalib / result / AliEMCALSMCalibCosmicResult.h
1 #ifndef ALIEMCALCOSMICRESULT_H
2 #define ALIEMCALCOSMICRESULT_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 #include <TObject.h>
10
11 class TString;
12
13 static const int fgkEmCalRows = 24; // number of rows per module for EMCAL
14 static const int fgkEmCalCols = 48; // number of columns per module for EMCAL
15
16 static const int fgkEmCalStrips = 24; // number of strips per module for EMCAL (fgkEmCalCols/2)
17 static const int fgkCalibParts = 3; // we do the calibrations in 3 different parts; 8 strips or 16 columns at a time
18
19 /*
20   Objects of this class read files with info on
21   1) gain balanced voltage values per APD/tower
22   2) MIP peak values per tower
23   3) LED peak values per tower
24   4) LED reference values per strip
25
26   Other values (arrays of smaller dimensions) are assigned via set/get calls:
27   a) SM id a la US1, EU1 etc., or W1,Y1 or G1 or whatever you prefer, set via ctor 
28   b) run numbers used
29   c) start of run, end of run 
30   d) temperatures (min, max, mean)
31
32 */
33
34 class AliEMCALSMCalibCosmicResult : public TObject {
35 public:
36
37   AliEMCALSMCalibCosmicResult(); // default ctor
38   AliEMCALSMCalibCosmicResult(const TString &smId); // ctor
39   
40   virtual ~AliEMCALSMCalibCosmicResult(); // dtor
41   /* I don't think we need the copy ctor and assignment operator but they tend to be required in ALICE
42   AliEMCALSMCalibCosmicResult(const AliEMCALSMCalibCosmicResult &);
43   AliEMCALSMCalibCosmicResult &operator = (const AliEMCALSMCalibCosmicResult &);
44   */
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
88
89 protected:
90
91   TString fSMId; // assigned in ctor
92         
93   // small dim array values; assigned via Set methods above
94   int fRunNumber[fgkCalibParts];
95   int fStartTime[fgkCalibParts];
96   int fEndTime[fgkCalibParts];
97
98   double fMinTemp[fgkCalibParts];
99   double fMaxTemp[fgkCalibParts];
100   double fMeanTemp[fgkCalibParts];
101
102   // larger arrays; assigned via ReadXValues methods above
103   double fAPDVoltage[fgkEmCalCols][fgkEmCalRows];
104   double fMIPPeakADC[fgkEmCalCols][fgkEmCalRows];
105   double fLEDPeakADC[fgkEmCalCols][fgkEmCalRows];
106   double fLEDRefADC[fgkEmCalCols];
107
108   ClassDef(AliEMCALSMCalibCosmicResult, 2) //SMCalibCosmicResult data reader
109 };
110
111 #endif