ATLAS Offline Software
PhiHoughTransformAlg.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef MUONR4_MUONPATTERNRECOGNITIONALGS_PHIHOUGHTRANSFORMALG__H
6 #define MUONR4_MUONPATTERNRECOGNITIONALGS_PHIHOUGHTRANSFORMALG__H
7 
8 
9 
14 
18 
21 
22 // muon includes
23 
24 
25 namespace MuonR4{
26 
36  public:
37  PhiHoughTransformAlg(const std::string& name, ISvcLocator* pSvcLocator);
38  virtual ~PhiHoughTransformAlg() = default;
39  virtual StatusCode initialize() override;
40  virtual StatusCode execute(const EventContext& ctx) const override;
41 
42  private:
43 
46  template <class ContainerType> StatusCode retrieveContainer(const EventContext& ctx,
48  const ContainerType* & contToPush) const;
49 
55 
63  const MuonR4::HoughMaximum & maximum,
64  HoughEventData & data) const;
65 
71  std::unique_ptr<SegmentSeed> recoverSinglePhiMax(HoughEventData & data, const MuonR4::HoughMaximum & maximum) const;
72 
79  std::vector<MuonR4::ActsPeakFinderForMuon::Maximum> findRankedSegmentSeeds (HoughEventData & data, const MuonR4::HoughMaximum & maximum) const;
80 
85  int countIncompatibleEtaHits(const MuonR4::ActsPeakFinderForMuon::Maximum & phiMaximum, const MuonR4::HoughMaximum & etaMaximum) const;
86 
93  std::unique_ptr<SegmentSeed> buildSegmentSeed(const HoughMaximum & etaMax,
94  const MuonR4::ActsPeakFinderForMuon::Maximum & phiMax) const;
95 
96  // read handle key for the input maxima (from a previous eta-transform)
97  SG::ReadHandleKey<EtaHoughMaxContainer> m_maxima{this, "ReadKey", "MuonHoughStationMaxima"};
98  // write handle key for the output segment seeds
99  SG::WriteHandleKey<SegmentSeedContainer> m_segmentSeeds{this, "WriteKey", "MuonHoughStationSegmentSeeds"};
100 
101  // access to the ACTS geometry context
102  SG::ReadHandleKey<ActsGeometryContext> m_geoCtxKey{this, "AlignmentKey", "ActsAlignment", "cond handle key"};
103 
104  // steers the target resolution in tan(phi)
105  DoubleProperty m_targetResoTanPhi{this, "ResolutionTargetTanAngle", 0.04};
106  // steers the target resolution in the x-axis intercept
107  DoubleProperty m_targetResoIntercept{this, "ResolutionTargetIntercept", 30.};
108  // minimum search window half width, tan(phi)
109  // - in multiples of the target resolution
110  DoubleProperty m_minSigmasSearchTanPhi{this, "minSigmasSearchTanPhi", 1.};
111  // minimum search window half width, intercept
112  // - in multiples of the target resolution
113  DoubleProperty m_minSigmasSearchIntercept{this, "minSigmasSearchIntercept", 1.};
114 
115  // number of accumulator bins in tan(phi)
116  // target resolution in the angle
117  IntegerProperty m_nBinsTanPhi{this, "nBinsTanAngle", 5};
118  // number of accumulator bins in the x-axis intercept
119  IntegerProperty m_nBinsIntercept{this, "nBinsIntercept", 10};
120  // maximum number of eta measurements allowed to be discarded by
121  // a valid phi-extension
122  IntegerProperty m_maxEtaHolesOnMax{this, "maxEtaHoles", 1};
123  // flag to steer whether to recover maxima with a single phi measurement
124  // using a beam spot projection. Should not be used in splashes or cosmics.
125  BooleanProperty m_recoverSinglePhiWithBS{this, "recoverSinglePhiHitsWithBS", true};
126  // Flag to steer whether space points shall be downweighted according to their instance
127  // multiplicity of the phi measurement such that it effectively contributes with weight 1
128  BooleanProperty m_downWeightMultiplePrd{this, "downWeightPrdMultiplicity", false};
129  };
130 }
131 
132 
133 #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:99
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:96
MuonR4::PhiHoughTransformAlg::PhiHoughTransformAlg
PhiHoughTransformAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: PhiHoughTransformAlg.cxx:28
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
MuonR4::PhiHoughTransformAlg::initialize
virtual StatusCode initialize() override
Definition: PhiHoughTransformAlg.cxx:32
MuonR4::PhiHoughTransformAlg::m_targetResoIntercept
DoubleProperty m_targetResoIntercept
Definition: PhiHoughTransformAlg.h:107
MuonR4::PhiHoughTransformAlg::m_geoCtxKey
SG::ReadHandleKey< ActsGeometryContext > m_geoCtxKey
Definition: PhiHoughTransformAlg.h:102
MuonR4::PhiHoughTransformAlg::m_targetResoTanPhi
DoubleProperty m_targetResoTanPhi
Definition: PhiHoughTransformAlg.h:105
MuonR4::PhiHoughTransformAlg::m_nBinsTanPhi
IntegerProperty m_nBinsTanPhi
Definition: PhiHoughTransformAlg.h:117
MuonR4::PhiHoughTransformAlg::m_minSigmasSearchIntercept
DoubleProperty m_minSigmasSearchIntercept
Definition: PhiHoughTransformAlg.h:113
xAOD::etaMax
etaMax
Definition: HIEventShape_v2.cxx:46
SG::ReadHandleKey< ContainerType >
MuonR4::PhiHoughTransformAlg::m_nBinsIntercept
IntegerProperty m_nBinsIntercept
Definition: PhiHoughTransformAlg.h:119
MuonR4::PhiHoughTransformAlg::preProcessMaximum
StatusCode preProcessMaximum(const ActsGeometryContext &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:111
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:83
MuonR4::PhiHoughTransformAlg::findRankedSegmentSeeds
std::vector< MuonR4::ActsPeakFinderForMuon::Maximum > findRankedSegmentSeeds(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:158
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:73
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:35
MuonR4::PhiHoughTransformAlg::m_minSigmasSearchTanPhi
DoubleProperty m_minSigmasSearchTanPhi
Definition: PhiHoughTransformAlg.h:110
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:27
ReadCondHandleKey.h
AthReentrantAlgorithm.h
MuonR4::PhiHoughTransformAlg::m_maxEtaHolesOnMax
IntegerProperty m_maxEtaHolesOnMax
Definition: PhiHoughTransformAlg.h:122
WriteHandleKey.h
Property holding a SG store/key/clid from which a WriteHandle is made.
MuonHoughDefs.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
MuonR4::PhiHoughTransformAlg::m_recoverSinglePhiWithBS
BooleanProperty m_recoverSinglePhiWithBS
Definition: PhiHoughTransformAlg.h:125
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:208
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:97
HoughEventData.h
SpacePointContainer.h
MuonR4::PhiHoughTransformAlg::~PhiHoughTransformAlg
virtual ~PhiHoughTransformAlg()=default
MuonR4::PhiHoughTransformAlg::m_downWeightMultiplePrd
BooleanProperty m_downWeightMultiplePrd
Definition: PhiHoughTransformAlg.h:128
MuonR4::PhiHoughTransformAlg::retrieveContainer
StatusCode retrieveContainer(const EventContext &ctx, const SG::ReadHandleKey< ContainerType > &key, const ContainerType *&contToPush) const
Helper method to fetch data from StoreGate.
Definition: PhiHoughTransformAlg.cxx:41
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:194
MuonR4::PhiHoughTransformAlg::prepareHoughPlane
StatusCode prepareHoughPlane(HoughEventData &data) const
prepare the hough plane once per event.
Definition: PhiHoughTransformAlg.cxx:56
IMuonIdHelperSvc.h
MuonR4::HoughEventData_impl
Templated event data class for the phase-2 muon hough transform.
Definition: HoughEventData.h:22
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37