]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/ReadESDfriend.C
Coding conventions
[u/mrichter/AliRoot.git] / STEER / ReadESDfriend.C
index a06a1e494e97d6243c2d46a0a463c5bf6acf9424..62e3d30784f775c460593035f0bcb6c8834542ab 100644 (file)
@@ -8,7 +8,7 @@
   #include <TFile.h>
   #include <TChain.h>
 
-  #include "AliESD.h"
+  #include "AliESDEvent.h"
   #include "AliESDfriend.h"
   #include "AliTrackPointArray.h"
 #endif
@@ -22,55 +22,57 @@ void ReadESDfriend(Bool_t readFriend=kTRUE) {
    TChain *esdTree=new TChain("esdTree");
    for (Int_t i=0; i<n; i++) esdTree->AddFile(name[i]);
 
-   AliESD *ev=0;
-   esdTree->SetBranchAddress("ESD",&ev);
+   AliESDEvent *ev= new AliESDEvent();
+   if(readFriend)esdTree->SetBranchStatus("ESDfriend*",1);
+   ev->ReadFromTree(esdTree);
 
    // Attach the branch with ESD friends
    AliESDfriend *evf=0;
    if (readFriend) {
-      esdTree->SetBranchStatus("ESDfriend*",1);
-      esdTree->SetBranchAddress("ESDfriend.",&evf);
+     evf = (AliESDfriend*)ev->FindListObject("AliESDfriend");
+     if(!evf){
+       // works for both, we just want to avoid setting the branch adress twice
+       // in case of the new ESD
+       esdTree->SetBranchAddress("ESDfriend.",&evf); 
+     }
    }
 
    Int_t nev=esdTree->GetEntries();
    for (Int_t i=0; i<nev; i++) {
        esdTree->GetEntry(i);
-        
+       if(ev->GetAliESDOld())ev->CopyFromOldESD();
+      
        cout<<endl<<"Event number: "<<i<<endl;
-       Int_t n=ev->GetNumberOfTracks();
-       cout<<"Number of tracks: "<<n<<endl;
-
-       ev->SetESDfriend(evf); //Attach the friend to the ESD
-
-    // Now the attached information can be accessed via pointer to ESD.
-    // Example: indices of the TPC clusters associated with the track number 0.
-       if (n > 0) {
-          const AliESDtrack *t=ev->GetTrack(0);
-          Int_t idx[AliESDfriendTrack::kMaxTPCcluster]; 
-          n=t->GetTPCclusters(idx);
-          cout<<"Track number 0"<<endl;
-          cout<<"   Number of TPC clusters: "<<n<<endl;
-          cout<<"   Index of the 7th TPC cluster: "<<idx[7]<<endl;
-          UChar_t map=t->GetITSClusterMap();
-          cout<<"   ITS cluster map (from SPDs to SSDs): ";
-          for (Int_t i=0; i<6; i++) cout<<TESTBIT(map,i)<<' ';
-          cout<<endl;
-
-    // Example: track points associated with the track number 0.
-          const AliTrackPointArray *pa=t->GetTrackPointArray();
-          if (pa != 0) {
-             n=pa->GetNPoints();
-             const Float_t *x=pa->GetX();
-             cout<<"   Number of track points: "<<n<<endl;
-             if (n>7)
+       Int_t ntr=ev->GetNumberOfTracks();
+       cout<<"Number of tracks: "<<ntr<<endl;
+       // Now the attached information can be accessed via pointer to ESD.
+       // Example: indices of the TPC clusters associated with the track number 0.
+       if (ntr > 0) {
+        ev->SetESDfriend(evf); //Attach the friend to the ESD
+        const AliESDtrack *t=ev->GetTrack(0);
+        Int_t idx[AliESDfriendTrack::kMaxTPCcluster]; 
+        n=t->GetTPCclusters(idx);
+        cout<<"Number of friend tracks: "<<evf->GetNumberOfTracks() <<endl;
+        cout<<"Track number 0"<<endl;
+        cout<<"   Number of TPC clusters: "<<n<<endl;
+        cout<<"   Index of the 1st TPC cluster: "  <<idx[1]<<endl;
+        UChar_t map=t->GetITSClusterMap();
+        cout<<"   ITS cluster map (from SPDs to SSDs):\n";
+        for (Int_t k=0; k<6; k++) printf(" Bit %d: %d\n",k,(map&(1<<k))==(1<<k)) <<' ';
+        
+        // Example: track points associated with the track number 0.
+        const AliTrackPointArray *pa=t->GetTrackPointArray();
+        if (pa != 0) {
+          n=pa->GetNPoints();
+          const Float_t *x=pa->GetX();
+          cout<<"   Number of track points: "<<n<<endl;
+          if (n>7)
              cout<<"   X coordinate of the 7th track point: "<<x[7]<<endl;
-          }
+        }
+        
        }
-
-       delete ev;  ev=0;
-       delete evf; evf=0;
-
+       
    }
-
+   delete ev;
    delete esdTree;
 }