ATLAS Offline Software
Loading...
Searching...
No Matches
SegmentEdgeInferenceAlg.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4#ifndef MUONINFERENCE_SEGMENTEDGEINFERENCEALG_H
5#define MUONINFERENCE_SEGMENTEDGEINFERENCEALG_H
6
9#include "Gaudi/Property.h"
15
16namespace MuonML {
18 public:
19 using AthReentrantAlgorithm::AthReentrantAlgorithm;
20 StatusCode initialize() override;
21 StatusCode execute(const EventContext& ctx) const override;
22 private:
23 SG::ReadHandleKey<xAOD::MuonSegmentContainer> m_segmentKey{this, "SegmentKey", "MuonSegmentsFromR4"};
32 this, "PairGateDecoration", "MuonSegmentsFromR4.mlTrackComponent"};
34 this, "FilteredSegmentKey", "",
35 "Optional VIEW container containing only segments incident to a "
36 "post-classifier selected edge; empty disables the output"};
37 Gaudi::Property<float> m_pairGateThreshold{
38 this, "PairGateThreshold", 0.5f,
39 "Minimum edge probability used to form ML track components"};
40 Gaudi::Property<unsigned int> m_maxEdgesPerNode{
41 this, "MaxEdgesPerNode", 2,
42 "Keep at most this many highest-score neighbours per segment when forming the ML path graph; zero keeps all"};
43 Gaudi::Property<bool> m_useDegreeCappedComponents{
44 this, "UseDegreeCappedComponents", false,
45 "Use a global greedy degree cap instead of the mutual top-K path graph"};
46 Gaudi::Property<bool> m_requireMutualTopKEdges{
47 this, "RequireMutualTopKEdges", true,
48 "Retain an ML association only when both endpoint segments rank it in their top MaxEdgesPerNode scores"};
49 Gaudi::Property<bool> m_recoverOrphanNodes{
50 this, "RecoverOrphanNodes", true,
51 "For a thresholded node without a mutual top-K edge, retain its best one-sided top-K association"};
52 Gaudi::Property<unsigned int> m_seedAnchorsPerComponent{
53 this, "SeedAnchorsPerComponent", 0,
54 "Number of highest-score segments that may seed each ML component; zero keeps every retained segment"};
55 Gaudi::Property<bool> m_anchorInnermostLayer{
56 this, "AnchorInnermostLayer", false,
57 "Restrict seed anchors to inner segment(s)."};
58 Gaudi::Property<bool> m_keepBestSegmentPerChamber{
59 this, "KeepBestSegmentPerChamber", true,
60 "Keep only the ML-best segment in each chamber within a component"};
61 Gaudi::Property<unsigned int> m_minSegmentsPerComponent{
62 this, "MinSegmentsPerComponent", 2,
63 "Discard ML components with fewer retained segments"};
64 ToolHandle<ISegmentEdgeClassifierTool> m_edgeClassifier{this, "EdgeClassifierTool", "MuonML::SegmentEdgeClassifierTool/SegmentEdgeClassifierTool"};
65 };
66}
67#endif
DataVector adapter that acts like it holds const pointers.
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid/attr name from which a WriteDecorHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.
An algorithm that can be simultaneously executed in multiple threads.
Gaudi::Property< bool > m_keepBestSegmentPerChamber
Gaudi::Property< bool > m_anchorInnermostLayer
SG::WriteDecorHandleKey< xAOD::MuonSegmentContainer > m_pairGateDecorKey
Per-segment payload consumed by MlMsTrackSeeder: [componentId, isSeedAnchor] Empty means that the seg...
Gaudi::Property< bool > m_useDegreeCappedComponents
ToolHandle< ISegmentEdgeClassifierTool > m_edgeClassifier
Gaudi::Property< unsigned int > m_maxEdgesPerNode
Gaudi::Property< bool > m_requireMutualTopKEdges
StatusCode execute(const EventContext &ctx) const override
Gaudi::Property< unsigned int > m_minSegmentsPerComponent
SG::WriteHandleKey< ConstDataVector< xAOD::MuonSegmentContainer > > m_filteredSegmentKey
Gaudi::Property< bool > m_recoverOrphanNodes
SG::ReadHandleKey< xAOD::MuonSegmentContainer > m_segmentKey
Gaudi::Property< unsigned int > m_seedAnchorsPerComponent
Gaudi::Property< float > m_pairGateThreshold
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid/attr name from which a WriteDecorHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.