Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PFDisplacedVertexFinder speedups #20997

Merged
merged 4 commits into from Oct 26, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -140,9 +140,7 @@ class PFDisplacedVertexFinder {

bool isCloseTo(const reco::PFDisplacedVertexSeed&, const reco::PFDisplacedVertexSeed&) const;

double getTransvDiff(const GlobalPoint&, const GlobalPoint&) const;
double getLongDiff(const GlobalPoint&, const GlobalPoint&) const;
double getLongProj(const GlobalPoint&, const GlobalVector&) const;
std::pair<float,float> getTransvLongDiff(const GlobalPoint&, const GlobalPoint&) const;

reco::PFDisplacedVertex::VertexTrackType getVertexTrackType(PFTrackHitFullInfo&) const;

Expand All @@ -160,8 +158,8 @@ class PFDisplacedVertexFinder {

/// Algo parameters for the vertex finder

double transvSize_;
double longSize_;
float transvSize_;
float longSize_;
double primaryVertexCut_;
double tobCut_;
double tecCut_;
Expand Down
46 changes: 13 additions & 33 deletions RecoParticleFlow/PFTracking/src/PFDisplacedVertexFinder.cc
Expand Up @@ -167,10 +167,9 @@ PFDisplacedVertexFinder::findSeedsFromCandidate(const PFDisplacedVertexCandidate
break;
}
const GlobalPoint vertexPoint = (*idvc_current).seedPoint();
double Delta_Long = getLongDiff(vertexPoint, dcaPoint);
double Delta_Transv = getTransvDiff(vertexPoint, dcaPoint);
if (Delta_Long > longSize_) continue;
if (Delta_Transv > transvSize_) continue;
std::pair<float,float> diffs = getTransvLongDiff(vertexPoint,dcaPoint);
if (diffs.second > longSize_) continue;
if (diffs.first > transvSize_) continue;
bNeedNewCandidate = false;
break;
}
Expand Down Expand Up @@ -694,44 +693,25 @@ PFDisplacedVertexFinder::isCloseTo(const PFDisplacedVertexSeed& dv1, const PFDis
const GlobalPoint& vP1 = dv1.seedPoint();
const GlobalPoint& vP2 = dv2.seedPoint();

double Delta_Long = getLongDiff(vP1, vP2);
if (Delta_Long > longSize_) return false;
double Delta_Transv = getTransvDiff(vP1, vP2);
if (Delta_Transv > transvSize_) return false;
std::pair<float,float> diffs = getTransvLongDiff(vP1,vP2);
if (diffs.second > longSize_) return false;
if (diffs.first > transvSize_) return false;
// if (Delta_Long < longSize_ && Delta_Transv < transvSize_) isCloseTo = true;

return true;

}


double
PFDisplacedVertexFinder::getLongDiff(const GlobalPoint& Ref, const GlobalPoint& ToProject) const {
std::pair<float,float>
PFDisplacedVertexFinder::getTransvLongDiff(const GlobalPoint& Ref, const GlobalPoint& ToProject) const {

Basic3DVector<double>vRef(Ref);
Basic3DVector<double>vToProject(ToProject);
return fabs((vRef.dot(vToProject)-vRef.mag2())/vRef.mag());

}

double
PFDisplacedVertexFinder::getLongProj(const GlobalPoint& Ref, const GlobalVector& ToProject) const {

Basic3DVector<double>vRef(Ref);
Basic3DVector<double>vToProject(ToProject);
return (vRef.dot(vToProject))/vRef.mag();


}


double
PFDisplacedVertexFinder::getTransvDiff(const GlobalPoint& Ref, const GlobalPoint& ToProject) const {

Basic3DVector<double>vRef(Ref);
Basic3DVector<double>vToProject(ToProject);
return fabs(vRef.cross(vToProject).mag()/vRef.mag());
const auto & vRef = Ref.basicVector();
const auto & vToProject = ToProject.basicVector();
float vRefMag2 = vRef.mag2();
float oneOverMag = 1.0f/sqrt(vRefMag2);

return std::make_pair(fabs(vRef.cross(vToProject).mag()*oneOverMag),fabs((vRef.dot(vToProject)-vRefMag2)*oneOverMag));
}


Expand Down