ROOT logo
/***************************************************************************
 *   This macros collects into a common Tree sets of ESD objects 
 *   saved individually in separate files given by "fnames".
 *   Example:
 *        root [0] .L $ALICE_ROOT/STEER/AliESD2Tree.C
 *        root [1] char * names[] = {"rfio:///castor/cern.ch/user/a/aliprod/AliEn-1.0/data/00001/00205.1077678127","rfio:///castor/cern.ch/user/a/aliprod/AliEn-1.0/data/00001/00467.1077678996"}
 *        root [2] AliESD2Tree(names,2)
 *    
 **************************************************************************/

#if !defined(__CINT__) || defined(__MAKECINT__)
  #include <TError.h>
  #include <Riostream.h>
  #include <TFile.h>
  #include <TTree.h>
  #include <TKey.h>

  #include "AliESD.h"
#endif

static const Char_t *names[]={"AliESDs.root"};
static Int_t n=sizeof(names)/sizeof(Char_t *);

Int_t AliESD2Tree(const Char_t *fnames[]=names, Int_t nf=n) {
  TFile out("AliESDtree.root","recreate");

  TTree *esdTree=new TTree("esdTree","Tree with ESD objects");
  AliESD *event=0;
  esdTree->Branch("ESD","AliESD",&event);  

  for (Int_t i=0; i<nf; i++) {
      TFile * in = TFile::Open(fnames[i]);
      if (!in->IsOpen()) {
         ::Error("AliESD2Tree.C","Can't open file %s",fnames[i]);
         continue;
      }
      TKey *key=0;
      TIter next(in->GetListOfKeys());
      while ((key=(TKey*)next())!=0) {
          event=(AliESD*)key->ReadObj();
          esdTree->Fill();
          delete event;
      }
      in->Close();
  }  
  
  out.cd();
  esdTree->Write();
  delete esdTree;

  return 0;
}
 AliESD2Tree.C:1
 AliESD2Tree.C:2
 AliESD2Tree.C:3
 AliESD2Tree.C:4
 AliESD2Tree.C:5
 AliESD2Tree.C:6
 AliESD2Tree.C:7
 AliESD2Tree.C:8
 AliESD2Tree.C:9
 AliESD2Tree.C:10
 AliESD2Tree.C:11
 AliESD2Tree.C:12
 AliESD2Tree.C:13
 AliESD2Tree.C:14
 AliESD2Tree.C:15
 AliESD2Tree.C:16
 AliESD2Tree.C:17
 AliESD2Tree.C:18
 AliESD2Tree.C:19
 AliESD2Tree.C:20
 AliESD2Tree.C:21
 AliESD2Tree.C:22
 AliESD2Tree.C:23
 AliESD2Tree.C:24
 AliESD2Tree.C:25
 AliESD2Tree.C:26
 AliESD2Tree.C:27
 AliESD2Tree.C:28
 AliESD2Tree.C:29
 AliESD2Tree.C:30
 AliESD2Tree.C:31
 AliESD2Tree.C:32
 AliESD2Tree.C:33
 AliESD2Tree.C:34
 AliESD2Tree.C:35
 AliESD2Tree.C:36
 AliESD2Tree.C:37
 AliESD2Tree.C:38
 AliESD2Tree.C:39
 AliESD2Tree.C:40
 AliESD2Tree.C:41
 AliESD2Tree.C:42
 AliESD2Tree.C:43
 AliESD2Tree.C:44
 AliESD2Tree.C:45
 AliESD2Tree.C:46
 AliESD2Tree.C:47
 AliESD2Tree.C:48
 AliESD2Tree.C:49
 AliESD2Tree.C:50
 AliESD2Tree.C:51
 AliESD2Tree.C:52
 AliESD2Tree.C:53