Adding macros to create Calibration objects
[u/mrichter/AliRoot.git] / TRD / TRDbase / AliTRDCalROC.h
1 #ifndef ALITRDCALROC_H
2 #define ALITRDCALROC_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //////////////////////////////////////////////////
9 //                                              //
10 //  TRD calibration base class for one ROC      //
11 //                                              //
12 //////////////////////////////////////////////////
13
14 #include <TObject.h>
15
16 class TArrayI;
17 class TArrayF;
18 class TH2F;
19 class TH1F;
20 class TGraph2D;
21 class TH2D;
22
23 //_____________________________________________________________________________
24 class AliTRDCalROC : public TObject 
25 {
26
27  public:
28
29   AliTRDCalROC();
30   AliTRDCalROC(Int_t p, Int_t c);
31   AliTRDCalROC(const AliTRDCalROC &c);
32   virtual      ~AliTRDCalROC();
33   AliTRDCalROC &operator=(const AliTRDCalROC &c);
34   virtual void  Copy(TObject &c) const;
35
36   Int_t         GetNrows() const                   { return fNrows; };
37   Int_t         GetNcols() const                   { return fNcols; };
38
39   Int_t         GetChannel(Int_t c, Int_t r) const { return r+c*fNrows; };
40   Int_t         GetNchannels() const               { return fNchannels; };
41
42   Float_t       GetValue(Int_t ich) const          { return (Float_t) fData[ich] / 10000;  };
43   Float_t       GetValue(Int_t col, Int_t row)     { return GetValue(GetChannel(col,row)); };
44
45   void          SetValue(Int_t ich, Float_t value) { fData[ich] = (UShort_t) (value * 10000); };
46   void          SetValue(Int_t col, Int_t row, Float_t value) 
47                                                    { SetValue(GetChannel(col,row), value);    };
48
49   // statistic
50   //
51   Double_t GetMean(AliTRDCalROC * const outlierROC=0) const; 
52   Double_t GetRMS(AliTRDCalROC * const outlierROC=0) const;
53   Double_t GetMedian(AliTRDCalROC * const outlierROC=0) const;
54   Double_t GetLTM(Double_t *sigma=0, Double_t fraction=0.9, AliTRDCalROC * const outlierROC=0);
55
56   // algebra
57   Bool_t Add(Float_t c1);
58   Bool_t Multiply(Float_t c1);
59   Bool_t Add(const AliTRDCalROC * roc, Double_t c1 = 1);
60   Bool_t Multiply(const AliTRDCalROC * roc);   
61   Bool_t Divide(const AliTRDCalROC * roc);   
62
63   // noise
64   Bool_t Unfold();
65   
66   //Plots
67   TH2F *   MakeHisto2D(Float_t min, Float_t max,Int_t type, Float_t mu = 1.0);
68   TH1F *   MakeHisto1D(Float_t min, Float_t max,Int_t type, Float_t mu = 1.0);
69   
70  protected:
71
72   Int_t     fPla;              //  Plane number
73   Int_t     fCha;              //  Chamber number
74
75   Int_t     fNrows;            //  Number of rows
76   Int_t     fNcols;            //  Number of columns
77
78   Int_t     fNchannels;        //  Number of channels
79   UShort_t *fData;             //[fNchannels] Data
80
81   ClassDef(AliTRDCalROC, 2)    //  TRD ROC calibration class
82
83 };
84
85 #endif