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