Reading all events of a ROOT Tree

//*CMZ :          10/01/97  11.38.56  by  Rene Brun
//*-- Author :    Rene Brun   10/01/97
{
//  This macro read all events generated by the test program Event
//  provided in $ROOTSYS/test.
//
//  NOTE: Before executing this macro, you must have executed 
//  the macro eventload to load a shared library.
//
//  This small program simply counts the number of bytes read and dump
//  the first 2 events.

   gROOT->Reset();

//   Connect file generated in $ROOTSYS/test
   TFile f("Event.root");

//   Set a maximum for tree buffers in memory at 20 Mbytes
   T.SetMaxVirtualSize(20000000);

//   Create a timer object to benchmark this loop
   TStopwatch timer;
   timer.Start();

//   Start main loop on all events
   Event *event = new Event();   //we create the event object once outside the loop
   TClonesArray *tracks = 0;
   TBranch *branch = T.GetBranch("event");
   branch->SetAddress(event);
   Int_t nevent = T.GetEntries();
   Int_t nb = 0;
   for (Int_t i=0;i<nevent;i++) {
      if(i%50 == 0) printf("Event:%d\n",i);
      nb += T.GetEvent(i);                   //read complete event in memory
      if (i < 3) event->Dump();              //dump the first 3 events
      tracks = event->GetTracks();           //get pointer to the TClonesArray object
      tracks->Clear();                       //clear it
   }

//  Stop timer and print results
   timer.Stop();
   Float_t mbytes = 0.000001*nb;
   Double_t rtime = timer.RealTime();
   Double_t ctime = timer.CpuTime();
   printf("%d events and %d bytes read.\n",nevent,nb);
   printf("file compression factor = %f\n",f.GetCompressionFactor());
   printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
   printf("You read %f Mbytes/Realtime seconds\n",mbytes/rtime);
   printf("You read %f Mbytes/Cputime seconds\n",mbytes/ctime);

//  Delete ClonesArray and track objects
   event->Finish();
}


ROOT page - Class index - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.