29c18469b3112822edf321a2feb5f41dda9aaff3
[u/mrichter/AliRoot.git] / TPC / AliTPCCalibPedestal.h
1 #ifndef ALITPCCALIBPEDESTAL_H
2 #define ALITPCCALIBPEDESTAL_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 #include <TObjArray.h>
7 #include "AliTPCCalibRawBase.h"
8
9 class TArrayF;
10 class TH2F;
11 class TTreeSRedirector;
12 class AliTPCROC;
13 class AliTPCCalROC;
14 class AliTPCRawStream;
15 class AliTPCRawStreamFast;
16 class AliRawReader;
17 class TMap;
18
19 struct eventHeaderStruct;
20
21 class AliTPCCalibPedestal : public AliTPCCalibRawBase {
22
23 public:
24   AliTPCCalibPedestal();
25   AliTPCCalibPedestal(const AliTPCCalibPedestal &ped);
26   AliTPCCalibPedestal(const TMap *config);
27   virtual ~AliTPCCalibPedestal();
28
29   AliTPCCalibPedestal& operator = (const  AliTPCCalibPedestal &source);
30
31   virtual Int_t  Update(const Int_t isector, const Int_t iRow, const Int_t iPad,
32                 const Int_t iTimeBin, const Float_t signal);
33   virtual void   Analyse();
34   //
35   AliTPCCalROC* GetCalRocPedestal (Int_t sector, Bool_t force=kFALSE);  // get calibration object - sector
36   AliTPCCalROC* GetCalRocSigma(Int_t sector, Bool_t force=kFALSE);        // get calibration object - sector
37   const TObjArray* GetCalPadPedestal (){return &fCalRocArrayPedestal;}  // get calibration object
38   const TObjArray* GetCalPadSigma(){return &fCalRocArraySigma;}             // get calibration object
39
40   AliTPCCalROC* GetCalRocMean (Int_t sector, Bool_t force=kFALSE);      // get calibration object - sector
41   AliTPCCalROC* GetCalRocRMS(Int_t sector, Bool_t force=kFALSE);        // get calibration object - sector
42   const TObjArray* GetCalPadMean (){return &fCalRocArrayMean;}          // get calibration object
43   const TObjArray* GetCalPadRMS(){return &fCalRocArrayRMS;}             // get calibration object
44   
45   TH2F* GetHistoPedestal  (Int_t sector, Bool_t force=kFALSE);          // get refernce histogram
46   //
47   void  SetTimeAnalysis(Bool_t time = kTRUE);                  // Use ONLY in TPCPEDESTALda on LDC for one sector!
48   void  AnalyseTime(Int_t nevents);                            // Makes sense only in TPCPEDESTALda on LDC!
49   TArrayF **GetTimePedestals()  const { return fTimeSignal; }  // Get array with time dependent pedestals (for one sector!)
50   //
51   Int_t   GetAdcMin()       const { return fAdcMin;       }
52   Int_t   GetAdcMax()       const { return fAdcMax;       }
53   Float_t GetAnaMeanDown()  const { return fAnaMeanDown;  }
54   Float_t GetAnaMeanUp()    const { return fAnaMeanUp;    }
55   
56   void  SetRangeAdc (Int_t aMin, Int_t aMax){ fAdcMin=aMin; fAdcMax=aMax; }  // Set adc range for the pedestal calibration
57   void  SetAnalysisTruncationRange(Float_t down, Float_t up) {fAnaMeanDown=down; fAnaMeanUp=up;}    //Set range for truncated mean analysis of the channel information
58
59   void  Merge(AliTPCCalibPedestal *ped);
60
61   Bool_t TestEvent();  // Test the fast approach to fill histogram - used for test purposes
62
63 private:
64   Int_t fAdcMin;                    //  min adc channel of pedestal value
65   Int_t fAdcMax;                    //  max adc channel of pedestal value
66
67   Float_t fAnaMeanDown;             // Truncated mean channel analysis - lower cut
68   Float_t fAnaMeanUp;               // Truncated mean channel analysis - upper cut
69   
70   Bool_t  fTimeAnalysis;            //! Should we use the time dependent analysis? ONLY ON LDC!
71
72   TObjArray fCalRocArrayPedestal;   //  Array of AliTPCCalROC class for pedestal values from gaus fit
73   TObjArray fCalRocArraySigma;      //  Array of AliTPCCalROC class for noise values from gaus fit
74
75   TObjArray fHistoPedestalArray;    //  Calibration histograms for Pedestal distribution
76
77   TArrayF **fTimeSignal;            //! Arrays which hold time dependent signals
78   
79   TObjArray fCalRocArrayMean;       //  Array of AliTPCCalROC class for pedestal values, simple mean
80   TObjArray fCalRocArrayRMS;        //  Array of AliTPCCalROC class for noise values, simple rms
81
82   TH2F* GetHisto(Int_t sector, TObjArray *arr,
83                  Int_t nbinsY, Float_t ymin, Float_t ymax,
84                  const Char_t *type, Bool_t force);
85
86   AliTPCCalROC* GetCalRoc(Int_t sector, TObjArray* arr, Bool_t force);
87
88 public:
89   ClassDef(AliTPCCalibPedestal, 7)  // Implementation of the TPC pedestal and noise calibration
90 };
91
92
93
94 #endif
95