]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG1/TRD/AliTRDclusterResolution.h
General macro for QA checks
[u/mrichter/AliRoot.git] / PWG1 / TRD / AliTRDclusterResolution.h
CommitLineData
1ee39b3a 1#ifndef ALITRDCLUSTERRESOLUTION_H
2#define ALITRDCLUSTERRESOLUTION_H
3
4///////////////////////////////////////////////////////////////////////////////
5// //
6// TRD cluster error parameterization
7// Authors: //
8// Alexandru Bercuci <A.Bercuci@gsi.de> //
9////////////////////////////////////////////////////////////////////////////
10
11#ifndef ALITRDRECOTASK_H
12#include "AliTRDrecoTask.h"
13#endif
14
15class TCanvas;
16class TObjArray;
1ee39b3a 17class AliTRDclusterResolution : public AliTRDrecoTask
18{
19public:
20 enum EAxisBinning { // bins in z and x direction
56f313bd 21 kND = 1
1ee39b3a 22 };
23 enum EResultContainer { // results container type
ebc01dc0 24 kYSys = 0 // cluster2center pad calibration
25 ,kYRes = 1 // resolution on charge dependence
1ee39b3a 26 ,kSigm = 2 // sigma cluster as func of x and z
27 ,kMean = 3 // shift cluster as func of x and z
56f313bd 28 ,kNtasks = 4 // total number of subtasks
1ee39b3a 29 };
56f313bd 30 enum ECalibrationParam { // calibration parameters to be used from OCDB
31 kVdrift = 0
32 ,kT0 = 1
33 ,kGain = 2
34 };
35 enum ECheckBits {
5468a262 36 kSaveAs = BIT(21) // save intermediary results
37 ,kCalibrated = BIT(22) // load calibration
38 ,kGlobal = BIT(23) // load global position
1ee39b3a 39 };
f8f46e4d 40 AliTRDclusterResolution();
705f8b0a 41 AliTRDclusterResolution(const char *name);
1ee39b3a 42 virtual ~AliTRDclusterResolution();
43
f8f46e4d 44 void UserCreateOutputObjects();
45 void UserExec(Option_t *);
1ee39b3a 46 Int_t GetDetector() const { return fDet; }
801d4d50 47 void GetPad(Int_t &c, Int_t &r) const { c=fCol, r=fRow; return;}
bce4b27e 48 inline void GetDiffCoeff(Float_t &dt, Float_t &dl) const;
1ee39b3a 49 inline Float_t GetExB() const;
50 inline Float_t GetVdrift() const;
801d4d50 51 inline Float_t GetT0() const;
e3147647 52 inline Float_t GetGain() const;
563d1b38 53 Float_t GetDyRange() const {return fDyRange;}
1ee39b3a 54 Bool_t GetRefFigure(Int_t ifig);
56f313bd 55 Bool_t HasProcess(EResultContainer bit) const {return TESTBIT(fSubTaskMap, bit);}
e3147647 56 Bool_t IsCalibrated() const { return TestBit(kCalibrated);}
5468a262 57 Bool_t HasGlobalPosition() const { return TestBit(kGlobal);}
56f313bd 58 Bool_t IsUsingCalibParam(ECalibrationParam par) const {return TESTBIT(fUseCalib, par);}
1ee39b3a 59
60 TObjArray* Histos();
61 TObjArray* Results() const {return fResults;};
62
63 Bool_t IsVisual() const {return Bool_t(fCanvas);}
64 Bool_t IsSaveAs() const {return TestBit(kSaveAs);}
65
5468a262 66 Bool_t LoadCalibration();
67 Bool_t LoadGlobalChamberPosition();
1ee39b3a 68 Bool_t PostProcess();
801d4d50 69 void SetCalibrationRegion(Int_t det, Int_t col=-1, Int_t row=-1);
1ee39b3a 70 void SetVisual();
563d1b38 71 void SetDyRange(Float_t dy) {if(dy>0) fDyRange = dy;}
56f313bd 72 void SetProcess(EResultContainer bit, Bool_t v = kTRUE) {v ? SETBIT(fSubTaskMap, bit) : CLRBIT(fSubTaskMap, bit);}
1ee39b3a 73 void SetSaveAs(Bool_t v = kTRUE) {SetBit(kSaveAs, v);}
56f313bd 74 void SetUseCalibParam(ECalibrationParam par, Bool_t v = kTRUE) {v ? SETBIT(fUseCalib, par) : CLRBIT(fUseCalib, par);}
5935a6da 75 inline void ResetProcesses();
1ee39b3a 76
77protected:
78 void ProcessCharge();
380fdeeb 79 Bool_t ProcessNormalTracks();
1ee39b3a 80 void ProcessSigma();
81 void ProcessMean();
82
83private:
84 AliTRDclusterResolution(const AliTRDclusterResolution&);
85 AliTRDclusterResolution& operator=(const AliTRDclusterResolution&);
86
87 TCanvas *fCanvas; //! visualization canvas
88 TObjArray *fInfo; //! list of cluster info
5935a6da 89 TObjArray *fResults;// list of result graphs/histos/trees
56f313bd 90 UChar_t fSubTaskMap; // steer map for subtasks
91 UChar_t fUseCalib; // steer map for calibration params
1ee39b3a 92 Short_t fDet; // detector (-1 for all)
801d4d50 93 Char_t fCol; // pad column (-1 for all)
94 Char_t fRow; // pad row (-1 for all)
1ee39b3a 95 Float_t fExB; // tg of the Lorentz angle
bce4b27e 96 Float_t fDt; // diffusion coeff. transversal
97 Float_t fDl; // diffusion coeff. longitudinal
1ee39b3a 98 Float_t fVdrift; // mean drift velocity
5935a6da 99 Float_t fT0; // time 0
e3147647 100 Float_t fGain; // gain
5468a262 101 Float_t fXch; // anode wire position for chamber
102 Float_t fZch; // Z position for calibration element
103 Float_t fH; // tg of tilting angle
1ee39b3a 104 static const Float_t fgkTimeBinLength;// time bin length (invers of sampling frequency)
105
106 // working named variables
563d1b38 107 Float_t fDyRange; // min/max dy
5935a6da 108 UChar_t fLy; // TRD plane
109 Float_t fT; // calibrated time
110 Float_t fX; // local drift length
111 Float_t fY; // local rphi offset
112 Float_t fZ; // local anode wire offset
113 Float_t fR[4]; // mean/sgm resolution
114 Float_t fP[4]; // mean/sgm pulls
1ee39b3a 115
bce4b27e 116 ClassDef(AliTRDclusterResolution, 6) // cluster resolution
1ee39b3a 117};
118
bce4b27e 119//___________________________________________________
120inline void AliTRDclusterResolution::GetDiffCoeff(Float_t &dt, Float_t &dl) const
121{
3ecd3327 122 if(!IsCalibrated()) printf(" - W - AliTRDclusterResolution::GetDiffCoeff() : Instance not calibrated.\n");
bce4b27e 123 dt=fDt; dl=fDl;
124 return;
125}
126
127
1ee39b3a 128//___________________________________________________
129inline Float_t AliTRDclusterResolution::GetExB() const
130{
3ecd3327 131 if(!IsCalibrated()) printf(" - W - AliTRDclusterResolution::GetExB() : Instance not calibrated.\n");
1ee39b3a 132 return fExB;
133}
134
135//___________________________________________________
136inline Float_t AliTRDclusterResolution::GetVdrift() const
137{
3ecd3327 138 if(!IsCalibrated()) printf(" - W - AliTRDclusterResolution::GetVdrift() : Instance not calibrated.\n");
1ee39b3a 139 return fVdrift;
140}
141
801d4d50 142//___________________________________________________
143inline Float_t AliTRDclusterResolution::GetT0() const
e3147647 144{
3ecd3327 145 if(!IsCalibrated()) printf(" - W - AliTRDclusterResolution::GetT0() : Instance not calibrated.\n");
801d4d50 146 return fT0;
147}
148
e3147647 149//___________________________________________________
150inline Float_t AliTRDclusterResolution::GetGain() const
151{
3ecd3327 152 if(!IsCalibrated()) printf(" - W - AliTRDclusterResolution::GetGain() : Instance not calibrated.\n");
e3147647 153 return fGain;
154}
155
1ee39b3a 156//___________________________________________________
5935a6da 157inline void AliTRDclusterResolution::ResetProcesses()
1ee39b3a 158{
ebc01dc0 159 CLRBIT(fSubTaskMap, kYRes);
160 CLRBIT(fSubTaskMap, kYSys);
56f313bd 161 CLRBIT(fSubTaskMap, kSigm);
162 CLRBIT(fSubTaskMap, kMean);
1ee39b3a 163}
164
165#endif
166