From dde9823e2d8dc73a71db843e14b35cc841d49bbd Mon Sep 17 00:00:00 2001 From: Dinyar Rabady Date: Mon, 13 Mar 2023 16:54:55 +0100 Subject: [PATCH] Two showers in diff sectors for mu shower producer --- .../L1TMuon/plugins/L1TMuonShowerProducer.cc | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/L1Trigger/L1TMuon/plugins/L1TMuonShowerProducer.cc b/L1Trigger/L1TMuon/plugins/L1TMuonShowerProducer.cc index 8c115c63dcd7d..ceec898f2c3fb 100644 --- a/L1Trigger/L1TMuon/plugins/L1TMuonShowerProducer.cc +++ b/L1Trigger/L1TMuon/plugins/L1TMuonShowerProducer.cc @@ -61,30 +61,45 @@ void L1TMuonShowerProducer::produce(edm::Event& iEvent, const edm::EventSetup& i Showers that arrive out-of-time are also under consideration, but are not going be to enabled at startup Run-3. So all showers should be in-time. */ - bool isOneNominalInTime = false; - bool isTwoLooseInTime = false; - bool isOneTightInTime = false; + bool isOneNominalInTime{false}; + bool isTwoLooseInTime{false}; + bool isOneTightInTime{false}; + bool isTwoLooseDifferentSectorsInTime{false}; + bool foundOneLoose{false}; for (size_t i = 0; i < emtfShowers->size(0); ++i) { auto shower = emtfShowers->at(0, i); if (shower.isValid()) { // nominal - if (shower.isOneNominalInTime()) + if (shower.isOneNominalInTime()) { isOneNominalInTime = true; + } // two loose - if (shower.isTwoLooseInTime()) + if (shower.isTwoLooseInTime()) { isTwoLooseInTime = true; + } // tight - if (shower.isOneTightInTime()) + if (shower.isOneTightInTime()) { isOneTightInTime = true; + } + // two loos in different sectors + if (shower.isOneLooseInTime()) { + if (foundOneLoose) { + isTwoLooseDifferentSectorsInTime = true; + } else { + foundOneLoose = true; + } + } } } // Check for at least one nominal shower - const bool acceptCondition(isOneNominalInTime or isTwoLooseInTime or isOneTightInTime); + const bool acceptCondition{isOneNominalInTime or isTwoLooseInTime or isOneTightInTime or + isTwoLooseDifferentSectorsInTime}; if (acceptCondition) { - MuonShower outShower(isOneNominalInTime, false, isTwoLooseInTime, false, isOneTightInTime, false); + MuonShower outShower( + isOneNominalInTime, false, isTwoLooseInTime, false, isOneTightInTime, false, isTwoLooseDifferentSectorsInTime); outShowers->push_back(0, outShower); } iEvent.put(std::move(outShowers));