]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/ReadESDfriend.C
Writing the ESDfriends to a separate branch of the ESD tree.
[u/mrichter/AliRoot.git] / STEER / ReadESDfriend.C
1 //********************************************************************
2 //  Example of accessing the information stored in ESD friends
3 //      Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch
4 //********************************************************************
5
6 #if !defined( __CINT__) || defined(__MAKECINT__)
7   #include <Riostream.h>
8   #include <TFile.h>
9   #include <TChain.h>
10
11   #include "AliESD.h"
12   #include "AliESDfriend.h"
13   #include "AliTrackPointArray.h"
14 #endif
15
16 void ReadESDfriend(Bool_t readFriend=kTRUE) {
17    Char_t *name[]={
18      //Put here the names of the ESD files to be chained
19      "AliESDs.root"
20    };
21    Int_t n=sizeof(name)/sizeof(Char_t *); 
22    TChain *esdTree=new TChain("esdTree");
23    for (Int_t i=0; i<n; i++) esdTree->AddFile(name[i]);
24
25    AliESD *ev=0;
26    esdTree->SetBranchAddress("ESD",&ev);
27
28    // Attach the branch with ESD friends
29    AliESDfriend *evf=0;
30    if (readFriend) {
31       esdTree->SetBranchStatus("ESDfriend*",1);
32       esdTree->SetBranchAddress("ESDfriend.",&evf);
33    }
34
35    Int_t nev=esdTree->GetEntries();
36    for (Int_t i=0; i<nev; i++) {
37        esdTree->GetEntry(i);
38         
39        cout<<endl<<"Event number: "<<i<<endl;
40        Int_t n=ev->GetNumberOfTracks();
41        cout<<"Number of tracks: "<<n<<endl;
42        if (n==0) continue;
43
44        ev->SetESDfriend(evf); //Attach the friend to the ESD
45
46     // Now the attached information can be accessed via pointer to ESD.
47     // Example: indices of the TPC clusters associated with the track number 0.
48        const AliESDtrack *t=ev->GetTrack(0);
49        Int_t idx[AliESDfriendTrack::kMaxTPCcluster]; 
50        n=t->GetTPCclusters(idx);
51        cout<<"Track number 0"<<endl;
52        cout<<"   Number of TPC clusters: "<<n<<endl;
53        cout<<"   Index of the 7th TPC cluster: "<<idx[7]<<endl;
54
55     // Example: track points associated with the track number 0.
56        const AliTrackPointArray *pa=t->GetTrackPointArray();
57        if (pa==0) continue;
58        n=pa->GetNPoints();
59        const Float_t *x=pa->GetX();
60        cout<<"   Number of track points: "<<n<<endl;
61        if (n>7)
62        cout<<"   X coordinate of the 7th track point: "<<x[7]<<endl;
63        
64    }
65
66    delete esdTree;
67 }