CMS 3D CMS Logo

L1TStage2uGMTMuon.cc
Go to the documentation of this file.
2 
3 
5  : ugmtMuonToken(consumes<l1t::MuonBxCollection>(ps.getParameter<edm::InputTag>("muonProducer"))),
6  monitorDir(ps.getUntrackedParameter<std::string>("monitorDir")),
7  titlePrefix(ps.getUntrackedParameter<std::string>("titlePrefix")),
8  verbose(ps.getUntrackedParameter<bool>("verbose")),
9  makeMuonAtVtxPlots(ps.getUntrackedParameter<bool>("makeMuonAtVtxPlots"))
10 {
11 }
12 
14 
17  desc.add<edm::InputTag>("muonProducer");
18  desc.addUntracked<std::string>("monitorDir", "")->setComment("Target directory in the DQM file. Will be created if not existing.");
19  desc.addUntracked<std::string>("titlePrefix", "")->setComment("Prefix text for the histogram titles.");
20  desc.addUntracked<bool>("verbose", false);
21  desc.addUntracked<bool>("makeMuonAtVtxPlots", false);
22  descriptions.add("l1tStage2uGMTMuon", desc);
23 }
24 
26 
27 
29 
30  // Subsystem Monitoring and Muon Output
32 
33  ugmtMuonBX = ibooker.book1D("ugmtMuonBX", (titlePrefix+"BX").c_str(), 7, -3.5, 3.5);
34  ugmtMuonBX->setAxisTitle("BX", 1);
35 
36  ugmtnMuons = ibooker.book1D("ugmtnMuons", (titlePrefix+"Multiplicity").c_str(), 9, -0.5, 8.5);
37  ugmtnMuons->setAxisTitle("Muon Multiplicity (BX == 0)", 1);
38 
39  ugmtMuonhwPt = ibooker.book1D("ugmtMuonhwPt", (titlePrefix+"HW p_{T}").c_str(), 512, -0.5, 511.5);
40  ugmtMuonhwPt->setAxisTitle("Hardware p_{T}", 1);
41 
42  ugmtMuonhwEta = ibooker.book1D("ugmtMuonhwEta", (titlePrefix+"HW #eta").c_str(), 461, -230.5, 230.5);
43  ugmtMuonhwEta->setAxisTitle("Hardware Eta", 1);
44 
45  ugmtMuonhwPhi = ibooker.book1D("ugmtMuonhwPhi", (titlePrefix+"HW #phi").c_str(), 577, -1.5, 575.5);
46  ugmtMuonhwPhi->setAxisTitle("Hardware Phi", 1);
47 
48  ugmtMuonhwCharge = ibooker.book1D("ugmtMuonhwCharge", (titlePrefix+"HW Charge").c_str(), 4, -1.5, 2.5);
49  ugmtMuonhwCharge->setAxisTitle("Hardware Charge", 1);
50 
51  ugmtMuonhwChargeValid = ibooker.book1D("ugmtMuonhwChargeValid", (titlePrefix+"ChargeValid").c_str(), 2, -0.5, 1.5);
52  ugmtMuonhwChargeValid->setAxisTitle("ChargeValid", 1);
53 
54  ugmtMuonhwQual = ibooker.book1D("ugmtMuonhwQual", (titlePrefix+"Quality").c_str(), 16, -0.5, 15.5);
55  ugmtMuonhwQual->setAxisTitle("Quality", 1);
56 
57  ugmtMuonPt = ibooker.book1D("ugmtMuonPt", (titlePrefix+"p_{T}").c_str(), 128, -0.5, 255.5);
58  ugmtMuonPt->setAxisTitle("p_{T} [GeV]", 1);
59 
60  ugmtMuonEta = ibooker.book1D("ugmtMuonEta", (titlePrefix+"#eta").c_str(), 52, -2.6, 2.6);
61  ugmtMuonEta->setAxisTitle("#eta", 1);
62 
63  ugmtMuonPhi = ibooker.book1D("ugmtMuonPhi", (titlePrefix+"#phi").c_str(), 66, -3.3, 3.3);
64  ugmtMuonPhi->setAxisTitle("#phi", 1);
65 
66  ugmtMuonCharge = ibooker.book1D("ugmtMuonCharge", (titlePrefix+"Charge").c_str(), 3, -1.5, 1.5);
67  ugmtMuonCharge->setAxisTitle("Charge", 1);
68 
69  ugmtMuonPtvsEta = ibooker.book2D("ugmtMuonPtvsEta", (titlePrefix+"p_{T} vs #eta").c_str(), 100, -2.5, 2.5, 128, -0.5, 255.5);
70  ugmtMuonPtvsEta->setAxisTitle("#eta", 1);
71  ugmtMuonPtvsEta->setAxisTitle("p_{T} [GeV]", 2);
72 
73  ugmtMuonPtvsPhi = ibooker.book2D("ugmtMuonPtvsPhi", (titlePrefix+"p_{T} vs #phi").c_str(), 64, -3.2, 3.2, 128, -0.5, 255.5);
74  ugmtMuonPtvsPhi->setAxisTitle("#phi", 1);
75  ugmtMuonPtvsPhi->setAxisTitle("p_{T} [GeV]", 2);
76 
77  ugmtMuonPhivsEta = ibooker.book2D("ugmtMuonPhivsEta", (titlePrefix+"#phi vs #eta").c_str(), 100, -2.5, 2.5, 64, -3.2, 3.2);
78  ugmtMuonPhivsEta->setAxisTitle("#eta", 1);
79  ugmtMuonPhivsEta->setAxisTitle("#phi", 2);
80 
81  ugmtMuonBXvshwPt = ibooker.book2D("ugmtMuonBXvshwPt", (titlePrefix+"BX vs HW p_{T}").c_str(), 128, -0.5, 511.5, 5, -2.5, 2.5);
82  ugmtMuonBXvshwPt->setAxisTitle("Hardware p_{T}", 1);
84 
85  ugmtMuonBXvshwEta = ibooker.book2D("ugmtMuonBXvshwEta", (titlePrefix+"BX vs HW #eta").c_str(), 93, -232.5, 232.5, 5, -2.5, 2.5);
86  ugmtMuonBXvshwEta->setAxisTitle("Hardware #eta", 1);
88 
89  ugmtMuonBXvshwPhi = ibooker.book2D("ugmtMuonBXvshwPhi", (titlePrefix+"BX vs HW #phi").c_str(), 116, -2.5, 577.5, 5, -2.5, 2.5);
90  ugmtMuonBXvshwPhi->setAxisTitle("Hardware #phi", 1);
92 
93  ugmtMuonBXvshwCharge = ibooker.book2D("ugmtMuonBXvshwCharge", (titlePrefix+"BX vs HW Charge").c_str(), 2, -0.5, 1.5, 5, -2.5, 2.5);
94  ugmtMuonBXvshwCharge->setAxisTitle("Hardware Charge", 1);
96 
97  ugmtMuonBXvshwChargeValid = ibooker.book2D("ugmtMuonBXvshwChargeValid", (titlePrefix+"BX vs ChargeValid").c_str(), 2, -0.5, 1.5, 5, -2.5, 2.5);
98  ugmtMuonBXvshwChargeValid->setAxisTitle("ChargeValid", 1);
100 
101  ugmtMuonBXvshwQual = ibooker.book2D("ugmtMuonBXvshwQual", (titlePrefix+"BX vs Quality").c_str(), 16, -0.5, 15.5, 5, -2.5, 2.5);
102  ugmtMuonBXvshwQual->setAxisTitle("Quality", 1);
104 
105  if (makeMuonAtVtxPlots) {
106  ugmtMuonhwEtaAtVtx = ibooker.book1D("ugmtMuonhwEtaAtVtx", (titlePrefix+"HW #eta at vertex").c_str(), 461, -230.5, 230.5);
107  ugmtMuonhwEtaAtVtx->setAxisTitle("Hardware Eta at Vertex", 1);
108 
109  ugmtMuonhwPhiAtVtx = ibooker.book1D("ugmtMuonhwPhiAtVtx", (titlePrefix+"HW #phi at vertex").c_str(), 577, -1.5, 575.5);
110  ugmtMuonhwPhiAtVtx->setAxisTitle("Hardware Phi at Vertex", 1);
111 
112  ugmtMuonEtaAtVtx = ibooker.book1D("ugmtMuonEtaAtVtx", (titlePrefix+"#eta at vertex").c_str(), 52, -2.6, 2.6);
113  ugmtMuonEtaAtVtx->setAxisTitle("#eta at Vertex", 1);
114 
115  ugmtMuonPhiAtVtx = ibooker.book1D("ugmtMuonPhiAtVtx", (titlePrefix+"#phi at vertex").c_str(), 66, -3.3, 3.3);
116  ugmtMuonPhiAtVtx->setAxisTitle("#phi at Vertex", 1);
117 
118  ugmtMuonPtvsEtaAtVtx = ibooker.book2D("ugmtMuonPtvsEtaAtVtx", (titlePrefix+"p_{T} vs #eta at vertex").c_str(), 100, -2.5, 2.5, 128, -0.5, 255.5);
119  ugmtMuonPtvsEtaAtVtx->setAxisTitle("#eta at Vertex", 1);
120  ugmtMuonPtvsEtaAtVtx->setAxisTitle("p_{T} [GeV]", 2);
121 
122  ugmtMuonPhiAtVtxvsEtaAtVtx = ibooker.book2D("ugmtMuonPhiAtVtxvsEtaAtVtx", (titlePrefix+"#phi_{vtx} vs #eta_{vtx}").c_str(), 100, -2.5, 2.5, 64, -3.2, 3.2);
123  ugmtMuonPhiAtVtxvsEtaAtVtx->setAxisTitle("#eta at Vertex", 1);
124  ugmtMuonPhiAtVtxvsEtaAtVtx->setAxisTitle("#phi at Vertex", 2);
125 
126  ugmtMuonPtvsPhiAtVtx = ibooker.book2D("ugmtMuonPtvsPhiAtVtx", (titlePrefix+"p_{T} vs #phi at vertex").c_str(), 64, -3.2, 3.2, 128, -0.5, 255.5);
127  ugmtMuonPtvsPhiAtVtx->setAxisTitle("#phi at Vertex", 1);
128  ugmtMuonPtvsPhiAtVtx->setAxisTitle("p_{T} [GeV]", 2);
129 
130  ugmtMuonBXvshwEtaAtVtx = ibooker.book2D("ugmtMuonBXvshwEtaAtVtx", (titlePrefix+"BX vs HW #eta at vertex").c_str(), 93, -232.5, 232.5, 5, -2.5, 2.5);
131  ugmtMuonBXvshwEtaAtVtx->setAxisTitle("Hardware #eta at Vertex", 1);
133 
134  ugmtMuonBXvshwPhiAtVtx = ibooker.book2D("ugmtMuonBXvshwPhiAtVtx", (titlePrefix+"BX vs HW #phi at vertex").c_str(), 116, -2.5, 577.5, 5, -2.5, 2.5);
135  ugmtMuonBXvshwPhiAtVtx->setAxisTitle("Hardware #phi at Vertex", 1);
137  }
138 }
139 
141 
142  if (verbose) edm::LogInfo("L1TStage2uGMTMuon") << "L1TStage2uGMTMuon: analyze..." << std::endl;
143 
145  e.getByToken(ugmtMuonToken, MuonBxCollection);
146 
147  ugmtnMuons->Fill(MuonBxCollection->size(0));
148 
149  for (int itBX = MuonBxCollection->getFirstBX(); itBX <= MuonBxCollection->getLastBX(); ++itBX) {
150  for (l1t::MuonBxCollection::const_iterator Muon = MuonBxCollection->begin(itBX); Muon != MuonBxCollection->end(itBX); ++Muon) {
151 
152  ugmtMuonBX->Fill(itBX);
153  ugmtMuonhwPt->Fill(Muon->hwPt());
154  ugmtMuonhwEta->Fill(Muon->hwEta());
155  ugmtMuonhwPhi->Fill(Muon->hwPhi());
156  ugmtMuonhwCharge->Fill(Muon->hwCharge());
157  ugmtMuonhwChargeValid->Fill(Muon->hwChargeValid());
158  ugmtMuonhwQual->Fill(Muon->hwQual());
159 
160  ugmtMuonPt->Fill(Muon->pt());
161  ugmtMuonEta->Fill(Muon->eta());
162  ugmtMuonPhi->Fill(Muon->phi());
163  ugmtMuonCharge->Fill(Muon->charge());
164 
165  ugmtMuonPtvsEta->Fill(Muon->eta(), Muon->pt());
166  ugmtMuonPtvsPhi->Fill(Muon->phi(), Muon->pt());
167  ugmtMuonPhivsEta->Fill(Muon->eta(), Muon->phi());
168 
169  ugmtMuonBXvshwPt->Fill(Muon->hwPt(), itBX);
170  ugmtMuonBXvshwEta->Fill(Muon->hwEta(), itBX);
171  ugmtMuonBXvshwPhi->Fill(Muon->hwPhi(), itBX);
172  ugmtMuonBXvshwCharge->Fill(Muon->hwCharge(), itBX);
173  ugmtMuonBXvshwChargeValid->Fill(Muon->hwChargeValid(), itBX);
174  ugmtMuonBXvshwQual->Fill(Muon->hwQual(), itBX);
175 
176  if (makeMuonAtVtxPlots) {
177  ugmtMuonhwEtaAtVtx->Fill(Muon->hwEtaAtVtx());
178  ugmtMuonhwPhiAtVtx->Fill(Muon->hwPhiAtVtx());
179  ugmtMuonEtaAtVtx->Fill(Muon->etaAtVtx());
180  ugmtMuonPhiAtVtx->Fill(Muon->phiAtVtx());
181  ugmtMuonPtvsEtaAtVtx->Fill(Muon->etaAtVtx(), Muon->pt());
182  ugmtMuonPtvsPhiAtVtx->Fill(Muon->phiAtVtx(), Muon->pt());
183  ugmtMuonPhiAtVtxvsEtaAtVtx->Fill(Muon->etaAtVtx(), Muon->phiAtVtx());
184  ugmtMuonBXvshwEtaAtVtx->Fill(Muon->hwEtaAtVtx(), itBX);
185  ugmtMuonBXvshwPhiAtVtx->Fill(Muon->hwPhiAtVtx(), itBX);
186  }
187  }
188  }
189 }
190 
const_iterator end(int bx) const
~L1TStage2uGMTMuon() override
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
MonitorElement * ugmtMuonhwPhi
MonitorElement * ugmtMuonPhiAtVtxvsEtaAtVtx
unsigned size(int bx) const
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
std::string monitorDir
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
MonitorElement * ugmtMuonhwQual
MonitorElement * ugmtMuonhwEta
MonitorElement * ugmtMuonPhi
delete x;
Definition: CaloConfig.h:22
MonitorElement * ugmtMuonCharge
MonitorElement * ugmtMuonPtvsPhi
MonitorElement * ugmtMuonPhivsEta
MonitorElement * ugmtMuonBXvshwPhiAtVtx
MonitorElement * ugmtMuonEtaAtVtx
MonitorElement * ugmtMuonPhiAtVtx
MonitorElement * ugmtMuonBXvshwEta
MonitorElement * ugmtMuonEta
edm::EDGetTokenT< l1t::MuonBxCollection > ugmtMuonToken
MonitorElement * ugmtMuonBXvshwPt
void Fill(long long x)
MonitorElement * ugmtMuonPt
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:268
Definition: Muon.py:1
MonitorElement * ugmtMuonhwCharge
void bookHistograms(DQMStore::IBooker &, const edm::Run &, const edm::EventSetup &) override
MonitorElement * ugmtMuonBXvshwCharge
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:106
MonitorElement * ugmtMuonPtvsEtaAtVtx
ParameterDescriptionBase * add(U const &iLabel, T const &value)
MonitorElement * ugmtMuonhwEtaAtVtx
MonitorElement * ugmtMuonhwChargeValid
MonitorElement * ugmtMuonBXvshwChargeValid
BXVector< Muon > MuonBxCollection
Definition: Muon.h:11
int getFirstBX() const
MonitorElement * ugmtMuonBXvshwPhi
MonitorElement * ugmtMuonBX
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:109
std::string titlePrefix
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void dqmBeginRun(const edm::Run &, const edm::EventSetup &) override
MonitorElement * ugmtMuonPtvsPhiAtVtx
HLT enums.
L1TStage2uGMTMuon(const edm::ParameterSet &ps)
MonitorElement * ugmtnMuons
int getLastBX() const
void analyze(const edm::Event &, const edm::EventSetup &) override
MonitorElement * ugmtMuonBXvshwEtaAtVtx
MonitorElement * ugmtMuonhwPhiAtVtx
const_iterator begin(int bx) const
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
MonitorElement * ugmtMuonhwPt
MonitorElement * ugmtMuonBXvshwQual
Definition: Run.h:45
MonitorElement * ugmtMuonPtvsEta
std::vector< T >::const_iterator const_iterator
Definition: BXVector.h:20