]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliAODHandler.h
Fix for Coverity warnings (M. Sitta)
[u/mrichter/AliRoot.git] / STEER / AliAODHandler.h
CommitLineData
ec4af4c1 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
f3214a54 13#include "AliVEventHandler.h"
ec4af4c1 14
15class AliAODEvent;
16class TFile;
17class TTree;
9066c676 18class TObjArray;
da97a08a 19class AliMCEventHandler;
dce1b636 20class AliAODMCHeader;
9066c676 21class AliAODExtension;
dce1b636 22class AliGenEventHeader;
ec4af4c1 23
24
25
f3214a54 26class AliAODHandler : public AliVEventHandler {
ec4af4c1 27
28 public:
29 AliAODHandler();
30 AliAODHandler(const char* name, const char* title);
31 virtual ~AliAODHandler();
7970f4ac 32 virtual void SetOutputFileName(const char* fname);
33 virtual const char* GetOutputFileName();
90d50a8c 34 // Extra outputs as a string separated by commas
35 virtual const char* GetExtraOutputs() const;
300d5701 36 virtual Bool_t Init(Option_t* option);
37 virtual Bool_t Init(TTree* /*tree*/, Option_t* /*option*/) {return kTRUE;}
5b173801 38 virtual Bool_t BeginEvent(Long64_t /*entry*/) {fFillAOD=kFALSE; return kTRUE;}
276be602 39 virtual Bool_t Notify() { return AliVEventHandler::Notify(); };
890126ab 40 virtual Bool_t Notify(const char * /* path */) {return kTRUE;}
5f380da9 41 virtual Bool_t FinishEvent();
ec4af4c1 42 virtual Bool_t Terminate();
43 virtual Bool_t TerminateIO();
ec4af4c1 44 //
41b01ae4 45 virtual void SetCreateNonStandardAOD() {fIsStandard = kFALSE;}
46 virtual void SetFillAOD(Bool_t b) {fFillAOD = b;}
47 virtual void SetFillAODforRun(Bool_t b) {fFillAODRun = b;}
3549c522 48 virtual void SetNeedsHeaderReplication() {fNeedsHeaderReplication = kTRUE;}
49 virtual void SetNeedsTracksBranchReplication() {fNeedsTracksBranchReplication = kTRUE;}
50 virtual void SetNeedsVerticesBranchReplication() {fNeedsVerticesBranchReplication = kTRUE;}
51 virtual void SetNeedsV0sBranchReplication() {fNeedsV0sBranchReplication = kTRUE;}
e0107012 52 virtual void SetNeedsCascadesBranchReplication() {fNeedsCascadesBranchReplication = kTRUE;}
3549c522 53 virtual void SetNeedsTrackletsBranchReplication() {fNeedsTrackletsBranchReplication = kTRUE;}
54 virtual void SetNeedsPMDClustersBranchReplication() {fNeedsPMDClustersBranchReplication = kTRUE;}
55 virtual void SetNeedsJetsBranchReplication() {fNeedsJetsBranchReplication = kTRUE;}
56 virtual void SetNeedsFMDClustersBranchReplication() {fNeedsFMDClustersBranchReplication = kTRUE;}
75754ba8 57 virtual void SetNeedsCaloClustersBranchReplication() {fNeedsCaloClustersBranchReplication = kTRUE;}
fa8b0e56 58 virtual void SetNeedsMCParticlesBranchReplication() {fNeedsMCParticlesBranchReplication = kTRUE;}
866d8d78 59 virtual void SetNeedsDimuonsBranchReplication() {fNeedsDimuonsBranchReplication = kTRUE;}
75754ba8 60 virtual void SetAODIsReplicated() {fAODIsReplicated = kTRUE;}
78f7f935 61 //
ec4af4c1 62 AliAODEvent* GetAOD() {return fAODEvent;}
11326411 63 virtual TTree* GetTree() const {return fTreeA;}
9066c676 64 TObjArray* GetExtensions() const {return fExtensions;}
582cfeb5 65 AliAODExtension* GetExtension(const char *filename) const;
66 TObjArray* GetFilters() const {return fFilters;}
67 AliAODExtension* GetFilteredAOD(const char *filename) const;
954526ed 68 void CreateTree(Int_t flag);
ec4af4c1 69 void FillTree();
70 void AddAODtoTreeUserInfo();
9066c676 71 void AddBranch(const char* cname, void* addobj, const char *fname="");
72 AliAODExtension* AddExtension(const char *filename, const char *title="");
582cfeb5 73 AliAODExtension* AddFilteredAOD(const char *filename, const char *filtername);
3549c522 74 Bool_t IsStandard() const {return fIsStandard;}
75 Bool_t GetFillAOD() const {return fFillAOD;}
76 Bool_t NeedsHeaderReplication() const {return fNeedsHeaderReplication;}
77 Bool_t NeedsTracksBranchReplication() const {return fNeedsTracksBranchReplication;}
78 Bool_t NeedsVerticesBranchReplication() const {return fNeedsVerticesBranchReplication;}
79 Bool_t NeedsV0sBranchReplication() const {return fNeedsV0sBranchReplication;}
e0107012 80 Bool_t NeedsCascadesBranchReplication() const {return fNeedsCascadesBranchReplication;}
3549c522 81 Bool_t NeedsTrackletsBranchReplication() const {return fNeedsTrackletsBranchReplication;}
82 Bool_t NeedsPMDClustersBranchReplication() const {return fNeedsPMDClustersBranchReplication;}
83 Bool_t NeedsJetsBranchReplication() const {return fNeedsJetsBranchReplication;}
84 Bool_t NeedsFMDClustersBranchReplication() const {return fNeedsFMDClustersBranchReplication;}
85 Bool_t NeedsCaloClustersBranchReplication() const {return fNeedsCaloClustersBranchReplication;}
86 Bool_t NeedsMCParticlesBranchReplication() const {return fNeedsMCParticlesBranchReplication;}
866d8d78 87 Bool_t NeedsDimuonsBranchReplication() const {return fNeedsDimuonsBranchReplication;}
3549c522 88 Bool_t AODIsReplicated() const {return fAODIsReplicated;}
933fd60f 89 //
90 void SetInputTree(TTree* /*tree*/) {;}
da97a08a 91 void SetMCEventHandler(AliMCEventHandler* mcH) {fMCEventH = mcH;} // For internal use
522aca31 92 void StoreMCParticles(); // Store MC particles, only to be called from AliAnalyisTaskMCParticleFilter
93
ec4af4c1 94 private:
dce1b636 95 void SetMCHeaderInfo(AliAODMCHeader *mcHeader,AliGenEventHeader *genHeader); // Utility function t catch different types of eventheaders
ec4af4c1 96 AliAODHandler(const AliAODHandler&); // Not implemented
97 AliAODHandler& operator=(const AliAODHandler&); // Not implemented
98 private:
75754ba8 99 Bool_t fIsStandard; // Flag for standard aod creation
41b01ae4 100 Bool_t fFillAOD; // Flag for filling of the AOD tree at the end (all or nothing evt by evt)
101 Bool_t fFillAODRun; // Flag for filling of the AOD tree at the end (run)
75754ba8 102 Bool_t fNeedsHeaderReplication; // Flag for header replication
103 Bool_t fNeedsTracksBranchReplication; // Flag for tracks replication
104 Bool_t fNeedsVerticesBranchReplication; // Flag for vertices replication
105 Bool_t fNeedsV0sBranchReplication; // Flag for V0s replication
e0107012 106 Bool_t fNeedsCascadesBranchReplication; // Flag for Cascade replication
75754ba8 107 Bool_t fNeedsTrackletsBranchReplication; // Flag for Tracklets replication
108 Bool_t fNeedsPMDClustersBranchReplication; // Flag for PMDClusters replication
109 Bool_t fNeedsJetsBranchReplication; // Flag for Jets replication
110 Bool_t fNeedsFMDClustersBranchReplication; // Flag for FMDClusters replication
111 Bool_t fNeedsCaloClustersBranchReplication; // Flag for CaloClusters replication
3549c522 112 Bool_t fNeedsMCParticlesBranchReplication; // Flag for MCParticles replication
866d8d78 113 Bool_t fNeedsDimuonsBranchReplication; // Flag for Dimuons replication
75754ba8 114 Bool_t fAODIsReplicated; // Flag true if replication as been executed
7c3a9fbf 115 AliAODEvent *fAODEvent; //! Pointer to the AOD event
da97a08a 116 AliMCEventHandler *fMCEventH; //! Pointer to mc event handler needed not to depend on the manager
7c3a9fbf 117 TTree *fTreeA; //! tree for AOD persistency
118 TFile *fFileA; //! Output file
119 TString fFileName; // Output file name
9066c676 120 TObjArray *fExtensions; // List of extensions
e0107012 121 TObjArray *fFilters; // List of filtered AOD's
866d8d78 122 ClassDef(AliAODHandler, 6)
ec4af4c1 123};
124
9066c676 125//-------------------------------------------------------------------------
126// Support class for AOD extensions. This is created by the user analysis
127// that requires a separate file for some AOD branches. The name of the
128// AliAODExtension object is the file name where the AOD branches will be
129// stored.
130// Author: Andrei Gheata, CERN
131//-------------------------------------------------------------------------
132
133class AliAODExtension : public TNamed {
582cfeb5 134
135public:
136
137enum EAliAODExtensionFlags {
138 kFilteredAOD = BIT(14)
139};
9066c676 140
582cfeb5 141 AliAODExtension() : TNamed(), fAODEvent(0), fTreeE(0), fFileE(0), fNtotal(0), fNpassed(0), fSelected(kFALSE) {}
142 AliAODExtension(const char* name, const char* title, Bool_t isfilter=kFALSE);
9066c676 143 virtual ~AliAODExtension();
144 void AddBranch(const char* cname, void* addobj);
582cfeb5 145 Bool_t FinishEvent();
146 Int_t GetNtotal() const {return fNtotal;}
147 Int_t GetNpassed() const {return fNpassed;}
9066c676 148 const char* GetOutputFileName() const {return TNamed::GetName();}
149 AliAODEvent* GetAOD() const {return fAODEvent;}
150 TTree* GetTree() const {return fTreeE;}
151 Bool_t Init(Option_t *option);
582cfeb5 152 Bool_t IsFilteredAOD() const {return TObject::TestBit(kFilteredAOD);}
153 Bool_t IsEventSelected() const {return fSelected;}
154 void SelectEvent(Bool_t flag=kTRUE) {fSelected = flag;}
155 void SetEvent(AliAODEvent *event);
9066c676 156 void SetOutputFileName(const char* fname) {TNamed::SetName(fname);}
157 Bool_t TerminateIO();
158 private:
159 AliAODExtension(const AliAODExtension&); // Not implemented
160 AliAODExtension& operator=(const AliAODExtension&); // Not implemented
161
162 private:
163 AliAODEvent *fAODEvent; //! Pointer to the AOD event
164 TTree *fTreeE; //! tree for AOD persistency
165 TFile *fFileE; //! Output file
582cfeb5 166 Int_t fNtotal; //! Number of processed events
167 Int_t fNpassed; //! Number of events that passed the filter
168 Bool_t fSelected; //! Select current event for filtered AOD's. Made false at event start.
9066c676 169 ClassDef(AliAODExtension, 1) // Support for extra AOD branches in a separate AOD file
170};
ec4af4c1 171#endif