]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG1/TRD/AliTRDrecoTask.h
8d377bd5264ac1f2df8a3b925506c8ed7feeedfd
[u/mrichter/AliRoot.git] / PWG1 / TRD / AliTRDrecoTask.h
1 #ifndef ALITRDRECOTASK_H
2 #define ALITRDRECOTASK_H
3
4 ///////////////////////////////////////////////////////
5 //
6 // Basic class for Performance/Calibration TRD tasks
7 //
8 // Author: Alexandru Bercuci, 10/09/2008
9 //
10 //////////////////////////////////////////////////
11
12 #ifndef ALIANALYSISTASKSE_H
13 #include "AliAnalysisTaskSE.h"
14 #endif
15
16 #ifndef ALITRDTRACKINFO_H
17 #include "info/AliTRDtrackInfo.h"
18 #endif
19
20 class TH1;
21 class TF1;
22 class TList;
23 class TObjArray;
24 class TTreeSRedirector;
25 class AliTRDtrackV1;
26 class AliTRDtrackInfo;
27 class AliTRDrecoTask : public AliAnalysisTaskSE 
28 {
29 public:
30   enum AliTRDrecoSteeringBits{
31     kMCdata       = BIT(18)
32     ,kFriends     = BIT(19)
33     ,kPostProcess = BIT(20)
34   };
35   
36   AliTRDrecoTask();
37   AliTRDrecoTask(const char *name, const char *title);
38   virtual ~AliTRDrecoTask();
39   
40   
41   virtual void   UserCreateOutputObjects() = 0;
42   virtual void   UserExec(Option_t *opt);
43   virtual void   SetDebugLevel(Int_t level);
44   
45     
46   Int_t          GetNRefFigures() const  { return fNRefFigures; } 
47   const Char_t*  GetNameId() const       { return fNameId;}
48   TList*         GetPlotFunctors() const { return fPlotFuncList;}
49   virtual Bool_t GetRefFigure(Int_t ifig);
50   virtual void   MakeSummary();
51
52   Bool_t         HasFriends() const      { return TestBit(kFriends);};
53   Bool_t         HasMCdata() const       { return TestBit(kMCdata);};
54   Bool_t         HasPostProcess() const  { return TestBit(kPostProcess);};
55   virtual TObjArray* Histos()            { return fContainer;}
56
57   virtual Bool_t Load(const Char_t *file = "AnalysisResults.root", const Char_t *dir = "TRD_Performance");
58   virtual Bool_t Save(TObjArray * const res);
59   virtual Bool_t PostProcess();
60   virtual Bool_t PutTrendValue(const Char_t *name, Double_t val);
61   virtual void   SetFriends(Bool_t fr = kTRUE) {SetBit(kFriends, fr);}
62   virtual void   SetMCdata(Bool_t mc = kTRUE) {SetBit(kMCdata, mc);}
63   virtual void   SetNameId(const Char_t *nid) {sprintf(fNameId, "%s", nid);}
64   virtual void   SetPostProcess(Bool_t pp = kTRUE) {SetBit(kPostProcess, pp);}
65   virtual void   Terminate(Option_t *);
66
67 protected:
68   static TTreeSRedirector* DebugStream() { return fgDebugStream;}
69   void           InitFunctorList();
70   void           Adjust(TF1 *f, TH1 * const h);
71   Bool_t         HasFunctorList() const { return fPlotFuncList != NULL; }
72   Char_t    fNameId[10];   // unique identifier of task particularity
73   UChar_t   fNRefFigures;  // no of reference figures reported by task
74   TObjArray *fContainer;   //! container to store results
75   TObjArray *fTracks;      //! Array of tracks
76   const AliTRDtrackV1    *fkTrack;         //! current track
77   const AliTRDtrackInfo::AliMCinfo  *fkMC; //! MC info
78   const AliTRDtrackInfo::AliESDinfo *fkESD;//! ESD info
79
80 private:
81   AliTRDrecoTask(const AliTRDrecoTask&);
82   AliTRDrecoTask& operator=(const AliTRDrecoTask&);
83
84   TList             *fPlotFuncList;//! plot functors list
85   static TList      *fgTrendPoint;          //! trend point
86   static TTreeSRedirector *fgDebugStream;  //! Debug stream 
87
88   ClassDef(AliTRDrecoTask, 3) // base TRD reconstruction task
89 };
90
91 #endif
92