Follow-up from "Add HltEfficiencyChecker tool to mooreanalysis" - behaviour of the routing bits writer/ Z -> mu mu old seg faults.
The following discussion from !1 (merged) should be addressed:
-
@rjhunter started a discussion: (+18 comments) @olupton and I made some progress on assessing where the
Z \rightarrow \mu\mu
issue is coming from.First of all, the control flow of this tool is like so:
trigger_node = CompositeNode( 'trigger_node', combineLogic=NodeLogic.NONLAZY_AND, children=[ top_cf_node, et, #top_cf_node, mc_unpackers()["MCParticles"], mc_unpackers()["MCVertices"], mcdtt ], forceOrder=True)
If
et
(an instance of anEventTuple
algorithm) is included, all decay modes work exceptZ \rightarrow \mu\mu
, which seg faults asTupleToolTrigger
is trying to write the tree. Ifet
is not included, all decays would fail at the 2nd, perhaps 5th event, complaining that they couldn't find the DecReports. This was strange since the code that allows them to find the DecReports was the first thing we did when we started writing this tool.The fact that it wasn't straight away the first event lead Olli to wonder if the GEC was involved, and indeed we saw that for 1 event the GEC was throwing away, the
ExecutionReportsWriter
wasn't called, and therefore there were no DecReports for that event. We verified this by asking theNoBiasLine
to accept everything, and amazingly everything worked for all decays.We then also saw that everything works now, for all decays, if
et
is not in the control flow as well.But this begs the question, if
MCDecayTreeTuple
was properly declaring its dependencies to theExecutionReportsWriter
, then shouldn'tExecutionReportsWriter
be called for every event? So we looked in the debug output of theHLTControlFlowMgr
and saw that indeed,MCDecayTreeTuple
is not declaring any dependencies, whereasEventTuple
is declaring its dependency toExecutionReportsWriter
.So the question is now, why doesn't
MCDecayTreeTuple
declare its dependencies properly, butEventTuple
does? They seem to both inherit fromGaudiTupleAlg
in the end. I don't know enough about how the scheduler works to be able to find out where it works out the dependencies. @rmatev @nnolte any ideas how I can look for this?