]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AOD/AliAODHandler.h
fixing minor bug in printing latex table
[u/mrichter/AliRoot.git] / STEER / AOD / AliAODHandler.h
1 #ifndef ALIAODHANDLER_H
2 #define ALIAODHANDLER_H
3 /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //-------------------------------------------------------------------------
9 //     Implementation of the Event Handler Interface for AOD
10 //     Author: Andreas Morsch, CERN
11 //-------------------------------------------------------------------------
12
13 #include "AliVEventHandler.h"
14 #include "AliAODExtension.h"
15
16 class AliAODEvent;
17 class TFile;
18 class TTree;
19 class TObjArray;
20 class AliMCEventHandler;
21 class AliAODMCHeader;
22 class AliGenEventHeader;
23 class TMap;
24 class AliAnalysisFilter;
25
26 class AliAODHandler : public AliVEventHandler {
27     
28  public:
29     AliAODHandler();
30     AliAODHandler(const char* name, const char* title);
31     virtual ~AliAODHandler();
32     virtual void         SetOutputFileName(const char* fname);
33     virtual const char*  GetOutputFileName() const;
34     // Extra outputs as a string separated by commas
35     virtual const char*  GetExtraOutputs(Bool_t merge=kTRUE) const;
36     virtual Bool_t       Init(Option_t* option);
37     virtual Bool_t       Init(TTree* /*tree*/, Option_t* /*option*/)  {return kTRUE;}
38     virtual Bool_t       GetEntry() {return kTRUE;}
39             
40     virtual Bool_t       BeginEvent(Long64_t /*entry*/) {fFillAOD=kFALSE; fFillExtension=kFALSE; return kTRUE;}
41     virtual Bool_t       Notify() { return AliVEventHandler::Notify(); };
42     virtual Bool_t       Notify(const char * /* path */) {return kTRUE;}
43     virtual Bool_t       FinishEvent();
44     virtual Bool_t       Terminate();
45     virtual Bool_t       TerminateIO();
46     //
47     virtual void         SetCreateNonStandardAOD()               {Changed(); fIsStandard = kFALSE;}
48     virtual void         SetFillAOD(Bool_t b)                    {Changed(); fFillAOD = b;}
49     virtual void         SetFillExtension(Bool_t b)              {Changed(); fFillExtension = b;}
50     virtual void         SetFillAODforRun(Bool_t b)              {Changed(); fFillAODRun = b;}
51     virtual void         SetNeedsHeaderReplication()             {fNeedsHeaderReplication             = kTRUE;}
52     virtual void         SetNeedsTOFHeaderReplication()          {fNeedsTOFHeaderReplication          = kTRUE;}
53     virtual void         SetNeedsVZEROReplication()              {fNeedsVZEROReplication              = kTRUE;}
54     virtual void         SetNeedsTracksBranchReplication()       {fNeedsTracksBranchReplication       = kTRUE;}
55     virtual void         SetNeedsVerticesBranchReplication()     {fNeedsVerticesBranchReplication     = kTRUE;}
56     virtual void         SetNeedsV0sBranchReplication()          {fNeedsV0sBranchReplication          = kTRUE;}
57     virtual void         SetNeedsCascadesBranchReplication()     {fNeedsCascadesBranchReplication     = kTRUE;}
58     virtual void         SetNeedsTrackletsBranchReplication()    {fNeedsTrackletsBranchReplication    = kTRUE;}
59     virtual void         SetNeedsPMDClustersBranchReplication()  {fNeedsPMDClustersBranchReplication  = kTRUE;}
60     virtual void         SetNeedsJetsBranchReplication()         {fNeedsJetsBranchReplication         = kTRUE;}
61     virtual void         SetNeedsFMDClustersBranchReplication()  {fNeedsFMDClustersBranchReplication  = kTRUE;}
62     virtual void         SetNeedsCaloClustersBranchReplication() {fNeedsCaloClustersBranchReplication = kTRUE;}
63     virtual void         SetNeedsCaloTriggerBranchReplication()  {fNeedsCaloTriggerBranchReplication  = kTRUE;}
64     virtual void         SetNeedsMCParticlesBranchReplication()  {fNeedsMCParticlesBranchReplication  = kTRUE;}
65     virtual void         SetNeedsDimuonsBranchReplication()      {fNeedsDimuonsBranchReplication      = kTRUE;}
66     virtual void         SetNeedsHMPIDBranchReplication()        {fNeedsHMPIDBranchReplication        = kTRUE;}
67     virtual void         SetAODIsReplicated()                    {Changed(); fAODIsReplicated = kTRUE;}
68     virtual void         SetAODExtensionMode()                   {Changed(); fIsStandard=kFALSE; fFillAOD=kFALSE; fFillAODRun=kFALSE; fFillExtension=kTRUE;}
69     //
70     AliAODEvent*         GetAOD()  {return fAODEvent;}
71     virtual TTree*       GetTree() const {return fTreeA;}
72     TObjArray*           GetExtensions() const {return fExtensions;}
73     AliAODExtension*     GetExtension(const char *filename) const;
74     TObjArray*           GetFilters() const {return fFilters;}
75     AliAODExtension*     GetFilteredAOD(const char *filename) const;
76     void                 CreateTree(Int_t flag);
77     void                 FillTree();
78     void                 AddAODtoTreeUserInfo();
79     void                 AddBranch(const char* cname, void* addobj, const char *fname="");
80   
81     AliAODExtension*     AddExtension(const char *filename, const char *title="", Bool_t tomerge=kFALSE);
82     AliAODExtension*     AddFilteredAOD(const char *filename, const char *filtername, Bool_t tomerge=kFALSE);
83 //    AliAODExtension*     FindExtensionContainingBranch(const char* bname) const;
84     Bool_t               IsStandard()                         const {return fIsStandard;}
85     Bool_t               GetFillAOD()                         const {return fFillAOD;} 
86     Bool_t               GetFillExtension()                   const {return fFillExtension;} 
87     Bool_t               NeedsHeaderReplication()             const {return  fNeedsHeaderReplication;}
88     Bool_t               NeedsTOFHeaderReplication()          const {return  fNeedsTOFHeaderReplication;}
89     Bool_t               NeedsVZEROReplication()              const {return  fNeedsVZEROReplication;}
90     Bool_t               NeedsTracksBranchReplication()       const {return  fNeedsTracksBranchReplication;}
91     Bool_t               NeedsVerticesBranchReplication()     const {return  fNeedsVerticesBranchReplication;}
92     Bool_t               NeedsV0sBranchReplication()          const {return  fNeedsV0sBranchReplication;}
93     Bool_t               NeedsCascadesBranchReplication()     const {return  fNeedsCascadesBranchReplication;}
94     Bool_t               NeedsTrackletsBranchReplication()    const {return  fNeedsTrackletsBranchReplication;}
95     Bool_t               NeedsPMDClustersBranchReplication()  const {return  fNeedsPMDClustersBranchReplication;}
96     Bool_t               NeedsJetsBranchReplication()         const {return  fNeedsJetsBranchReplication;}
97     Bool_t               NeedsFMDClustersBranchReplication()  const {return  fNeedsFMDClustersBranchReplication;}
98     Bool_t               NeedsCaloClustersBranchReplication() const {return  fNeedsCaloClustersBranchReplication;}
99     Bool_t               NeedsCaloTriggerBranchReplication()  const {return  fNeedsCaloTriggerBranchReplication;}
100     Bool_t               NeedsMCParticlesBranchReplication()  const {return  fNeedsMCParticlesBranchReplication;}
101     Bool_t               NeedsDimuonsBranchReplication()      const {return  fNeedsDimuonsBranchReplication;}
102     Bool_t               NeedsHMPIDBranchReplication()        const {return  fNeedsHMPIDBranchReplication;}
103     Bool_t               AODIsReplicated()                    const {return  fAODIsReplicated;}
104     //
105     void                 SetInputTree(TTree* /*tree*/) {;}
106     void                 SetMCEventHandler(AliMCEventHandler* mcH) {fMCEventH = mcH;} // For internal use
107     void StoreMCParticles(); // Store MC particles, only to be called from AliAnalyisTaskMCParticleFilter
108     void                 SetTreeBuffSize(Long64_t sz=30000000) {fTreeBuffSize = sz;}
109   Bool_t HasExtensions() const;
110   
111   void Print(Option_t* opt="") const;
112   
113  private:
114   void SetMCHeaderInfo(AliAODMCHeader *mcHeader,AliGenEventHeader *genHeader); // Utility function t catch different types of eventheaders
115   AliAODHandler(const AliAODHandler&);             // Not implemented
116   AliAODHandler& operator=(const AliAODHandler&);  // Not implemented
117   void PrintExtensions(const TObjArray& array) const;
118
119  private:
120     Bool_t                   fIsStandard;                         // Flag for standard aod creation
121     Bool_t                   fFillAOD;                            // Flag for filling of the AOD tree at the end (all or nothing evt by evt)
122     Bool_t                   fFillAODRun;                         // Flag for filling of the AOD tree at the end (run)
123     Bool_t                   fFillExtension;                      // Flag for filling or the delta AOD tree at the end
124     Bool_t                   fNeedsHeaderReplication;             // Flag for header replication
125     Bool_t                   fNeedsTOFHeaderReplication;          // Flag for header replication
126     Bool_t                   fNeedsVZEROReplication;              // Flag for header replication
127     Bool_t                   fNeedsTracksBranchReplication;       // Flag for tracks replication
128     Bool_t                   fNeedsVerticesBranchReplication;     // Flag for vertices replication
129     Bool_t                   fNeedsV0sBranchReplication;          // Flag for V0s replication
130     Bool_t                   fNeedsCascadesBranchReplication;     // Flag for Cascade replication
131     Bool_t                   fNeedsTrackletsBranchReplication;    // Flag for Tracklets replication
132     Bool_t                   fNeedsPMDClustersBranchReplication;  // Flag for PMDClusters replication
133     Bool_t                   fNeedsJetsBranchReplication;         // Flag for Jets replication
134     Bool_t                   fNeedsFMDClustersBranchReplication;  // Flag for FMDClusters replication
135     Bool_t                   fNeedsCaloClustersBranchReplication; // Flag for CaloClusters replication
136     Bool_t                   fNeedsCaloTriggerBranchReplication;  // Flag for Calo Trigger replication
137     Bool_t                   fNeedsMCParticlesBranchReplication;  // Flag for MCParticles replication
138     Bool_t                   fNeedsDimuonsBranchReplication;      // Flag for Dimuons replication
139     Bool_t                   fNeedsHMPIDBranchReplication;        // Flag for HMPID replication
140     Bool_t                   fAODIsReplicated;                    // Flag true if replication as been executed
141     // Counters for SetAutoFlush configuration
142     Long64_t                 fTreeBuffSize;           //  allowed uncompressed buffer size per tree
143     Long64_t                 fMemCountAOD;            //! accumulated AOD size before AutoSave 
144     AliAODEvent             *fAODEvent;               //! Pointer to the AOD event
145     AliMCEventHandler       *fMCEventH;               //! Pointer to mc event handler needed not to depend on the manager
146     TTree                   *fTreeA;                  //! tree for AOD persistency
147     TFile                   *fFileA;                  //! Output file
148     TString                  fFileName;               //  Output file name
149     TObjArray               *fExtensions;             //  List of extensions
150     TObjArray               *fFilters;                //  List of filtered AOD's
151
152   ClassDef(AliAODHandler, 8)
153 };
154
155 #endif