GaudiPython / PyConf configuration not filtering properly.
During debugging #93 (closed) we noticed that when enabling gaudipython with pyconf, the filtering algorithm was not filtering properly.
This issue is reproducible in the test_lumi.qmt , using the following branch: https://gitlab.cern.ch/lhcb/MooreOnline/-/tree/ca_test_lumi?ref_type=heads. (https://gitlab.cern.ch/lhcb/MooreOnline/-/blob/ca_test_lumi/AllenOnline/tests/options/test_allen_lumisummaries.py)
A few more details:
-
In order to make gaudipython to work with pyconf, I've declared all algorithms in the sequence:
top_node = CompositeNode("Top", [rawevent, odin, odin_handle, dec_banks, dec_decoder, rb_banks, rb_filter, lumi_banks, lumi_views, lumi_decoder, print_event, summary, writer, redecoder ]) -
The sequence has the following logic: [access_and_decode_routing_bit_banks, apply_routing_bit_filter, access_and_operate_on_lumi_banks] .
-
We need the routing bit filter (which is meant to select only lumi events), because lumi banks are not present on all events, therefore if we try to access them without the filter, the
access_and_operate_on_lumi_banksalgorithms will fail. -
Despite the fact that I've declared the filter in the sequence, the
access_and_operate_on_lumi_banksalgorithms still try to run over events that are supposed to be filtered out by the routing_bit_filter - hence leading to errors related to missing Lumi banks (which is expected, given that these events don't have lumi banks, and should not have passed the filter). I know that these events fail because I print them with theprint_eventalgorithm, which shows me that these events are not lumi events. -
When I remove gaudipython and set-up a pyconf node with implicit dependencies, the filter works fine and I don't get any errors. The problematic events that were causing the issue before are no longer showing up with
print_event.
Perhaps somebody more expert in pyconf/gaudipython could give me some pointers on if/how this can be fixed? For now my workaround is to filter out the non-lumi events before the test (i.e. at the input file level) but it would be good to have the possibility to filter and run with gaudipython.