Skip to content

Commit

Permalink
Merge pull request #37225 from dinyar/muon_showers_dqm_12_2_X
Browse files Browse the repository at this point in the history
Backport muon shower (un)packing and DQM to 12_2_X
  • Loading branch information
cmsbuild authored Mar 14, 2022
2 parents 214bf00 + 26727cc commit 7ffc6f4
Show file tree
Hide file tree
Showing 38 changed files with 717 additions and 211 deletions.
29 changes: 22 additions & 7 deletions DQM/L1TMonitor/interface/L1TStage2uGMT.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@

#include "DataFormats/L1Trigger/interface/Muon.h"
#include "DataFormats/L1TMuon/interface/RegionalMuonCand.h"
#include "DataFormats/L1Trigger/interface/MuonShower.h"
#include "DataFormats/L1TMuon/interface/RegionalMuonShower.h"
#include "L1Trigger/L1TMuon/interface/MicroGMTConfiguration.h"

#include "DQMServices/Core/interface/DQMEDAnalyzer.h"
Expand All @@ -27,14 +29,17 @@ class L1TStage2uGMT : public DQMEDAnalyzer {
private:
l1t::tftype getTfOrigin(const int tfMuonIndex);

edm::EDGetTokenT<l1t::RegionalMuonCandBxCollection> ugmtBMTFToken;
edm::EDGetTokenT<l1t::RegionalMuonCandBxCollection> ugmtOMTFToken;
edm::EDGetTokenT<l1t::RegionalMuonCandBxCollection> ugmtEMTFToken;
edm::EDGetTokenT<l1t::MuonBxCollection> ugmtMuonToken;
std::string monitorDir;
bool emul;
bool verbose;
edm::EDGetTokenT<l1t::RegionalMuonCandBxCollection> ugmtBMTFToken_;
edm::EDGetTokenT<l1t::RegionalMuonCandBxCollection> ugmtOMTFToken_;
edm::EDGetTokenT<l1t::RegionalMuonCandBxCollection> ugmtEMTFToken_;
edm::EDGetTokenT<l1t::MuonBxCollection> ugmtMuonToken_;
edm::EDGetTokenT<l1t::RegionalMuonShowerBxCollection> ugmtEMTFShowerToken_;
edm::EDGetTokenT<l1t::MuonShowerBxCollection> ugmtMuonShowerToken_;
std::string monitorDir_;
bool emul_;
bool verbose_;
bool displacedQuantities_;
bool hadronicShowers_;

const float etaScale_;
const float phiScale_;
Expand Down Expand Up @@ -94,6 +99,10 @@ class L1TStage2uGMT : public DQMEDAnalyzer {
MonitorElement* ugmtEMTFMuMuDPhi;
MonitorElement* ugmtEMTFMuMuDR;

MonitorElement* ugmtEMTFShowerTypeOccupancyPerSector;
MonitorElement* ugmtEMTFShowerTypeOccupancyPerBx;
MonitorElement* ugmtEMTFShowerSectorOccupancyPerBx;

MonitorElement* ugmtBOMTFposMuMuDEta;
MonitorElement* ugmtBOMTFposMuMuDPhi;
MonitorElement* ugmtBOMTFposMuMuDR;
Expand Down Expand Up @@ -161,6 +170,9 @@ class L1TStage2uGMT : public DQMEDAnalyzer {
MonitorElement* ugmtMuonBXvshwIso;
MonitorElement* ugmtMuonChargevsLink;

// Output shower plots
MonitorElement* ugmtMuonShowerTypeOccupancyPerBx;

// muon correlations
MonitorElement* ugmtMuMuInvMass;
MonitorElement* ugmtMuMuInvMassAtVtx;
Expand Down Expand Up @@ -200,6 +212,9 @@ class L1TStage2uGMT : public DQMEDAnalyzer {
MonitorElement* ugmtMuMuDEtaEneg;
MonitorElement* ugmtMuMuDPhiEneg;
MonitorElement* ugmtMuMuDREneg;

static constexpr unsigned IDX_TIGHT_SHOWER{2};
static constexpr unsigned IDX_NOMINAL_SHOWER{1};
};

#endif
7 changes: 5 additions & 2 deletions DQM/L1TMonitor/python/L1TStage2uGMT_cfi.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,16 @@
bmtfProducer = cms.InputTag("gmtStage2Digis", "BMTF"),
omtfProducer = cms.InputTag("gmtStage2Digis", "OMTF"),
emtfProducer = cms.InputTag("gmtStage2Digis", "EMTF"),
emtfShowerProducer = cms.InputTag("gmtStage2Digis", "EMTF"),
muonProducer = cms.InputTag("gmtStage2Digis", "Muon"),
muonShowerProducer = cms.InputTag("gmtStage2Digis", "MuonShower"),
monitorDir = cms.untracked.string("L1T/L1TStage2uGMT"),
emulator = cms.untracked.bool(False),
verbose = cms.untracked.bool(False),
displacedQuantities = cms.untracked.bool(False)
displacedQuantities = cms.untracked.bool(False),
hadronicShowers = cms.untracked.bool(False)
)

## Era: Run3_2021; Displaced muons from BMTF used in uGMT from Run-3
from Configuration.Eras.Modifier_stage2L1Trigger_2021_cff import stage2L1Trigger_2021
stage2L1Trigger_2021.toModify(l1tStage2uGMT, displacedQuantities = cms.untracked.bool(True))
stage2L1Trigger_2021.toModify(l1tStage2uGMT, displacedQuantities = cms.untracked.bool(True), hadronicShowers = cms.untracked.bool(True))
4 changes: 2 additions & 2 deletions DQM/L1TMonitor/src/L1TStage2Shower.cc
Original file line number Diff line number Diff line change
Expand Up @@ -166,8 +166,8 @@ void L1TStage2Shower::analyze(const edm::Event& e, const edm::EventSetup& c) {
if (not Shower.isValid())
continue;
if (Shower.isOneNominalInTime() or Shower.isTwoLooseInTime() or Shower.isOneTightInTime()) {
int endcap = Shower.endcap();
int sector = Shower.sector();
int endcap = Shower.trackFinderType() == l1t::tftype::emtf_pos ? 1 : -1;
int sector = Shower.processor() + 1;
if (Shower.isOneTightInTime())
emtfShowerTypeOccupancy->Fill(sector, (endcap == 1) ? 7.5 : 0.5);
if (Shower.isTwoLooseInTime())
Expand Down
164 changes: 141 additions & 23 deletions DQM/L1TMonitor/src/L1TStage2uGMT.cc
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
#include "DQM/L1TMonitor/interface/L1TStage2uGMT.h"

L1TStage2uGMT::L1TStage2uGMT(const edm::ParameterSet& ps)
: ugmtMuonToken(consumes<l1t::MuonBxCollection>(ps.getParameter<edm::InputTag>("muonProducer"))),
monitorDir(ps.getUntrackedParameter<std::string>("monitorDir")),
emul(ps.getUntrackedParameter<bool>("emulator")),
verbose(ps.getUntrackedParameter<bool>("verbose")),
: ugmtMuonToken_(consumes<l1t::MuonBxCollection>(ps.getParameter<edm::InputTag>("muonProducer"))),
ugmtMuonShowerToken_(consumes<l1t::MuonShowerBxCollection>(ps.getParameter<edm::InputTag>("muonShowerProducer"))),
monitorDir_(ps.getUntrackedParameter<std::string>("monitorDir")),
emul_(ps.getUntrackedParameter<bool>("emulator")),
verbose_(ps.getUntrackedParameter<bool>("verbose")),
displacedQuantities_(ps.getUntrackedParameter<bool>("displacedQuantities")),
hadronicShowers_(ps.getUntrackedParameter<bool>("hadronicShowers")),
etaScale_(0.010875), // eta scale (CMS DN-2015/017)
phiScale_(0.010908) // phi scale (2*pi/576 HW values)
{
if (!emul) {
ugmtBMTFToken = consumes<l1t::RegionalMuonCandBxCollection>(ps.getParameter<edm::InputTag>("bmtfProducer"));
ugmtOMTFToken = consumes<l1t::RegionalMuonCandBxCollection>(ps.getParameter<edm::InputTag>("omtfProducer"));
ugmtEMTFToken = consumes<l1t::RegionalMuonCandBxCollection>(ps.getParameter<edm::InputTag>("emtfProducer"));
if (!emul_) {
ugmtBMTFToken_ = consumes<l1t::RegionalMuonCandBxCollection>(ps.getParameter<edm::InputTag>("bmtfProducer"));
ugmtOMTFToken_ = consumes<l1t::RegionalMuonCandBxCollection>(ps.getParameter<edm::InputTag>("omtfProducer"));
ugmtEMTFToken_ = consumes<l1t::RegionalMuonCandBxCollection>(ps.getParameter<edm::InputTag>("emtfProducer"));
ugmtEMTFShowerToken_ =
consumes<l1t::RegionalMuonShowerBxCollection>(ps.getParameter<edm::InputTag>("emtfShowerProducer"));
}
}

Expand All @@ -21,23 +25,26 @@ L1TStage2uGMT::~L1TStage2uGMT() {}
void L1TStage2uGMT::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
edm::ParameterSetDescription desc;
desc.add<edm::InputTag>("muonProducer")->setComment("uGMT output muons.");
;

desc.add<edm::InputTag>("bmtfProducer")->setComment("RegionalMuonCands from BMTF.");
desc.add<edm::InputTag>("omtfProducer")->setComment("RegionalMuonCands from OMTF.");
desc.add<edm::InputTag>("emtfProducer")->setComment("RegionalMuonCands from EMTF.");
desc.add<edm::InputTag>("muonShowerProducer")->setComment("uGMT output showers.");
desc.add<edm::InputTag>("emtfShowerProducer")->setComment("RegionalMuonShowers from EMTF.");
desc.addUntracked<std::string>("monitorDir", "")
->setComment("Target directory in the DQM file. Will be created if not existing.");
desc.addUntracked<bool>("emulator", false)
->setComment("Create histograms for muonProducer input only. xmtfProducer inputs are ignored.");
desc.addUntracked<bool>("verbose", false);
desc.addUntracked<bool>("displacedQuantities", false);
desc.addUntracked<bool>("hadronicShowers", false);
descriptions.add("l1tStage2uGMT", desc);
}

void L1TStage2uGMT::bookHistograms(DQMStore::IBooker& ibooker, const edm::Run&, const edm::EventSetup&) {
if (!emul) {
if (!emul_) {
// BMTF Input
ibooker.setCurrentFolder(monitorDir + "/BMTFInput");
ibooker.setCurrentFolder(monitorDir_ + "/BMTFInput");

ugmtBMTFBX = ibooker.book1D("ugmtBMTFBX", "uGMT BMTF Input BX", 7, -3.5, 3.5);
ugmtBMTFBX->setAxisTitle("BX", 1);
Expand Down Expand Up @@ -98,7 +105,7 @@ void L1TStage2uGMT::bookHistograms(DQMStore::IBooker& ibooker, const edm::Run&,
ugmtBMTFMuMuDR->setAxisTitle("#DeltaR", 1);

// OMTF Input
ibooker.setCurrentFolder(monitorDir + "/OMTFInput");
ibooker.setCurrentFolder(monitorDir_ + "/OMTFInput");

ugmtOMTFBX = ibooker.book1D("ugmtOMTFBX", "uGMT OMTF Input BX", 7, -3.5, 3.5);
ugmtOMTFBX->setAxisTitle("BX", 1);
Expand Down Expand Up @@ -165,7 +172,7 @@ void L1TStage2uGMT::bookHistograms(DQMStore::IBooker& ibooker, const edm::Run&,
ugmtOMTFMuMuDR->setAxisTitle("#DeltaR", 1);

// EMTF Input
ibooker.setCurrentFolder(monitorDir + "/EMTFInput");
ibooker.setCurrentFolder(monitorDir_ + "/EMTFInput");

ugmtEMTFBX = ibooker.book1D("ugmtEMTFBX", "uGMT EMTF Input BX", 7, -3.5, 3.5);
ugmtEMTFBX->setAxisTitle("BX", 1);
Expand Down Expand Up @@ -240,8 +247,56 @@ void L1TStage2uGMT::bookHistograms(DQMStore::IBooker& ibooker, const edm::Run&,
ugmtEMTFMuMuDR = ibooker.book1D("ugmtEMTFMuMuDR", "uGMT EMTF input muons #DeltaR between sectors", 50, 0., 0.5);
ugmtEMTFMuMuDR->setAxisTitle("#DeltaR", 1);

// EMTF muon showers
if (hadronicShowers_) {
ibooker.setCurrentFolder(monitorDir_ + "/EMTFInput/Muon showers");

ugmtEMTFShowerTypeOccupancyPerSector = ibooker.book2D(
"ugmtEMTFShowerTypeOccupancyPerSector", "Shower type occupancy per sector", 12, 1, 13, 2, 1, 3);
ugmtEMTFShowerTypeOccupancyPerSector->setAxisTitle("Processor", 1);
ugmtEMTFShowerTypeOccupancyPerSector->setBinLabel(12, "+6", 1);
ugmtEMTFShowerTypeOccupancyPerSector->setBinLabel(11, "+5", 1);
ugmtEMTFShowerTypeOccupancyPerSector->setBinLabel(10, "+4", 1);
ugmtEMTFShowerTypeOccupancyPerSector->setBinLabel(9, "+3", 1);
ugmtEMTFShowerTypeOccupancyPerSector->setBinLabel(8, "+2", 1);
ugmtEMTFShowerTypeOccupancyPerSector->setBinLabel(7, "+1", 1);
ugmtEMTFShowerTypeOccupancyPerSector->setBinLabel(6, "-6", 1);
ugmtEMTFShowerTypeOccupancyPerSector->setBinLabel(5, "-5", 1);
ugmtEMTFShowerTypeOccupancyPerSector->setBinLabel(4, "-4", 1);
ugmtEMTFShowerTypeOccupancyPerSector->setBinLabel(3, "-3", 1);
ugmtEMTFShowerTypeOccupancyPerSector->setBinLabel(2, "-2", 1);
ugmtEMTFShowerTypeOccupancyPerSector->setBinLabel(1, "-1", 1);
ugmtEMTFShowerTypeOccupancyPerSector->setAxisTitle("Shower type", 2);
ugmtEMTFShowerTypeOccupancyPerSector->setBinLabel(IDX_TIGHT_SHOWER, "Tight", 2);
ugmtEMTFShowerTypeOccupancyPerSector->setBinLabel(IDX_NOMINAL_SHOWER, "Nominal", 2);

ugmtEMTFShowerTypeOccupancyPerBx =
ibooker.book2D("ugmtEMTFShowerTypeOccupancyPerBx", "Shower type occupancy per BX", 7, -3.5, 3.5, 2, 1, 3);
ugmtEMTFShowerTypeOccupancyPerBx->setAxisTitle("BX", 1);
ugmtEMTFShowerTypeOccupancyPerBx->setAxisTitle("Shower type", 2);
ugmtEMTFShowerTypeOccupancyPerBx->setBinLabel(IDX_TIGHT_SHOWER, "Tight", 2);
ugmtEMTFShowerTypeOccupancyPerBx->setBinLabel(IDX_NOMINAL_SHOWER, "Nominal", 2);

ugmtEMTFShowerSectorOccupancyPerBx = ibooker.book2D(
"ugmtEMTFShowerSectorOccupancyPerBx", "Shower BX occupancy per sector", 7, -3.5, 3.5, 12, 1, 13);
ugmtEMTFShowerSectorOccupancyPerBx->setAxisTitle("BX", 1);
ugmtEMTFShowerSectorOccupancyPerBx->setAxisTitle("Processor", 2);
ugmtEMTFShowerSectorOccupancyPerBx->setBinLabel(12, "+6", 2);
ugmtEMTFShowerSectorOccupancyPerBx->setBinLabel(11, "+5", 2);
ugmtEMTFShowerSectorOccupancyPerBx->setBinLabel(10, "+4", 2);
ugmtEMTFShowerSectorOccupancyPerBx->setBinLabel(9, "+3", 2);
ugmtEMTFShowerSectorOccupancyPerBx->setBinLabel(8, "+2", 2);
ugmtEMTFShowerSectorOccupancyPerBx->setBinLabel(7, "+1", 2);
ugmtEMTFShowerSectorOccupancyPerBx->setBinLabel(6, "-6", 2);
ugmtEMTFShowerSectorOccupancyPerBx->setBinLabel(5, "-5", 2);
ugmtEMTFShowerSectorOccupancyPerBx->setBinLabel(4, "-4", 2);
ugmtEMTFShowerSectorOccupancyPerBx->setBinLabel(3, "-3", 2);
ugmtEMTFShowerSectorOccupancyPerBx->setBinLabel(2, "-2", 2);
ugmtEMTFShowerSectorOccupancyPerBx->setBinLabel(1, "-1", 2);
}

// inter-TF muon correlations
ibooker.setCurrentFolder(monitorDir + "/muon_correlations");
ibooker.setCurrentFolder(monitorDir_ + "/muon_correlations");

ugmtBOMTFposMuMuDEta =
ibooker.book1D("ugmtBOMTFposMuMuDEta", "uGMT input muons #Delta#eta between BMTF and OMTF+", 100, -0.5, 0.5);
Expand Down Expand Up @@ -293,9 +348,9 @@ void L1TStage2uGMT::bookHistograms(DQMStore::IBooker& ibooker, const edm::Run&,
}

// Subsystem Monitoring and Muon Output
ibooker.setCurrentFolder(monitorDir);
ibooker.setCurrentFolder(monitorDir_);

if (!emul) {
if (!emul_) {
ugmtBMTFBXvsProcessor =
ibooker.book2D("ugmtBXvsProcessorBMTF", "uGMT BMTF Input BX vs Processor", 12, -0.5, 11.5, 5, -2.5, 2.5);
ugmtBMTFBXvsProcessor->setAxisTitle("Wedge", 1);
Expand Down Expand Up @@ -523,6 +578,15 @@ void L1TStage2uGMT::bookHistograms(DQMStore::IBooker& ibooker, const edm::Run&,
}
ugmtMuonChargevsLink->setAxisTitle("Charge", 2);

if (hadronicShowers_) {
ugmtMuonShowerTypeOccupancyPerBx =
ibooker.book2D("ugmtMuonShowerTypeOccupancyPerBx", "Shower type occupancy per BX", 7, -3.5, 3.5, 2, 1, 3);
ugmtMuonShowerTypeOccupancyPerBx->setAxisTitle("BX", 1);
ugmtMuonShowerTypeOccupancyPerBx->setAxisTitle("Shower type", 2);
ugmtMuonShowerTypeOccupancyPerBx->setBinLabel(IDX_TIGHT_SHOWER, "Tight", 2);
ugmtMuonShowerTypeOccupancyPerBx->setBinLabel(IDX_NOMINAL_SHOWER, "Nominal", 2);
}

ugmtMuonBXvshwPt = ibooker.book2D("ugmtMuonBXvshwPt", "uGMT Muon BX vs HW p_{T}", 128, -0.5, 511.5, 5, -2.5, 2.5);
ugmtMuonBXvshwPt->setAxisTitle("Hardware p_{T}", 1);
ugmtMuonBXvshwPt->setAxisTitle("BX", 2);
Expand Down Expand Up @@ -554,7 +618,7 @@ void L1TStage2uGMT::bookHistograms(DQMStore::IBooker& ibooker, const edm::Run&,
ugmtMuonBXvshwIso->setAxisTitle("BX", 2);

// muon correlations
ibooker.setCurrentFolder(monitorDir + "/muon_correlations");
ibooker.setCurrentFolder(monitorDir_ + "/muon_correlations");

ugmtMuMuInvMass = ibooker.book1D("ugmtMuMuInvMass", "uGMT dimuon invariant mass", 200, 0., 200.);
ugmtMuMuInvMass->setAxisTitle("m(#mu#mu) [GeV]", 1);
Expand Down Expand Up @@ -680,12 +744,12 @@ void L1TStage2uGMT::bookHistograms(DQMStore::IBooker& ibooker, const edm::Run&,
}

void L1TStage2uGMT::analyze(const edm::Event& e, const edm::EventSetup& c) {
if (verbose)
if (verbose_)
edm::LogInfo("L1TStage2uGMT") << "L1TStage2uGMT: analyze..." << std::endl;

if (!emul) {
if (!emul_) {
edm::Handle<l1t::RegionalMuonCandBxCollection> BMTFBxCollection;
e.getByToken(ugmtBMTFToken, BMTFBxCollection);
e.getByToken(ugmtBMTFToken_, BMTFBxCollection);

ugmtBMTFnMuons->Fill(BMTFBxCollection->size(0));

Expand Down Expand Up @@ -734,7 +798,7 @@ void L1TStage2uGMT::analyze(const edm::Event& e, const edm::EventSetup& c) {
}

edm::Handle<l1t::RegionalMuonCandBxCollection> OMTFBxCollection;
e.getByToken(ugmtOMTFToken, OMTFBxCollection);
e.getByToken(ugmtOMTFToken_, OMTFBxCollection);

ugmtOMTFnMuons->Fill(OMTFBxCollection->size(0));

Expand Down Expand Up @@ -789,7 +853,7 @@ void L1TStage2uGMT::analyze(const edm::Event& e, const edm::EventSetup& c) {
}

edm::Handle<l1t::RegionalMuonCandBxCollection> EMTFBxCollection;
e.getByToken(ugmtEMTFToken, EMTFBxCollection);
e.getByToken(ugmtEMTFToken_, EMTFBxCollection);

ugmtEMTFnMuons->Fill(EMTFBxCollection->size(0));

Expand Down Expand Up @@ -847,6 +911,38 @@ void L1TStage2uGMT::analyze(const edm::Event& e, const edm::EventSetup& c) {
}
}

// Fill shower plots
if (hadronicShowers_) {
edm::Handle<l1t::RegionalMuonShowerBxCollection> EMTFShowersBxCollection;
e.getByToken(ugmtEMTFShowerToken_, EMTFShowersBxCollection);

for (int itBX = EMTFShowersBxCollection->getFirstBX(); itBX <= EMTFShowersBxCollection->getLastBX(); ++itBX) {
for (l1t::RegionalMuonShowerBxCollection::const_iterator shower = EMTFShowersBxCollection->begin(itBX);
shower != EMTFShowersBxCollection->end(itBX);
++shower) {
if (not shower->isValid()) {
continue;
}
if (shower->isOneNominalInTime()) {
ugmtEMTFShowerSectorOccupancyPerBx->Fill(
itBX, shower->processor() + 1 + (shower->trackFinderType() == l1t::tftype::emtf_pos ? 6 : 0));
ugmtEMTFShowerTypeOccupancyPerSector->Fill(
shower->processor() + 1 + (shower->trackFinderType() == l1t::tftype::emtf_pos ? 6 : 0),
IDX_NOMINAL_SHOWER);
ugmtEMTFShowerTypeOccupancyPerBx->Fill(itBX, IDX_NOMINAL_SHOWER);
}
if (shower->isOneTightInTime()) {
ugmtEMTFShowerSectorOccupancyPerBx->Fill(
itBX, shower->processor() + 1 + (shower->trackFinderType() == l1t::tftype::emtf_pos ? 6 : 0));
ugmtEMTFShowerTypeOccupancyPerSector->Fill(
shower->processor() + 1 + (shower->trackFinderType() == l1t::tftype::emtf_pos ? 6 : 0),
IDX_TIGHT_SHOWER);
ugmtEMTFShowerTypeOccupancyPerBx->Fill(itBX, IDX_TIGHT_SHOWER);
}
}
}
}

// barrel-overlap muon correlations
int firstBxBO = (BMTFBxCollection->getFirstBX() < OMTFBxCollection->getFirstBX()) ? OMTFBxCollection->getFirstBX()
: BMTFBxCollection->getFirstBX();
Expand Down Expand Up @@ -921,7 +1017,7 @@ void L1TStage2uGMT::analyze(const edm::Event& e, const edm::EventSetup& c) {
}

edm::Handle<l1t::MuonBxCollection> MuonBxCollection;
e.getByToken(ugmtMuonToken, MuonBxCollection);
e.getByToken(ugmtMuonToken_, MuonBxCollection);

ugmtnMuons->Fill(MuonBxCollection->size(0));

Expand Down Expand Up @@ -1062,6 +1158,28 @@ void L1TStage2uGMT::analyze(const edm::Event& e, const edm::EventSetup& c) {
}
}
}

// Fill shower plots
if (hadronicShowers_) {
edm::Handle<l1t::MuonShowerBxCollection> showersBxCollection;
e.getByToken(ugmtMuonShowerToken_, showersBxCollection);

for (int itBX = showersBxCollection->getFirstBX(); itBX <= showersBxCollection->getLastBX(); ++itBX) {
for (l1t::MuonShowerBxCollection::const_iterator shower = showersBxCollection->begin(itBX);
shower != showersBxCollection->end(itBX);
++shower) {
if (not shower->isValid()) {
continue;
}
if (shower->isOneNominalInTime()) {
ugmtMuonShowerTypeOccupancyPerBx->Fill(itBX, IDX_NOMINAL_SHOWER);
}
if (shower->isOneTightInTime()) {
ugmtMuonShowerTypeOccupancyPerBx->Fill(itBX, IDX_TIGHT_SHOWER);
}
}
}
}
}

l1t::tftype L1TStage2uGMT::getTfOrigin(const int tfMuonIndex) {
Expand Down
Loading

0 comments on commit 7ffc6f4

Please sign in to comment.