Skip to content

Commit 007f31b

Browse files
author
AdrianoDee
committed
Fix NaNs in Primary Vertex
1 parent e0cb38f commit 007f31b

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

RecoVertex/PrimaryVertexProducer/src/DAClusterizerInZ_vect.cc

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,8 @@ bool DAClusterizerInZ_vect::merge(vertex_t& y, track_t& tks, double& beta) const
504504

505505
if (rho > 0) {
506506
y.zvtx[k] = (y.rho[k] * y.zvtx[k] + y.rho[k + 1] * y.zvtx[k + 1]) / rho;
507+
if (not edm::isFinite(y.zvtx[k]))
508+
y.zvtx[k] = 0.5 * (y.zvtx[k] + y.zvtx[k + 1]);
507509
} else {
508510
y.zvtx[k] = 0.5 * (y.zvtx[k] + y.zvtx[k + 1]);
509511
}
@@ -663,7 +665,7 @@ bool DAClusterizerInZ_vect::split(const double beta, track_t& tks, vertex_t& y,
663665
std::vector<std::pair<double, unsigned int>> critical;
664666
for (unsigned int k = 0; k < nv; k++) {
665667
double Tc = 2 * y.swE[k] / y.sw[k];
666-
if (beta * Tc > threshold) {
668+
if (edm::isFinite(Tc) and beta * Tc > threshold) {
667669
critical.push_back(make_pair(Tc, k));
668670
}
669671
}
@@ -746,6 +748,10 @@ bool DAClusterizerInZ_vect::split(const double beta, track_t& tks, vertex_t& y,
746748
split = true;
747749
double pk1 = p1 * y.rho[k] / (p1 + p2);
748750
double pk2 = p2 * y.rho[k] / (p1 + p2);
751+
752+
if (not(edm::isFinite(pk1) and edm::isFinite(pk2)))
753+
continue;
754+
749755
y.zvtx[k] = z2;
750756
y.rho[k] = pk2;
751757
y.insertItem(k, z1, pk1, tks);

0 commit comments

Comments
 (0)