ATLAS Offline Software
Loading...
Searching...
No Matches
MdtSegmentSeedGenerator.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 MUONR4_MUONPATTERNHELPERS_MDTSEGMENTSEEDGENERATOR_H
5#define MUONR4_MUONPATTERNHELPERS_MDTSEGMENTSEEDGENERATOR_H
6
10
11#include "Acts/Seeding/CompositeSpacePointLineSeeder.hpp"
12namespace MuonR4{
14 class SegmentSeed;
15}
16
17namespace MuonR4::SegmentFit {
18
23 protected:
26 using SeedSelector_t = std::function<bool(const Amg::Vector3D& pos,
27 const Amg::Vector3D& dir)>;
39 explicit SeederStateBase(const SegmentSeed* parentSeed,
40 const ISpacePointCalibrator* calibrator,
41 const bool calibratedPull,
42 SeedSelector_t&& seedSelector = nullptr);
43
55 SeederStateBase(const SegmentSeed* parentSeed,
56 const ISpacePointCalibrator* calibrator,
57 bool calibratePull,
59 SeedSelector_t&& seedSelector = nullptr);
60
61 public:
65 const SegmentSeed* parent() const;
68 bool goodCandidate(const SpacePoint& testMdt) const;
75 double candidateChi2(const Acts::CalibrationContext& cctx,
76 const Amg::Vector3D& seedPos,
77 const Amg::Vector3D& seedDir,
78 const double t0,
79 const SpacePoint& candidate) const;
82 double strawRadius(const SpacePoint& testMdt) const;
85 CalibCont_t newContainer(const Acts::CalibrationContext& cctx) const;
94 void append(const Acts::CalibrationContext& cctx,
95 const Amg::Vector3D& pos,
96 const Amg::Vector3D& dir,
97 const double t0,
98 const SpacePoint& appendMe,
99 CalibCont_t& appendTo) const;
104 bool stopSeeding(const std::size_t lowerLayer,
105 const std::size_t upperLayer) const;
106
111 bool goodForSeeding(const Amg::Vector3D& tangentPos,
112 const Amg::Vector3D& tangentDir) const;
113 private:
116 bool m_calibratePull{false};
118 };
119 static_assert(Acts::Experimental::detail::CompSpacePointSeederDelegate<SeederStateBase,
122
123 static_assert(Acts::Experimental::detail::CompositeSpacePointSeedSelector<SeederStateBase>);
129
130 class MdtSegmentSeedGenerator: public Acts::Experimental::CompositeSpacePointLineSeeder {
131 public:
132 using LineSeeder_t = Acts::Experimental::CompositeSpacePointLineSeeder;
134
137 using LineSeeder_t::LineSeeder_t;
139 using State_t = SeedingState<HitVec_t, CalibCont_t, SeederStateBase>;
142 };
143}
144#endif
static Double_t t0
Interface class to refine the space point calibration with an external seed.
Helper class to generate valid seeds for the segment fit.
SeedingState< HitVec_t, CalibCont_t, SeederStateBase > State_t
Define the state holder object.
Acts::Experimental::CompositeSpacePointLineSeeder LineSeeder_t
SegmentSeed< CalibCont_t > Seed_t
Abrivation of the calibrated Seed type returned by the seeder.
Representation of a segment seed (a fully processed hough maximum) produced by the hough transform.
Definition SegmentSeed.h:14
std::vector< const SpacePoint * > HitVec
SpacePointPerLayerSplitter(const SpacePointBucket &bucket)
Constructor taking a complete bucket.
The muon space point is the combination of two uncalibrated measurements one of them measures the eta...
Eigen::Matrix< double, 3, 1 > Vector3D
This header ties the generic definitions in this package.
Helper struct to delegate the EDM interactions with the space point container during the seeding from...
SeederStateBase(const SegmentSeed *parentSeed, const ISpacePointCalibrator *calibrator, const bool calibratedPull, SeedSelector_t &&seedSelector=nullptr)
Protected constructor to prevent instantiation from anything else than the seeder state.
const ISpacePointCalibrator * m_calibrator
const SegmentSeed * parent() const
Returns the parent seed from which the state is constructed.
double candidateChi2(const Acts::CalibrationContext &cctx, const Amg::Vector3D &seedPos, const Amg::Vector3D &seedDir, const double t0, const SpacePoint &candidate) const
Returns the pull of the candidate w.r.t.
std::function< bool(const Amg::Vector3D &pos, const Amg::Vector3D &dir)> SeedSelector_t
Selector function to sort out seed lines that are incompatible with external geometrical constaints e...
double strawRadius(const SpacePoint &testMdt) const
Returns the outer tube radius of the space point.
bool goodCandidate(const SpacePoint &testMdt) const
Returns whether the hit is a good candidate for seeding.
bool goodForSeeding(const Amg::Vector3D &tangentPos, const Amg::Vector3D &tangentDir) const
Selector function to remove the two line tangent seed using external constaints (e....
void append(const Acts::CalibrationContext &cctx, const Amg::Vector3D &pos, const Amg::Vector3D &dir, const double t0, const SpacePoint &appendMe, CalibCont_t &appendTo) const
Appends the space point measurement to the candidate seed container Optionally, the hit may be calibr...
CalibCont_t newContainer(const Acts::CalibrationContext &cctx) const
Creates a new candidate seed container.
Segment::MeasVec CalibCont_t
Abrivation of the collection of calibrated space points.
bool stopSeeding(const std::size_t lowerLayer, const std::size_t upperLayer) const
Requests whether the seed line generation shall be stopped based on the pair of.