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
26 enum EResultContainer { // results container type
27 kCenter = 0 // cluster2center pad calibration
28 ,kQRes = 1 // resolution on charge dependence
29 ,kSigm = 2 // sigma cluster as func of x and z
30 ,kMean = 3 // shift cluster as func of x and z
31 ,kNtasks = 4 // total number os sub tasks
33 enum ECheckBits { // force setting the ExB
37 AliTRDclusterResolution();
38 AliTRDclusterResolution(const char *name);
39 virtual ~AliTRDclusterResolution();
41 void ConnectInputData(Option_t *);
42 void UserCreateOutputObjects();
43 void UserExec(Option_t *);
44 Int_t GetDetector() const { return fDet; }
45 inline Float_t GetExB() const;
46 inline Float_t GetVdrift() const;
47 Bool_t GetRefFigure(Int_t ifig);
48 Bool_t HasProcess(EResultContainer bit) const {return TESTBIT(fStatus, bit);}
49 Bool_t HasExB() const { return TestBit(kExB);}
52 TObjArray* Results() const {return fResults;};
54 Bool_t IsVisual() const {return Bool_t(fCanvas);}
55 Bool_t IsSaveAs() const {return TestBit(kSaveAs);}
58 Bool_t SetExB(Int_t det=-1, Int_t c = 70, Int_t r = 7);
60 void SetProcess(EResultContainer bit, Bool_t v = kTRUE) {v ? SETBIT(fStatus, bit) : CLRBIT(fStatus, bit);}
61 void SetSaveAs(Bool_t v = kTRUE) {SetBit(kSaveAs, v);}
62 inline void ResetProcess();
66 void ProcessCenterPad();
71 AliTRDclusterResolution(const AliTRDclusterResolution&);
72 AliTRDclusterResolution& operator=(const AliTRDclusterResolution&);
74 TCanvas *fCanvas; //! visualization canvas
75 TObjArray *fInfo; //! list of cluster info
76 TObjArray *fResults;// list of result graphs/histos
77 TAxis *fAt; //! binning in the x(radial) direction (time)
78 UChar_t fStatus; // steer parameter of the task
79 Short_t fDet; // detector (-1 for all)
80 Float_t fExB; // tg of the Lorentz angle
81 Float_t fVdrift; // mean drift velocity
82 static const Float_t fgkTimeBinLength;// time bin length (invers of sampling frequency)
84 // working named variables
85 UChar_t fLy; //! TRD plane
86 Float_t fX; //! local drift length
87 Float_t fY; //! local rphi offset
88 Float_t fZ; //! local anode wire offset
89 Float_t fR[4]; //! mean/sgm resolution
90 Float_t fP[4]; //! mean/sgm pulls
92 ClassDef(AliTRDclusterResolution, 3) // cluster resolution
95 //___________________________________________________
96 inline Float_t AliTRDclusterResolution::GetExB() const
99 printf("WARNING :: ExB was not set. Use B=0.\n");
104 //___________________________________________________
105 inline Float_t AliTRDclusterResolution::GetVdrift() const
108 printf("WARNING :: ExB was not set. Use B=0.\n");
113 //___________________________________________________
114 inline void AliTRDclusterResolution::ResetProcess()
116 CLRBIT(fStatus, kQRes);
117 CLRBIT(fStatus, kCenter);
118 CLRBIT(fStatus, kSigm);
119 CLRBIT(fStatus, kMean);