]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliAODEvent.h
b52ab93d4256ee4ceead054e95bf00c6a134c058
[u/mrichter/AliRoot.git] / STEER / AliAODEvent.h
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>
16 #include <TTree.h>
17 #include <TNamed.h>
18
19 #include "AliAODHeader.h"
20 #include "AliAODTrack.h"
21 #include "AliAODVertex.h"
22 #include "AliAODCluster.h"
23 #include "AliAODJet.h"
24 #include "AliAODTracklets.h"
25
26 class TTree;
27
28 class AliAODEvent : public TObject {
29
30  public :
31   AliAODEvent();
32   virtual ~AliAODEvent();
33
34   //AliAODEvent(const AliAODEvent& aodevent);  // not implemented
35   //AliAODEvent& operator=(const AliAODEvent& aodevent);  // not implemented
36
37   void          AddObject(TObject *obj);
38   TObject      *GetObject(const char *objName) const;
39   TList        *GetList()                const { return fAODObjects; }
40
41   // -- Header
42   AliAODHeader *GetHeader()              const { return (AliAODHeader*)fHeader; }
43   void          AddHeader(const AliAODHeader* hdx)
44     {
45         delete fHeader; fHeader = new AliAODHeader(*hdx);
46         (fAODObjects->FirstLink())->SetObject(fHeader);
47     }
48
49   // -- Tracks
50   TClonesArray *GetTracks()              const { return fTracks; }
51   Int_t         GetNTracks()             const { return fTracks->GetEntriesFast(); }
52   AliAODTrack  *GetTrack(Int_t nTrack)   const { return (AliAODTrack*)fTracks->At(nTrack); }
53   void          AddTrack(const AliAODTrack* trk)
54     {new((*fTracks)[fTracks->GetEntries()]) AliAODTrack(*trk);}
55   Int_t         GetMuonTracks(TRefArray *muonTracks) const;
56
57   // -- Vertex
58   TClonesArray *GetVertices()            const { return fVertices; }
59   Int_t         GetNVertices()           const { return fVertices->GetEntriesFast(); }
60   AliAODVertex *GetVertex(Int_t nVertex) const { return (AliAODVertex*)fVertices->At(nVertex); }
61   void          AddVertex(const AliAODVertex* vtx)
62     {new((*fVertices)[fVertices->GetEntries()]) AliAODVertex(*vtx);}
63   virtual AliAODVertex *GetPrimaryVertex() const { return GetVertex(0); }
64   
65
66   // -- Cluster
67   TClonesArray *GetClusters()            const { return fClusters; }
68   Int_t         GetNClusters()           const { return fClusters->GetEntriesFast(); }
69   AliAODCluster *GetCluster(Int_t nCluster) const { return (AliAODCluster*)fClusters->At(nCluster); }
70   void          AddCluster(const AliAODCluster* vtx)
71     {new((*fClusters)[fClusters->GetEntries()]) AliAODCluster(*vtx);}
72
73   // -- Jet
74   TClonesArray *GetJets()            const { return fJets; }
75   Int_t         GetNJets()           const { return fJets->GetEntriesFast(); }
76   AliAODJet *GetJet(Int_t nJet) const { return (AliAODJet*)fJets->At(nJet); }
77   void          AddJet(const AliAODJet* vtx)
78     {new((*fJets)[fJets->GetEntries()]) AliAODJet(*vtx);}
79
80   // -- Tracklets
81   AliAODTracklets *GetTracklets() const { return fTracklets; }
82
83   // -- Services
84   void    CreateStdContent();
85   void    GetStdContent();
86   void    ResetStd(Int_t trkArrSize = 0, Int_t vtxArrSize = 0);
87   void    ClearStd();
88   void    ReadFromTree(TTree *tree);
89   void    WriteToTree(TTree* tree) {tree->Branch(fAODObjects);}
90  private :
91
92   AliAODEvent(const AliAODEvent&); // Not implemented
93   AliAODEvent& operator=(const AliAODEvent&); // Not implemented
94
95   TList *fAODObjects; //  list of AODObjects
96   
97   // standard content
98   AliAODHeader    *fHeader;    //! event information
99   TClonesArray    *fTracks;    //! charged tracks
100   TClonesArray    *fVertices;  //! vertices
101   TClonesArray    *fClusters;  //! neutral particles
102   TClonesArray    *fJets;      //! jets
103   AliAODTracklets *fTracklets; //! SPD tracklets
104
105   ClassDef(AliAODEvent,2);
106 };
107
108 #endif