]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG1/TRD/AliTRDrecoTask.h
train ready for Pilot integration with all wagons
[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   ConnectInputData(Option_t *);
44   virtual void   SetDebugLevel(Int_t level);
45   
46     
47   Int_t          GetNRefFigures() const  { return fNRefFigures; } 
48   TList*         GetPlotFunctors() const { return fPlotFuncList;}
49   virtual Bool_t GetRefFigure(Int_t ifig);
50
51   Bool_t         HasFriends() const      { return TestBit(kFriends);};
52   Bool_t         HasMCdata() const       { return TestBit(kMCdata);};
53   Bool_t         HasPostProcess() const  { return TestBit(kPostProcess);};
54   virtual TObjArray* Histos()            { return fContainer;}
55
56   virtual Bool_t Load(const Char_t *filename = "TRD.Performance.root");
57   virtual Bool_t Save(TObjArray * const res);
58   virtual Bool_t PostProcess();
59   virtual Bool_t PutTrendValue(const Char_t *name, Double_t val);
60   virtual void   SetFriends(Bool_t fr = kTRUE) {SetBit(kFriends, fr);}
61   virtual void   SetMCdata(Bool_t mc = kTRUE) {SetBit(kMCdata, mc);}
62   virtual void   SetPostProcess(Bool_t pp = kTRUE) {SetBit(kPostProcess, pp);}
63   virtual void   Terminate(Option_t *);
64
65 protected:
66   static TTreeSRedirector* DebugStream() { return fgDebugStream;}
67   void           InitFunctorList();
68   void           Adjust(TF1 *f, TH1 * const h);
69
70   UChar_t   fNRefFigures;  //! no of reference figures reported by task
71   TObjArray *fContainer;   //! container to store results
72   TObjArray *fTracks;      //! Array of tracks
73   const AliTRDtrackV1    *fkTrack;         //! current track
74   const AliTRDtrackInfo::AliMCinfo  *fkMC; //! MC info
75   const AliTRDtrackInfo::AliESDinfo *fkESD;//! ESD info
76
77 private:
78   AliTRDrecoTask(const AliTRDrecoTask&);
79   AliTRDrecoTask& operator=(const AliTRDrecoTask&);
80
81   UChar_t   fDebugLevel;   //! Debug level 
82   TList     *fPlotFuncList;//! plot functors list
83   static TList     *fgTrendPoint;          //! trend point
84   static TTreeSRedirector *fgDebugStream;  //! Debug stream 
85
86   ClassDef(AliTRDrecoTask, 1) // base TRD reconstruction task
87 };
88
89 #endif
90