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