ATLAS Offline Software
PhiHoughTransformAlg.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 #ifndef MUONR4_MUONPATTERNRECOGNITIONALGS_PHIHOUGHTRANSFORMALG__H
5 #define MUONR4_MUONPATTERNRECOGNITIONALGS_PHIHOUGHTRANSFORMALG__H
6 
9 
12 
16 
19 
20 // muon includes
21 
22 
23 namespace MuonR4{
24 
34  public:
35  using AthReentrantAlgorithm::AthReentrantAlgorithm;
36  virtual ~PhiHoughTransformAlg() = default;
37  virtual StatusCode initialize() override;
38  virtual StatusCode execute(const EventContext& ctx) const override;
39 
40  private:
45  void prepareHoughPlane(HoughEventData & data) const;
46 
54  const MuonR4::HoughMaximum & maximum,
55  HoughEventData & data) const;
56 
62  std::unique_ptr<SegmentSeed> recoverSinglePhiMax(HoughEventData & data, const MuonR4::HoughMaximum & maximum) const;
63 
71  std::vector<MuonR4::ActsPeakFinderForMuon::Maximum> findRankedSegmentSeeds(const EventContext& ctx,
73  const MuonR4::HoughMaximum & maximum) const;
74 
79  int countIncompatibleEtaHits(const MuonR4::ActsPeakFinderForMuon::Maximum & phiMaximum, const MuonR4::HoughMaximum & etaMaximum) const;
80 
87  std::unique_ptr<SegmentSeed> buildSegmentSeed(const HoughMaximum & etaMax,
88  const MuonR4::ActsPeakFinderForMuon::Maximum & phiMax) const;
89 
91  ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
92 
93  // read handle key for the input maxima (from a previous eta-transform)
94  SG::ReadHandleKey<EtaHoughMaxContainer> m_maxima{this, "ReadKey", "MuonHoughStationMaxima"};
95  // write handle key for the output segment seeds
96  SG::WriteHandleKey<SegmentSeedContainer> m_segmentSeeds{this, "WriteKey", "MuonHoughStationSegmentSeeds"};
97  // access to the ACTS geometry context
98  SG::ReadHandleKey<ActsTrk::GeometryContext> m_geoCtxKey{this, "AlignmentKey", "ActsAlignment", "cond handle key"};
100  ToolHandle<MuonValR4::IPatternVisualizationTool> m_visionTool{this, "VisualizationTool", ""};
101  // steers the target resolution in tan(phi)
102  DoubleProperty m_targetResoTanPhi{this, "ResolutionTargetTanAngle", 0.04};
103  // steers the target resolution in the x-axis intercept
104  DoubleProperty m_targetResoIntercept{this, "ResolutionTargetIntercept", 30.};
105  // minimum search window half width, tan(phi)
106  // - in multiples of the target resolution
107  DoubleProperty m_minSigmasSearchTanPhi{this, "minSigmasSearchTanPhi", 1.};
108  // minimum search window half width, intercept
109  // - in multiples of the target resolution
110  DoubleProperty m_minSigmasSearchIntercept{this, "minSigmasSearchIntercept", 1.};
111 
112  // number of accumulator bins in tan(phi)
113  // target resolution in the angle
114  IntegerProperty m_nBinsTanPhi{this, "nBinsTanAngle", 5};
115  // number of accumulator bins in the x-axis intercept
116  IntegerProperty m_nBinsIntercept{this, "nBinsIntercept", 10};
117  // maximum number of eta measurements allowed to be discarded by
118  // a valid phi-extension
119  IntegerProperty m_maxEtaHolesOnMax{this, "maxEtaHoles", 1};
120  // flag to steer whether to recover maxima with a single phi measurement
121  // using a beam spot projection. Should not be used in splashes or cosmics.
122  BooleanProperty m_recoverSinglePhiWithBS{this, "recoverSinglePhiHitsWithBS", true};
123  // Flag to steer whether space points shall be downweighted according to their instance
124  // multiplicity of the phi measurement such that it effectively contributes with weight 1
125  BooleanProperty m_downWeightMultiplePrd{this, "downWeightPrdMultiplicity", false};
126  };
127 }
128 
129 
130 #endif
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
MuonR4::PhiHoughTransformAlg::m_segmentSeeds
SG::WriteHandleKey< SegmentSeedContainer > m_segmentSeeds
Definition: PhiHoughTransformAlg.h:96
MuonR4::PhiHoughTransformAlg::buildSegmentSeed
std::unique_ptr< SegmentSeed > buildSegmentSeed(const HoughMaximum &etaMax, const MuonR4::ActsPeakFinderForMuon::Maximum &phiMax) const
constructs a segment seed from an eta maximum and a phi-extension.
Definition: PhiHoughTransformAlg.cxx:66
MuonR4::PhiHoughTransformAlg::prepareHoughPlane
void prepareHoughPlane(HoughEventData &data) const
prepare the hough plane once per event.
Definition: PhiHoughTransformAlg.cxx:32
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
MuonR4::PhiHoughTransformAlg::initialize
virtual StatusCode initialize() override
Definition: PhiHoughTransformAlg.cxx:24
MuonR4::PhiHoughTransformAlg::m_targetResoIntercept
DoubleProperty m_targetResoIntercept
Definition: PhiHoughTransformAlg.h:104
IPatternVisualizationTool.h
MuonR4::PhiHoughTransformAlg::m_targetResoTanPhi
DoubleProperty m_targetResoTanPhi
Definition: PhiHoughTransformAlg.h:102
MuonR4::PhiHoughTransformAlg::preProcessMaximum
void preProcessMaximum(const ActsTrk::GeometryContext &gctx, const MuonR4::HoughMaximum &maximum, HoughEventData &data) const
pre-processing for a given input eta-maximum Counts potential phi-hits and defines the search space
Definition: PhiHoughTransformAlg.cxx:83
MuonR4::PhiHoughTransformAlg::m_nBinsTanPhi
IntegerProperty m_nBinsTanPhi
Definition: PhiHoughTransformAlg.h:114
MuonR4::PhiHoughTransformAlg::m_minSigmasSearchIntercept
DoubleProperty m_minSigmasSearchIntercept
Definition: PhiHoughTransformAlg.h:110
xAOD::etaMax
etaMax
Definition: HIEventShape_v2.cxx:46
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition: StoreGate/StoreGate/ReadHandleKey.h:39
MuonR4::PhiHoughTransformAlg::m_nBinsIntercept
IntegerProperty m_nBinsIntercept
Definition: PhiHoughTransformAlg.h:116
MuonR4::PhiHoughTransformAlg::m_visionTool
ToolHandle< MuonValR4::IPatternVisualizationTool > m_visionTool
Pattern visualization tool.
Definition: PhiHoughTransformAlg.h:100
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:74
MuonR4::PhiHoughTransformAlg::countIncompatibleEtaHits
int countIncompatibleEtaHits(const MuonR4::ActsPeakFinderForMuon::Maximum &phiMaximum, const MuonR4::HoughMaximum &etaMaximum) const
helper to count the number of eta measurements that would be discarded for a given phi extension cand...
Definition: PhiHoughTransformAlg.cxx:46
SG::WriteHandleKey
Property holding a SG store/key/clid from which a WriteHandle is made.
Definition: StoreGate/StoreGate/WriteHandleKey.h:40
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MuonPatternContainer.h
MuonR4::PhiHoughTransformAlg
Algorithm to handle the phi hough transform.
Definition: PhiHoughTransformAlg.h:33
MuonR4::PhiHoughTransformAlg::m_minSigmasSearchTanPhi
DoubleProperty m_minSigmasSearchTanPhi
Definition: PhiHoughTransformAlg.h:107
MuonR4::PhiHoughTransformAlg::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Handle to the IdHelperSvc.
Definition: PhiHoughTransformAlg.h:91
ActsTrk::GeometryContext
Definition: GeometryContext.h:28
MuonR4::PhiHoughTransformAlg::findRankedSegmentSeeds
std::vector< MuonR4::ActsPeakFinderForMuon::Maximum > findRankedSegmentSeeds(const EventContext &ctx, HoughEventData &data, const MuonR4::HoughMaximum &maximum) const
perform a hough search for the most promising phi extension of an eta-maximum Performs a local hough ...
Definition: PhiHoughTransformAlg.cxx:133
AthReentrantAlgorithm.h
MuonR4::PhiHoughTransformAlg::m_maxEtaHolesOnMax
IntegerProperty m_maxEtaHolesOnMax
Definition: PhiHoughTransformAlg.h:119
WriteHandleKey.h
Property holding a SG store/key/clid from which a WriteHandle is made.
MuonHoughDefs.h
MuonR4::PhiHoughTransformAlg::m_recoverSinglePhiWithBS
BooleanProperty m_recoverSinglePhiWithBS
Definition: PhiHoughTransformAlg.h:122
MuonR4
This header ties the generic definitions in this package.
Definition: HoughEventData.h:16
MuonR4::PhiHoughTransformAlg::execute
virtual StatusCode execute(const EventContext &ctx) const override
Definition: PhiHoughTransformAlg.cxx:191
MuonR4::HoughMaximum
Data class to represent an eta maximum in hough space.
Definition: HoughMaximum.h:14
MuonR4::PhiHoughTransformAlg::m_maxima
SG::ReadHandleKey< EtaHoughMaxContainer > m_maxima
Definition: PhiHoughTransformAlg.h:94
HoughEventData.h
SpacePointContainer.h
MuonR4::PhiHoughTransformAlg::m_geoCtxKey
SG::ReadHandleKey< ActsTrk::GeometryContext > m_geoCtxKey
Definition: PhiHoughTransformAlg.h:98
MuonR4::PhiHoughTransformAlg::~PhiHoughTransformAlg
virtual ~PhiHoughTransformAlg()=default
MuonR4::PhiHoughTransformAlg::m_downWeightMultiplePrd
BooleanProperty m_downWeightMultiplePrd
Definition: PhiHoughTransformAlg.h:125
MuonR4::PhiHoughTransformAlg::recoverSinglePhiMax
std::unique_ptr< SegmentSeed > recoverSinglePhiMax(HoughEventData &data, const MuonR4::HoughMaximum &maximum) const
extend an eta maximum with just a single attached phi measurement.
Definition: PhiHoughTransformAlg.cxx:176
IMuonIdHelperSvc.h
MuonR4::HoughEventData_impl
Templated event data class for the phase-2 muon hough transform.
Definition: HoughEventData.h:22
ServiceHandle< Muon::IMuonIdHelperSvc >