7 monitorDir(ps.getUntrackedParameter<
std::
string>(
"monitorDir")),
8 muonColl1Title(ps.getUntrackedParameter<
std::
string>(
"muonCollection1Title")),
9 muonColl2Title(ps.getUntrackedParameter<
std::
string>(
"muonCollection2Title")),
10 summaryTitle(ps.getUntrackedParameter<
std::
string>(
"summaryTitle")),
11 ignoreBin(ps.getUntrackedParameter<
std::vector<
int>>(
"ignoreBin")),
13 enable2DComp(ps.getUntrackedParameter<
bool>(
"enable2DComp"))
16 for (
unsigned int i = 1;
i <=
RIDX;
i++) {
31 desc.
add<
edm::InputTag>(
"muonCollection1")->setComment(
"L1T Muon collection 1");
32 desc.
add<
edm::InputTag>(
"muonCollection2")->setComment(
"L1T Muon collection 2");
33 desc.
addUntracked<
std::string>(
"monitorDir",
"")->setComment(
"Target directory in the DQM file. Will be created if not existing.");
34 desc.
addUntracked<
std::string>(
"muonCollection1Title",
"Muon collection 1")->setComment(
"Histogram title for first collection.");
35 desc.
addUntracked<
std::string>(
"muonCollection2Title",
"Muon collection 2")->setComment(
"Histogram title for second collection.");
37 desc.
addUntracked<std::vector<int>>(
"ignoreBin", std::vector<int>())->
setComment(
"List of bins to ignore");
40 descriptions.
add(
"l1tStage2MuonComp", desc);
85 for (
unsigned int i = 1;
i <=
RIDX;
i++) {
171 if (
verbose)
edm::LogInfo(
"L1TStage2MuonComp") <<
"L1TStage2MuonComp: analyze..." << std::endl;
181 if (bxRange1 != bxRange2) {
197 if (iBx < muonBxColl2->getFirstBX() || iBx > muonBxColl2->
getLastBX())
continue;
204 if (muonBxColl1->
size(iBx) != muonBxColl2->
size(iBx)) {
210 if (muonBxColl1->
size(iBx) > muonBxColl2->
size(iBx)) {
211 muonIt1 = muonBxColl1->
begin(iBx) + muonBxColl2->
size(iBx);
212 for (; muonIt1 != muonBxColl1->
end(iBx); ++muonIt1) {
226 muonIt2 = muonBxColl2->
begin(iBx) + muonBxColl1->
size(iBx);
227 for (; muonIt2 != muonBxColl2->
end(iBx); ++muonIt2) {
245 muonIt1 = muonBxColl1->
begin(iBx);
246 muonIt2 = muonBxColl2->
begin(iBx);
247 while(muonIt1 != muonBxColl1->
end(iBx) && muonIt2 != muonBxColl2->
end(iBx)) {
253 bool muonMismatch =
false;
254 bool muonSelMismatch =
false;
255 if (muonIt1->hwPt() != muonIt2->hwPt()) {
259 muonSelMismatch =
true;
263 if (muonIt1->hwEta() != muonIt2->hwEta()) {
267 muonSelMismatch =
true;
271 if (muonIt1->hwPhi() != muonIt2->hwPhi()) {
275 muonSelMismatch =
true;
279 if (muonIt1->hwEtaAtVtx() != muonIt2->hwEtaAtVtx()) {
283 muonSelMismatch =
true;
287 if (muonIt1->hwPhiAtVtx() != muonIt2->hwPhiAtVtx()) {
291 muonSelMismatch =
true;
295 if (muonIt1->hwCharge() != muonIt2->hwCharge()) {
299 muonSelMismatch =
true;
303 if (muonIt1->hwChargeValid() != muonIt2->hwChargeValid()) {
307 muonSelMismatch =
true;
311 if (muonIt1->hwQual() != muonIt2->hwQual()) {
315 muonSelMismatch =
true;
319 if (muonIt1->hwIso() != muonIt2->hwIso()) {
323 muonSelMismatch =
true;
327 if (muonIt1->tfMuonIndex() != muonIt2->tfMuonIndex()) {
331 muonSelMismatch =
true;
const_iterator end(int bx) const
void setComment(std::string const &value)
MonitorElement * muColl2hwPt
MonitorElement * muColl1hwPt
MonitorElement * muColl2Index
unsigned size(int bx) const
MonitorElement * muColl2hwIso
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
MonitorElement * muColl1hwEtaAtVtx
MonitorElement * muColl2hwPhi
MonitorElement * errorSummaryNum
bool getByToken(EDGetToken token, Handle< PROD > &result) const
MonitorElement * errorSummaryDen
MonitorElement * muColl1hwCharge
~L1TStage2MuonComp() override
MonitorElement * muColl1hwEta
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
MonitorElement * muColl2hwQual
edm::EDGetTokenT< l1t::MuonBxCollection > muonToken1
MonitorElement * muColl2hwEtaAtVtx
void setCurrentFolder(std::string const &fullpath)
L1TStage2MuonComp(const edm::ParameterSet &ps)
MonitorElement * muColl1hwIso
MonitorElement * book1D(Args &&...args)
std::string muonColl2Title
MonitorElement * muColl2EtaPhimap
void dqmBeginRun(const edm::Run &, const edm::EventSetup &) override
void analyze(const edm::Event &, const edm::EventSetup &) override
ParameterDescriptionBase * add(U const &iLabel, T const &value)
MonitorElement * muColl2hwPhiAtVtx
MonitorElement * muColl1EtaPhimap
BXVector< Muon > MuonBxCollection
MonitorElement * muColl2BxRange
std::vector< int > ignoreBin
MonitorElement * muColl2nMu
MonitorElement * book2D(Args &&...args)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
MonitorElement * muColl2hwEta
MonitorElement * muColl1hwQual
MonitorElement * muColl2hwChargeValid
MonitorElement * muColl1hwPhi
MonitorElement * muColl1hwChargeValid
void bookHistograms(DQMStore::IBooker &, const edm::Run &, const edm::EventSetup &) override
MonitorElement * muColl1nMu
std::string muonColl1Title
MonitorElement * muColl1hwPhiAtVtx
MonitorElement * muColl2hwCharge
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 * muColl1BxRange
MonitorElement * muColl1Index
std::vector< T >::const_iterator const_iterator
edm::EDGetTokenT< l1t::MuonBxCollection > muonToken2