Schedule B-tagging on jets in GNNVertexFitterAlgCfg; Update algorithm in GNNVertexFitterTool
As suggested by @dguest, the easiest solution for the time being to fix the GNNVertexFitterAlg
is to avoid the BTagging
object entirely. This MR configures GN2
to run directly on the jets, and then adjusts the GNNVertexFitterAlg
to read the decorations from the jets rather than the BTagging
object.
This also implements several changes to the algorithm used in GNNVertexFitterTool
:
- Removes the selections on the vertices by default. Since these may be an analysis-specific choice, it makes more sense to apply any vertex-level selections downstream. The selection on
maxChi2
is kept though to avoid very poorly fitted vertices. - Removes the vertex with the largest number of primary tracks, unless requested in the config with
includePrimaryVertex
. This aligns with the vertex finding definition used in puma. - Decorates vertices with the number of heavy-flavour tracks in the vertex (
nHFtrk
) - Adds an option for inclusive vertex fitting (
doInclusiveVertexing
), where all candidate vertices are merged into one before attempting a fit. Nothing fancy is done here if the fit fails. - Adds an option to remove vertices with zero heavy flavour tracks (
removeNonHFVertices
), once again to align with the puma implementation. This is only set toTrue
by default in the inclusive vertex fitting scenario. In the exclusive case such vertices can be filtered downstream usingnHFtrk
.
The FTAGX
derivation kernels are also updated to run two instances of the algorithm, one exclusive and one inclusive. There are then two output containers, GNNVertices
and InclusiveGNNVertices
for the two approaches. This could potentially be useful downstream, in particular for comparing to other vertexing approaches being studied.
Note that the GNN vertex fitting is left off by default to still not introduce any issues in DAOD productions. To turn it on, one needs to set
--preExec "flags.BTagging.GNNVertexFitter = True"