Hi Philippe,
I don't see anything that could trigger such a behaviour, but maybe I am missing something. This is the main loop of my code:
// connect branches
TBranch *b_runno;
collChain->SetBranchAddress("RunNumber", &runno, &b_runno);
TBranch *b_evno;
collChain->SetBranchAddress("EventNumber", &evno, &b_evno);
//Create a new file + a clone of old tree in new file TFile *newfile = new TFile(outFile.c_str(), "recreate"); TTree *newtree = collChain->CloneTree(0);
// do cloning
time_t stimee = time(NULL);
cout << "Start cloning tree at " << stimee << "..." << endl;
long stepsize = nentries / 100;
long stepleft = stepsize;
long evwritten = 0;
for (Long64_t jentry = 0; jentry < nentries; ++jentry) {
stepleft = 1; if (--stepleft == 0) { stepleft = stepsize; cout << jentry << "/" << nentries << " (" << evwritten << ", " << currtime() << ")\r"; fflush(stdout); } Long64_t ientry = collChain->LoadTree(jentry); collChain->GetEntry(ientry); if (vec_evnos[runno].find(evno) != vec_evnos[runno].end()) { newtree->Fill(); ++evwritten; }
I am using ROOT 5.26.00e and running over quasi-local files. If you prefer I can send you a test case including the complete macro.
cu,
Alexander
On 05/16/2011 05:46 PM, Philippe Canal wrote:
> Hi Alexander,
>
> LoadTree should be most of the time 'immediate'. The behavior you
> describe usually indicates that some other portion of the code is
> directly or indirectly doing another call to LoadTree with a totally
> different entry number
> ( 0 or GetEntries()-1 are the most typical). This result is having to
> open the file and load the TTree object every entry (and this is a
> 'slow' operation).
>
> Cheers,
> Philippe.
>
> On 5/16/11 10:41 AM, Alexander Mann wrote:
>>
>> Hi,
>>
>> I am using a slightly modified version of some standard ROOT example
>> code from
>>
>> http://root.cern.ch/root/html/tutorials/tree/copytree3.C.html
>>
>> to skim TTrees. The main difference is that I am using TChain instead
>> of TTree, and therefore I am using
>>
>> Long64_t ientry = collChain->LoadTree(jentry);
>> collChain->GetEntry(ientry);
>>
>> This works fine, but after ~500 events (which is probably all from the
>> first file in the TChain) the speed abruptly decreases from about 27
>> events/s to 0.05 events/s, spent in equal parts in LoadTree and
>> GetEntry as it seems.
>>
>> Is there something I can do about this?
>>
>> cu,
>> Alexander
>>
Received on Mon May 16 2011 - 17:58:45 CEST
This archive was generated by hypermail 2.2.0 : Mon May 16 2011 - 23:50:01 CEST