Using fast raw stream as option (Jens, Per-Thomas)
[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
7
8 #include <TObject.h>
9 #include <TObjArray.h>
10
11 class TArrayF;
12 class TH2F;
13 class TTreeSRedirector;
14 class AliTPCROC;
15 class AliTPCCalROC;
16 class AliTPCRawStream;
17 class AliTPCRawStreamFast;
18 class AliRawReader;
19
20 struct eventHeaderStruct;
21
22 class AliTPCCalibPedestal : public TObject {
23
24 public:
25   AliTPCCalibPedestal();
26   AliTPCCalibPedestal(const AliTPCCalibPedestal &ped);
27   virtual ~AliTPCCalibPedestal();
28
29   AliTPCCalibPedestal& operator = (const  AliTPCCalibPedestal &source);
30
31   Bool_t ProcessEventFast(AliTPCRawStreamFast *rawStreamFast);
32   Bool_t ProcessEventFast(AliRawReader            *rawReader);
33
34   Bool_t ProcessEvent(AliTPCRawStream *rawStream);
35   Bool_t ProcessEvent(AliRawReader    *rawReader);
36   Bool_t ProcessEvent(eventHeaderStruct   *event);
37
38   Int_t  Update(const Int_t isector, const Int_t iRow, const Int_t iPad,
39                 const Int_t iTimeBin, const Float_t signal);
40   void   Analyse();
41   //
42   AliTPCCalROC* GetCalRocPedestal (Int_t sector, Bool_t force=kFALSE);  // get calibration object - sector
43   AliTPCCalROC* GetCalRocRMS(Int_t sector, Bool_t force=kFALSE);        // get calibration object - sector
44   const TObjArray* GetCalPadPedestal (){return &fCalRocArrayPedestal;}  // get calibration object
45   const TObjArray* GetCalPadRMS(){return &fCalRocArrayRMS;}             // get calibration object
46   
47   TH2F* GetHistoPedestal  (Int_t sector, Bool_t force=kFALSE);          // get refernce histogram
48   void  DumpToFile(const Char_t *filename, const Char_t *dir="", const Bool_t append=kFALSE);
49   //
50   void  SetTimeAnalysis(Bool_t time = kTRUE);                  // Use ONLY in TPCPEDESTALda on LDC for one sector!
51   void  AnalyseTime(Int_t nevents);                            // Makes sense only in TPCPEDESTALda on LDC!
52   TArrayF **GetTimePedestals()  const { return fTimeSignal; }  // Get array with time dependent pedestals (for one sector!)
53   //
54   Int_t GetFirstTimeBin() const { return fFirstTimeBin; }
55   Int_t GetLastTimeBin()  const { return fLastTimeBin;  }
56   Int_t GetAdcMin()       const { return fAdcMin;       }
57   Int_t GetAdcMax()       const { return fAdcMax;       }
58
59   void  SetRangeTime(Int_t tMin, Int_t tMax){ fFirstTimeBin=tMin; fLastTimeBin=tMax; }  // Set time bin range that is used for the pedestal calibration
60   void  SetRangeAdc (Int_t aMin, Int_t aMax){ fAdcMin=aMin; fAdcMax=aMax; }  // Set adc range for the pedestal calibration
61
62   void  SetOldRCUformat(Bool_t format=kTRUE) { fOldRCUformat = format; }
63
64   void  Merge(AliTPCCalibPedestal *ped);
65
66   Bool_t TestEvent();  // Test the fast approach to fill histogram - used for test purposes
67
68 private:
69
70   Int_t fFirstTimeBin;              //  First Time bin needed for analysis
71   Int_t fLastTimeBin;               //  Last Time bin needed for analysis
72
73   Int_t fAdcMin;                    //  min adc channel of pedestal value
74   Int_t fAdcMax;                    //  max adc channel of pedestal value
75
76   Bool_t  fOldRCUformat;            //! Should we use the old RCU format for data reading
77   Bool_t  fTimeAnalysis;            //! Should we use the time dependent analysis? ONLY ON LDC!
78
79   AliTPCROC *fROC;                  //! ROC information
80
81   TObjArray fCalRocArrayPedestal;   //  Array of AliTPCCalROC class for Time0 calibration
82   TObjArray fCalRocArrayRMS;        //  Array of AliTPCCalROC class for signal width calibration
83
84   TObjArray fHistoPedestalArray;    //  Calibration histograms for Pedestal distribution
85
86   TArrayF **fTimeSignal;            //! Arrays which hold time dependent signals
87
88   TH2F* GetHisto(Int_t sector, TObjArray *arr,
89                  Int_t nbinsY, Float_t ymin, Float_t ymax,
90                  Char_t *type, Bool_t force);
91
92   AliTPCCalROC* GetCalRoc(Int_t sector, TObjArray* arr, Bool_t force);
93
94 public:
95   ClassDef(AliTPCCalibPedestal, 2)  // Implementation of the TPC pedestal and noise calibration
96 };
97
98
99
100 #endif
101