Dear rooters,
i compared performance of filling an histograms in two ways from a TChain list of files
but from performance (time -q -x -b TheMacro.C) i see that the Project() is much faster than the Loop() method of a class generated from a MakeClass() instruction
==>would you know why and how to make the Loop() as fast as the
Project() method
i see that if i do many Project(), at a given threshold of number of histograms to fill, the Loop() method becomes more faster, because in the Project() method, one loop each time on the whole events while in the Loop() method from MakeClass() filling the histograms on the fly, whereas in the Project() method, it loops each time again on the events. So my goal would be to understand the fact that individual Project() method is so fast, in order to improve the Loop() method that is automaticaly generated from the MakeClass() instruction (sorry for redundance of the observed behaviour, it is to explains the phenomena)
thank you
here is a minimal example :
{
#include "PAUReco.C"
TChain *mychain_data_7000=new TChain("PAUReco"); gROOT->ProcessLine(".x menu_ChooseDatasets.C");
TH1F *hist1=new TH1F("hist1","hist1",1,0,2000);
//first method :
mychain_data_7000->Project("hist1","ph_pt/1000");
//second method : (i comment the first or the second method to compare
performances)
PAUReco myPAUReco(mychain_data_7000);
myPAUReco.Loop();
}
mychain_data_7000->Add("/sps/atlas/l/lal-photon/Trash/PAU-00-01-73/data_cutPt9/L1Calo/Run152166/*root*");
void PAUReco::Loop()
{
if (fChain == 0) return;
fChain->SetBranchStatus("*",0);
fChain->SetBranchStatus("ph_pt",1);
Long64_t nentries = fChain->GetEntries();
for (Long64_t jentry=0; jentry<nentries;jentry++) { Long64_t ientry = LoadTree(jentry);
if (ientry < 0) break;
fChain->GetEntry(jentry); // nbytes += nb;
int mysize=ph_pt->size();
for (int i_photon=0;i_photon<mysize;i_photon++) {
float myph_pt=ph_pt->at(i_photon)/1000.;
hist1->Fill(myph_pt);
}
} //end loop en entries
}
Received on Thu May 20 2010 - 13:42:10 CEST
This archive was generated by hypermail 2.2.0 : Sun Sep 05 2010 - 23:50:01 CEST