]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliAnalysisTaskSE.h
Merge branch 'flatdev' of https://git.cern.ch/reps/AliRoot into flatdev
[u/mrichter/AliRoot.git] / ANALYSIS / AliAnalysisTaskSE.h
index c47bf62f3b4e8314b5d0aa7d134f0821c1a056f3..e66753d07fb3c20c8774b9b794b58e1b86c42894 100644 (file)
@@ -7,11 +7,25 @@
 /* $Id$ */
 
 #include "AliAnalysisTask.h"
-class AliVEvent;
+#include "AliVEvent.h"
+
 class AliAODEvent;
+class AliAODHeader;
+class AliTOFHeader;
+class AliAODVZERO;
+class AliAODTracklets;
+class AliAODCaloCells;
+class AliAODCaloTrigger;
 class AliMCEvent;
-class TTree;
+class AliMCEventHandler;
+class AliInputEventHandler;
+class AliMultiInputEventHandler;
+class AliAnalysisCuts;
+class AliESDfriend;
+class AliEventTag;
 
+class TTree;
+class TList;
 
 
 class AliAnalysisTaskSE : public AliAnalysisTask
@@ -23,27 +37,81 @@ class AliAnalysisTaskSE : public AliAnalysisTask
     AliAnalysisTaskSE& operator=(const AliAnalysisTaskSE& other);
     virtual ~AliAnalysisTaskSE() {;}
     // Implementation of interface methods
-    virtual void ConnectInputData(Option_t *option = "");
-    virtual void CreateOutputObjects();
-    virtual void Exec(Option_t* option);
-    virtual void SetDebugLevel(Int_t level) {fDebug = level;}
-    virtual void Init() {;}
+    virtual void   ConnectInputData(Option_t *option = "");
+    virtual void   CreateOutputObjects();
+    virtual void   Exec(Option_t* option);
+    virtual void   SetDebugLevel(Int_t level) {fDebug = level;}
+    virtual void   Init() {;}
+    virtual Bool_t Notify();
     // To be implemented by user
-    virtual void UserCreateOutputObjects()  {;}
-    virtual void UserExec(Option_t* /*option*/) {;}
+    virtual void   UserCreateOutputObjects()  {;}
+    virtual void   UserExec(Option_t* /*option*/) {;}
+    virtual void   UserExecMix(Option_t */*option*/) {;}
+    virtual Bool_t UserNotify() {return kTRUE;}
+    virtual void   NotifyRun()  {;}
     
-    // Getters
-    virtual AliVEvent*   InputEvent()  {return fInputEvent;}
-    virtual AliAODEvent* AODEvent()    {return fOutputAOD;}
-    virtual TTree*       OutputTree()  {return fTreeA;}
-    virtual AliMCEvent*  MCEvent()     {return fMCEvent;}
+    // Helpers for adding branches to the AOD
+    virtual void   AddAODBranch(const char* cname, void* addobj, const char *fname="");
+    // Event Selection
+    virtual void   SelectCollisionCandidates(UInt_t offlineTriggerMask = AliVEvent::kMB) {fOfflineTriggerMask = offlineTriggerMask;}
+    // Loading the declared input branches
+    void           LoadBranches() const;
+ // Getters
+    virtual Int_t         DebugLevel() const  {return fDebug;     }
+    virtual AliVEvent*    InputEvent() const  {return fInputEvent;}
+    virtual AliESDfriend* ESDfriend()  const  {return fESDfriend; }
+    virtual AliAODEvent*  AODEvent()   const  {return fOutputAOD; }
+    virtual TTree*        OutputTree() const  {return fTreeA;     }
+    virtual AliMCEvent*   MCEvent()    const  {return fMCEvent;   }
+    virtual Long64_t      Entry()      const  {return fEntry;     }
+    virtual const AliEventTag *EventTag() const;
+    virtual const char*   CurrentFileName();
+    virtual Bool_t        IsStandardAOD() const;
+    virtual TList*        GetQAHistos()   const {return fHistosQA;}
+    virtual Bool_t        IsEventInBinZero() { return kFALSE;}
+    virtual UInt_t        GetCollisionCandidates() const { return fOfflineTriggerMask;}
  protected:
-    Int_t         fDebug;        //  Debug flag
-    AliVEvent*    fInputEvent;   //! VEvent Input
-    AliAODEvent*  fOutputAOD;    //! AOD out 
-    AliMCEvent*   fMCEvent;      //! MC
-    TTree*        fTreeA;        //  AOD output Tree
-    ClassDef(AliAnalysisTaskSE, 1); // Analysis task for standard jet analysis
+    void ConnectMultiHandler();
+    void DisconnectMultiHandler();
+
+  protected:
+    Int_t                 fDebug;           //  Debug flag
+    // IO
+    Int_t                 fEntry;           //  Current entry in the chain
+    AliVEvent*            fInputEvent;      //! VEvent Input
+    AliESDfriend*         fESDfriend;       //! ESD friend
+    AliInputEventHandler* fInputHandler;    //! Input Handler
+    AliAODEvent*          fOutputAOD;       //! AOD out 
+    AliMCEvent*           fMCEvent;         //! MC
+    TTree*                fTreeA;           //  AOD output Tree
+    Int_t                 fCurrentRunNumber;//! Current run number
+    // Output histos for QA
+    TList*                fHistosQA;        //! Output histos for QA
+    // Provisions for replication
+    static AliAODHeader*    fgAODHeader;        //! Header for replication
+    static AliTOFHeader*    fgTOFHeader;        //! TOFHeader for replication
+    static AliAODVZERO*     fgAODVZERO;         //! VZERO for replication
+    static TClonesArray*    fgAODTracks;        //! Tracks for replication
+    static TClonesArray*    fgAODVertices;      //! Vertices for replication
+    static TClonesArray*    fgAODV0s;           //! V0s for replication
+    static TClonesArray*    fgAODPMDClusters;   //! PMDClusters for replication
+    static TClonesArray*    fgAODJets;          //! Jets for replication
+    static TClonesArray*    fgAODFMDClusters;   //! FMDClusters for replication
+    static TClonesArray*    fgAODCaloClusters;  //! CaloClusters for replication
+    static AliAODCaloTrigger* fgAODEMCALTrigger; //! Emcal Trigger for replication
+    static AliAODCaloTrigger* fgAODPHOSTrigger;  //! Phos Trigger for replication
+    static TClonesArray*    fgAODMCParticles;   //! MC Particles for replicatio
+    static AliAODTracklets* fgAODTracklets;     //! Tracklets for replication
+    static AliAODCaloCells* fgAODEmcalCells;    //! Emcal Cell replication
+    static AliAODCaloCells* fgAODPhosCells;     //! Phos  Cell replication
+    static TClonesArray*    fgAODDimuons;       //! Dimuons replication
+    static TClonesArray*    fgAODHmpidRings;    //! HMPID replication
+    // Event Selection
+    UInt_t fOfflineTriggerMask;   //  Task processes collision candidates only
+    // Event Mixing
+    AliMultiInputEventHandler *fMultiInputHandler;  //! pointer to multihandler
+    AliInputEventHandler      *fMCEventHandler;     //! pointer to MCEventHandler
+    ClassDef(AliAnalysisTaskSE, 4); // Analysis task for standard jet analysis
 };
  
 #endif