AliRsnReader:
[u/mrichter/AliRoot.git] / OCDB / EMCAL / Calib / AliEMCALCalibCoefs.h
1 #ifndef ALIEMCALCALIBCOEFS_H
2 #define ALIEMCALCALIBCOEFS_H
3 /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice     */
5
6 /* $Id: AliEMCALCalibCoefs.h 24500 2008-03-13 23:39:38Z jklay $ */
7
8 //_________________________________________________________________________
9 //  Table of Calibration coefficients  
10 //  Should be extended.
11 //  Ratio high/low should be added too, pedestals and so on
12 //                  
13 //*-- Author: Aleksei Pavlinov (WSU, Detroit, USA) 
14
15 // --- ROOT system ---
16 #include <TNamed.h>
17 #include <TObjArray.h>
18
19 // unit is GeV
20 class AliEMCALCalibCoef : public TObject {
21   friend class AliEMCALCalibCoefs;
22   friend class AliEMCALFolder;
23   friend class AliEMCALCell;
24  public:
25   virtual const char* GetName() const {return Form("CC%5.5i",fAbsId);}
26   AliEMCALCalibCoef();
27   AliEMCALCalibCoef(const Int_t id, const Double_t c, const Double_t ec);
28   virtual ~AliEMCALCalibCoef() {};
29
30  protected:
31   Int_t    fAbsId; // absolute id of cell 
32   Double_t fCc;    // Calib. coef
33   Double_t fECc;   // Calib. coef. error
34   ClassDef(AliEMCALCalibCoef,1) // Cell calibration information 
35 };
36
37 class TH1F;
38 class AliEMCALCalibData;
39
40 class AliEMCALCalibCoefs : public TNamed {
41  public:
42   enum EEmcalCalibType {kMC, kEQUALIZATION, kMIP, kPI0}; // type of EMCAL calibrations 
43
44   AliEMCALCalibCoefs(); // default constractor
45   AliEMCALCalibCoefs(const AliEMCALCalibCoefs& coefs); // copy constractor
46   AliEMCALCalibCoefs(const char* name, const Int_t nrow);
47   virtual ~AliEMCALCalibCoefs();
48
49   AliEMCALCalibCoefs & operator = (const AliEMCALCalibCoefs  & /*rvalue*/) {
50     // assignement operator requested by coding convention but not needed
51     Fatal("operator =", "not implemented");
52     return *this;
53   };
54   void        AddAt(AliEMCALCalibCoef* r);
55   AliEMCALCalibCoef*  GetTable(Int_t i) const;
56   Int_t       GetSize()  const {return fTable->GetSize();}
57   Int_t       GetNRows() const {return fCurrentInd;}
58   void        Purge() {/* nothing */};
59
60   void  SetCalibMethod(Int_t var) {fCalibMethod=var;}
61   Int_t GetCalibMethod() const {return fCalibMethod;}
62   AliEMCALCalibCoef* GetRow(const int absId);
63   // Get initial Calib Data from DB
64   static AliEMCALCalibCoefs *GetCalibTableFromDb(const char *tn="CCIN", AliEMCALCalibData **calData=0);
65   //  const char* dbLocation="local:///data/r22b/ALICE/PROD/CALIBRATION_May_2007/PI0/PDSF/10GEV/DECALIB/DeCalibDB");
66   static TH1F *GetHistOfCalibTableFromDb(const char *tn="CCIN");
67   //const char* dbLocation="local:///data/r22b/ALICE/PROD/CALIBRATION_May_2007/PI0/PDSF/10GEV/DECALIB/DeCalibDB");
68   // Create DB calib table
69   static AliEMCALCalibData*  GetCalibTableForDb(const AliEMCALCalibCoefs *tab, 
70   const char* dbLocation="local://.", // current directory
71   const char* coment="pi0 calibration, MC, Jun 2007");
72   // Menu
73   void PrintTable();                 // *MENU*
74   void PrintTable(const Int_t i);    // *MENU*
75   void PrintRec(AliEMCALCalibCoef *r);
76
77   //
78  protected:
79   TObjArray *fTable; // table of CC
80   Int_t fCurrentInd; // Current index
81   Int_t fCalibMethod;  // method of calibration - EEmcalCalibType
82
83   ClassDef(AliEMCALCalibCoefs,2) // Table of Calibration coefficients  
84 };
85
86 #endif // ALIEMCALCalibCoefs_H