]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG1/TRD/AliTRDrecoTask.h
Streamlining with the analyis framework:
[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 #include "AliAnalysisTaskSE.h"
13
14 #ifndef ALITRDTRACKINFO_H
15 #include "info/AliTRDtrackInfo.h"
16 #endif
17
18 class TH1;
19 class TF1;
20 class TList;
21 class TObjArray;
22 class TTreeSRedirector;
23 class AliTRDtrackV1;
24 class AliTRDtrackInfo;
25 class AliTRDrecoTask : public AliAnalysisTaskSE 
26 {
27 public:
28   enum AliTRDrecoSteeringBits{
29     kMCdata       = BIT(18)
30     ,kFriends     = BIT(19)
31     ,kPostProcess = BIT(20)
32   };
33   
34   AliTRDrecoTask();
35   AliTRDrecoTask(const char *name, const char *title);
36   virtual ~AliTRDrecoTask();
37   
38   
39   virtual void   UserCreateOutputObjects() = 0;
40   virtual void   UserExec(Option_t *opt);
41   virtual void   ConnectInputData(Option_t *);
42   virtual void   SetDebugLevel(Int_t level);
43   
44     
45   Int_t          GetNRefFigures() const  { return fNRefFigures; } 
46   TList*         GetPlotFunctors() const { return fPlotFuncList;}
47   virtual Bool_t GetRefFigure(Int_t ifig);
48
49   Bool_t         HasFriends() const      { return TestBit(kFriends);};
50   Bool_t         HasMCdata() const       { return TestBit(kMCdata);};
51   Bool_t         HasPostProcess() const  { return TestBit(kPostProcess);};
52   virtual TObjArray* Histos()            { return fContainer;}
53
54   virtual Bool_t Load(const Char_t *filename = "TRD.Performance.root");
55   virtual Bool_t Save(TObjArray * const res);
56   virtual Bool_t PostProcess();
57   virtual Bool_t PutTrendValue(const Char_t *name, Double_t val);
58   virtual void   SetFriends(Bool_t fr = kTRUE) {SetBit(kFriends, fr);}
59   virtual void   SetMCdata(Bool_t mc = kTRUE) {SetBit(kMCdata, mc);}
60   virtual void   SetPostProcess(Bool_t pp = kTRUE) {SetBit(kPostProcess, pp);}
61   virtual void   Terminate(Option_t *);
62
63 protected:
64   static TTreeSRedirector* DebugStream() { return fgDebugStream;}
65   void           InitFunctorList();
66   void           Adjust(TF1 *f, TH1 * const h);
67
68   UChar_t   fNRefFigures;  //! no of reference figures reported by task
69   TObjArray *fContainer;   //! container to store results
70   TObjArray *fTracks;      //! Array of tracks
71   const AliTRDtrackV1    *fkTrack;         //! current track
72   const AliTRDtrackInfo::AliMCinfo  *fkMC; //! MC info
73   const AliTRDtrackInfo::AliESDinfo *fkESD;//! ESD info
74
75 private:
76   AliTRDrecoTask(const AliTRDrecoTask&);
77   AliTRDrecoTask& operator=(const AliTRDrecoTask&);
78
79   UChar_t   fDebugLevel;   //! Debug level 
80   TList     *fPlotFuncList;//! plot functors list
81   static TList     *fgTrendPoint;          //! trend point
82   static TTreeSRedirector *fgDebugStream;  //! Debug stream 
83
84   ClassDef(AliTRDrecoTask, 1) // base TRD reconstruction task
85 };
86
87 #endif
88