|
22 | 22 | JSROOT.BranchType = { kLeafNode: 0, kBaseClassNode: 1, kObjectNode: 2, kClonesNode: 3, |
23 | 23 | kSTLNode: 4, kClonesMemberNode: 31, kSTLMemberNode: 41 }; |
24 | 24 |
|
| 25 | + JSROOT.IO.BranchBits = { |
| 26 | + kDoNotProcess: JSROOT.BIT(10), // Active bit for branches |
| 27 | + kIsClone: JSROOT.BIT(11), // to indicate a TBranchClones |
| 28 | + kBranchObject: JSROOT.BIT(12), // branch is a TObject* |
| 29 | + kBranchAny: JSROOT.BIT(17), // branch is an object* |
| 30 | + kAutoDelete: JSROOT.BIT(15), |
| 31 | + kDoNotUseBufferMap: JSROOT.BIT(22) // If set, at least one of the entry in the branch will use the buffer's map of classname and objects. |
| 32 | + } |
| 33 | + |
25 | 34 | JSROOT.TSelector = function() { |
26 | 35 | // class to read data from TTree |
27 | 36 | this.branches = []; // list of branches to read |
|
1409 | 1418 | return bskt ? (this.branch.fBasketEntry[k-1] + bskt.fNevBuf) : 0; |
1410 | 1419 | }, |
1411 | 1420 | LocateBuffer : function(entry) { |
1412 | | - // locate buffer at proper position |
| 1421 | + // locate buffer position like GetEntry() |
1413 | 1422 | var shift = entry - this.first_entry, off; |
| 1423 | + if (!this.branch.TestBit(JSROOT.IO.BranchBits.kDoNotUseBufferMap)) |
| 1424 | + this.raw.ClearObjectMap(); |
1414 | 1425 | if (this.basket.fEntryOffset) { |
1415 | 1426 | off = this.basket.fEntryOffset[shift]; |
| 1427 | + if (this.basket.fDisplacement) |
| 1428 | + this.raw.fDisplacement = this.basket.fDisplacement[shift]; |
1416 | 1429 | } else { |
1417 | 1430 | off = this.basket.fKeylen + this.basket.fNevBufSize * shift; |
1418 | 1431 | } |
|
2052 | 2065 | basket.fEntryOffset = buf.ReadFastArray(buf.ntoi4(), JSROOT.IO.kInt); |
2053 | 2066 | if (!basket.fEntryOffset) basket.fEntryOffset = [ basket.fKeylen ]; |
2054 | 2067 |
|
2055 | | - console.log(basket.fKeylen, 'READ fEntryOffset', basket.fEntryOffset.length, basket.fNevBuf); |
2056 | | - for (var k=0;k<20;++k) console.log('k',k,'off',basket.fEntryOffset[k]); |
2057 | | - |
2058 | 2068 | if (buf.remain() > 0) |
2059 | 2069 | basket.fDisplacement = buf.ReadFastArray(buf.ntoi4(), JSROOT.IO.kInt); |
| 2070 | + else |
| 2071 | + basket.fDisplacement = undefined; |
2060 | 2072 |
|
2061 | 2073 | // rollback buffer - not needed in the future |
2062 | 2074 | buf.locate(buf.raw_shift); |
|
0 commit comments