HMPID related updates
[u/mrichter/AliRoot.git] / ANALYSIS / AliAnalysisTaskSE.h
1 #ifndef ALIANALYSISTASKSE_H
2 #define ALIANALYSISTASKSE_H
3  
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 #include "AliAnalysisTask.h"
10 #include "AliVEvent.h"
11
12 class AliAODEvent;
13 class AliAODHeader;
14 class AliAODTracklets;
15 class AliAODCaloCells;
16 class AliAODCaloTrigger;
17 class AliMCEvent;
18 class AliMCEventHandler;
19 class AliInputEventHandler;
20 class AliMultiInputEventHandler;
21 class AliAnalysisCuts;
22 class AliESDfriend;
23 class AliEventTag;
24
25 class TTree;
26 class TList;
27
28
29 class AliAnalysisTaskSE : public AliAnalysisTask
30 {
31  public:
32     AliAnalysisTaskSE();
33     AliAnalysisTaskSE(const char* name);
34     AliAnalysisTaskSE(const AliAnalysisTaskSE& obj);
35     AliAnalysisTaskSE& operator=(const AliAnalysisTaskSE& other);
36     virtual ~AliAnalysisTaskSE() {;}
37     // Implementation of interface methods
38     virtual void   ConnectInputData(Option_t *option = "");
39     virtual void   CreateOutputObjects();
40     virtual void   Exec(Option_t* option);
41     virtual void   SetDebugLevel(Int_t level) {fDebug = level;}
42     virtual void   Init() {;}
43     virtual Bool_t Notify();
44     // To be implemented by user
45     virtual void   UserCreateOutputObjects()  {;}
46     virtual void   UserExec(Option_t* /*option*/) {;}
47     virtual void   UserExecMix(Option_t */*option*/) {;}
48     virtual Bool_t UserNotify() {return kTRUE;}
49     virtual void   NotifyRun()  {;}
50     
51     // Helpers for adding branches to the AOD
52     virtual void   AddAODBranch(const char* cname, void* addobj, const char *fname="");
53     // Event Selection
54     virtual void   SelectCollisionCandidates(UInt_t offlineTriggerMask = AliVEvent::kMB) {fOfflineTriggerMask = offlineTriggerMask;}
55     // Loading the declared input branches
56     void           LoadBranches() const;
57  // Getters
58     virtual Int_t         DebugLevel()  {return fDebug;     }
59     virtual AliVEvent*    InputEvent()  {return fInputEvent;}
60     virtual AliESDfriend* ESDfriend()   {return fESDfriend; }
61     virtual AliAODEvent*  AODEvent()    {return fOutputAOD; }
62     virtual TTree*        OutputTree()  {return fTreeA;     }
63     virtual AliMCEvent*   MCEvent()     {return fMCEvent;   }
64     virtual Long64_t      Entry()       {return fEntry;     }
65     virtual const AliEventTag *EventTag() const;
66     virtual const char*   CurrentFileName();
67     virtual Bool_t        IsStandardAOD() const;
68     virtual TList*        GetQAHistos()   const {return fHistosQA;}
69     virtual Bool_t        IsEventInBinZero() { return kFALSE;}
70     virtual UInt_t        GetCollisionCandidates() const { return fOfflineTriggerMask;}
71  protected:
72     void ConnectMultiHandler();
73     void DisconnectMultiHandler();
74
75   protected:
76     Int_t                 fDebug;           //  Debug flag
77     // IO
78     Int_t                 fEntry;           //  Current entry in the chain
79     AliVEvent*            fInputEvent;      //! VEvent Input
80     AliESDfriend*         fESDfriend;       //! ESD friend
81     AliInputEventHandler* fInputHandler;    //! Input Handler
82     AliAODEvent*          fOutputAOD;       //! AOD out 
83     AliMCEvent*           fMCEvent;         //! MC
84     TTree*                fTreeA;           //  AOD output Tree
85     Int_t                 fCurrentRunNumber;//! Current run number
86     // Output histos for QA
87     TList*                fHistosQA;        //! Output histos for QA
88     // Provisions for replication
89     static AliAODHeader*    fgAODHeader;        //! Header for replication
90     static TClonesArray*    fgAODTracks;        //! Tracks for replication
91     static TClonesArray*    fgAODVertices;      //! Vertices for replication
92     static TClonesArray*    fgAODV0s;           //! V0s for replication
93     static TClonesArray*    fgAODPMDClusters;   //! PMDClusters for replication
94     static TClonesArray*    fgAODJets;          //! Jets for replication
95     static TClonesArray*    fgAODFMDClusters;   //! FMDClusters for replication
96     static TClonesArray*    fgAODCaloClusters;  //! CaloClusters for replication
97     static AliAODCaloTrigger* fgAODEMCALTrigger; //! Emcal Trigger for replication
98     static AliAODCaloTrigger* fgAODPHOSTrigger;  //! Phos Trigger for replication
99     static TClonesArray*    fgAODMCParticles;   //! MC Particles for replicatio
100     static AliAODTracklets* fgAODTracklets;     //! Tracklets for replication
101     static AliAODCaloCells* fgAODEmcalCells;    //! Emcal Cell replication
102     static AliAODCaloCells* fgAODPhosCells;     //! Phos  Cell replication
103     static TClonesArray*    fgAODDimuons;       //! Dimuons replication
104     static TClonesArray*    fgAODHmpidRings;    //! HMPID replication
105     // Event Selection
106     UInt_t fOfflineTriggerMask;   //  Task processes collision candidates only
107     // Event Mixing
108     AliMultiInputEventHandler *fMultiInputHandler;  //! pointer to multihandler
109     AliMCEventHandler         *fMCEventHandler;     //! pointer to MCEventHandler
110     ClassDef(AliAnalysisTaskSE, 4); // Analysis task for standard jet analysis
111 };
112  
113 #endif