]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/RESONANCES/AliRsnVAnalysisTask.h
Patch for the tracker
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnVAnalysisTask.h
1 //
2 // Class AliRsnVAnalysisTask
3 //
4 // Virtual Class derivated from AliAnalysisTaskSE which will be base class
5 // for all RSN Multi tasks
6 //
7 // authors: Martin Vala (martin.vala@cern.ch)
8 //          Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
9 //
10
11 #ifndef ALIRSNVANALYSISTASK_H
12 #define ALIRSNVANALYSISTASK_H
13
14 #include <TH1.h>
15
16 #include "AliAnalysisTaskSE.h"
17
18 #include "AliRsnEvent.h"
19 #include "AliRsnVATProcessInfo.h"
20 #include <AliMixInputEventHandler.h>
21
22 class AliESDEvent;
23 class AliAODEvent;
24 class AliMCEvent;
25
26 class AliRsnVAnalysisTask : public AliAnalysisTaskSE {
27 public:
28
29    AliRsnVAnalysisTask(const char *name = "AliRsnVAnalysisTask", Bool_t mcOnly = kFALSE);
30    AliRsnVAnalysisTask(const AliRsnVAnalysisTask& copy);
31    AliRsnVAnalysisTask& operator= (const AliRsnVAnalysisTask& /*copy*/) { return *this; }
32    virtual ~AliRsnVAnalysisTask() {/* Does nothing*/;}
33
34    // basic interface methods
35    virtual void    LocalInit();
36    virtual Bool_t  UserNotify();
37    virtual void    ConnectInputData(Option_t *opt);
38    virtual void    UserCreateOutputObjects();
39    virtual void    UserExec(Option_t* opt);
40    virtual void    UserExecMix(Option_t* option = "");
41    virtual void    Terminate(Option_t* opt);
42
43    // customized methods (to be implemented in derived classes)
44    virtual void    RsnUserCreateOutputObjects();
45    virtual void    RsnUserExec(Option_t*);
46    virtual void    RsnUserExecMix(Option_t*);
47    virtual void    RsnTerminate(Option_t*);
48
49    // event pre-processing functions
50    virtual Bool_t  EventProcess();
51
52    // getters
53    AliRsnEvent*           GetRsnEvent(Int_t i = 0) {return &fRsnEvent[i];}
54    AliRsnVATProcessInfo*  GetInfo()     {return &fTaskInfo;}
55
56    // setters
57    void SetMCOnly(Bool_t mcOnly = kTRUE)                           {fMCOnly = mcOnly;}
58    void SetLogType(AliLog::EType_t type, const char *classes = "") {fLogType = type; fLogClassesString = classes;}
59    void SetPrintInfoNumber(const Long64_t &num = 100)              {fTaskInfo.SetPrintInfoNumber(num);}
60
61    void SetMixing(Bool_t doMix = kTRUE) {fIsMixing = doMix;}
62    Bool_t IsMixing() { return fIsMixing;}
63
64    void UseMixingRange(Bool_t useMixRange = kTRUE) {fUseMixingRange = useMixRange;}
65    Bool_t IsUsingMixingRange() { return fUseMixingRange;}
66
67 protected:
68
69    AliLog::EType_t         fLogType;          //  log type
70    TString                 fLogClassesString; //  all classes string divided with ":"
71
72    AliESDEvent            *fESDEvent[2];         //  ESD event
73    AliMCEvent             *fMCEvent[2];          //  MC event
74    AliAODEvent            *fAODEventIn[2];       //  AOD event from input
75    AliAODEvent            *fAODEventOut[2];      //  AOD event from output from previous taks
76
77    Bool_t                  fIsMixing;        // flag is using mixing
78    Bool_t                  fMCOnly;           //  use only MC information
79    AliRsnEvent             fRsnEvent[2];         //  interface to event for RSN package
80
81    TList                  *fInfoList;         //! output list for informations
82    AliRsnVATProcessInfo    fTaskInfo;         //  task info
83
84    AliMixInputEventHandler *fMixedEH;         //! mixed event hadnler
85    Bool_t                          fUseMixingRange;   //
86
87    void                    SetupMixingEvents();
88    void                    SetDebugForAllClasses();
89
90    ClassDef(AliRsnVAnalysisTask, 1)
91 };
92
93 #endif