Skip to content

Commit dc17238

Browse files
committed
Introduce TBranch bits
clear object map when required
1 parent be99897 commit dc17238

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

scripts/JSRootTree.js

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,15 @@
2222
JSROOT.BranchType = { kLeafNode: 0, kBaseClassNode: 1, kObjectNode: 2, kClonesNode: 3,
2323
kSTLNode: 4, kClonesMemberNode: 31, kSTLMemberNode: 41 };
2424

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+
2534
JSROOT.TSelector = function() {
2635
// class to read data from TTree
2736
this.branches = []; // list of branches to read
@@ -1409,10 +1418,14 @@
14091418
return bskt ? (this.branch.fBasketEntry[k-1] + bskt.fNevBuf) : 0;
14101419
},
14111420
LocateBuffer : function(entry) {
1412-
// locate buffer at proper position
1421+
// locate buffer position like GetEntry()
14131422
var shift = entry - this.first_entry, off;
1423+
if (!this.branch.TestBit(JSROOT.IO.BranchBits.kDoNotUseBufferMap))
1424+
this.raw.ClearObjectMap();
14141425
if (this.basket.fEntryOffset) {
14151426
off = this.basket.fEntryOffset[shift];
1427+
if (this.basket.fDisplacement)
1428+
this.raw.fDisplacement = this.basket.fDisplacement[shift];
14161429
} else {
14171430
off = this.basket.fKeylen + this.basket.fNevBufSize * shift;
14181431
}
@@ -2052,11 +2065,10 @@
20522065
basket.fEntryOffset = buf.ReadFastArray(buf.ntoi4(), JSROOT.IO.kInt);
20532066
if (!basket.fEntryOffset) basket.fEntryOffset = [ basket.fKeylen ];
20542067

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-
20582068
if (buf.remain() > 0)
20592069
basket.fDisplacement = buf.ReadFastArray(buf.ntoi4(), JSROOT.IO.kInt);
2070+
else
2071+
basket.fDisplacement = undefined;
20602072

20612073
// rollback buffer - not needed in the future
20622074
buf.locate(buf.raw_shift);

0 commit comments

Comments
 (0)