add cluster monitoring from RecPoints
[u/mrichter/AliRoot.git] / PWG1 / TRD / AliTRDrecoTask.h
1 #ifndef ALITRDRECOTASK_H\r
2 #define ALITRDRECOTASK_H\r
3 \r
4 ///////////////////////////////////////////////////////\r
5 //\r
6 // Basic class for Performance/Calibration TRD tasks\r
7 //\r
8 // Author: Alexandru Bercuci, 10/09/2008\r
9 //\r
10 //////////////////////////////////////////////////\r
11 \r
12 #ifndef ALIANALYSISTASKSE_H\r
13 #include "AliAnalysisTaskSE.h"\r
14 #endif\r
15 \r
16 #ifndef ALITRDTRACKINFO_H\r
17 #include "info/AliTRDtrackInfo.h"\r
18 #endif\r
19 \r
20 #ifndef ALITRDEVENTINFO_H\r
21 #include "info/AliTRDeventInfo.h"\r
22 #endif\r
23 \r
24 class TH1;\r
25 class TF1;\r
26 class TList;\r
27 class TObjArray;\r
28 class TTreeSRedirector;\r
29 class AliTRDtrackV1;\r
30 \r
31 class AliTRDrecoTask : public AliAnalysisTaskSE \r
32 {\r
33 public:\r
34   enum AliTRDrecoSteeringBits{\r
35     kMCdata       = BIT(18)\r
36     ,kFriends     = BIT(19)\r
37     ,kPostProcess = BIT(20)\r
38     ,kHeavyIon     = BIT(21)\r
39   };\r
40   \r
41   AliTRDrecoTask();\r
42   AliTRDrecoTask(const char *name, const char *title);\r
43   virtual ~AliTRDrecoTask();\r
44   \r
45   \r
46   virtual void   UserCreateOutputObjects();\r
47   virtual void   UserExec(Option_t *opt);\r
48   virtual void   SetDebugLevel(Int_t level);\r
49   \r
50     \r
51   Int_t          GetNRefFigures() const; \r
52   const Char_t*  GetNameId() const       { return fNameId;}\r
53   TList*         GetPlotFunctors() const { return fPlotFuncList;}\r
54   virtual Bool_t GetRefFigure(Int_t ifig);\r
55   virtual void   MakeSummary();\r
56   void           MakeDetectorPlot(Int_t ly=0);\r
57   Bool_t         IsHeavyIon() const      { return TestBit(kHeavyIon);};\r
58   Bool_t         IsPP() const            { return !TestBit(kHeavyIon);};\r
59   Bool_t         HasFriends() const      { return TestBit(kFriends);};\r
60   Bool_t         HasMCdata() const       { return TestBit(kMCdata);};\r
61   Bool_t         HasPostProcess() const  { return TestBit(kPostProcess);};\r
62   Bool_t         HasRunTerminate() const { return fRunTerminate; }\r
63   virtual TObjArray* Histos()            { return fContainer;}\r
64 \r
65   virtual Bool_t Load(const Char_t *file = "AnalysisResults.root", const Char_t *dir = "TRD_Performance");\r
66   virtual Bool_t LoadDetectorMap(const Char_t *file = "AnalysisResults.root", const Char_t *dir = "TRD_Performance");\r
67   virtual Bool_t Save(TObjArray * const res);\r
68   virtual Bool_t PostProcess();\r
69   virtual Bool_t PutTrendValue(const Char_t *name, Double_t val);\r
70   virtual void   SetFriends(Bool_t fr = kTRUE) {SetBit(kFriends, fr);}\r
71   virtual void   SetMCdata(Bool_t mc = kTRUE) {SetBit(kMCdata, mc);}\r
72   virtual void   SetNameId(const Char_t *nid) {snprintf(fNameId, 10, "%s", nid);}\r
73   virtual void   SetPostProcess(Bool_t pp = kTRUE) {SetBit(kPostProcess, pp);}\r
74   void SetRunTerminate(Bool_t runTerminate = kTRUE) { fRunTerminate = runTerminate; }\r
75   virtual void   Terminate(Option_t *);\r
76 \r
77 protected:\r
78   static TTreeSRedirector* DebugStream() { return fgDebugStream;}\r
79   void           InitFunctorList();\r
80   void           Adjust(TF1 *f, TH1 * const h);\r
81   Bool_t         HasFunctorList() const { return fPlotFuncList != NULL; }\r
82   Char_t                fNameId[10];       // unique identifier of task particularity\r
83   UChar_t               fNRefFigures;      // no of reference figures reported by task\r
84   TObjArray             *fDets;            //! container to store detector position and status\r
85   TObjArray             *fContainer;       //! container to store results\r
86   AliTRDeventInfo       *fEvent;           //! Event Info\r
87   TObjArray             *fTracks;          //! Array of tracks\r
88   TObjArray             *fClusters;        //! Array of clusters\r
89   const TObjArray       *fkClusters;       //! current detector clusters array\r
90   const AliTRDtrackV1   *fkTrack;          //! current track\r
91   const AliTRDtrackInfo::AliMCinfo  *fkMC; //! MC info\r
92   const AliTRDtrackInfo::AliESDinfo *fkESD;//! ESD info\r
93   Char_t                 fSpecies;         //! species index +1 with charge sign\r
94   Float_t                fPt;              //! p_t of the track being analyzed\r
95   Float_t                fPhi;             //! phi of the track being analyzed\r
96   Float_t                fEta;             //! eta of the track being analyzed\r
97 \r
98 private:\r
99   AliTRDrecoTask(const AliTRDrecoTask&);\r
100   AliTRDrecoTask& operator=(const AliTRDrecoTask&);\r
101 \r
102   TList             *fPlotFuncList;        //! track functors list\r
103   TList             *fDetFuncList;         //! detector functors list\r
104   Bool_t            fRunTerminate;         // Switch for Terminate Function\r
105   static TList      *fgTrendPoint;         //! trend point\r
106   static TTreeSRedirector *fgDebugStream;  //! Debug stream\r
107 \r
108   ClassDef(AliTRDrecoTask, 5) // base TRD reconstruction task\r
109 };\r
110 \r
111 #endif\r
112 \r