Patch for the tracker
[u/mrichter/AliRoot.git] / TPC / AliTPCCalibRawBase.h
1 #ifndef ALITPCCALIBRAWBASE_H
2 #define ALITPCCALIBRAWBASE_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 //                  Raw data processing base class                                     //
9 //                                                                                     //
10 /////////////////////////////////////////////////////////////////////////////////////////
11
12 #include <TNamed.h>
13
14 class AliAltroMapping;
15 class AliAltroRawStream;
16 class AliRawReader;
17 class AliTPCAltroMapping;
18 class AliTPCRawStreamFast;
19 class AliTPCRawStreamV3;
20 class AliTPCRawStream;
21 class AliTPCROC;
22 class TTreeSRedirector;
23 class TCollection;
24 struct eventHeaderStruct;
25
26 class AliTPCCalibRawBase : public TNamed {
27
28
29 public:
30   AliTPCCalibRawBase();
31   AliTPCCalibRawBase(const AliTPCCalibRawBase &calib);
32
33   AliTPCCalibRawBase& operator = (const  AliTPCCalibRawBase &source);
34
35   virtual ~AliTPCCalibRawBase();
36   
37   
38   Bool_t ProcessEventFast(AliTPCRawStreamFast * const rawStreamFast);
39   Bool_t ProcessEventFast(AliRawReader        * const rawReader);
40
41   //uses the new decoder which is compatible with the new altro format
42   Bool_t ProcessEvent(AliTPCRawStreamV3   * const rawStreamV3);
43   Bool_t ProcessEvent(AliRawReader        * const rawReader);
44   Bool_t ProcessEvent(eventHeaderStruct   * const event);
45
46   //For using the old decoder use the following functions
47   Bool_t ProcessEvent(AliTPCRawStream * const rawStream);
48   Bool_t ProcessEventOld(AliRawReader * const rawReader);
49   
50   virtual Int_t Update(const Int_t /*isector*/, const Int_t /*iRow*/, const Int_t /*iPad*/,
51                        const Int_t /*iTimeBin*/, const Float_t /*signal*/) { return 0; }
52   virtual void UpdateDDL() {return;}
53   virtual void ProcessBunch(const Int_t /*sector*/, const Int_t /*row*/, const Int_t /*pad*/,
54                             const Int_t /*length*/, const UInt_t /*startTimeBin*/, const UShort_t* /*signal*/) {return; }
55   virtual void Analyse(){ return; }
56   
57   virtual Long64_t Merge(TCollection * /*list*/) {return 0;}
58   void MergeBase(const AliTPCCalibRawBase *calib);
59   
60   //Setters
61   void  SetRangeTime (Int_t firstTimeBin, Int_t lastTimeBin) { fFirstTimeBin=firstTimeBin;   fLastTimeBin=lastTimeBin;  } //Set range in which the signal is expected
62   void  SetAltroMapping(AliTPCAltroMapping **mapp) { fMapping = mapp; }
63   //
64   void SetUseL1Phase(Bool_t useL1Phase=kTRUE) {fUseL1Phase=useL1Phase;}
65   //
66   void  SetTimeStampEvent(UInt_t timestamp){ fTimeStamp = timestamp; }
67   void  SetRunNumber(UInt_t eventnumber){ fRunNumber = eventnumber; }
68
69   //
70   Int_t GetFirstTimeBin()   const { return fFirstTimeBin;  }
71   Int_t GetLastTimeBin()    const { return fLastTimeBin;   }
72   Int_t GetNevents() const { return fNevents; }
73   //
74   Double_t GetL1Phase()   const {return fAltroL1Phase;}
75   Double_t GetL1PhaseTB() const {return fAltroL1PhaseTB;}
76   Bool_t   GetUseL1Phase()const {return fUseL1Phase;}
77 //
78   UInt_t GetRunNumber()      const {return fRunNumber;}
79   UInt_t GetFirstTimeStamp() const {return fFirstTimeStamp;}
80   UInt_t GetLastTimeStamp()  const {return fLastTimeStamp;}
81   UInt_t GetTimeStamp()      const {return fTimeStamp;}
82   UInt_t GetEventType()      const {return fEventType;}
83   //
84   AliTPCAltroMapping **GetAltroMapping() { return fMapping; }
85   const AliAltroRawStream *GetAltroRawStream() const {return fAltroRawStream;}
86   const AliTPCROC *GetTPCROC() const {return fROC;}
87   //
88   void IncrementNevents(){++fNevents;}
89   //
90   virtual void DumpToFile(const Char_t *filename, const Char_t *dir="", Bool_t append=kFALSE);
91   // debug and debug streamer support
92   TTreeSRedirector *GetDebugStreamer();
93   void       SetStreamLevel(Int_t streamLevel){fStreamLevel=streamLevel;}
94   void       SetDebugLevel(Int_t level) {fDebugLevel = level;}
95   Int_t      GetStreamLevel() const {return fStreamLevel;}
96   Int_t      GetDebugLevel() const {return fDebugLevel;}
97
98 protected:
99   Int_t fFirstTimeBin;                //  First Time bin used for analysis
100   Int_t fLastTimeBin;                 //  Last Time bin used for analysis
101   
102   Int_t fNevents;                     //  Number of processed events 
103   
104   Int_t fDebugLevel;                  //! debug level
105   Int_t fStreamLevel;                 //! level of streamer output
106   //
107   UInt_t fRunNumber;                  // current run number from event header
108   UInt_t fFirstTimeStamp;             // First event time stamp
109   UInt_t fLastTimeStamp;              // Last event time stamp
110   UInt_t fTimeStamp;                  //! time stamp from event header
111   UInt_t fEventType;                  //! current event Type from event header
112   //
113   Double_t fAltroL1Phase;             //! L1 Phase
114   Float_t  fAltroL1PhaseTB;           //! L1 Phase in time bins
115   Int_t    fCurrRCUId;                //! Current RCU Id
116   Int_t    fPrevRCUId;                //! Previous RCU Id
117   Int_t    fCurrDDLNum;               //! Current DDL number
118   Int_t    fPrevDDLNum;               //! Current DDL number
119   Bool_t   fUseL1Phase;               //  use L1 Phase information?
120   //
121   TTreeSRedirector *fDebugStreamer;   //! debug streamer
122   //
123   AliAltroRawStream *fAltroRawStream; //! pointer to the altro object
124   AliTPCAltroMapping **fMapping;      //! Altro Mapping object
125
126   AliTPCROC *fROC;                    //! ROC information
127     
128   virtual void EndEvent() {++fNevents; return; } //fNevents should be updated in the derived classes in a proper place
129   virtual void ResetEvent(){ return; }           //Reset Event counters
130   
131   
132   ClassDef(AliTPCCalibRawBase,3)      //  Calibration base class for raw data processing
133     
134 };
135
136
137 #endif
138