]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliAODEvent.h
Fixing compiler warnings from Form(),
[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);}
a98c78e5 83 void SetDiamondZ(Float_t z, Float_t sig2z){if (fHeader) fHeader->SetDiamondZ(z,sig2z);}
08e4c457 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.;}
a98c78e5 92 Double_t GetDiamondZ() const {return fHeader ? fHeader->GetDiamondZ() : -999.;}
3bfd99da 93 void GetDiamondCovXY(Float_t cov[3]) const {cov[0]=-999.; if(fHeader) fHeader->GetDiamondCovXY(cov);}
a98c78e5 94 Double_t GetSigma2DiamondX() const {return fHeader ? fHeader->GetSigma2DiamondX() : -999.;}
95 Double_t GetSigma2DiamondY() const {return fHeader ? fHeader->GetSigma2DiamondY() : -999.;}
96 Double_t GetSigma2DiamondZ() const {return fHeader ? fHeader->GetSigma2DiamondZ() : -999.;}
08e4c457 97
98 void SetEventType(UInt_t eventType){fHeader->SetEventType(eventType);}
99 void SetTriggerMask(ULong64_t n) {fHeader->SetTriggerMask(n);}
100 void SetTriggerCluster(UChar_t n) {fHeader->SetTriggerCluster(n);}
101
27346f69 102 UInt_t GetEventType() const { return fHeader ? fHeader->GetEventType() : 0;}
103 ULong64_t GetTriggerMask() const { return fHeader ? fHeader->GetTriggerMask() : 0;}
104 UChar_t GetTriggerCluster() const { return fHeader ? fHeader->GetTriggerCluster() : 0;}
105 TString GetFiredTriggerClasses()const { return fHeader->GetFiredTriggerClasses();};
08e4c457 106 Double_t GetZDCN1Energy() const { return fHeader ? fHeader->GetZDCN1Energy() : -999.; }
107 Double_t GetZDCP1Energy() const { return fHeader ? fHeader->GetZDCP1Energy() : -999.; }
108 Double_t GetZDCN2Energy() const { return fHeader ? fHeader->GetZDCN2Energy() : -999.; }
109 Double_t GetZDCP2Energy() const { return fHeader ? fHeader->GetZDCP2Energy() : -999.; }
a85132e7 110 Double_t GetZDCEMEnergy(Int_t i) const { return fHeader ? fHeader->GetZDCEMEnergy(i) : -999.; }
08e4c457 111
df9db588 112 // -- Tracks
113 TClonesArray *GetTracks() const { return fTracks; }
114 Int_t GetNTracks() const { return fTracks->GetEntriesFast(); }
08e4c457 115 Int_t GetNumberOfTracks() const { return GetNTracks(); }
116 AliAODTrack *GetTrack(Int_t nTrack) const { return (AliAODTrack*)fTracks->UncheckedAt(nTrack); }
117 Int_t AddTrack(const AliAODTrack* trk)
118 {new((*fTracks)[fTracks->GetEntriesFast()]) AliAODTrack(*trk); return fTracks->GetEntriesFast()-1;}
fb41236c 119 Int_t GetMuonTracks(TRefArray *muonTracks) const;
fa8b0e56 120 Int_t GetNumberOfMuonTracks() const;
df9db588 121
122 // -- Vertex
123 TClonesArray *GetVertices() const { return fVertices; }
c1b93f02 124 Int_t GetNumberOfVertices() const { return fVertices->GetEntriesFast(); }
fb0e8d23 125 AliAODVertex *GetVertex(Int_t nVertex) const { return (AliAODVertex*)fVertices->At(nVertex); }
08e4c457 126 Int_t AddVertex(const AliAODVertex* vtx)
127 {new((*fVertices)[fVertices->GetEntriesFast()]) AliAODVertex(*vtx); return fVertices->GetEntriesFast()-1;}
5c2fdfa2 128
3dd9f9e3 129 // primary vertex
130 virtual AliAODVertex *GetPrimaryVertex() const { return GetVertex(0); }
a98c78e5 131 virtual AliAODVertex *GetPrimaryVertexSPD() const;
132
133 // -- Pileup vertices
134 Int_t GetNumberOfPileupVerticesTracks() const;
135 Int_t GetNumberOfPileupVerticesSPD() const;
136 virtual AliAODVertex *GetPileupVertexSPD(Int_t iV=0) const;
137 virtual AliAODVertex *GetPileupVertexTracks(Int_t iV=0) const;
138 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;
139
140
df9db588 141
3dd9f9e3 142 // V0
143 TClonesArray *GetV0s() const { return fV0s; }
c1b93f02 144 Int_t GetNumberOfV0s() const { return fV0s->GetEntriesFast(); }
3dd9f9e3 145 AliAODv0 *GetV0(Int_t nV0) const { return (AliAODv0*)fV0s->UncheckedAt(nV0); }
146 Int_t AddV0(const AliAODv0* v0)
147 {new((*fV0s)[fV0s->GetEntriesFast()]) AliAODv0(*v0); return fV0s->GetEntriesFast()-1;}
148
9a244178 149 // Cascades
150 TClonesArray *GetCascades() const { return fCascades; }
151 Int_t GetNumberOfCascades() const { return fCascades->GetEntriesFast(); }
152 AliAODcascade *GetCascade(Int_t nCasc) const { return (AliAODcascade*)fCascades->UncheckedAt(nCasc); }
153 Int_t AddCascade(const AliAODcascade* cascade)
154 {new((*fCascades)[fCascades->GetEntriesFast()]) AliAODcascade(*cascade); return fCascades->GetEntriesFast()-1;}
155
3dd9f9e3 156 // -- EMCAL and PHOS Cluster
157 TClonesArray *GetCaloClusters() const { return fCaloClusters; }
158 Int_t GetNCaloClusters() const { return fCaloClusters->GetEntriesFast(); }
159 AliAODCaloCluster *GetCaloCluster(Int_t nCluster) const { return (AliAODCaloCluster*)fCaloClusters->UncheckedAt(nCluster); }
160 Int_t AddCaloCluster(const AliAODCaloCluster* clus)
161 {new((*fCaloClusters)[fCaloClusters->GetEntriesFast()]) AliAODCaloCluster(*clus); return fCaloClusters->GetEntriesFast()-1;}
162
78902954 163 Int_t GetEMCALClusters(TRefArray *clusters) const;
164 Int_t GetPHOSClusters(TRefArray *clusters) const;
165
166
3dd9f9e3 167 // -- FMD Cluster
168 TClonesArray *GetFmdClusters() const { return fFmdClusters; }
169 Int_t GetNFmdClusters() const { return fFmdClusters->GetEntriesFast(); }
170 AliAODFmdCluster *GetFmdCluster(Int_t nCluster) const { return (AliAODFmdCluster*)fFmdClusters->UncheckedAt(nCluster); }
171 Int_t AddFmdCluster(const AliAODFmdCluster* clus)
172 {new((*fFmdClusters)[fFmdClusters->GetEntriesFast()]) AliAODFmdCluster(*clus); return fFmdClusters->GetEntriesFast()-1;}
173
174 // -- PMD Cluster
175 TClonesArray *GetPmdClusters() const { return fPmdClusters; }
176 Int_t GetNPmdClusters() const { return fPmdClusters->GetEntriesFast(); }
177 AliAODPmdCluster *GetPmdCluster(Int_t nCluster) const { return (AliAODPmdCluster*)fPmdClusters->UncheckedAt(nCluster); }
178 Int_t AddPmdCluster(const AliAODPmdCluster* clus)
179 {new((*fPmdClusters)[fPmdClusters->GetEntriesFast()]) AliAODPmdCluster(*clus); return fPmdClusters->GetEntriesFast()-1;}
df9db588 180
181 // -- Jet
182 TClonesArray *GetJets() const { return fJets; }
183 Int_t GetNJets() const { return fJets->GetEntriesFast(); }
08e4c457 184 AliAODJet *GetJet(Int_t nJet) const { return (AliAODJet*)fJets->UncheckedAt(nJet); }
185 Int_t AddJet(const AliAODJet* vtx)
186 {new((*fJets)[fJets->GetEntriesFast()]) AliAODJet(*vtx); return fJets->GetEntriesFast()-1;}
df9db588 187
821f8f1d 188 // -- Tracklets
189 AliAODTracklets *GetTracklets() const { return fTracklets; }
190
3dd9f9e3 191 // -- Calorimeter Cells
e649177a 192 AliAODCaloCells *GetEMCALCells() const { return fEmcalCells; }
193 AliAODCaloCells *GetPHOSCells() const { return fPhosCells; }
3dd9f9e3 194
866d8d78 195 // -- Dimuons
196 TClonesArray *GetDimuons() const { return fDimuons; }
197 Int_t GetNDimuons() const { return fDimuons->GetEntriesFast(); }
198 Int_t GetNumberOfDimuons() const { return GetNDimuons(); }
199 AliAODDimuon *GetDimuon(Int_t nDimu) const { return (AliAODDimuon*)fDimuons->UncheckedAt(nDimu); }
200 Int_t AddDimuon(const AliAODDimuon* dimu)
201 {new((*fDimuons)[fDimuons->GetEntriesFast()]) AliAODDimuon(*dimu); return fDimuons->GetEntriesFast()-1;}
202
df9db588 203 // -- Services
ec4af4c1 204 void CreateStdContent();
08e4c457 205 void SetStdNames();
ec4af4c1 206 void GetStdContent();
5c1dc41f 207 void CreateStdFolders();
3dd9f9e3 208 void ResetStd(Int_t trkArrSize = 0,
209 Int_t vtxArrSize = 0,
210 Int_t v0ArrSize = 0,
9a244178 211 Int_t cascadeArrSize = 0,
3dd9f9e3 212 Int_t jetSize = 0,
213 Int_t caloClusSize = 0,
214 Int_t fmdClusSize = 0,
866d8d78 215 Int_t pmdClusSize = 0,
216 Int_t dimuonArrsize =0
9a244178 217 );
ec4af4c1 218 void ClearStd();
ec8aded8 219 void Reset() {ClearStd();}
3b93c32a 220 void ReadFromTree(TTree *tree, Option_t* opt = "");
f12d42ce 221 void WriteToTree(TTree* tree) const {tree->Branch(fAODObjects);}
08e4c457 222
223 void Print(Option_t *option="") const;
c8e4f399 224 void MakeEntriesReferencable();
225 static void AssignIDtoCollection(TCollection* col);
08e4c457 226 private :
df9db588 227
5c1dc41f 228 TList *fAODObjects; // list of AODObjects
229 TFolder *fAODFolder; // folder structure of branches
dd389a30 230 Bool_t fConnected; //! flag if leaves are alreday connected
df9db588 231 // standard content
3dd9f9e3 232 AliAODHeader *fHeader; //! event information
233 TClonesArray *fTracks; //! charged tracks
234 TClonesArray *fVertices; //! vertices
235 TClonesArray *fV0s; //! V0s
9a244178 236 TClonesArray *fCascades; //! Cascades
3dd9f9e3 237 AliAODTracklets *fTracklets; //! SPD tracklets
238 TClonesArray *fJets; //! jets
37792174 239 AliAODCaloCells *fEmcalCells; //! EMCAL calorimenter cells
240 AliAODCaloCells *fPhosCells; //! PHOS calorimenter cells
3dd9f9e3 241 TClonesArray *fCaloClusters; //! calorimeter clusters
242 TClonesArray *fFmdClusters; //! FMDclusters
243 TClonesArray *fPmdClusters; //! PMDclusters
866d8d78 244 TClonesArray *fDimuons; //! dimuons
821f8f1d 245
08e4c457 246 static const char* fAODListName[kAODListN]; //!
247
866d8d78 248 ClassDef(AliAODEvent, 6);
df9db588 249};
250
251#endif