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