![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
Go to the documentation of this file.
15 ISvcLocator* pSvcLocator)
23 return StatusCode::SUCCESS;
26 template <
class ContainerType>
29 const ContainerType*& contToPush)
const {
33 <<
typeid(ContainerType).
name());
34 return StatusCode::SUCCESS;
38 contToPush = readHandle.cptr();
39 return StatusCode::SUCCESS;
50 peakFinderCfg.fractionCutoff = 0.4;
51 peakFinderCfg.threshold = 2;
52 peakFinderCfg.minSpacingBetweenPeaks = {0., 30.};
53 data.houghPlane = std::make_unique<HoughPlane>(
cfg);
54 data.peakFinder = std::make_unique<ActsPeakFinderForMuon>(peakFinderCfg);
56 return StatusCode::SUCCESS;
60 const MuonR4::ActsPeakFinderForMuon::Maximum& phiMaximum,
62 std::unordered_map<const xAOD::UncalibratedMeasurement*, bool> foundEtas;
65 if (hit->measuresEta() && hit->measuresPhi()) {
67 foundEtas.emplace(hit->primaryMeasurement(),
false);
71 iter->second |= phiMaximum.hitIdentifiers.count(hit);
76 foundEtas.begin(), foundEtas.end(),
77 [](
const std::pair<const xAOD::UncalibratedMeasurement*, bool>&
p) {
83 const MuonR4::ActsPeakFinderForMuon::Maximum & phiMax)
const {
85 std::vector<MuonR4::HoughHitType> hitsOnMax;
88 return (hit->measuresEta() && !hit->measuresPhi());
91 hitsOnMax.insert(hitsOnMax.end(), phiMax.hitIdentifiers.begin(), phiMax.hitIdentifiers.end());
104 if (!hit->measuresPhi())
107 Amg::Vector3D extrapDir = (hit->positionInChamber() - hit->muonChamber()->globalToLocalTrans(eventData.
gctx).translation()).
unit();
109 std::optional<double> dummyIntercept = Amg::intersect<3>(hit->positionInChamber(),extrapDir,Amg::Vector3D::UnitZ(),0);
110 double x0 = (hit->positionInChamber() + dummyIntercept.value_or(0) * extrapDir).
x();
112 double tanPhi = extrapDir.x()/extrapDir.z();
136 Acts::HoughTransformUtils::HoughAxisRanges{searchStartTanPhi, searchEndTanPhi, searchStart, searchEnd};
138 return StatusCode::SUCCESS;
142 std::map<int, std::vector<MuonR4::ActsPeakFinderForMuon::Maximum>> rankedSeeds;
147 if (!hit->measuresPhi())
155 (hit->measuresEta() ? 2.0 : 1.0)
159 auto foundMaxPhi = eventData.
peakFinder->findPeaks(
162 for (
auto solution : foundMaxPhi) {
168 auto best = rankedSeeds.begin();
179 data.searchSpaceTanAngle.first,
180 data.searchSpaceIntercept.first,
206 std::make_unique<StationHoughSegmentSeedContainer>()));
209 for (
auto& stationAndMax : *maxima) {
210 std::vector<MuonR4::HoughSegmentSeed> segmentSeedsInStation;
211 for (
auto&
max : stationAndMax.getMaxima()) {
214 bool foundSolution=
false;
218 for (
auto & phiSolution : rankedSeeds){
219 foundSolution =
true;
240 segmentSeedsInStation));
243 return StatusCode::SUCCESS;
char data[hepevt_bytes_allocation_ATLAS]
std::shared_ptr< MuonR4::MuonSpacePoint > HoughHitType
std::set< StationHoughMaxima > StationHoughMaxContainer
double tanTheta() const
getter
double interceptY() const
getter
HoughSegmentSeed_impl< HoughHitType > HoughSegmentSeed
double houghParamStrip(double tanPhi, const MuonR4::HoughHitType &dc)
straight line parametrisation for strip detector measurements, in the x-direction
Acts::HoughTransformUtils::HoughAxisRanges currAxisRanges
Acts::HoughTransformUtils::PeakFinders::IslandsAroundMaxConfig ActsPeakFinderForMuonCfg
StationHoughResults< HoughSegmentSeed > StationHoughSegmentSeeds
#define ATH_MSG_VERBOSE(x)
An algorithm that can be simultaneously executed in multiple threads.
void updateSearchWindow(std::pair< double, double > &searchWindow, double value)
Updates a search space window to account for a value.
std::unique_ptr< peakFinder_t > peakFinder
std::pair< double, double > searchSpaceTanAngle
Templated event data class for the phase-2 muon hough transform.
::StatusCode StatusCode
StatusCode definition for legacy code.
std::pair< double, double > searchSpaceIntercept
def best(iterable, priorities=[3, 2, 1, -1, 0])
Out copy_if(In first, const In &last, Out res, const Pred &p)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
std::unique_ptr< houghPlane_t > houghPlane
Include the GeoPrimitives which need to be put first.
const ActsGeometryContext & gctx
double getCounts() const
getter
Eigen::Matrix< double, 3, 1 > Vector3D
double houghWidthStrip(double tanPhi, const MuonR4::HoughHitType &dc)
Uncertainty parametrisation for strip measurements.
The CsvMuonSimHitDumper reads a Simulation Hit container for muons and dumps information to csv files...
Data class to represent an eta maximum in hough space.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
const std::vector< HitType > & getHitsInMax() const
getter
Representation of a segment seed (a fully processed hough maximum) produced by the hough transform.