]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG1/TRD/AliTRDrecoTask.h
1535d4059023ee0b38a426c64b5f9b297768042e
[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   const Char_t*  GetNameId() const       { return fNameId;}
49   TList*         GetPlotFunctors() const { return fPlotFuncList;}
50   virtual Bool_t GetRefFigure(Int_t ifig);
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 *filename = "TRD.Performance.root");
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   Char_t    fNameId[10];   //! unique identifier of task particularity
72   UChar_t   fNRefFigures;  //! no of reference figures reported by task
73   TObjArray *fContainer;   //! container to store results
74   TObjArray *fTracks;      //! Array of tracks
75   const AliTRDtrackV1    *fkTrack;         //! current track
76   const AliTRDtrackInfo::AliMCinfo  *fkMC; //! MC info
77   const AliTRDtrackInfo::AliESDinfo *fkESD;//! ESD info
78
79 private:
80   AliTRDrecoTask(const AliTRDrecoTask&);
81   AliTRDrecoTask& operator=(const AliTRDrecoTask&);
82
83   TList             *fPlotFuncList;//! plot functors list
84   static TList      *fgTrendPoint;          //! trend point
85   static TTreeSRedirector *fgDebugStream;  //! Debug stream 
86
87   ClassDef(AliTRDrecoTask, 2) // base TRD reconstruction task
88 };
89
90 #endif
91