Persisting candidates from HLT2 lines in the Sprucing does not work.
I do the following, I define a sprucing line as:
from PyConf.reading import get_particles, upfront_decoder
def Sprucing_get_topo(name='Spruce_GetTopoCandidates'):
with upfront_decoder.bind(input_process='Hlt2', stream=""):
topo_particles = get_particles("/Event/HLT2/Hlt2Topo3Body/Particles")
# the filter doesn't make a difference for the error, just for me to test that the unpacking works.
dummy_filter = ParticleFilter(name = "Filter_Topo_candidates", Input = topo_particles,Cut = F.FILTER( (F.PT>0) & (F.CHILD(1,F.PT>0))))
return SpruceLine(
name=name,
algs=[topo_particles, dummy_filter],
#hlt1_filter_code="HLT_PASS_RE('Hlt1GECPassthroughDecision')",
hlt2_filter_code="Hlt2Topo3BodyDecision")
Then I run Moore/run lbexec Hlt2Conf.Sprucing_production:excl_spruce_production Moore/Hlt/Hlt2Conf/options/sprucing/lbexec_yamls/excl_spruce_2022_data.yaml
the only change from the committed code is that I add the line to one stream (b2oc_lines.update({"SpruceTopoPassThrough" : Sprucing_get_topo}).
When running the sprucing, I get the following error
b2oc_Spruce_Packer ERROR auto LHCb::{anonymous}::Encoder::id(const string&) const : could not locate packedobjectlocation /Event/Spruce/HLT2/Topo_unfiltered_twobody_merger/OutputContainer (configured prefix=/Event/Spruce/) in table for key 0x9ddf8c8a
b2oc_Spruce_Packer ERROR Maximum number of errors ( 'ErrorMax':1) reached.
HLTControlFlowMgr FATAL Event failed in Node HltPackedBufferWriter/b2oc_Spruce_PackedBufferWriter : Error in algorithm execute
b2oc_Spruce_Packer ERROR auto LHCb::{anonymous}::Encoder::id(const string&) const : could not locate packedobjectlocation /Event/Spruce/HLT2/Topo_unfiltered_twobody_merger/OutputContainer (configured prefix=/Event/Spruce/) in table for key 0x9ddf8c8a
In this case, I was trying to persist HLT2 candidates for later use for TISTOS in DaVinci.