Skip to content
Snippets Groups Projects
Commit b68fd0b7 authored by Dave Casper's avatar Dave Casper
Browse files

Add d0 significance cut as configurable property.

Former-commit-id: 502565ce18581a49a6d0d301d1de3572fed6137c
parent ab33c557
No related branches found
No related tags found
No related merge requests found
......@@ -113,8 +113,16 @@ namespace Trk
}
};
// Cache for track information
std::unordered_map< Trk::Perigee, Trk::GaussianTrackDensity::TrackEntry, hash_perigee, pred_perigee> m_trackMap;
// Cuts set by configurable properties
// Maximum allowed d0 significance to use (in sigma)
Gaudi::Property<double> m_d0MaxSignificance { this,
"MaxD0Significance",
3.5,
"Maximum radial impact parameter significance to use track" };
};
}
......
......@@ -78,6 +78,7 @@ namespace Trk
void GaussianTrackDensity::addTracks(const std::vector<const TrackParameters*>& perigeeList)
{
double significanceCut = m_d0MaxSignificance * m_d0MaxSignificance;
for (auto iparam : perigeeList)
{
const Perigee* itrk = dynamic_cast<const Perigee*>(iparam);
......@@ -88,10 +89,12 @@ namespace Trk
double z0 = itrk->parameters()[Trk::z0];
const AmgSymMatrix(5) & perigeeCov = *(itrk->covariance());
double cov_dd = perigeeCov(Trk::d0, Trk::d0);
if ( cov_dd <= 0 ) continue;
if ( d0*d0/cov_dd > significanceCut ) continue;
double cov_zz = perigeeCov(Trk::z0, Trk::z0);
double cov_dz = perigeeCov(Trk::d0, Trk::z0);
double covDeterminant = cov_dd*cov_zz - cov_dz*cov_dz;
if (covDeterminant <= 0) continue;
if ( covDeterminant <= 0 ) continue;
double constantArg = (d0*d0*cov_zz + z0*z0*cov_dd + 2*d0*z0*cov_dz) / (2*covDeterminant);
double constantFactor = exp(-constantArg) / (2*Gaudi::Units::pi*covDeterminant);
double linearTerm = (d0*cov_dz + z0*cov_dd) / covDeterminant ; // minus signs and factors of 2 cancel...
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment