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 */
6 /////////////////////////////////////////////////////////////////////////////////////////
8 // Raw data processing base class //
10 /////////////////////////////////////////////////////////////////////////////////////////
14 class AliAltroMapping;
15 class AliAltroRawStream;
17 class AliTPCAltroMapping;
18 class AliTPCRawStreamFast;
19 class AliTPCRawStreamV3;
20 class AliTPCRawStream;
22 class TTreeSRedirector;
24 struct eventHeaderStruct;
26 class AliTPCCalibRawBase : public TNamed {
31 AliTPCCalibRawBase(const AliTPCCalibRawBase &calib);
33 AliTPCCalibRawBase& operator = (const AliTPCCalibRawBase &source);
35 virtual ~AliTPCCalibRawBase();
38 Bool_t ProcessEventFast(AliTPCRawStreamFast * const rawStreamFast);
39 Bool_t ProcessEventFast(AliRawReader * const rawReader);
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);
46 //For using the old decoder use the following functions
47 Bool_t ProcessEvent(AliTPCRawStream * const rawStream);
48 Bool_t ProcessEventOld(AliRawReader * const rawReader);
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; }
57 virtual Long64_t Merge(TCollection * /*list*/) {return 0;}
58 void MergeBase(const AliTPCCalibRawBase *calib);
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; }
64 void SetUseL1Phase(Bool_t useL1Phase=kTRUE) {fUseL1Phase=useL1Phase;}
66 void SetTimeStampEvent(UInt_t timestamp){ fTimeStamp = timestamp; }
67 void SetRunNumber(UInt_t eventnumber){ fRunNumber = eventnumber; }
70 Int_t GetFirstTimeBin() const { return fFirstTimeBin; }
71 Int_t GetLastTimeBin() const { return fLastTimeBin; }
72 Int_t GetNevents() const { return fNevents; }
74 Double_t GetL1Phase() const {return fAltroL1Phase;}
75 Double_t GetL1PhaseTB() const {return fAltroL1PhaseTB;}
76 Bool_t GetUseL1Phase()const {return fUseL1Phase;}
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;}
84 AliTPCAltroMapping **GetAltroMapping() { return fMapping; }
85 const AliAltroRawStream *GetAltroRawStream() const {return fAltroRawStream;}
86 const AliTPCROC *GetTPCROC() const {return fROC;}
88 void IncrementNevents(){++fNevents;}
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;}
99 Int_t fFirstTimeBin; // First Time bin used for analysis
100 Int_t fLastTimeBin; // Last Time bin used for analysis
102 Int_t fNevents; // Number of processed events
104 Int_t fDebugLevel; //! debug level
105 Int_t fStreamLevel; //! level of streamer output
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
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?
121 TTreeSRedirector *fDebugStreamer; //! debug streamer
123 AliAltroRawStream *fAltroRawStream; //! pointer to the altro object
124 AliTPCAltroMapping **fMapping; //! Altro Mapping object
126 AliTPCROC *fROC; //! ROC information
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
132 ClassDef(AliTPCCalibRawBase,3) // Calibration base class for raw data processing