Split ttree data access and new class version

Hello all,

i have a large amount of track data stored in split ttrees. i’ve radically upgraded the track container class, but i’ve been unable to read the data created with the previous version. i understand that split trees do not use the custom streamer, but i thought i would still be able to access the split branches from the previous event version, but these branches are not filled if the track class is loaded. is there some way to access this data?

here are the details, focusing on the class data of interest:

track class version 2 had the following datamembers:

Float_t fEntrance[4];
Float_t fEnergy;
Float_t fReconStatus;

track version 3 only has the following:
Float_t fEnergy;

(both have additional datamembers that i will ignore for clarity)

if the track class is not loaded in root, and i read an entry in the split ttree (TTree::GetEntry()), i get the following values if i GetLeaf()->GetValue():

track.fEntrance[i] = (filled)
track.fEnergy= (filled)
track.fReconStatus = (filled)

if the track class is loaded, then i get the following:

track.fEntrance[i] = 0
track.fEnergy= (filled)
track.fReconStatus = 0

the problem is that in our analysis, it is unavoidable that the track class is loaded. but once this is loaded, the split ttree data vanishes. is there any way to still access this data?

please let me know if you have questions about the situation.

thanks,
dan

Dan,

You should give more information, in particular on the way you set the branch addresses.
The smallest possible running script (and data set) reproducing the problem would be appreciated.

Rene

Rene,

Here is a set of example files. The README describes exactly how to reproduce the problem.

thanks,
dan
splitTreeTest.tar.gz (11.1 KB)

Dan,

Thanks for the tar file. We will look into this problem after CHEP.

Rene