]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliAODEvent.h
Cosmetics
[u/mrichter/AliRoot.git] / STEER / AliAODEvent.h
CommitLineData
df9db588 1#ifndef AliAODEvent_H
2#define AliAODEvent_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// AOD base class
10// Author: Markus Oldenburg, CERN
11//-------------------------------------------------------------------------
12
13#include <TBuffer.h>
14#include <TClonesArray.h>
15#include <TList.h>
8ff33247 16#include <TTree.h>
df9db588 17#include <TNamed.h>
18
08e4c457 19#include "AliVEvent.h"
20#include "AliVParticle.h"
df9db588 21#include "AliAODHeader.h"
22#include "AliAODTrack.h"
23#include "AliAODVertex.h"
3dd9f9e3 24#include "AliAODv0.h"
9a244178 25#include "AliAODcascade.h"
821f8f1d 26#include "AliAODTracklets.h"
3dd9f9e3 27#include "AliAODJet.h"
28#include "AliAODCaloCells.h"
29#include "AliAODCaloCluster.h"
30#include "AliAODPmdCluster.h"
31#include "AliAODFmdCluster.h"
866d8d78 32#include "AliAODDimuon.h"
df9db588 33
8ff33247 34class TTree;
5c1dc41f 35class TFolder;
ec4af4c1 36
08e4c457 37class AliAODEvent : public AliVEvent {
df9db588 38
39 public :
08e4c457 40 enum AODListIndex_t {kAODHeader,
41 kAODTracks,
42 kAODVertices,
3dd9f9e3 43 kAODv0,
9a244178 44 kAODcascade,
08e4c457 45 kAODTracklets,
3dd9f9e3 46 kAODJets,
37792174 47 kAODEmcalCells,
48 kAODPhosCells,
3dd9f9e3 49 kAODCaloClusters,
50 kAODFmdClusters,
51 kAODPmdClusters,
866d8d78 52 kAODDimuons,
08e4c457 53 kAODListN
54 };
55
df9db588 56 AliAODEvent();
57 virtual ~AliAODEvent();
58
9a244178 59 AliAODEvent(const AliAODEvent& aodevent);
60 AliAODEvent& operator=(const AliAODEvent& aodevent);
df9db588 61
62 void AddObject(TObject *obj);
4b3de353 63 void RemoveObject(TObject *obj);
2811495d 64 TObject *FindListObject(const char *objName) const;
df9db588 65 TList *GetList() const { return fAODObjects; }
66
67 // -- Header
08e4c457 68 AliAODHeader *GetHeader() const { return fHeader; }
df9db588 69 void AddHeader(const AliAODHeader* hdx)
635db10f 70 {
71 delete fHeader; fHeader = new AliAODHeader(*hdx);
72 (fAODObjects->FirstLink())->SetObject(fHeader);
73 }
df9db588 74
08e4c457 75 // setters and getters for header information
76 void SetRunNumber(Int_t n) {if (fHeader) fHeader->SetRunNumber(n);}
77 void SetPeriodNumber(UInt_t n){if (fHeader) fHeader->SetPeriodNumber(n);}
78 void SetOrbitNumber(UInt_t n) {if (fHeader) fHeader->SetOrbitNumber(n);}
79 void SetBunchCrossNumber(UShort_t n) {if (fHeader) fHeader->SetBunchCrossNumber(n);}
80 void SetMagneticField(Double_t mf){if (fHeader) fHeader->SetMagneticField(mf);}
33fe5eb1 81 void SetMuonMagFieldScale(Double_t mf){if (fHeader) fHeader->SetMuonMagFieldScale(mf);}
3bfd99da 82 void SetDiamond(Float_t xy[2],Float_t cov[3]){if (fHeader) fHeader->SetDiamond(xy,cov);}
08e4c457 83
84 Int_t GetRunNumber() const {return fHeader ? fHeader->GetRunNumber() : -999;}
85 UInt_t GetPeriodNumber() const {return fHeader ? fHeader->GetPeriodNumber() : 0;}
86 UInt_t GetOrbitNumber() const {return fHeader ? fHeader->GetOrbitNumber() : 0;}
87 UShort_t GetBunchCrossNumber() const {return fHeader ? fHeader->GetBunchCrossNumber() : 0;}
88 Double_t GetMagneticField() const {return fHeader ? fHeader->GetMagneticField() : -999.;}
33fe5eb1 89 Double_t GetMuonMagFieldScale() const {return fHeader ? fHeader->GetMuonMagFieldScale() : -999.;}
3bfd99da 90 Double_t GetDiamondX() const {return fHeader ? fHeader->GetDiamondX() : -999.;}
91 Double_t GetDiamondY() const {return fHeader ? fHeader->GetDiamondY() : -999.;}
92 void GetDiamondCovXY(Float_t cov[3]) const {cov[0]=-999.; if(fHeader) fHeader->GetDiamondCovXY(cov);}
08e4c457 93
94 void SetEventType(UInt_t eventType){fHeader->SetEventType(eventType);}
95 void SetTriggerMask(ULong64_t n) {fHeader->SetTriggerMask(n);}
96 void SetTriggerCluster(UChar_t n) {fHeader->SetTriggerCluster(n);}
97
27346f69 98 UInt_t GetEventType() const { return fHeader ? fHeader->GetEventType() : 0;}
99 ULong64_t GetTriggerMask() const { return fHeader ? fHeader->GetTriggerMask() : 0;}
100 UChar_t GetTriggerCluster() const { return fHeader ? fHeader->GetTriggerCluster() : 0;}
101 TString GetFiredTriggerClasses()const { return fHeader->GetFiredTriggerClasses();};
08e4c457 102 Double_t GetZDCN1Energy() const { return fHeader ? fHeader->GetZDCN1Energy() : -999.; }
103 Double_t GetZDCP1Energy() const { return fHeader ? fHeader->GetZDCP1Energy() : -999.; }
104 Double_t GetZDCN2Energy() const { return fHeader ? fHeader->GetZDCN2Energy() : -999.; }
105 Double_t GetZDCP2Energy() const { return fHeader ? fHeader->GetZDCP2Energy() : -999.; }
a85132e7 106 Double_t GetZDCEMEnergy(Int_t i) const { return fHeader ? fHeader->GetZDCEMEnergy(i) : -999.; }
08e4c457 107
df9db588 108 // -- Tracks
109 TClonesArray *GetTracks() const { return fTracks; }
110 Int_t GetNTracks() const { return fTracks->GetEntriesFast(); }
08e4c457 111 Int_t GetNumberOfTracks() const { return GetNTracks(); }
112 AliAODTrack *GetTrack(Int_t nTrack) const { return (AliAODTrack*)fTracks->UncheckedAt(nTrack); }
113 Int_t AddTrack(const AliAODTrack* trk)
114 {new((*fTracks)[fTracks->GetEntriesFast()]) AliAODTrack(*trk); return fTracks->GetEntriesFast()-1;}
fb41236c 115 Int_t GetMuonTracks(TRefArray *muonTracks) const;
fa8b0e56 116 Int_t GetNumberOfMuonTracks() const;
df9db588 117
118 // -- Vertex
119 TClonesArray *GetVertices() const { return fVertices; }
c1b93f02 120 Int_t GetNumberOfVertices() const { return fVertices->GetEntriesFast(); }
08e4c457 121 AliAODVertex *GetVertex(Int_t nVertex) const { return (AliAODVertex*)fVertices->UncheckedAt(nVertex); }
122 Int_t AddVertex(const AliAODVertex* vtx)
123 {new((*fVertices)[fVertices->GetEntriesFast()]) AliAODVertex(*vtx); return fVertices->GetEntriesFast()-1;}
5c2fdfa2 124
3dd9f9e3 125 // primary vertex
126 virtual AliAODVertex *GetPrimaryVertex() const { return GetVertex(0); }
df9db588 127
3dd9f9e3 128 // V0
129 TClonesArray *GetV0s() const { return fV0s; }
c1b93f02 130 Int_t GetNumberOfV0s() const { return fV0s->GetEntriesFast(); }
3dd9f9e3 131 AliAODv0 *GetV0(Int_t nV0) const { return (AliAODv0*)fV0s->UncheckedAt(nV0); }
132 Int_t AddV0(const AliAODv0* v0)
133 {new((*fV0s)[fV0s->GetEntriesFast()]) AliAODv0(*v0); return fV0s->GetEntriesFast()-1;}
134
9a244178 135 // Cascades
136 TClonesArray *GetCascades() const { return fCascades; }
137 Int_t GetNumberOfCascades() const { return fCascades->GetEntriesFast(); }
138 AliAODcascade *GetCascade(Int_t nCasc) const { return (AliAODcascade*)fCascades->UncheckedAt(nCasc); }
139 Int_t AddCascade(const AliAODcascade* cascade)
140 {new((*fCascades)[fCascades->GetEntriesFast()]) AliAODcascade(*cascade); return fCascades->GetEntriesFast()-1;}
141
3dd9f9e3 142 // -- EMCAL and PHOS Cluster
143 TClonesArray *GetCaloClusters() const { return fCaloClusters; }
144 Int_t GetNCaloClusters() const { return fCaloClusters->GetEntriesFast(); }
145 AliAODCaloCluster *GetCaloCluster(Int_t nCluster) const { return (AliAODCaloCluster*)fCaloClusters->UncheckedAt(nCluster); }
146 Int_t AddCaloCluster(const AliAODCaloCluster* clus)
147 {new((*fCaloClusters)[fCaloClusters->GetEntriesFast()]) AliAODCaloCluster(*clus); return fCaloClusters->GetEntriesFast()-1;}
148
78902954 149 Int_t GetEMCALClusters(TRefArray *clusters) const;
150 Int_t GetPHOSClusters(TRefArray *clusters) const;
151
152
3dd9f9e3 153 // -- FMD Cluster
154 TClonesArray *GetFmdClusters() const { return fFmdClusters; }
155 Int_t GetNFmdClusters() const { return fFmdClusters->GetEntriesFast(); }
156 AliAODFmdCluster *GetFmdCluster(Int_t nCluster) const { return (AliAODFmdCluster*)fFmdClusters->UncheckedAt(nCluster); }
157 Int_t AddFmdCluster(const AliAODFmdCluster* clus)
158 {new((*fFmdClusters)[fFmdClusters->GetEntriesFast()]) AliAODFmdCluster(*clus); return fFmdClusters->GetEntriesFast()-1;}
159
160 // -- PMD Cluster
161 TClonesArray *GetPmdClusters() const { return fPmdClusters; }
162 Int_t GetNPmdClusters() const { return fPmdClusters->GetEntriesFast(); }
163 AliAODPmdCluster *GetPmdCluster(Int_t nCluster) const { return (AliAODPmdCluster*)fPmdClusters->UncheckedAt(nCluster); }
164 Int_t AddPmdCluster(const AliAODPmdCluster* clus)
165 {new((*fPmdClusters)[fPmdClusters->GetEntriesFast()]) AliAODPmdCluster(*clus); return fPmdClusters->GetEntriesFast()-1;}
df9db588 166
167 // -- Jet
168 TClonesArray *GetJets() const { return fJets; }
169 Int_t GetNJets() const { return fJets->GetEntriesFast(); }
08e4c457 170 AliAODJet *GetJet(Int_t nJet) const { return (AliAODJet*)fJets->UncheckedAt(nJet); }
171 Int_t AddJet(const AliAODJet* vtx)
172 {new((*fJets)[fJets->GetEntriesFast()]) AliAODJet(*vtx); return fJets->GetEntriesFast()-1;}
df9db588 173
821f8f1d 174 // -- Tracklets
175 AliAODTracklets *GetTracklets() const { return fTracklets; }
176
3dd9f9e3 177 // -- Calorimeter Cells
e649177a 178 AliAODCaloCells *GetEMCALCells() const { return fEmcalCells; }
179 AliAODCaloCells *GetPHOSCells() const { return fPhosCells; }
3dd9f9e3 180
866d8d78 181 // -- Dimuons
182 TClonesArray *GetDimuons() const { return fDimuons; }
183 Int_t GetNDimuons() const { return fDimuons->GetEntriesFast(); }
184 Int_t GetNumberOfDimuons() const { return GetNDimuons(); }
185 AliAODDimuon *GetDimuon(Int_t nDimu) const { return (AliAODDimuon*)fDimuons->UncheckedAt(nDimu); }
186 Int_t AddDimuon(const AliAODDimuon* dimu)
187 {new((*fDimuons)[fDimuons->GetEntriesFast()]) AliAODDimuon(*dimu); return fDimuons->GetEntriesFast()-1;}
188
df9db588 189 // -- Services
ec4af4c1 190 void CreateStdContent();
08e4c457 191 void SetStdNames();
ec4af4c1 192 void GetStdContent();
5c1dc41f 193 void CreateStdFolders();
3dd9f9e3 194 void ResetStd(Int_t trkArrSize = 0,
195 Int_t vtxArrSize = 0,
196 Int_t v0ArrSize = 0,
9a244178 197 Int_t cascadeArrSize = 0,
3dd9f9e3 198 Int_t jetSize = 0,
199 Int_t caloClusSize = 0,
200 Int_t fmdClusSize = 0,
866d8d78 201 Int_t pmdClusSize = 0,
202 Int_t dimuonArrsize =0
9a244178 203 );
ec4af4c1 204 void ClearStd();
ec8aded8 205 void Reset() {ClearStd();}
3b93c32a 206 void ReadFromTree(TTree *tree, Option_t* opt = "");
f12d42ce 207 void WriteToTree(TTree* tree) const {tree->Branch(fAODObjects);}
08e4c457 208
209 void Print(Option_t *option="") const;
c8e4f399 210 void MakeEntriesReferencable();
211 static void AssignIDtoCollection(TCollection* col);
08e4c457 212 private :
df9db588 213
5c1dc41f 214 TList *fAODObjects; // list of AODObjects
215 TFolder *fAODFolder; // folder structure of branches
dd389a30 216 Bool_t fConnected; //! flag if leaves are alreday connected
df9db588 217 // standard content
3dd9f9e3 218 AliAODHeader *fHeader; //! event information
219 TClonesArray *fTracks; //! charged tracks
220 TClonesArray *fVertices; //! vertices
221 TClonesArray *fV0s; //! V0s
9a244178 222 TClonesArray *fCascades; //! Cascades
3dd9f9e3 223 AliAODTracklets *fTracklets; //! SPD tracklets
224 TClonesArray *fJets; //! jets
37792174 225 AliAODCaloCells *fEmcalCells; //! EMCAL calorimenter cells
226 AliAODCaloCells *fPhosCells; //! PHOS calorimenter cells
3dd9f9e3 227 TClonesArray *fCaloClusters; //! calorimeter clusters
228 TClonesArray *fFmdClusters; //! FMDclusters
229 TClonesArray *fPmdClusters; //! PMDclusters
866d8d78 230 TClonesArray *fDimuons; //! dimuons
821f8f1d 231
08e4c457 232 static const char* fAODListName[kAODListN]; //!
233
866d8d78 234 ClassDef(AliAODEvent, 6);
df9db588 235};
236
237#endif