ROOT logo
#ifndef ALIANALYSISTASKSE_H
#define ALIANALYSISTASKSE_H
 
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

#include "AliAnalysisTask.h"
#include "AliVEvent.h"

class AliAODEvent;
class AliAODHeader;
class AliTOFHeader;
class AliAODVZERO;
class AliAODTracklets;
class AliAODCaloCells;
class AliAODCaloTrigger;
class AliMCEvent;
class AliMCEventHandler;
class AliInputEventHandler;
class AliMultiInputEventHandler;
class AliAnalysisCuts;
class AliESDfriend;
class AliEventTag;

class TTree;
class TList;


class AliAnalysisTaskSE : public AliAnalysisTask
{
 public:
    AliAnalysisTaskSE();
    AliAnalysisTaskSE(const char* name);
    AliAnalysisTaskSE(const AliAnalysisTaskSE& obj);
    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 Bool_t Notify();
    // To be implemented by user
    virtual void   UserCreateOutputObjects()  {;}
    virtual void   UserExec(Option_t* /*option*/) {;}
    virtual void   UserExecMix(Option_t */*option*/) {;}
    virtual Bool_t UserNotify() {return kTRUE;}
    virtual void   NotifyRun()  {;}
    
    // 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:
    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 AliVHeader*      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
 AliAnalysisTaskSE.h:1
 AliAnalysisTaskSE.h:2
 AliAnalysisTaskSE.h:3
 AliAnalysisTaskSE.h:4
 AliAnalysisTaskSE.h:5
 AliAnalysisTaskSE.h:6
 AliAnalysisTaskSE.h:7
 AliAnalysisTaskSE.h:8
 AliAnalysisTaskSE.h:9
 AliAnalysisTaskSE.h:10
 AliAnalysisTaskSE.h:11
 AliAnalysisTaskSE.h:12
 AliAnalysisTaskSE.h:13
 AliAnalysisTaskSE.h:14
 AliAnalysisTaskSE.h:15
 AliAnalysisTaskSE.h:16
 AliAnalysisTaskSE.h:17
 AliAnalysisTaskSE.h:18
 AliAnalysisTaskSE.h:19
 AliAnalysisTaskSE.h:20
 AliAnalysisTaskSE.h:21
 AliAnalysisTaskSE.h:22
 AliAnalysisTaskSE.h:23
 AliAnalysisTaskSE.h:24
 AliAnalysisTaskSE.h:25
 AliAnalysisTaskSE.h:26
 AliAnalysisTaskSE.h:27
 AliAnalysisTaskSE.h:28
 AliAnalysisTaskSE.h:29
 AliAnalysisTaskSE.h:30
 AliAnalysisTaskSE.h:31
 AliAnalysisTaskSE.h:32
 AliAnalysisTaskSE.h:33
 AliAnalysisTaskSE.h:34
 AliAnalysisTaskSE.h:35
 AliAnalysisTaskSE.h:36
 AliAnalysisTaskSE.h:37
 AliAnalysisTaskSE.h:38
 AliAnalysisTaskSE.h:39
 AliAnalysisTaskSE.h:40
 AliAnalysisTaskSE.h:41
 AliAnalysisTaskSE.h:42
 AliAnalysisTaskSE.h:43
 AliAnalysisTaskSE.h:44
 AliAnalysisTaskSE.h:45
 AliAnalysisTaskSE.h:46
 AliAnalysisTaskSE.h:47
 AliAnalysisTaskSE.h:48
 AliAnalysisTaskSE.h:49
 AliAnalysisTaskSE.h:50
 AliAnalysisTaskSE.h:51
 AliAnalysisTaskSE.h:52
 AliAnalysisTaskSE.h:53
 AliAnalysisTaskSE.h:54
 AliAnalysisTaskSE.h:55
 AliAnalysisTaskSE.h:56
 AliAnalysisTaskSE.h:57
 AliAnalysisTaskSE.h:58
 AliAnalysisTaskSE.h:59
 AliAnalysisTaskSE.h:60
 AliAnalysisTaskSE.h:61
 AliAnalysisTaskSE.h:62
 AliAnalysisTaskSE.h:63
 AliAnalysisTaskSE.h:64
 AliAnalysisTaskSE.h:65
 AliAnalysisTaskSE.h:66
 AliAnalysisTaskSE.h:67
 AliAnalysisTaskSE.h:68
 AliAnalysisTaskSE.h:69
 AliAnalysisTaskSE.h:70
 AliAnalysisTaskSE.h:71
 AliAnalysisTaskSE.h:72
 AliAnalysisTaskSE.h:73
 AliAnalysisTaskSE.h:74
 AliAnalysisTaskSE.h:75
 AliAnalysisTaskSE.h:76
 AliAnalysisTaskSE.h:77
 AliAnalysisTaskSE.h:78
 AliAnalysisTaskSE.h:79
 AliAnalysisTaskSE.h:80
 AliAnalysisTaskSE.h:81
 AliAnalysisTaskSE.h:82
 AliAnalysisTaskSE.h:83
 AliAnalysisTaskSE.h:84
 AliAnalysisTaskSE.h:85
 AliAnalysisTaskSE.h:86
 AliAnalysisTaskSE.h:87
 AliAnalysisTaskSE.h:88
 AliAnalysisTaskSE.h:89
 AliAnalysisTaskSE.h:90
 AliAnalysisTaskSE.h:91
 AliAnalysisTaskSE.h:92
 AliAnalysisTaskSE.h:93
 AliAnalysisTaskSE.h:94
 AliAnalysisTaskSE.h:95
 AliAnalysisTaskSE.h:96
 AliAnalysisTaskSE.h:97
 AliAnalysisTaskSE.h:98
 AliAnalysisTaskSE.h:99
 AliAnalysisTaskSE.h:100
 AliAnalysisTaskSE.h:101
 AliAnalysisTaskSE.h:102
 AliAnalysisTaskSE.h:103
 AliAnalysisTaskSE.h:104
 AliAnalysisTaskSE.h:105
 AliAnalysisTaskSE.h:106
 AliAnalysisTaskSE.h:107
 AliAnalysisTaskSE.h:108
 AliAnalysisTaskSE.h:109
 AliAnalysisTaskSE.h:110
 AliAnalysisTaskSE.h:111
 AliAnalysisTaskSE.h:112
 AliAnalysisTaskSE.h:113
 AliAnalysisTaskSE.h:114
 AliAnalysisTaskSE.h:115
 AliAnalysisTaskSE.h:116
 AliAnalysisTaskSE.h:117