]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TRD/qaRec/AliTRDclusterResolution.h
Major update for the TRD tracking code
[u/mrichter/AliRoot.git] / TRD / qaRec / AliTRDclusterResolution.h
1 #ifndef ALITRDCLUSTERRESOLUTION_H
2 #define ALITRDCLUSTERRESOLUTION_H
3
4
5 #ifndef ALITRDRECOTASK_H
6 #include "AliTRDrecoTask.h"
7 #endif
8
9 class TCanvas;
10 class TObjArray;
11 class TAxis;
12 class AliTRDclusterResolution : public AliTRDrecoTask
13 {
14 public:
15   enum EAxisBinning { // bins in z and x direction
16     kNTB = 25
17     ,kND = 5
18     ,kN  = kND*kNTB
19   };
20   enum EResultContainer { // results container type
21     kQRes   = 0
22     ,kCenter= 1
23     ,kSigm  = 2
24     ,kMean  = 3
25   };
26   enum ECheckBits { // force setting the ExB
27     kExB       = BIT(23)
28   };
29   enum ESteeringBits { // steering bits for task
30     kSaveAs         = 0
31     ,kProcCharge    = 1
32     ,kProcCenterPad = 2
33     ,kProcSigma     = 3
34     ,kProcMean      = 4
35   };
36   AliTRDclusterResolution(const char *name="ClErrParam");
37   virtual ~AliTRDclusterResolution();
38
39   void    ConnectInputData(Option_t *);
40   void    CreateOutputObjects();
41   void    Exec(Option_t *);
42   Int_t   GetDetector() const { return fDet; }
43   inline Float_t GetExB() const;
44   inline Float_t GetVdrift() const;
45   Bool_t  GetRefFigure(Int_t ifig);
46   Bool_t  HasProcessCharge() const {return TESTBIT(fStatus, kProcCharge);}
47   Bool_t  HasProcessCenterPad() const {return TESTBIT(fStatus, kProcCenterPad);}
48   Bool_t  HasExB() const { return TestBit(kExB);}
49   Bool_t  HasProcessMean() const {return TESTBIT(fStatus, kProcMean);}
50   Bool_t  HasProcessSigma() const {return TESTBIT(fStatus, kProcSigma);}
51
52   TObjArray*  Histos(); 
53
54   Bool_t  IsVisual() const {return Bool_t(fCanvas);}
55   Bool_t  IsSaveAs() const {return TESTBIT(fStatus, kSaveAs);}
56
57   Bool_t  PostProcess();
58   Bool_t  SetExB(Int_t det=-1, Int_t c = 70, Int_t r = 7);
59   void    SetVisual();
60   void    SetProcessCharge(Bool_t v = kTRUE) {v ? SETBIT(fStatus, kProcCharge) : CLRBIT(fStatus, kProcCharge);}
61   void    SetProcessCenterPad(Bool_t v = kTRUE) {v ? SETBIT(fStatus, kProcCenterPad) : CLRBIT(fStatus, kProcCenterPad);}
62   void    SetProcessMean(Bool_t v = kTRUE) {v ? SETBIT(fStatus, kProcMean) : CLRBIT(fStatus, kProcMean);}
63   void    SetProcessSigma(Bool_t v = kTRUE) {v ? SETBIT(fStatus, kProcSigma) : CLRBIT(fStatus, kProcSigma);}
64   void    SetSaveAs(Bool_t v = kTRUE) {v ? SETBIT(fStatus, kSaveAs) : CLRBIT(fStatus, kSaveAs);}
65
66   void    Terminate(Option_t *){};
67
68 protected:
69   void    ProcessCharge();
70   void    ProcessCenterPad();
71   void    ProcessSigma();
72   void    ProcessMean();
73
74 private:
75   AliTRDclusterResolution(const AliTRDclusterResolution&);  
76   AliTRDclusterResolution& operator=(const AliTRDclusterResolution&);
77
78   TCanvas    *fCanvas; //! visualization canvas 
79   TObjArray  *fInfo;   //! list of cluster info
80   TObjArray  *fResults;// list of result graphs/histos
81   TAxis      *fAt;     //! binning in the x(radial) direction (time)
82   TAxis      *fAd;     //! binning in the z direction (drift cell)
83   UChar_t    fStatus;  // steer parameter of the task
84   Short_t    fDet;     // detector (-1 for all)
85   Float_t    fExB;     // tg of the Lorentz angle
86   Float_t    fVdrift;  // mean drift velocity
87
88   ClassDef(AliTRDclusterResolution, 1)  // cluster resolution
89 };
90
91 //___________________________________________________
92 inline Float_t AliTRDclusterResolution::GetExB() const
93
94   if(!HasExB()){
95     printf("WARNING :: ExB was not set. Use B=0.\n");
96   }
97   return fExB;
98 }
99
100 //___________________________________________________
101 inline Float_t AliTRDclusterResolution::GetVdrift() const
102
103   if(!HasExB()){
104     printf("WARNING :: ExB was not set. Use B=0.\n");
105   }
106   return fVdrift;
107 }
108 #endif
109