1 #ifndef ALITRDCLUSTERRESOLUTION_H
2 #define ALITRDCLUSTERRESOLUTION_H
4 ///////////////////////////////////////////////////////////////////////////////
6 // TRD cluster error parameterization
8 // Alexandru Bercuci <A.Bercuci@gsi.de> //
9 ////////////////////////////////////////////////////////////////////////////
11 #ifndef ALITRDRECOTASK_H
12 #include "AliTRDrecoTask.h"
18 class AliTRDclusterResolution : public AliTRDrecoTask
21 enum EAxisBinning { // bins in z and x direction
24 enum EResultContainer { // results container type
25 kCenter = 0 // cluster2center pad calibration
26 ,kQRes = 1 // resolution on charge dependence
27 ,kSigm = 2 // sigma cluster as func of x and z
28 ,kMean = 3 // shift cluster as func of x and z
29 ,kNtasks = 4 // total number os sub tasks
32 kSaveAs = BIT(22) // save intermediary results
33 ,kCalibrated = BIT(23) // load calibration
35 AliTRDclusterResolution();
36 AliTRDclusterResolution(const char *name);
37 virtual ~AliTRDclusterResolution();
39 void UserCreateOutputObjects();
40 void UserExec(Option_t *);
41 Int_t GetDetector() const { return fDet; }
42 void GetPad(Int_t &c, Int_t &r) const { c=fCol, r=fRow; return;}
43 inline Float_t GetExB() const;
44 inline Float_t GetVdrift() const;
45 inline Float_t GetT0() const;
46 inline Float_t GetGain() const;
47 Float_t GetDyRange() const {return fDyRange;}
48 Bool_t GetRefFigure(Int_t ifig);
49 Bool_t HasProcess(EResultContainer bit) const {return TESTBIT(fStatus, bit);}
50 Bool_t IsCalibrated() const { return TestBit(kCalibrated);}
53 TObjArray* Results() const {return fResults;};
55 Bool_t IsVisual() const {return Bool_t(fCanvas);}
56 Bool_t IsSaveAs() const {return TestBit(kSaveAs);}
59 void SetCalibrationRegion(Int_t det, Int_t col=-1, Int_t row=-1);
61 void SetDyRange(Float_t dy) {if(dy>0) fDyRange = dy;}
62 void SetProcess(EResultContainer bit, Bool_t v = kTRUE) {v ? SETBIT(fStatus, bit) : CLRBIT(fStatus, bit);}
63 void SetSaveAs(Bool_t v = kTRUE) {SetBit(kSaveAs, v);}
64 inline void ResetProcesses();
68 void ProcessCenterPad();
73 AliTRDclusterResolution(const AliTRDclusterResolution&);
74 AliTRDclusterResolution& operator=(const AliTRDclusterResolution&);
75 Bool_t LoadCalibration();
77 TCanvas *fCanvas; //! visualization canvas
78 TObjArray *fInfo; //! list of cluster info
79 TObjArray *fResults;// list of result graphs/histos/trees
80 UChar_t fStatus; // steer parameter of the task
81 Short_t fDet; // detector (-1 for all)
82 Char_t fCol; // pad column (-1 for all)
83 Char_t fRow; // pad row (-1 for all)
84 Float_t fExB; // tg of the Lorentz angle
85 Float_t fVdrift; // mean drift velocity
86 Float_t fT0; // time 0
87 Float_t fGain; // gain
88 static const Float_t fgkTimeBinLength;// time bin length (invers of sampling frequency)
90 // working named variables
91 Float_t fDyRange; // min/max dy
92 UChar_t fLy; // TRD plane
93 Float_t fT; // calibrated time
94 Float_t fX; // local drift length
95 Float_t fY; // local rphi offset
96 Float_t fZ; // local anode wire offset
97 Float_t fR[4]; // mean/sgm resolution
98 Float_t fP[4]; // mean/sgm pulls
100 ClassDef(AliTRDclusterResolution, 4) // cluster resolution
103 //___________________________________________________
104 inline Float_t AliTRDclusterResolution::GetExB() const
106 if(!IsCalibrated()) AliWarning("Instance not calibrated.");
110 //___________________________________________________
111 inline Float_t AliTRDclusterResolution::GetVdrift() const
113 if(!IsCalibrated()) AliWarning("Instance not calibrated.");
117 //___________________________________________________
118 inline Float_t AliTRDclusterResolution::GetT0() const
120 if(!IsCalibrated()) AliWarning("Instance not calibrated.");
124 //___________________________________________________
125 inline Float_t AliTRDclusterResolution::GetGain() const
127 if(!IsCalibrated()) AliWarning("Instance not calibrated.");
131 //___________________________________________________
132 inline void AliTRDclusterResolution::ResetProcesses()
134 CLRBIT(fStatus, kQRes);
135 CLRBIT(fStatus, kCenter);
136 CLRBIT(fStatus, kSigm);
137 CLRBIT(fStatus, kMean);