Please provide the following information:
ROOT Version (e.g. 6.12/02): 5.34.35
Platform, compiler (e.g. CentOS 7.3, gcc6.2): Fedora 27, python 2.7.14
Dear All,
My code is big, so difficult to provide a working example, but maybe you will give me a clue. I have a TChain and methods of my class operating on it. The problem is, that TChain::LoadTree() does not seem to always give a proper entry. When I simply loop through the TChain entries from 0 to the last, the return value should get “reset” to 0 when the LoadTree() changes the tree. Still, it does so only in special cases.
This is my test method:
def get_pdm_lightcurve(self, moment=0, sum=False, xaxis=0):
for av2 in xrange(0, self.frame_cnt):
brentry = self.tree_chain.LoadTree(av2)
self.cur_chain.GetEntry(av2)
trentry = self.get_pdm_array(av2)
# trentry = self.get_tree_entry_from_chain(av2)
print av2, brentry, trentry
# print self.cur_chain, self.cur_chain.GetFile().GetName(), self.cur_chain.GetTree().GetName(), self.cur_chain.GetTree().GetEntriesFast(), self.cur_chain.GetTree()
return 0
def get_pdm_array(self, frame=-1, ccb=0, pdm=0, use_mask=None, use_subtr=None, use_calib=None, use_eff=None, use_deadtime=None, zero_bad_pixels=True, use_crosstalk=None):
brentry1 = self.cur_chain.LoadTree(frame)
return brentry1
Entries in single trees go up to 3199. So the correct print output is:
"
…
3198 3198 3198
3199 3199 3199
3200 0 0
3201 1 1
…
"
However, it is:
"
…
3198 3198 3198
3199 3199 3199
3200 3200 3200
3201 3201 3201
…
"
unless I call get_pdm_array() somewhere earlier in the code and store its return value (!) even though I don’t use this value later. If I do so, TChain::LoadEntry starts to give a proper entry in get_pdm_array(), but keeps giving a bad entry in get_pdm_lightcurve() that calls it:
"
…
3198 3198 3198
3199 3199 3199
3200 3200 0
3201 3201 1
3202 3202 2
…
"
You see an other commented out printout. I checked that the current TTree is the same in both functions, addresses are the same… So I am not sure how this behaviour is possible.
Do you think you could give me a clue to what may be wrong without a working example?