eba40ec889fd1255dcde031726529e1285373b17
[u/mrichter/AliRoot.git] / TPC / AliTPCdataQA.h
1 #ifndef ALITPCDATAQA_H
2 #define ALITPCDATAQA_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 class AliTPCAltroMapping;
20 class AliTPCCalPad; 
21 struct eventHeaderStruct;
22
23 class AliTPCdataQA : public TObject {
24
25 public:
26   AliTPCdataQA();
27   AliTPCdataQA(const AliTPCdataQA &ped);
28   virtual ~AliTPCdataQA();
29
30   AliTPCdataQA& operator = (const  AliTPCdataQA &source);
31  void  DumpToFile(const Char_t *filename, const Char_t *dir="", const Bool_t append=kFALSE);
32   //
33   Bool_t ProcessEventFast(AliTPCRawStreamFast *rawStreamFast);
34   Bool_t ProcessEventFast(AliRawReader        *rawReader);
35   Bool_t ProcessEvent(AliTPCRawStream *rawStream);
36   Bool_t ProcessEvent(AliRawReader    *rawReader);
37   Bool_t ProcessEvent(eventHeaderStruct   *event);
38
39   Int_t  Update(const Int_t isector, const Int_t iRow, const Int_t iPad,
40                 const Int_t iTimeBin, const Float_t signal);
41   void   Analyse();
42   //
43   //
44   void SetPedestal(AliTPCCalPad *pedestalCal){ fPedestal = pedestalCal;}
45   void SetNoise(AliTPCCalPad *noiseCal){ fNoise = noiseCal;}
46
47   AliTPCCalPad *GetMaxCharge(){ return fMaxCharge;}
48   AliTPCCalPad *GetMeanCharge(){ return fMeanCharge;}
49   AliTPCCalPad *GetNoThreshold(){ return fNoThreshold;}
50   AliTPCCalPad *GetOverThreshold0(){ return fOverThreshold0;}
51   AliTPCCalPad *GetOverThreshold5(){ return fOverThreshold5;}
52   AliTPCCalPad *GetOverThreshold10(){ return fOverThreshold10;}
53   AliTPCCalPad *GetOverThreshold20(){ return fOverThreshold20;}
54   AliTPCCalPad *GetOverThreshold30(){ return fOverThreshold30;}
55
56   //
57   AliTPCAltroMapping **GetAltroMapping() { return fMapping; };
58   void  SetAltroMapping(AliTPCAltroMapping **mapp) { fMapping = mapp; };
59   //
60   //
61   Int_t GetFirstTimeBin() const { return fFirstTimeBin; }
62   Int_t GetLastTimeBin()  const { return fLastTimeBin;  }
63   Int_t GetAdcMin()       const { return fAdcMin;       }
64   Int_t GetAdcMax()       const { return fAdcMax;       }
65   void  SetRangeTime(Int_t tMin, Int_t tMax){ fFirstTimeBin=tMin; fLastTimeBin=tMax; }  // Set time bin range that is used for the pedestal calibration
66   void  SetRangeAdc (Int_t aMin, Int_t aMax){ fAdcMin=aMin; fAdcMax=aMax; }  // Set adc range for the pedestal calibration
67
68   void  SetOldRCUformat(Bool_t format=kTRUE) { fOldRCUformat = format; }
69
70 private:
71   void UpdateSignalHistograms(const Int_t icsector, const Int_t icRow,
72                               const Int_t icPad, const Int_t icTimeBin,
73                               const Float_t signal);  
74   
75   Int_t fFirstTimeBin;              //  First Time bin needed for analysis
76   Int_t fLastTimeBin;               //  Last Time bin needed for analysis
77   Int_t fAdcMin;                    //  min adc channel of pedestal value
78   Int_t fAdcMax;                    //  max adc channel of pedestal value
79   Bool_t  fOldRCUformat;            //! Should we use the old RCU format for data reading
80   
81
82   AliTPCROC *fROC;                  //! ROC information
83   AliTPCAltroMapping **fMapping;    //! Altro Mapping object
84   //
85   //
86   AliTPCCalPad * fPedestal;         // option to set pedestal cal object
87   AliTPCCalPad * fNoise;            // option to set noise cal object
88   AliTPCCalPad * fMaxCharge;        // max charge
89   AliTPCCalPad * fMeanCharge;       // mean charge
90   AliTPCCalPad * fNoThreshold;      // number of digits
91   AliTPCCalPad * fOverThreshold0;   // number of digits over threshold
92   AliTPCCalPad * fOverThreshold5;   // number of digits over threshold
93   AliTPCCalPad * fOverThreshold10;  // number of digits over threshold
94   AliTPCCalPad * fOverThreshold20;  // number of digits over threshold
95   AliTPCCalPad * fOverThreshold30;  // number of digits over threshold
96
97   Int_t   fEventCounter;            // event Counter
98   Int_t   fSectorLast;              //! last sector with signal
99   Int_t   fRowLast;                 //! last row with signal
100   Int_t   fPadLast;                 //! last pad with signal
101   Int_t   fTimeBinLast;             //! last time bin with signal
102   Float_t fSignalLast;              //! last signal value
103   Int_t   fNAboveThreshold;         //! number of signals above threshold
104
105 public:
106   ClassDef(AliTPCdataQA, 1)  // Implementation of the TPC pedestal and noise calibration
107 };
108
109
110
111 #endif
112