Dear ROOTers,
Some time ago I made quite an effort to optimize tree memory managment when handling 25000 trees, and with the kind help
from Philippe I was finally able to achieve this goal, see:
root.cern.ch/phpBB2/viewtopic.ph … a01c03ed42
The main suggestion was to use “tree->DropBaskets()”, which resulted in a dramatical improvement.
This works perfectly fine with root_v5.24/00 but causes severe problems with root_v5.26/00 as the following example shows:
Int_t XGCProcesSet::DoMultichipExpress(Int_t numdata, TTree **datatree)
{
idx = 0;
for (Int_t i=0; i<size; i++) {
datatree[0]->GetEntry(i);
ij = XY2Index(gccell[0]->GetX(), gccell[0]->GetY(), numcols);
if (arrMask[ij] == 1) {
arrIndx[ij] = idx++;
}//if
}//for_i
datatree[0]->DropBaskets(); //<==== PROBLEM
// some code
for (Int_t k=0; k<numdata; k++) {
idx = 0;
for (Int_t i=0; i<size; i++) {
datatree[k]->GetEntry(i);
if (arrMask[i] == 1) {
table[k][idx++] = gccell[k]->GetIntensity();
if(i>2000 && i<2020)cout << "k= " << k << " i= " << i << " x= " << gccell[k]->GetX() << " y= " << gccell[k]->GetY() << " inten= " << gccell[k]->GetIntensity() << endl;
}//if
}//for_i
}//for_k
// some code
}
With this code I get the following strange output:
k= 0 i= 2001 x= 125 y= 125 inten= 1142.3
k= 0 i= 2002 x= 125 y= 125 inten= 1142.3
k= 0 i= 2003 x= 125 y= 125 inten= 1142.3
k= 0 i= 2004 x= 125 y= 125 inten= 1142.3
k= 0 i= 2005 x= 125 y= 125 inten= 1142.3
k= 0 i= 2006 x= 125 y= 125 inten= 1142.3
k= 0 i= 2007 x= 125 y= 125 inten= 1142.3
k= 0 i= 2008 x= 125 y= 125 inten= 1142.3
k= 0 i= 2009 x= 125 y= 125 inten= 1142.3
k= 0 i= 2010 x= 125 y= 125 inten= 1142.3
k= 0 i= 2011 x= 125 y= 125 inten= 1142.3
k= 0 i= 2012 x= 125 y= 125 inten= 1142.3
k= 0 i= 2013 x= 125 y= 125 inten= 1142.3
k= 0 i= 2014 x= 125 y= 125 inten= 1142.3
k= 1 i= 2001 x= 111 y= 15 inten= 697.8
k= 1 i= 2002 x= 112 y= 15 inten= 840.3
k= 1 i= 2003 x= 113 y= 15 inten= 867.8
etc
However, when I delete the line “datatree[0]->DropBaskets()” I get the correct output:
k= 0 i= 2001 x= 111 y= 15 inten= 704.3
k= 0 i= 2002 x= 112 y= 15 inten= 852.3
k= 0 i= 2003 x= 113 y= 15 inten= 908.8
k= 0 i= 2004 x= 114 y= 15 inten= 721.5
k= 0 i= 2005 x= 115 y= 15 inten= 3913.3
k= 0 i= 2006 x= 116 y= 15 inten= 1804.8
k= 0 i= 2007 x= 117 y= 15 inten= 798.9
k= 0 i= 2008 x= 118 y= 15 inten= 776.1
k= 0 i= 2009 x= 119 y= 15 inten= 1370.1
k= 0 i= 2010 x= 120 y= 15 inten= 765.4
k= 0 i= 2011 x= 121 y= 15 inten= 1027.1
k= 0 i= 2012 x= 122 y= 15 inten= 983.9
k= 0 i= 2013 x= 123 y= 15 inten= 837.1
k= 0 i= 2014 x= 124 y= 15 inten= 737.1
k= 1 i= 2001 x= 111 y= 15 inten= 697.8
k= 1 i= 2002 x= 112 y= 15 inten= 840.3
k= 1 i= 2003 x= 113 y= 15 inten= 867.8
etc
This is only an example. In every function where I use tree->DropBaskets(), I get similar problems.
Can you tell me why tree->DropBaskets() does no longer work in root_v5.26/00?
BTW, the link “http://root.cern.ch/files/brun_lcgapp09.pdf” seems to be broken.
Best regards
Christian