AliRoot Core  d69033e (d69033e)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliTPCCalibRaw.h
Go to the documentation of this file.
1 #ifndef ALITPCCALIBRAW_H
2 #define ALITPCCALIBRAW_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice */
5 
8 
9 #include <TVectorF.h>
10 #include <TObjArray.h>
11 #include <THnSparse.h>
12 
13 #include "AliTPCCalibRawBase.h"
14 #include "AliTPCCalPad.h"
15 #include "AliTPCROC.h"
16 
17 class TH2C;
18 class TH1F;
19 class TMap;
20 class TGraph;
21 class TCanvas;
22 
24 public:
26  AliTPCCalibRaw(const TMap *config);
27 
28  virtual ~AliTPCCalibRaw();
29 
30  enum {kNRCU=216};
31 
32  virtual Int_t Update(const Int_t isector, const Int_t iRow, const Int_t iPad,
33  const Int_t iTimeBin, const Float_t signal);
34  virtual void UpdateDDL();
35  virtual void EndEvent();
36  virtual void ResetEvent();
37  virtual void Analyse();
38 
39  UInt_t GetNFailL1Phase() const {return fNFailL1Phase;}
40  UInt_t GetNFailL1PhaseEvents() const {return fNFailL1PhaseEvent;}
41  Int_t GetPeakDetectionMinus() const {return fPeakDetMinus;}
42  Int_t GetPeakDetectionPlus() const {return fPeakDetPlus;}
43 
44  const TVectorF* GetALTROL1PhaseEvents() const {return &fArrALTROL1Phase;}
45 
46  const TVectorF *GetALTROL1PhaseEventsRCU(Int_t rcu) const {return (TVectorF*)fArrALTROL1PhaseEvent.At(rcu);}
47  const TVectorF *GetALTROL1PhaseFailEventsRCU(Int_t rcu) const {return (TVectorF*)fArrALTROL1PhaseFailEvent.At(rcu);}
48 
49  const TVectorF *GetOccupancyEvent() const {return &fVOccupancyEvent;}
50  const TVectorF *GetOccupancyEventSensitive() const {return &fVOccupancySenEvent;}
51  const TVectorF *GetSignalSumEvent() const {return &fVSignalSumEvent;}
52  const TVectorF *GetSignalSumEventSensitive() const {return &fVSignalSumSenEvent;}
53  const TVectorF *GetFiredPadsSensitive() const {return &fVNfiredPadsSenEvent;}
54  const TVectorF *GetEventTimeStamps() const {return &fVTimeStampEvent;}
55  UInt_t GetFirstTimeStamp() const {return fFirstTimeStamp;}
56 
57  void SetRangePeakDetection(Int_t minus, Int_t plus) { fPeakDetMinus=minus; fPeakDetPlus=plus;}
58  //Phase info
59  TH2C *MakeHistL1RCUEvents(Int_t type=0);
60  TH2C *MakeHistL1RCUEventsIROC(Int_t type=0);
61  TH2C *MakeHistL1RCUEventsOROC(Int_t type=0);
62  TH1F *MakeHistL1PhaseDist();
63  TVectorF *MakeVectL1PhaseDist();
64  //Occupancy info
65  TGraph* MakeGraphOccupancy(const Int_t type=0, const Int_t xType=0);
66 // TGraph* MakeGraphNoiseEvents();
67  TCanvas* MakeCanvasOccupancy(const Int_t xType=1, Bool_t sen=kFALSE);
68 
69  const THnSparseI *GetHnDrift() const {return fHnDrift;}
70 // AliTPCCalPad *CreateCalPadL1Mean();
71 // AliTPCCalPad *CreateCalPadL1RMS();
72 
73  void Merge(AliTPCCalibRaw * const sig);
74  virtual Long64_t Merge(TCollection * const list);
75 
76 private:
77  Int_t fPeakDetMinus;
78  Int_t fPeakDetPlus;
79  UInt_t fNFailL1Phase;
81  //binning dv hist
82  UInt_t fNSecTime;
83  UInt_t fNBinsTime;
84  //processing information
85  Bool_t fPadProcessed;
88  Int_t fLastSector;
89  Int_t fCurrentRow;
90  Int_t fCurrentPad;
92  Int_t fPeakTimeBin;
93  Int_t fLastSignal;
94  Int_t fNOkPlus;
95  Int_t fNOkMinus;
96  Int_t fNanoSec;
97 //
98  //L1 phase stuff
100  TVectorF fArrCurrentPhase;
102  TVectorF fArrALTROL1Phase;
105  //drift velocity stuff
106  enum {kHnBinsDV=3};
107  THnSparseI *fHnDrift;
108  //occupancy
109  TVectorF fVOccupancyEvent;
110  TVectorF fVSignalSumEvent;
114  TVectorF fVTimeStampEvent;
115 
116  TVectorF *MakeArrL1PhaseRCU(Int_t rcu, Bool_t force=kFALSE);
117  TVectorF *MakeArrL1PhaseFailRCU(Int_t rcu, Bool_t force=kFALSE);
118 
119  Bool_t IsEdgePad(Int_t sector, Int_t row, Int_t pad) const;
120  void CreateDVhist();
121 
122  AliTPCCalibRaw(const AliTPCCalibRaw &calib);
123  AliTPCCalibRaw& operator = (const AliTPCCalibRaw &source);
124 
126  ClassDef(AliTPCCalibRaw,4) // Analysis of the Altro header information
128 };
129 
130 //----------------------
131 // Inline Functions
132 //----------------------
133 inline TVectorF *AliTPCCalibRaw::MakeArrL1PhaseRCU(Int_t rcu, Bool_t force)
134 {
135  TVectorF *arr=(TVectorF*)fArrALTROL1PhaseEvent.UncheckedAt(rcu);
136  if (!arr && force) {
137  arr=new TVectorF(100);
138  fArrALTROL1PhaseEvent.AddAt(arr,rcu);
139  }
140  return arr;
141 }
142 //
143 inline TVectorF *AliTPCCalibRaw::MakeArrL1PhaseFailRCU(Int_t rcu, Bool_t force)
144 {
145  TVectorF *arr=(TVectorF*)fArrALTROL1PhaseFailEvent.UncheckedAt(rcu);
146  if (!arr && force) {
147  arr=new TVectorF(100);
148  fArrALTROL1PhaseFailEvent.AddAt(arr,rcu);
149  }
150  return arr;
151 }
152 //_____________________________________________________________________
153 inline Bool_t AliTPCCalibRaw::IsEdgePad(Int_t sector, Int_t row, Int_t pad) const
154 {
156 
157  Int_t edge1 = 0;
158  if ( pad == edge1 ) return kTRUE;
159  Int_t edge2 = fROC->GetNPads(sector,row)-1;
160  if ( pad == edge2 ) return kTRUE;
161 
162  return kFALSE;
163 }
164 
165 
166 #endif
Int_t fLastSector
! current sector processed
TH2C * MakeHistL1RCUEvents(Int_t type=0)
UInt_t fNFailL1Phase
Number of failures in L1 phase.
TVectorF fArrCurrentPhaseDist
! Phase distribution of the current event
UInt_t GetNPads(UInt_t sector, UInt_t row) const
Definition: AliTPCROC.h:30
Int_t fPeakTimeBin
! time bin with local maximum
Int_t fCurrentPad
! current pad processed
Bool_t IsEdgePad(Int_t sector, Int_t row, Int_t pad) const
UInt_t fFirstTimeStamp
First event time stamp.
Int_t fPeakDetPlus
Consecutive timebins on falling edge to be regarded as a signal.
const TVectorF * GetALTROL1PhaseFailEventsRCU(Int_t rcu) const
virtual void ResetEvent()
#define TObjArray
void Merge(AliTPCCalibRaw *const sig)
TObjArray fArrALTROL1PhaseEvent
L1 phase for each RCU and event.
TVectorF fArrCurrentPhase
! Current phase of all RCUs
TGraph * MakeGraphOccupancy(const Int_t type=0, const Int_t xType=0)
Int_t fLastTimeBinProc
! last time bin processed
virtual void EndEvent()
TVectorF fVSignalSumEvent
occupancy per event (sum of all adc values)
Int_t fCurrentRow
! current row processed
UInt_t GetNFailL1Phase() const
Base class for the calibration algorithms using raw data as input.
Int_t GetPeakDetectionPlus() const
Int_t fLastSignal
! last signal processed
const TVectorF * GetFiredPadsSensitive() const
Int_t fNanoSec
! current nano seconds stamp
TH2C * MakeHistL1RCUEventsIROC(Int_t type=0)
const TVectorF * GetALTROL1PhaseEventsRCU(Int_t rcu) const
UInt_t fNSecTime
Number of seconds per bin in time.
const TVectorF * GetALTROL1PhaseEvents() const
const THnSparseI * GetHnDrift() const
const TVectorF * GetOccupancyEvent() const
AliTPCROC * fROC
! ROC information
Int_t fCurrentSector
! current sector processed
virtual void Analyse()
const TVectorF * GetEventTimeStamps() const
TH1F * MakeHistL1PhaseDist()
AliTPCCalibRaw & operator=(const AliTPCCalibRaw &source)
UInt_t fNBinsTime
Number of bin in time.
UInt_t fNFailL1PhaseEvent
Number of events with L1 phase failures.
virtual void UpdateDDL()
const TVectorF * GetSignalSumEventSensitive() const
const TVectorF * GetOccupancyEventSensitive() const
void SetRangePeakDetection(Int_t minus, Int_t plus)
UInt_t GetNFailL1PhaseEvents() const
Int_t fNOkPlus
! number of processed time bins fullfilling peak criteria
TVectorF * MakeArrL1PhaseRCU(Int_t rcu, Bool_t force=kFALSE)
TVectorF fVSignalSumSenEvent
occupancy per event (sum of all adc values) in sensitive regions
Int_t fCurrentChannel
! current channel processed
TVectorF * MakeVectL1PhaseDist()
TVectorF * MakeArrL1PhaseFailRCU(Int_t rcu, Bool_t force=kFALSE)
THnSparseI * fHnDrift
Histogram last time bin vs. ROC, Time.
virtual ~AliTPCCalibRaw()
UInt_t GetFirstTimeStamp() const
TVectorF fVTimeStampEvent
timestamp for all events
TH2C * MakeHistL1RCUEventsOROC(Int_t type=0)
Bool_t fPadProcessed
! if last pead has already been filled for the current pad
TVectorF fArrFailEventNumber
event numbers of failed events;
TObjArray fArrALTROL1PhaseFailEvent
L1 failure for each RCU and event.
Int_t fPeakDetMinus
Consecutive timebins on rising edge to be regarded as a signal.
TVectorF fVNfiredPadsSenEvent
number of pads with a signal above threshold in sensitive regions
Int_t fNOkMinus
! number of processed time bins fullfilling peak criteria
virtual Int_t Update(const Int_t isector, const Int_t iRow, const Int_t iPad, const Int_t iTimeBin, const Float_t signal)
Int_t GetPeakDetectionMinus() const
TVectorF fVOccupancyEvent
occupancy per event (number of samples above threshold)
TCanvas * MakeCanvasOccupancy(const Int_t xType=1, Bool_t sen=kFALSE)
TVectorF fArrALTROL1Phase
Array of L1 phases on an event bases;.
Implementation of the TPC Raw drift velocity and Altro L1 Phase calibration.
const TVectorF * GetSignalSumEvent() const
TVectorF fVOccupancySenEvent
occupancy per event (number of samples abouve threshold) in sensitive regions