@@ -82,6 +82,7 @@ bool L1TCaloLayer1FetchLUTs(
8282 }
8383 size_t numEcalPhiBins = (*std::max_element (ecalScalePhiBins.begin (), ecalScalePhiBins.end ())) + 1 ;
8484 auto ecalSF = caloParams.layer1ECalScaleFactors ();
85+ auto ecalZSF = caloParams.layer1ECalZSFactors ();
8586 if (ecalSF.size () != ecalScaleETBins.size () * numEcalPhiBins * 28 ) {
8687 edm::LogError (" L1TCaloLayer1FetchLUTs" ) << " caloParams.layer1ECalScaleFactors().size() != "
8788 " caloParams.layer1ECalScaleETBins().size()*numEcalPhiBins*28 !!" ;
@@ -97,6 +98,7 @@ bool L1TCaloLayer1FetchLUTs(
9798 }
9899 size_t numHcalPhiBins = (*std::max_element (hcalScalePhiBins.begin (), hcalScalePhiBins.end ())) + 1 ;
99100 auto hcalSF = caloParams.layer1HCalScaleFactors ();
101+ auto hcalZSF = caloParams.layer1HCalZSFactors ();
100102 if (hcalSF.size () != hcalScaleETBins.size () * numHcalPhiBins * 28 ) {
101103 edm::LogError (" L1TCaloLayer1FetchLUTs" ) << " caloParams.layer1HCalScaleFactors().size() != "
102104 " caloParams.layer1HCalScaleETBins().size()*numHcalPhiBins*28 !!" ;
@@ -195,6 +197,7 @@ bool L1TCaloLayer1FetchLUTs(
195197 calibratedECalInput *= ecalSF.at (phiBin * ecalScaleETBins.size () * 28 + etBin * 28 + etaBin);
196198 if (useLSB)
197199 calibratedECalInput /= caloLSB;
200+ if (ecalInput < ecalZSF.size ()/28 -1 ) calibratedECalInput *= ecalZSF.at ( ecalInput * 28 + etaBin);
198201
199202 value = calibratedECalInput;
200203 if (fwVersion > 2 ) {
@@ -261,7 +264,7 @@ bool L1TCaloLayer1FetchLUTs(
261264 calibratedHcalInput *= hcalSF.at (phiBin * hcalScaleETBins.size () * 28 + etBin * 28 + etaBin);
262265 if (useLSB)
263266 calibratedHcalInput /= caloLSB;
264-
267+ if (hcalInput < hcalZSF. size ()/ 28 - 1 ) calibratedHcalInput *= hcalZSF. at ( hcalInput * 28 + etaBin);
265268 value = calibratedHcalInput;
266269 if (fwVersion > 2 ) {
267270 // Saturate if either decompressed value is over 127.5 GeV or input saturated
0 commit comments