]>
Commit | Line | Data |
---|---|---|
6bc5f287 | 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> | |
500d54ab | 9 | #include <TChain.h> |
6bc5f287 | 10 | |
11 | #include "AliESD.h" | |
12 | #include "AliESDfriend.h" | |
500d54ab | 13 | #include "AliTrackPointArray.h" |
6bc5f287 | 14 | #endif |
15 | ||
16 | void ReadESDfriend(Bool_t readFriend=kTRUE) { | |
500d54ab | 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 | ||
6bc5f287 | 25 | AliESD *ev=0; |
26 | esdTree->SetBranchAddress("ESD",&ev); | |
27 | ||
500d54ab | 28 | // Attach the branch with ESD friends |
6bc5f287 | 29 | AliESDfriend *evf=0; |
30 | if (readFriend) { | |
500d54ab | 31 | esdTree->SetBranchStatus("ESDfriend*",1); |
32 | esdTree->SetBranchAddress("ESDfriend.",&evf); | |
6bc5f287 | 33 | } |
34 | ||
35 | Int_t nev=esdTree->GetEntries(); | |
36 | for (Int_t i=0; i<nev; i++) { | |
6bc5f287 | 37 | esdTree->GetEntry(i); |
38 | ||
500d54ab | 39 | cout<<endl<<"Event number: "<<i<<endl; |
40 | Int_t n=ev->GetNumberOfTracks(); | |
41 | cout<<"Number of tracks: "<<n<<endl; | |
500d54ab | 42 | |
6bc5f287 | 43 | ev->SetESDfriend(evf); //Attach the friend to the ESD |
44 | ||
45 | // Now the attached information can be accessed via pointer to ESD. | |
46 | // Example: indices of the TPC clusters associated with the track number 0. | |
9fd6b54e | 47 | if (n > 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; | |
62665e7f | 54 | UChar_t map=t->GetITSClusterMap(); |
55 | cout<<" ITS cluster map (from SPDs to SSDs): "; | |
56 | for (Int_t i=0; i<6; i++) cout<<TESTBIT(map,i)<<' '; | |
57 | cout<<endl; | |
500d54ab | 58 | |
59 | // Example: track points associated with the track number 0. | |
9fd6b54e | 60 | const AliTrackPointArray *pa=t->GetTrackPointArray(); |
61 | if (pa != 0) { | |
62 | n=pa->GetNPoints(); | |
63 | const Float_t *x=pa->GetX(); | |
64 | cout<<" Number of track points: "<<n<<endl; | |
65 | if (n>7) | |
66 | cout<<" X coordinate of the 7th track point: "<<x[7]<<endl; | |
67 | } | |
68 | } | |
69 | ||
70 | delete ev; ev=0; | |
71 | delete evf; evf=0; | |
72 | ||
6bc5f287 | 73 | } |
74 | ||
75 | delete esdTree; | |
76 | } |