|
ATLAS Offline Software
|
Go to the documentation of this file.
4 #ifndef MUONR4_MUONPATTERNHELPERS_MDTSEGMENTSEEDGENERATOR_H
5 #define MUONR4_MUONPATTERNHELPERS_MDTSEGMENTSEEDGENERATOR_H
10 #include <GaudiKernel/SystemOfUnits.h>
18 class ISpacePointCalibrator;
85 const Config& configuration);
89 std::optional<DriftCircleSeed>
nextSeed(
const EventContext& ctx);
120 return sol.
print(ostr);
122 std::ostream&
print(std::ostream& ostr)
const;
131 std::optional<DriftCircleSeed>
buildSeed(
const EventContext& ctx,
191 const DriftCircleSeed& seed)
const;
199 DriftCircleSeed& seed)
const;
std::size_t m_upperHitIndex
Explicit hit to pick in the selected top layer.
double fitY0
Prediced y0 given as the expection value of the radii divided by the inverse covariance sum.
double T_rz
Expectation value of T_{z} * r
double dTheta
: Uncertainty on the slope
bool overlapCorridor
Check whether a new seed candidate shares the same left-right solution with already accepted ones Rej...
unsigned int numGenerated() const
Returns how many seeds have been generated.
SegmentFit::Parameters parameters
Seed parameters.
unsigned int nMdtHitCut
How many drift circle hits needs the seed to contain in order to be valid.
AmgVector(toInt(ParamDefs::nPars)) Parameters
std::array< int, 2 > SignComboType
Sign combinations to draw the 4 lines tangent to 2 drift circles The first two are indicating whether...
: The muon space point bucket represents a collection of points that will bre processed together in t...
unsigned int busyLayerLimit
How many drift circles may be on a layer to be used for seeding.
double T_ry
Expectation value of T_{y} * r
The SpacePointPerLayerSorter groups the space points by their layer Identifier.
double R_va
Expectation value of r * a.
double covNorm
Covariance norm.
std::vector< int > solutionSigns
Vector of radial signs of the valid hits.
const Config & config() const
Returns the current seed configuration.
MdtSegmentSeedGenerator(const std::string &name, const SegmentSeed *segmentSeed, const Config &configuration)
Standard constructor taking the segmentSeed to start with and then few configuration tunes.
SeedFitAuxilliaries estimateAuxillaries(const DriftCircleSeed &seed) const
Helper function to estimate the auxillary variables that remain constant during the fit.
Cache of all solutions seen thus far.
bool fastSeedFit
Toggle whether the seed is rapidly refitted.
unsigned int m_nGenSeeds
Counter on how many seeds have been generated.
double nMdtLayHitCut
Hit cut based on the fraction of collected tube layers.
double R_vr
Expectation value of r * v.
bool recalibSeedCircles
Recalibrate the seed drift circles from the initial estimate
double T_vy
Expectation value of T_{y} * v.
double R_vv
Expectation value of v * v.
Helper class to generate valid seeds for the segment fit.
bool startWithPattern
Try at the first time the pattern seed as candidate.
std::size_t m_lowerHitIndex
Explicit hit to pick in the selected bottom layer.
Auxillary struct to calculate fit constants.
double T_ay
Expectation value of T_{y} * a.
SeedFitAuxWithT0(SeedFitAuxilliaries &&parent)
Constructor.
double fitY0TwoPrime
Second derivative of the ftted Y0.
double T_yz
Expectation value of T_{y} * T_{z}.
Configuration switches of the module
constexpr static std::array< SignComboType, 4 > s_signCombos
bool fastSegFitWithT0
Toggle whether an initial t0 fit shall be executed.
double theta
: Theta of the line
std::ostream & print(std::ostream &ostr) const
std::vector< const SpacePoint * > HitVec
std::array< double, 2 > thetaRange
Cut on the theta angle.
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.
double fitY0Prime
First derivative of the fitted Y0.
std::size_t m_upperLayer
Considered layer to pick the top drift circle from.
const std::vector< HitType > & getHitsInMax() const
Returns the list of assigned hits.
Class to provide easy MsgStream access and capabilities.
HitVec seedHits
Used hits in the seed.
std::vector< int > driftSigns
Vector of drfit signs.
double dY0
: Uncertainty on the intercept
double hitPullCut
Upper cut on the hit chi2 w.r.t.
void fitDriftCirclesWithT0(const EventContext &ctx, DriftCircleSeed &seed) const
Refine the seed by performing a fast Mdt segment fit with t0 constraint.
double T_zzyy
Expectation value of T_{z}^{2} - T_{y}^{2}.
std::vector< std::unique_ptr< CalibratedSpacePoint > > measurements
List of calibrated measurements.
The muon space point is the combination of two uncalibrated measurements one of them measures the eta...
~MdtSegmentSeedGenerator()
friend std::ostream & operator<<(std::ostream &ostr, const SeedSolution &sol)
void moveToNextCandidate()
Prepares the generator to generate the seed from the next pair of drift circles.
Interface class to refine the space point calibration with an external seed.
unsigned int nIter
Iterations to obtain the seed.
Eigen::Matrix< double, 3, 1 > Vector3D
This header ties the generic definitions in this package.
unsigned int nMaxIter
Maximum number of iterations in the fast segment fit.
const SegmentSeed * m_segmentSeed
bool tightenHitCut
Once a seed with even more than initially required hits is found, reject all following seeds with les...
Representation of a segment seed (a fully processed hough maximum) produced by the hough transform.
std::vector< SeedSolution > m_seenSolutions
Vector caching equivalent solutions to avoid double seeding.
std::array< double, 2 > interceptRange
Cut on the intercept range.
double T_vz
Expectation value of T_{z} * v.
const SpacePointBucket * parentBucket
Pointer to the parent bucket.
Helper struct from a generated Mdt seed.
std::vector< double > invCovs
Vector of inverse covariances.
void fitDriftCircles(DriftCircleSeed &seed) const
Refine the seed by performing a fast Mdt segment fit.
std::size_t m_signComboIndex
Index of the left-right ambiguity between the circles.
double precCutOff
Precision cut off in the fast segment fit.
const ISpacePointCalibrator * calibrator
Pointer to the space point calibrator.
SpacePointPerLayerSorter m_hitLayers
SpacePointPerLayerSorter::HitVec HitVec
std::size_t m_lowerLayer
Considered layer to pick the bottom drift circle from.
Amg::Vector3D centerOfGrav
Tube position center weigthed with inverse covariances.
double T_az
Expectation value of T_{z} * a.
std::optional< DriftCircleSeed > nextSeed(const EventContext &ctx)
returns the next seed in the row
double Y0
Intersecpt of the line.