My ROOT tree contains vectors that are obviously of bogus length when I look at things with TTree::Process. But when I double click on the same leaves in a TBrowser window everything appears as it should be. I’m using ROOT 6/10/2.
I’ve created a root file with a TTree in it that uses a genreflex dictionary to load some plane (and fairly simple C structures) into the TTree. Opening it in ROOT, I can examine the tree with TBrowser, and even look at the various leaves. In particular, “VMEBranch.tdc_readouts.tdc_tdc_hits.channel_number”. This works just fine - the histogram is plotted, and the expected data is present.
But the problem comes when I use MakeSelector. There, when I attempt to examine the same channel_number, I see a huge number for the number of TDC hits in each event (rather than one or 3 or similar).
These files apparently require a dictionary - the self describing format in root 6/10/2 doesn’t have good enough fidelity to deal with this (I get bad_alloc exceptions).
Attached is a root file with 10 events: run_0000000276.root (12.0 KB)
the attached file readout.hh contains the complete data structure description - the top level (written out) object is VMEReadout: readout.hh (2.6 KB)
The commands to build the .so that contains the dictionary from this header file is:
genreflex readout.hh mathusla2root/VMEReadoutFlat.h -s sel.xml -o readout_rflx.cxx --rootmap libMATHUSLAReadout.rootmap --rootmap-lib libMATHUSLAReadout
g++ -c -Wall -Wextra -DLINUX $(shell root-config --cflags) -std=c++17 -fPIC readout_rflx.cxx -o readout_rflx.o
g++ readout_rflx.o -shared -o libMATHUSLAReadout.so
The sel file - renamed as .txt so that it can be attached here (you’ve disabled the attachment of xml files): sel.txt (479 Bytes)
And finally, the MakeSelector I was using. Look at the cout for the “.size()” item. That is the one that gives an error: LookAtTDCHits.h (3.6 KB)
LookAtTDCHits.C (3.3 KB)
The output I see is:
root [0] gSystem->Load("bin/libMATHUSLAReadout.so")
(int) 0
root [1] TFile *f = TFile::Open("run_0000000276.root")
(TFile *) 0x2dc0d00
root [2] MATHUSLA_EventData->Process("LookAtTDCHits.C", "", 10)
0
-> TDC Hit List (6148914691236517204)
1
-> TDC Hit List (18446744073530594644)
2
-> TDC Hit List (12297829382115120468)
3
-> TDC Hit List (6148914690699646292)
4
-> TDC Hit List (18446744072993723732)
5
-> TDC Hit List (12297829381578249556)
6
-> TDC Hit List (6148914690162775380)
7
-> TDC Hit List (18446744072456852820)
8
-> TDC Hit List (12297829381041378644)
9
-> TDC Hit List (6148914689625904468)
(long long) 0
root [3] .q
Obviously, those numbers in paren are bogus. Many thanks in advance!