Rooters:
In this post, I describe a possible bug involved in BuildIndex
(or GetEntryWithIndex() ).
I have a TFile with a tree:
root [48] T->Print()
******************************************************************************
*Tree :T : ntic ndate close shsOstd *
*Entries : 1002600 : Total = 24070746 bytes File Size = 2654646 *
* : : Tree compression factor = 9.09 *
******************************************************************************
*Branch :ntic : ntic/I *
*Entries : 1002600 : Total Size= 3999500 bytes File Size = 32834 *
*Baskets : 125 : Basket Size= 32000 bytes Compression= 121.81 *
*............................................................................*
*Branch :ndate : ndate/I *
*Entries : 1002600 : Total Size= 3999625 bytes File Size = 59317 *
*Baskets : 125 : Basket Size= 32000 bytes Compression= 67.43 *
*............................................................................*
*Branch :close : close/D *
*Entries : 1002600 : Total Size= 8031247 bytes File Size = 1628450 *
*Baskets : 251 : Basket Size= 32000 bytes Compression= 4.93 *
*............................................................................*
*Branch :shsOstd : shsOstd/D *
*Entries : 1002600 : Total Size= 8031749 bytes File Size = 925420 *
*Baskets : 251 : Basket Size= 32000 bytes Compression= 8.68 *
*............................................................................*
Some of the entries look like this:
root [46] T.Scan("ntic:ndate:close", "ntic==8898 && ndate >100")
************************************************
* Row * ntic * ndate * close *
************************************************
* 996101 * 8898 * 101 * 88.562 *
* 996102 * 8898 * 102 * 76.75 *
* 996103 * 8898 * 103 * 84.188 *
* 996104 * 8898 * 104 * 87.344 *
* 996105 * 8898 * 105 * 74 *
* 996106 * 8898 * 106 * 86.125 *
* 996107 * 8898 * 107 * 68.219 *
* 996108 * 8898 * 108 * 73.75 *
* 996109 * 8898 * 109 * 89.75 *
* 996110 * 8898 * 110 * 89.531 *
* 996111 * 8898 * 111 * 106.375 *
* 996112 * 8898 * 112 * 216.344 *
* 996113 * 8898 * 113 * 161.031 *
* 996114 * 8898 * 114 * 159.688 *
* 996115 * 8898 * 115 * 171.375 *
* 996116 * 8898 * 116 * 130.25 *
* 996117 * 8898 * 117 * 113.062 *
* 996118 * 8898 * 118 * 123.875 *
* 996119 * 8898 * 119 * 128.688 *
************************************************
==> 19 selected entries
Now, I build an index:
T.SetEstimate(1002600)
T->BuildIndex("ntic", "ndate")
And let me extract the same series of ndate and close as shown above
by using this index.
root [37] Double_t close;
root [38] Double_t shsOstd;
root [39] T->SetBranchAddress("close", &close);
root [40] T->SetBranchAddress("shsOstd", &shsOstd);
root [47] { for(Int_t i=101; i<=119; ++i) {
end with '}'> T->GetEntryWithIndex(8898, i);
end with '}'> cout<<i<<" "<< close << endl;
end with '}'> }
end with '}'> }
101 59.234
102 88.562
103 76.75
104 84.188
105 87.344
106 74
107 86.125
108 68.219
109 73.75
110 89.75
111 89.531
112 106.375
113 216.344
114 161.031
115 159.688
116 171.375
117 130.25
118 113.062
119 123.875
We see that the values for close has been shifted.
Can you spot any thing wrong in my process??
Or
What went wrong in the extraction steps using the index
built by BuildIndex() ????
HP
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:32 MET