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"
17 class AliTRDclusterResolution : public AliTRDrecoTask
20 enum EAxisBinning { // bins in z and x direction
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
30 enum ECheckBits { // force setting the ExB
34 AliTRDclusterResolution();
35 AliTRDclusterResolution(const char *name);
36 virtual ~AliTRDclusterResolution();
38 void UserCreateOutputObjects();
39 void UserExec(Option_t *);
40 Int_t GetDetector() const { return fDet; }
41 inline Float_t GetExB() const;
42 inline Float_t GetVdrift() const;
43 Bool_t GetRefFigure(Int_t ifig);
44 Bool_t HasProcess(EResultContainer bit) const {return TESTBIT(fStatus, bit);}
45 Bool_t HasExB() const { return TestBit(kExB);}
48 TObjArray* Results() const {return fResults;};
50 Bool_t IsVisual() const {return Bool_t(fCanvas);}
51 Bool_t IsSaveAs() const {return TestBit(kSaveAs);}
54 Bool_t SetExB(Int_t det=-1, Int_t c = 70, Int_t r = 7);
56 void SetProcess(EResultContainer bit, Bool_t v = kTRUE) {v ? SETBIT(fStatus, bit) : CLRBIT(fStatus, bit);}
57 void SetSaveAs(Bool_t v = kTRUE) {SetBit(kSaveAs, v);}
58 inline void ResetProcesses();
62 void ProcessCenterPad();
67 AliTRDclusterResolution(const AliTRDclusterResolution&);
68 AliTRDclusterResolution& operator=(const AliTRDclusterResolution&);
70 TCanvas *fCanvas; //! visualization canvas
71 TObjArray *fInfo; //! list of cluster info
72 TObjArray *fResults;// list of result graphs/histos/trees
73 UChar_t fStatus; // steer parameter of the task
74 Short_t fDet; // detector (-1 for all)
75 Float_t fExB; // tg of the Lorentz angle
76 Float_t fVdrift; // mean drift velocity
77 Float_t fT0; // time 0
78 static const Float_t fgkTimeBinLength;// time bin length (invers of sampling frequency)
80 // working named variables
81 UChar_t fLy; // TRD plane
82 Float_t fT; // calibrated time
83 Float_t fX; // local drift length
84 Float_t fY; // local rphi offset
85 Float_t fZ; // local anode wire offset
86 Float_t fR[4]; // mean/sgm resolution
87 Float_t fP[4]; // mean/sgm pulls
89 ClassDef(AliTRDclusterResolution, 3) // cluster resolution
92 //___________________________________________________
93 inline Float_t AliTRDclusterResolution::GetExB() const
96 printf("WARNING :: ExB was not set. Use B=0.\n");
101 //___________________________________________________
102 inline Float_t AliTRDclusterResolution::GetVdrift() const
105 printf("WARNING :: ExB was not set. Use B=0.\n");
110 //___________________________________________________
111 inline void AliTRDclusterResolution::ResetProcesses()
113 CLRBIT(fStatus, kQRes);
114 CLRBIT(fStatus, kCenter);
115 CLRBIT(fStatus, kSigm);
116 CLRBIT(fStatus, kMean);