Hi, 1.a There is so small overhead involved in each 'basket' of data. So the exact number of data points in each basket is probably more like 3992. 1.b Correct 1.c There will be one I/O operation to load entries 3993 to 7984 (whatever number you request between 3993 and 7984). 1.d Correct if you requested the tree to be compressed (this can be disabled). 2.a In this case the whole array 'd' is saved into one 'basket'. The number of such array in each basket depends of the size of dim. The basket is filled with as many entry as can fit into the 32000K. If one of the array is too big (i.e dim>3992), the basket will be made bigger to fit the data. 2.b Not without changing your class implementation. Cheers, Philippe -----Original Message----- From: owner-roottalk@pcroot.cern.ch [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of HP Wei Sent: Monday, December 09, 2002 1:29 PM To: roottalk@pcroot.cern.ch Subject: [ROOT] need info on low level stuff Hi, In order to squeeze the last bit of speed out of using ROOT, I need to understand the following points. Could any ROOT guru give me some clues ? Thanks. (1) Suppose I have a branch br whose buffer size is N=32000. The data type in this branch is double. (a) when calling br.GetEvent(0) is it true that in the buffer, we have 4000 (double) data points? From that buffer with a pool of 4000 numbers, ROOT then delivers the requested one into the linked variable (set up by SetBranchAddress()). (b) After (a), when we call br.GetEvent(3000), ROOT will NOT do disk I/O. Is this correct?? (c) After (a), if we do br.GetEvent(4015), a disk I/O is certanly invoked. Does the memory contain the entries from 4015 to 8014 ?? (d) in (a) and (c), the disk I/O process will involve one data de-compression for that block of data, right? (2) Suppose we have two branches: br1 : Int_t dim br2 : Double_t d[dim] Suppose the buffer size is N=32000. We first allocate enough space, by knowing dim, for the desired entry . Then, for example, br.GetEvent(0) will extract the 'whole' array into the allocated space. (a) how exactly is the process done? I mean, does ROOT divide the task into small ones, each of which involves only 32000 bytes. ROOT does one disk i/o for 32000 bytes and puts the data into the buffer, does the data decompression, and puts the resulting data into linked variable. (b) is there any low level stuff so that I can choose which part of the data in d[dim] is to be extracted and decompressed ??? --hp
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:23 MET