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

Handle edge cases more correctly and efficiently.

Former-commit-id: beb7766fecd81dee4da57ef07552bb30dd36e0e4
parent 5390c4d9
No related branches found
No related tags found
No related merge requests found
......@@ -30,14 +30,15 @@ namespace Trk
void GaussianTrackDensity::trackDensity(double z, double& density, double& firstDerivative, double& secondDerivative) const
{
TrackEntry target(z);
lowerMapIterator first = m_lowerMap.lower_bound(target);
upperMapIterator final = m_upperMap.upper_bound(target);
trackMapIterator firstLoop = m_trackMap.find(first->second);
trackMapIterator finalLoop = m_trackMap.find(final->second);
density = 0.0;
firstDerivative = 0.0;
secondDerivative = 0.0;
TrackEntry target(z);
lowerMapIterator first = m_lowerMap.lower_bound(target); // first track whose UPPER bound is not less than z
upperMapIterator final = m_upperMap.upper_bound(target); // first track whose LOWER bound is greater than z
trackMapIterator firstLoop = m_trackMap.find(first->second); // this will be the first track we include
trackMapIterator finalLoop = m_trackMap.find(final->second); // this will be the track after the last we include
if (firstLoop->second.lowerBound > z || finalLoop->second.upperBound < z) return;
for (auto itrk = firstLoop; itrk != finalLoop && itrk != m_trackMap.end(); itrk++)
{
double delta = exp(itrk->second.c_0+z*(itrk->second.c_1 + z*itrk->second.c_2));
......@@ -51,12 +52,13 @@ namespace Trk
double GaussianTrackDensity::trackDensity(double z) const
{
double sum = 0.0;
TrackEntry target(z);
lowerMapIterator first = m_lowerMap.lower_bound(target);
upperMapIterator final = m_upperMap.upper_bound(target);
trackMapIterator firstLoop = m_trackMap.find(first->second);
trackMapIterator finalLoop = m_trackMap.find(final->second);
double sum = 0.0;
if (firstLoop->second.lowerBound > z || finalLoop->second.upperBound < z) return sum;
for (auto itrk = firstLoop; itrk != finalLoop && itrk != m_trackMap.end(); itrk++)
{
//ATH_MSG_DEBUG("@z=" << z << " adding contrib from z0=" << itrk->first.parameters()[Trk::z0] <<
......
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