 |
ATLAS Offline Software
|
Go to the documentation of this file.
4 #ifndef MUONR4_MUONPATTERNHELPERS_MDTSEGMENTSEEDGENERATOR_H
5 #define MUONR4_MUONPATTERNHELPERS_MDTSEGMENTSEEDGENERATOR_H
16 class ISpacePointCalibrator;
17 class CalibratedSpacePoint;
84 const Config& configuration);
88 std::optional<DriftCircleSeed>
nextSeed(
const EventContext& ctx);
121 return sol.
print(ostr);
123 std::ostream&
print(std::ostream& ostr)
const;
129 template <Acts::Experimental::CompositeSpacePo
int SpacePo
int_t>
141 std::optional<DriftCircleSeed>
buildSeed(
const EventContext& ctx,
const Config & config() const
Returns the current seed configuration.
double theta
: Theta of the line
bool startWithPattern
Try at the first time the pattern seed as candidate.
The SpacePointPerLayerSplitter takes a set of spacepoints already sorted by layer Identifier (see Muo...
: The muon space point bucket represents a collection of points that will bre processed together in t...
std::optional< DriftCircleSeed > nextSeed(const EventContext &ctx)
returns the next seed in the row
Scalar theta() const
theta method
unsigned int nIter
Iterations to obtain the seed.
Helper class to generate valid seeds for the segment fit.
std::ostream & print(std::ostream &ostr) const
double y0
Intersecpt of the line.
double hitPullCut
Upper cut on the hit chi2 w.r.t.
std::vector< const SpacePoint * > HitVec
std::vector< std::unique_ptr< CalibratedSpacePoint > > measurements
List of calibrated measurements.
unsigned int busyLayerLimit
How many drift circles may be on a layer to be used for seeding.
const MuonR4::ISpacePointCalibrator * calibrator
Pointer to the space point calibrator.
double nMdtLayHitCut
Hit cut based on the fraction of collected tube layers.
HitVec seedHits
Used hits in the seed.
MdtSegmentSeedGenerator(const std::string &name, const SegmentSeed *segmentSeed, const Config &configuration)
Standard constructor taking the segmentSeed to start with and then few configuration tunes.
~MdtSegmentSeedGenerator()
bool tightenHitCut
Once a seed with even more than initially required hits is found, reject all following seeds with les...
std::optional< DriftCircleSeed > buildSeed(const EventContext &ctx, const HoughHitType &topHit, const HoughHitType &bottomHit, const SignComboType &signs)
Tries to build the seed from the two hits.
Configuration switches of the module
SpacePointPerLayerSplitter m_hitLayers
unsigned int m_nGenSeeds
Counter on how many seeds have been generated.
std::vector< int > solutionSigns
Vector of radial signs of the valid hits.
SeedSolution estimateTangentLine(const SpacePoint_t &topHit, const SpacePoint_t &bottomHit, const SignComboType &signs) const
Estimate the line tangential to two space points for a given left/right pattern.
static SeedingAux::Config translate(const Config &cfg)
Translate the SeedGenerator config to a Seed auxillary config.
const std::vector< HitType > & getHitsInMax() const
Returns the list of assigned hits.
std::array< int, 2 > SignComboType
Sign combinations to draw the 4 lines tangent to 2 drift circles The first two are indicating whether...
std::size_t m_upperHitIndex
Explicit hit to pick in the selected top layer.
double precCutOff
Precision cut off in the fast segment fit.
Class to provide easy MsgStream access and capabilities.
std::size_t m_upperLayer
Considered layer to pick the top drift circle from.
const SpacePointBucket * parentBucket
Pointer to the parent bucket.
The muon space point is the combination of two uncalibrated measurements one of them measures the eta...
unsigned int nMdt
number of Mdt hits on the seed
bool recalibSeedCircles
Recalibrate the seed drift circles from the initial estimate
std::array< double, 2 > thetaRange
Cut on the theta angle.
std::size_t m_lowerHitIndex
Explicit hit to pick in the selected bottom layer.
Cache of all solutions seen thus far.
Parameters parameters
Seed parameters.
bool overlapCorridor
Check whether a new seed candidate shares the same left-right solution with already accepted ones Rej...
Helper struct from a generated Mdt seed.
Line_t m_line
Line to instantiate the seed parameters.
Interface class to refine the space point calibration with an external seed.
friend std::ostream & operator<<(std::ostream &ostr, const SeedSolution &sol)
Outstream operator.
void moveToNextCandidate()
Prepares the generator to generate the seed from the next pair of drift circles.
This header ties the generic definitions in this package.
std::vector< SeedSolution > m_seenSolutions
Vector caching equivalent solutions to avoid double seeding.
constexpr static std::array< SignComboType, 4 > s_signCombos
Representation of a segment seed (a fully processed hough maximum) produced by the hough transform.
SeedingAux::Line_t Line_t
Abrivation of the line with partial derivatives.
unsigned int nMaxIter
Maximum number of iterations in the fast segment fit.
const SegmentSeed * m_segmentSeed
double dTheta
: Uncertainty on the slope
std::size_t m_signComboIndex
Index of the left-right ambiguity between the circles.
SpacePointPerLayerSplitter::HitVec HitVec
unsigned int nMdtHitCut
How many drift circle hits needs the seed to contain in order to be valid.
AmgVector(Acts::toUnderlying(ParamDefs::nPars)) Parameters
std::size_t m_lowerLayer
Considered layer to pick the bottom drift circle from.
double dY0
: Uncertainty on the intercept
Line_t::ParamVector constructLinePars(const double theta, const double y0) const
Construct the 3D-Line parameters from the estimates theta & y0 from the tangent line.
unsigned int numGenerated() const
Returns how many seeds have been generated.
std::array< double, 2 > interceptRange
Cut on the intercept range.