diff --git a/RecoParticleFlow/PFClusterProducer/plugins/Basic2DGenericPFlowPositionCalc.cc b/RecoParticleFlow/PFClusterProducer/plugins/Basic2DGenericPFlowPositionCalc.cc index 98d83b26e12ef..1f7bd931f6b80 100644 --- a/RecoParticleFlow/PFClusterProducer/plugins/Basic2DGenericPFlowPositionCalc.cc +++ b/RecoParticleFlow/PFClusterProducer/plugins/Basic2DGenericPFlowPositionCalc.cc @@ -179,12 +179,16 @@ void Basic2DGenericPFlowPositionCalc::calculateAndSetPositionActual(reco::PFClus int cell_layer = (int)refhit.layer(); res2 = isBarrel(cell_layer) ? 1. / _timeResolutionCalcBarrel->timeResolution2(rh_rawenergy) : 1. / _timeResolutionCalcEndcap->timeResolution2(rh_rawenergy); - cl_time += rh_fraction * refhit.time() * res2; - cl_timeweight += rh_fraction * res2; + if (refhit.time() != -999) { + cl_time += rh_fraction * refhit.time() * res2; + cl_timeweight += rh_fraction * res2; + } } else { // assume resolution = 1/E**2 const double rh_rawenergy2 = rh_rawenergy * rh_rawenergy; - cl_timeweight += rh_rawenergy2 * rh_fraction; - cl_time += rh_rawenergy2 * rh_fraction * refhit.time(); + if (refhit.time() != -999) { + cl_timeweight += rh_rawenergy2 * rh_fraction; + cl_time += rh_rawenergy2 * rh_fraction * refhit.time(); + } } if (rh_energy > max_e) { @@ -194,7 +198,10 @@ void Basic2DGenericPFlowPositionCalc::calculateAndSetPositionActual(reco::PFClus } cluster.setEnergy(cl_energy); - cluster.setTime(cl_time / cl_timeweight); + if (cl_timeweight == 0) + cluster.setTime(-999); // means no cells with valid timing in the cluster -- thus, report default time + else + cluster.setTime(cl_time / cl_timeweight); if (resGiven) { cluster.setTimeError(std::sqrt(1.0f / float(cl_timeweight))); }