+#if !defined(__CINT__) || defined(__MAKECINT__)
+
+#include <Riostream.h>
+#include "TFile.h"
+#include "TTree.h"
+
+#include "AliAODEvent.h"
+#include "AliAODHeader.h"
+#include "AliAODVertex.h"
+#include "AliAODTrack.h"
+#include "AliAODCluster.h"
+
+#endif
+
void ReadAOD(const char *fileName = "AliAOD.root") {
// open input file and get the TTree
TFile inFile(fileName, "READ");
- TTree *aodTree = (TTree*)inFile.Get("AOD");
+ if (!inFile.IsOpen()) return;
+
+ TTree *aodTree = (TTree*)inFile.Get("aodTree");
- AliAODEvent *aod = aodTree->GetUserInfo()->FindObject("AliAODEvent");
- TIter next(aod->GetList());
- TNamed *el;
- while(el=(TNamed*)next())
- aodTree->SetBranchAddress(el->GetName(),aod->GetList()->GetObjectRef(el));
+ AliAODEvent *ev = new AliAODEvent();
+ ev->ReadFromTree(aodTree);
// loop over events
Int_t nEvents = aodTree->GetEntries();
// read events
aodTree->GetEvent(nEv);
-
- // set pointers
- aod->GetStdContent();
//print event info
- aod->GetHeader()->Print();
+ ev->GetHeader()->Print();
// loop over tracks
- Int_t nTracks = aod->GetNTracks();
+ Int_t nTracks = ev->GetNTracks();
for (Int_t nTr = 0; nTr < nTracks; nTr++) {
+ AliAODTrack *tr = ev->GetTrack(nTr);
+
// print track info
- cout << nTr+1 << "/" << nTracks << ": track pt: " << aod->GetTrack(nTr)->Pt() << ", vertex x of this track: " << aod->GetTrack(nTr)->GetProdVertex()->GetX() << endl;
+ cout << nTr+1 << "/" << nTracks << ": track pt: " << tr->Pt();
+ if (tr->GetProdVertex()) {
+ cout << ", vertex z of this track: " << tr->GetProdVertex()->GetZ();
+ }
+ cout << endl;
}
// loop over vertices
- Int_t nVtxs = aod->GetNVertices();
+ Int_t nVtxs = ev->GetNVertices();
for (Int_t nVtx = 0; nVtx < nVtxs; nVtx++) {
// print track info
- cout << nVtx+1 << "/" << nVtxs << ": vertex z position: " << aod->GetVertex(nVtx)->GetZ() << endl;
+ cout << nVtx+1 << "/" << nVtxs << ": vertex z position: " << ev->GetVertex(nVtx)->GetZ() << endl;
}
}