From 4359dac6f489acb50673546507d5fd35c8e0d154 Mon Sep 17 00:00:00 2001 From: maria Date: Sat, 20 Aug 2016 11:50:08 +0200 Subject: [PATCH] M3-HLT: added protection for potential divisions by zero --- .../interface/HcalDeterministicFit.h | 19 ++++++++++++++++--- .../HcalRecAlgos/src/HcalDeterministicFit.cc | 19 ++++++++++++++++--- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/RecoLocalCalo/HcalRecAlgos/interface/HcalDeterministicFit.h b/RecoLocalCalo/HcalRecAlgos/interface/HcalDeterministicFit.h index f6cc6afa61630..b4fcfe996f815 100644 --- a/RecoLocalCalo/HcalRecAlgos/interface/HcalDeterministicFit.h +++ b/RecoLocalCalo/HcalRecAlgos/interface/HcalDeterministicFit.h @@ -120,9 +120,21 @@ void HcalDeterministicFit::apply(const CaloSamples & cs, const std::vector float n5=0; getLandauFrac(-tsShift5+tsWidth,-tsShift5+tsWidth*2,n5); - float ch3=corrCharge[3]/i3; - float ch4=(i3*corrCharge[4]-n3*corrCharge[3])/(i3*i4); - float ch5=(n3*n4*corrCharge[3]-i4*nn3*corrCharge[3]-i3*n4*corrCharge[4]+i3*i4*corrCharge[5])/(i3*i4*i5); + float ch3=0; + float ch4=0; + float ch5=0; + + if(i3==0 || i4==0 || i5==0) { + + ch3=0; + ch4=0; + ch5=0; + + } else { + + ch3=corrCharge[3]/i3; + ch4=(i3*corrCharge[4]-n3*corrCharge[3])/(i3*i4); + ch5=(n3*n4*corrCharge[3]-i4*nn3*corrCharge[3]-i3*n4*corrCharge[4]+i3*i4*corrCharge[5])/(i3*i4*i5); if (ch3 tsShift4=invG; } } + } if (ch3<1) { ch3=0; diff --git a/RecoLocalCalo/HcalRecAlgos/src/HcalDeterministicFit.cc b/RecoLocalCalo/HcalRecAlgos/src/HcalDeterministicFit.cc index 6b0ad64a5a12f..d0bbff97341c7 100644 --- a/RecoLocalCalo/HcalRecAlgos/src/HcalDeterministicFit.cc +++ b/RecoLocalCalo/HcalRecAlgos/src/HcalDeterministicFit.cc @@ -110,9 +110,21 @@ void HcalDeterministicFit::phase1Apply(const HBHEChannelInfo& channelData, float n5=0; getLandauFrac(-tsShift5+tsWidth,-tsShift5+tsWidth*2,n5); - float ch3=corrCharge[3]/i3; - float ch4=(i3*corrCharge[4]-n3*corrCharge[3])/(i3*i4); - float ch5=(n3*n4*corrCharge[3]-i4*nn3*corrCharge[3]-i3*n4*corrCharge[4]+i3*i4*corrCharge[5])/(i3*i4*i5); + float ch3=0; + float ch4=0; + float ch5=0; + + if(i3==0 || i4==0 || i5==0) { + + ch3=0; + ch4=0; + ch5=0; + + } else { + + ch3=corrCharge[3]/i3; + ch4=(i3*corrCharge[4]-n3*corrCharge[3])/(i3*i4); + ch5=(n3*n4*corrCharge[3]-i4*nn3*corrCharge[3]-i3*n4*corrCharge[4]+i3*i4*corrCharge[5])/(i3*i4*i5); if (ch3