From 632a8ae0d7517350fcd9ac387935b35e45810027 Mon Sep 17 00:00:00 2001 From: Taeun_Kwon Date: Tue, 5 Apr 2022 17:23:10 -0500 Subject: [PATCH] TP algorithm update for the sync with f/w (cherry picked from commit c46bab077e306ab77af583ff07d8dd9add0d03ca) --- .../HcalTrigPrimAlgos/src/HcalTriggerPrimitiveAlgo.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/SimCalorimetry/HcalTrigPrimAlgos/src/HcalTriggerPrimitiveAlgo.cc b/SimCalorimetry/HcalTrigPrimAlgos/src/HcalTriggerPrimitiveAlgo.cc index 195f6d221e3f1..812f0ed3efa95 100644 --- a/SimCalorimetry/HcalTrigPrimAlgos/src/HcalTriggerPrimitiveAlgo.cc +++ b/SimCalorimetry/HcalTrigPrimAlgos/src/HcalTriggerPrimitiveAlgo.cc @@ -446,7 +446,10 @@ void HcalTriggerPrimitiveAlgo::analyzeQIE11(IntegerCaloSamples& samples, unsigned int sample = samples[ibin + i]; if (fix_saturation_ && (sample_saturation.size() > ibin + i)) - check_sat = sample_saturation[ibin + i]; + check_sat = (sample_saturation[ibin + i] | (sample > QIE11_MAX_LINEARIZATION_ET)); + + if (sample > QIE11_MAX_LINEARIZATION_ET) + sample = QIE11_MAX_LINEARIZATION_ET; // Usually use a segmentation factor of 1.0 but for ieta >= 21 use 0.5 double segmentationFactor = 1.0; @@ -490,8 +493,12 @@ void HcalTriggerPrimitiveAlgo::analyzeQIE11(IntegerCaloSamples& samples, if (isPeak) { output[ibin] = std::min(sum[idx], QIE11_MAX_LINEARIZATION_ET); - if (fix_saturation_ && force_saturation[idx]) + + if (fix_saturation_ && force_saturation[idx] && ids.size() == 2) + output[ibin] = QIE11_MAX_LINEARIZATION_ET * 0.5; + else if (fix_saturation_ && force_saturation[idx]) output[ibin] = QIE11_MAX_LINEARIZATION_ET; + } else { // Not a peak output[ibin] = 0;