ATLAS Offline Software
Loading...
Searching...
No Matches
EtaHoughTransformAlg.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_ETAHOUGHTRANSFORMALG__H
5#define MUONR4_MUONPATTERNRECOGNITIONALGS_ETAHOUGHTRANSFORMALG__H
6
9
11
15
17
18// muon includes
19
20
21namespace MuonR4{
22
30 public:
31 using AthReentrantAlgorithm::AthReentrantAlgorithm;
32
33 virtual ~EtaHoughTransformAlg() = default;
34 virtual StatusCode initialize() override;
35 virtual StatusCode execute(const EventContext& ctx) const override;
36
37 private:
38
39 using HoughSetupForBucket = HoughEventData::HoughSetupForBucket;
47 void preProcess(const EventContext& ctx,
48 const ActsTrk::GeometryContext& gctx,
49 const SpacePointContainer & spacePoints,
50 HoughEventData & data) const;
51
55
62 void processBucket(const EventContext& ctx,
64 HoughSetupForBucket& currentBucket) const;
65
70 const MuonR4::HoughHitType & SP) const;
71
73 bool passSeedQuality (const HoughSetupForBucket& currentBucket, const MuonR4::ActsPeakFinderForMuon::Maximum & maximum) const;
74
80 void extendWithPhiHits(std::vector<HoughHitType> & hitList,
81 HoughSetupForBucket& bucket,
82 const double tanBeta,
83 const double interceptY) const ;
85 static bool isPrecisionHit(const HoughHitType& hit);
86 // target resolution in the angle
87 DoubleProperty m_targetResoTanTheta{this, "ResolutionTargetTanTheta", 0.05};
88 // target resolution in the y intercept
89 DoubleProperty m_targetResoIntercept{this, "ResolutionTargetIntercept", 10.};
90 // minimum search window half width, tan(theta)
91 // - in multiples of the target resolution
92 DoubleProperty m_minSigmasSearchTanTheta{this, "minSigmasSearchTanTheta", 2.0};
93 // minimum search window half width, intercept
94 // - in multiples of the target resolution
95 DoubleProperty m_minSigmasSearchIntercept{this, "minSigmasSearchIntercept", 2.0};
96 // Cut on the number of weighted hits on the maximum
97 DoubleProperty m_peakThreshold{this, "peakThreshold", 2.5};
98 // Minimum distance in tanBeta between two maxima
99 DoubleProperty m_minMaxDistTheta{this, "MaximumSeparationTheta", 0.};
100 // Minimum distance in the intercept between two maxima
101 DoubleProperty m_minMaxDistIntercept{this, "MaximumSeparationIntercept", 15.};
102 // Fraction of weighted counts around the peak to be associated to the maximum
103 DoubleProperty m_peakFractionCutOff{this, "PeakFractionCutOff", 0.6};
104 // How many valid precision hits have to be on the pattern
105 UnsignedIntegerProperty m_nPrecHitCut{this, "nMinPrecHits", 3};
106 // Phi strip safety margin. Phi hits are only appended if the maximum kind
107 // of crosses the strip in theory
108 DoubleProperty m_phiStripSafety{this, "PhiSafetyMargin", 15.*Gaudi::Units::cm};
109
110 // number of accumulator bins for the angle
111 IntegerProperty m_nBinsTanTheta{this, "nBinsTanTheta", 7};
112 // number of accumulator bins for the intercept
113 IntegerProperty m_nBinsIntercept{this, "nBinsIntercept", 15};
114 // Flag to steer whether space points shall be downweighted according to their instance
115 // multiplicity of the phi measurement such that it effectively contributes with weight 1
116 BooleanProperty m_downWeightMultiplePrd{this, "downWeightPrdMultiplicity", false};
118 ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
119
120 // input space points from SG
121 SG::ReadHandleKey<SpacePointContainer> m_spacePointKey{this, "SpacePointContainer", "MuonSpacePoints"};
122 // output maxima for downstram processing
123 SG::WriteHandleKey<EtaHoughMaxContainer> m_maxima{this, "EtaHoughMaxContainer", "MuonHoughStationMaxima"};
124 // ACTS geometry context
125 SG::ReadHandleKey<ActsTrk::GeometryContext> m_geoCtxKey{this, "AlignmentKey", "ActsAlignment", "cond handle key"};
127 ToolHandle<MuonValR4::IPatternVisualizationTool> m_visionTool{this, "VisualizationTool", ""};
128
129 };
130}
131
132
133#endif
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
Property holding a SG store/key/clid from which a WriteHandle is made.
An algorithm that can be simultaneously executed in multiple threads.
Algorithm to handle the eta hough transform.
ToolHandle< MuonValR4::IPatternVisualizationTool > m_visionTool
Pattern visualization tool.
void extendWithPhiHits(std::vector< HoughHitType > &hitList, HoughSetupForBucket &bucket, const double tanBeta, const double interceptY) const
extend a maximum with all compatible (pure) phi hits.
void fillFromSpacePoint(HoughEventData &data, const MuonR4::HoughHitType &SP) const
fill the accumulator from a given space point.
void prepareHoughPlane(HoughEventData &data) const
prepare the accumulator and the peak finder once per event
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Handle to the IdHelperSvc.
SG::ReadHandleKey< ActsTrk::GeometryContext > m_geoCtxKey
HoughEventData::HoughSetupForBucket HoughSetupForBucket
virtual StatusCode execute(const EventContext &ctx) const override
static bool isPrecisionHit(const HoughHitType &hit)
Returns whether the hit is a precision hit or not.
void preProcess(const EventContext &ctx, const ActsTrk::GeometryContext &gctx, const SpacePointContainer &spacePoints, HoughEventData &data) const
pre-processing method called once per event.
void processBucket(const EventContext &ctx, HoughEventData &data, HoughSetupForBucket &currentBucket) const
process a bucket.
bool passSeedQuality(const HoughSetupForBucket &currentBucket, const MuonR4::ActsPeakFinderForMuon::Maximum &maximum) const
apply quality cuts on a given maximum
UnsignedIntegerProperty m_nPrecHitCut
SG::WriteHandleKey< EtaHoughMaxContainer > m_maxima
virtual ~EtaHoughTransformAlg()=default
virtual StatusCode initialize() override
SG::ReadHandleKey< SpacePointContainer > m_spacePointKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.
This header ties the generic definitions in this package.
HoughEventData_impl< ActsPeakFinderForMuon, ActsPeakFinderForMuonCfg > HoughEventData
const SpacePoint * HoughHitType
DataVector< SpacePointBucket > SpacePointContainer
Abrivation of the space point container type.