5#ifndef TRKVERTEXSEEDFINDERUTILIS_GAUSSIANTRACKDENSITY_H
6#define TRKVERTEXSEEDFINDERUTILIS_GAUSSIANTRACKDENSITY_H
35 using base_class::base_class;
42 globalMaximum (
const std::vector<const Track*>& vectorTrk)
const override final;
51 std::unique_ptr<ITrackDensity>& density)
const override final;
58 globalMaximum (
const std::vector<const TrackParameters*>& perigeeList)
const override final;
66 globalMaximum (
const std::vector<const TrackParameters*>& perigeeList,
67 std::unique_ptr<ITrackDensity>& density)
const override final;
70 const std::vector<const TrackParameters*>& perigeeList)
82 TrackEntry(
double c0,
double c1,
double c2,
double zMin,
double zMax)
130 double z,
double& density,
double& firstDerivative,
131 double& secondDerivative)
const override final;
148 const double z0SignificanceCut);
152 double secondDerivative,
double& maxZ,
154 double& maxSecondDerivative)
const {
158 maxSecondDerivative = secondDerivative;
162 inline double stepSize(
double y,
double dy,
double ddy)
const {
163 return (
m_gaussStep ? (
y * dy) / (dy * dy -
y * ddy) : -dy / ddy);
192 std::pair<const GaussianTrackDensity::TrackEntry, Perigee>>>;
212 std::pair<double,double>
222 void addTracks(
const std::vector<const TrackParameters*>& perigeeList,
234 "Maximum radial impact parameter significance to use track"
243 "Maximum longitudinal impact parameter significance to include track in "
253 "Peak search: True means assume Gaussian behavior, False means "
STL-style allocator wrapper for ArenaPoolAllocator.
#define maxValue(current, test)
STL-style allocator wrapper for ArenaPoolAllocator.
void addTrack(const Perigee &itrk, const double d0SignificanceCut, const double z0SignificanceCut)
Add a track to the set being considered.
std::map< Perigee, GaussianTrackDensity::TrackEntry, pred_perigee, SG::ArenaPoolSTLAllocator< std::pair< const Perigee, GaussianTrackDensity::TrackEntry > > > trackMap
std::map< GaussianTrackDensity::TrackEntry, Perigee, pred_entry_by_max, SG::ArenaPoolSTLAllocator< std::pair< const GaussianTrackDensity::TrackEntry, Perigee > > > lowerMap
std::pair< double, double > globalMaximumWithWidth() const
Return position of global maximum with Gaussian width for density function.
double stepSize(double y, double dy, double ddy) const
virtual ~TrackDensity()=default
virtual double trackDensity(double z) const override final
Evaluate the density function at the specified coordinate along the beamline.
TrackDensity(bool gaussStep)
void updateMaximum(double trialZ, double trialValue, double secondDerivative, double &maxZ, double &maxValue, double &maxSecondDerivative) const
double globalMaximum() const
Return position of global maximum for density function.
Implementation of IVertexTrackDensityEstimator modeling reconstructed tracks as two-dimensional Gauss...
std::pair< double, double > globalMaximumWithWidthImpl(const std::vector< const TrackParameters * > &perigeeList, TrackDensity &density) const
Find position of global maximum with Gaussian width for density function.
Gaudi::Property< double > m_d0MaxSignificance
virtual double globalMaximum(const std::vector< const Track * > &vectorTrk) const override final
Find position of global maximum for density function.
Gaudi::Property< bool > m_gaussStep
void addTracks(const std::vector< const TrackParameters * > &perigeeList, TrackDensity &density) const
Add a set of tracks to a density object.
virtual std::pair< double, double > globalMaximumWithWidth(const std::vector< const TrackParameters * > &perigeeList) const override final
Gaudi::Property< double > m_z0MaxSignificance
double globalMaximumImpl(const std::vector< const TrackParameters * > &perigeeList, TrackDensity &density) const
Find position of global maximum for density function.
Ensure that the ATLAS eigen extensions are properly loaded.
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
@ z
global position (cartesian)
void addTrack(const TrackEntry &entry)
double firstDerivative() const
double m_secondDerivative
TrackDensityEval(double z_coordinate)
double secondDerivative() const
bool operator()(const TrackEntry &left, const TrackEntry &right) const
bool operator()(const Perigee &left, const Perigee &right) const
TrackEntry(double c0, double c1, double c2, double zMin, double zMax)
TrackEntry & operator=(const TrackEntry &)=default
TrackEntry(TrackEntry &&)=default
TrackEntry & operator=(TrackEntry &&)=default
TrackEntry(const TrackEntry &)=default