]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG1/TRD/AliTRDclusterResolution.h
move OCDB manipulation from local train (run.C) to the task level
[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
5935a6da 21 kND = 25
1ee39b3a 22 };
23 enum EResultContainer { // results container type
24 kCenter = 0 // cluster2center pad calibration
25 ,kQRes = 1 // resolution on charge dependence
26 ,kSigm = 2 // sigma cluster as func of x and z
27 ,kMean = 3 // shift cluster as func of x and z
28 ,kNtasks = 4 // total number os sub tasks
29 };
30 enum ECheckBits { // force setting the ExB
31 kSaveAs = BIT(22)
32 ,kExB = BIT(23)
33 };
f8f46e4d 34 AliTRDclusterResolution();
705f8b0a 35 AliTRDclusterResolution(const char *name);
1ee39b3a 36 virtual ~AliTRDclusterResolution();
37
f8f46e4d 38 void UserCreateOutputObjects();
39 void UserExec(Option_t *);
1ee39b3a 40 Int_t GetDetector() const { return fDet; }
801d4d50 41 void GetPad(Int_t &c, Int_t &r) const { c=fCol, r=fRow; return;}
1ee39b3a 42 inline Float_t GetExB() const;
43 inline Float_t GetVdrift() const;
801d4d50 44 inline Float_t GetT0() const;
1ee39b3a 45 Bool_t GetRefFigure(Int_t ifig);
46 Bool_t HasProcess(EResultContainer bit) const {return TESTBIT(fStatus, bit);}
47 Bool_t HasExB() const { return TestBit(kExB);}
48
49 TObjArray* Histos();
50 TObjArray* Results() const {return fResults;};
51
52 Bool_t IsVisual() const {return Bool_t(fCanvas);}
53 Bool_t IsSaveAs() const {return TestBit(kSaveAs);}
54
55 Bool_t PostProcess();
801d4d50 56 void SetCalibrationRegion(Int_t det, Int_t col=-1, Int_t row=-1);
1ee39b3a 57 void SetVisual();
58 void SetProcess(EResultContainer bit, Bool_t v = kTRUE) {v ? SETBIT(fStatus, bit) : CLRBIT(fStatus, bit);}
59 void SetSaveAs(Bool_t v = kTRUE) {SetBit(kSaveAs, v);}
5935a6da 60 inline void ResetProcesses();
1ee39b3a 61
62protected:
63 void ProcessCharge();
64 void ProcessCenterPad();
65 void ProcessSigma();
66 void ProcessMean();
67
68private:
69 AliTRDclusterResolution(const AliTRDclusterResolution&);
70 AliTRDclusterResolution& operator=(const AliTRDclusterResolution&);
801d4d50 71 Bool_t SetExB();
1ee39b3a 72
73 TCanvas *fCanvas; //! visualization canvas
74 TObjArray *fInfo; //! list of cluster info
5935a6da 75 TObjArray *fResults;// list of result graphs/histos/trees
1ee39b3a 76 UChar_t fStatus; // steer parameter of the task
77 Short_t fDet; // detector (-1 for all)
801d4d50 78 Char_t fCol; // pad column (-1 for all)
79 Char_t fRow; // pad row (-1 for all)
1ee39b3a 80 Float_t fExB; // tg of the Lorentz angle
81 Float_t fVdrift; // mean drift velocity
5935a6da 82 Float_t fT0; // time 0
1ee39b3a 83 static const Float_t fgkTimeBinLength;// time bin length (invers of sampling frequency)
84
85 // working named variables
5935a6da 86 UChar_t fLy; // TRD plane
87 Float_t fT; // calibrated time
88 Float_t fX; // local drift length
89 Float_t fY; // local rphi offset
90 Float_t fZ; // local anode wire offset
91 Float_t fR[4]; // mean/sgm resolution
92 Float_t fP[4]; // mean/sgm pulls
1ee39b3a 93
94 ClassDef(AliTRDclusterResolution, 3) // cluster resolution
95};
96
97//___________________________________________________
98inline Float_t AliTRDclusterResolution::GetExB() const
99{
100 if(!HasExB()){
101 printf("WARNING :: ExB was not set. Use B=0.\n");
102 }
103 return fExB;
104}
105
106//___________________________________________________
107inline Float_t AliTRDclusterResolution::GetVdrift() const
108{
109 if(!HasExB()){
110 printf("WARNING :: ExB was not set. Use B=0.\n");
111 }
112 return fVdrift;
113}
114
801d4d50 115//___________________________________________________
116inline Float_t AliTRDclusterResolution::GetT0() const
117{
118 if(!HasExB()){
119 printf("WARNING :: ExB was not set. Use B=0.\n");
120 }
121 return fT0;
122}
123
1ee39b3a 124//___________________________________________________
5935a6da 125inline void AliTRDclusterResolution::ResetProcesses()
1ee39b3a 126{
127 CLRBIT(fStatus, kQRes);
128 CLRBIT(fStatus, kCenter);
129 CLRBIT(fStatus, kSigm);
130 CLRBIT(fStatus, kMean);
131}
132
133#endif
134