8 m_stage1_layer2_ = iConfig.
getParameter<
bool>(
"stage1_layer2_");
11 std::cout <<
"\nL1COMPARATOR constructor...\n" << std::flush;
13 std::vector<unsigned int> dosys(0,
DEnsys);
16 if ((
int)dosys.size() !=
DEnsys)
17 edm::LogError(
"L1Comparator") <<
"wrong selection of systems to be compared\n" 18 <<
"\t the size of the mask COMPARE_COLLS (" << dosys.size() <<
") is not " <<
DEnsys 20 assert((
int)dosys.size() ==
DEnsys);
22 for (
int isys = 0; isys <
DEnsys; isys++)
23 if (dosys[isys] != 0 && dosys[isys] != 1)
24 throw cms::Exception(
"Invalid configuration") <<
"L1Comparator: comparison flag for system " << isys
25 <<
" is non boolean: " << dosys[isys] <<
". Exiting.\n";
28 m_doSys[
i] = dosys[
i];
36 std::cout <<
"[L1Comparator] list of systems to process: ";
62 if (!m_dumpFile.good())
64 <<
" L1Comparator::L1Comparator() : " 65 <<
" couldn't open dump file " << m_dumpFileName.c_str() << std::endl;
73 for (
int j = 0;
j < 2;
j++)
80 produces<L1DataEmulRecord>().setBranchAlias(
"L1DataEmulRecord");
87 tokenCaloEm_[0] = consumes<L1CaloEmCollection>(tag0);
88 tokenCaloEm_[1] = consumes<L1CaloEmCollection>(tag1);
89 tokenCaloRegion_[0] = consumes<L1CaloRegionCollection>(tag0);
90 tokenCaloRegion_[1] = consumes<L1CaloRegionCollection>(tag1);
99 if (m_stage1_layer2_ ==
false) {
100 for (
int i = 0;
i < 2; ++
i) {
103 tokenGctEmCand_isoEm_[
i] = consumes<L1GctEmCandCollection>(
edm::InputTag(label,
"isoEm"));
104 tokenGctEmCand_nonIsoEm_[
i] = consumes<L1GctEmCandCollection>(
edm::InputTag(label,
"nonIsoEm"));
105 tokenGctJetCand_cenJets_[
i] = consumes<L1GctJetCandCollection>(
edm::InputTag(label,
"cenJets"));
106 tokenGctJetCand_forJets_[
i] = consumes<L1GctJetCandCollection>(
edm::InputTag(label,
"forJets"));
107 tokenGctJetCand_tauJets_[
i] = consumes<L1GctJetCandCollection>(
edm::InputTag(label,
"tauJets"));
108 tokenGctEtTotal_[
i] = consumes<L1GctEtTotalCollection>(
tag);
109 tokenGctEtHad_[
i] = consumes<L1GctEtHadCollection>(
tag);
110 tokenGctEtMiss_[
i] = consumes<L1GctEtMissCollection>(
tag);
111 tokenGctHFRingEtSums_[
i] = consumes<L1GctHFRingEtSumsCollection>(
tag);
112 tokenGctHFBitCounts_[
i] = consumes<L1GctHFBitCountsCollection>(
tag);
113 tokenGctHtMiss_[
i] = consumes<L1GctHtMissCollection>(
tag);
114 tokenGctJetCounts_[
i] = consumes<L1GctJetCountsCollection>(
tag);
117 if (m_stage1_layer2_ ==
true) {
118 for (
int i = 0;
i < 2; ++
i) {
121 tokenGctEmCand_isoEm_[
i] = consumes<L1GctEmCandCollection>(
edm::InputTag(label,
"isoEm"));
122 tokenGctEmCand_nonIsoEm_[
i] = consumes<L1GctEmCandCollection>(
edm::InputTag(label,
"nonIsoEm"));
123 tokenGctJetCand_cenJets_[
i] = consumes<L1GctJetCandCollection>(
edm::InputTag(label,
"cenJets"));
124 tokenGctJetCand_forJets_[
i] = consumes<L1GctJetCandCollection>(
edm::InputTag(label,
"forJets"));
125 tokenGctJetCand_tauJets_[
i] = consumes<L1GctJetCandCollection>(
edm::InputTag(label,
"tauJets"));
126 tokenGctJetCand_isoTauJets_[
i] = consumes<L1GctJetCandCollection>(
edm::InputTag(label,
"isoTauJets"));
127 tokenGctEtTotal_[
i] = consumes<L1GctEtTotalCollection>(
tag);
128 tokenGctEtHad_[
i] = consumes<L1GctEtHadCollection>(
tag);
129 tokenGctEtMiss_[
i] = consumes<L1GctEtMissCollection>(
tag);
130 tokenGctHFRingEtSums_[
i] = consumes<L1GctHFRingEtSumsCollection>(
tag);
131 tokenGctHFBitCounts_[
i] = consumes<L1GctHFBitCountsCollection>(
tag);
132 tokenGctHtMiss_[
i] = consumes<L1GctHtMissCollection>(
tag);
133 tokenGctJetCounts_[
i] = consumes<L1GctJetCountsCollection>(
tag);
143 tokenMuDTChambPh_[0] = consumes<L1MuDTChambPhContainer>(tag0);
144 tokenMuDTChambPh_[1] = consumes<L1MuDTChambPhContainer>(tag1);
145 tokenMuDTChambTh_[0] = consumes<L1MuDTChambThContainer>(tag0);
146 tokenMuDTChambTh_[1] = consumes<L1MuDTChambThContainer>(tag1);
154 tokenMuDTTrack_[0] = consumes<L1MuDTTrackContainer>(
edm::InputTag(tag0.
label(),
"DATA"));
155 tokenMuDTTrack_[1] = consumes<L1MuDTTrackContainer>(
edm::InputTag(tag1.label(),
"DTTF"));
163 tokenMuRegionalCandRPCb_[0] = consumes<L1MuRegionalCandCollection>(
edm::InputTag(tag0.
label(),
"RPCb"));
164 tokenMuRegionalCandRPCb_[1] = consumes<L1MuRegionalCandCollection>(
edm::InputTag(tag1.label(),
"RPCb"));
165 tokenMuRegionalCandRPCf_[0] = consumes<L1MuRegionalCandCollection>(
edm::InputTag(tag0.
label(),
"RPCf"));
166 tokenMuRegionalCandRPCf_[1] = consumes<L1MuRegionalCandCollection>(
edm::InputTag(tag1.label(),
"RPCf"));
174 tokenLTCDigi_[0] = consumes<LTCDigiCollection>(dummyTag);
175 tokenLTCDigi_[1] = consumes<LTCDigiCollection>(dummyTag);
183 tokenMuGMTCand_[0] = consumes<L1MuGMTCandCollection>(tag0);
184 tokenMuGMTCand_[1] = consumes<L1MuGMTCandCollection>(tag1);
185 tokenMuReadoutCand_[0] = consumes<L1MuGMTReadoutCollection>(tag0);
186 tokenMuReadoutCand_[1] = consumes<L1MuGMTReadoutCollection>(tag1);
190 std::cout <<
"\nL1Comparator constructor...done.\n" << std::flush;
199 std::cout <<
"\nL1COMPARATOR beginRun...\n" << std::flush;
216 std::cout <<
"RCT key is empty. Sub-systems is disabled (" << m_doSys[
RCT] <<
")\n";
218 std::cout <<
"GCT key is empty. Sub-systems is disabled (" << m_doSys[
GCT] <<
")\n";
220 std::cout <<
"DTTF key is empty. Sub-systems is disabled (" << m_doSys[
DTF] <<
")\n";
222 std::cout <<
"CSCTF key is empty. Sub-systems is disabled (" << m_doSys[
CTF] <<
")\n";
224 std::cout <<
"RPC key is empty. Sub-systems is disabled (" << m_doSys[
RPC] <<
")\n";
226 std::cout <<
"GMT key is empty. Sub-systems is disabled (" << m_doSys[
GMT] <<
")\n";
228 std::cout <<
"GT key is empty. Sub-systems is disabled (" << m_doSys[
GLT] <<
")\n";
235 edm::LogWarning(
"L1Comparator") <<
"No L1TriggerKey found." << std::endl;
239 std::cout <<
"L1COMPARATOR beginRun... done\n" << std::flush;
244 m_dumpFile <<
"\n\n-------\n" 245 <<
"Global data|emulator agreement: " << m_match << std::endl;
252 runNum_ = iEvent.
id().
run();
255 std::cout <<
"\nL1COMPARATOR entry:" << nevt_ <<
" | evt:" << evtNum_ <<
" | run:" << runNum_ <<
"\n" << std::flush;
262 for (
int j = 0;
j < 2;
j++)
264 DEmatchEvt[
i] =
true;
276 iEvent.
getByToken(tokenCaloEm_[0], rct_em_data);
277 iEvent.
getByToken(tokenCaloEm_[1], rct_em_emul);
278 iEvent.
getByToken(tokenCaloRegion_[0], rct_rgn_data);
279 iEvent.
getByToken(tokenCaloRegion_[1], rct_rgn_emul);
312 if (m_stage1_layer2_ ==
false) {
313 iEvent.
getByToken(tokenGctEmCand_isoEm_[0], gct_isolaem_data);
314 iEvent.
getByToken(tokenGctEmCand_isoEm_[1], gct_isolaem_emul);
315 iEvent.
getByToken(tokenGctEmCand_nonIsoEm_[0], gct_noisoem_data);
316 iEvent.
getByToken(tokenGctEmCand_nonIsoEm_[1], gct_noisoem_emul);
317 iEvent.
getByToken(tokenGctJetCand_cenJets_[0], gct_cenjets_data);
318 iEvent.
getByToken(tokenGctJetCand_cenJets_[1], gct_cenjets_emul);
319 iEvent.
getByToken(tokenGctJetCand_forJets_[0], gct_forjets_data);
320 iEvent.
getByToken(tokenGctJetCand_forJets_[1], gct_forjets_emul);
321 iEvent.
getByToken(tokenGctJetCand_tauJets_[0], gct_taujets_data);
322 iEvent.
getByToken(tokenGctJetCand_tauJets_[1], gct_taujets_emul);
323 iEvent.
getByToken(tokenGctEtHad_[0], gct_ht_data);
324 iEvent.
getByToken(tokenGctEtHad_[1], gct_ht_emul);
325 iEvent.
getByToken(tokenGctEtMiss_[0], gct_etmiss_data);
326 iEvent.
getByToken(tokenGctEtMiss_[1], gct_etmiss_emul);
327 iEvent.
getByToken(tokenGctEtTotal_[0], gct_ettota_data);
328 iEvent.
getByToken(tokenGctEtTotal_[1], gct_ettota_emul);
329 iEvent.
getByToken(tokenGctHtMiss_[0], gct_htmiss_data);
330 iEvent.
getByToken(tokenGctHtMiss_[1], gct_htmiss_emul);
331 iEvent.
getByToken(tokenGctHFRingEtSums_[0], gct_hfring_data);
332 iEvent.
getByToken(tokenGctHFRingEtSums_[1], gct_hfring_emul);
333 iEvent.
getByToken(tokenGctHFBitCounts_[0], gct_hfbcnt_data);
334 iEvent.
getByToken(tokenGctHFBitCounts_[1], gct_hfbcnt_emul);
335 iEvent.
getByToken(tokenGctJetCounts_[0], gct_jetcnt_data);
336 iEvent.
getByToken(tokenGctJetCounts_[1], gct_jetcnt_emul);
338 if (m_stage1_layer2_ ==
true) {
339 iEvent.
getByToken(tokenGctEmCand_isoEm_[0], gct_isolaem_data);
340 iEvent.
getByToken(tokenGctEmCand_isoEm_[1], gct_isolaem_emul);
341 iEvent.
getByToken(tokenGctEmCand_nonIsoEm_[0], gct_noisoem_data);
342 iEvent.
getByToken(tokenGctEmCand_nonIsoEm_[1], gct_noisoem_emul);
343 iEvent.
getByToken(tokenGctJetCand_cenJets_[0], gct_cenjets_data);
344 iEvent.
getByToken(tokenGctJetCand_cenJets_[1], gct_cenjets_emul);
345 iEvent.
getByToken(tokenGctJetCand_forJets_[0], gct_forjets_data);
346 iEvent.
getByToken(tokenGctJetCand_forJets_[1], gct_forjets_emul);
347 iEvent.
getByToken(tokenGctJetCand_tauJets_[0], gct_taujets_data);
348 iEvent.
getByToken(tokenGctJetCand_tauJets_[1], gct_taujets_emul);
349 iEvent.
getByToken(tokenGctJetCand_isoTauJets_[0], gct_isotaujets_data);
350 iEvent.
getByToken(tokenGctJetCand_isoTauJets_[1], gct_isotaujets_emul);
351 iEvent.
getByToken(tokenGctEtHad_[0], gct_ht_data);
352 iEvent.
getByToken(tokenGctEtHad_[1], gct_ht_emul);
353 iEvent.
getByToken(tokenGctEtMiss_[0], gct_etmiss_data);
354 iEvent.
getByToken(tokenGctEtMiss_[1], gct_etmiss_emul);
355 iEvent.
getByToken(tokenGctEtTotal_[0], gct_ettota_data);
356 iEvent.
getByToken(tokenGctEtTotal_[1], gct_ettota_emul);
357 iEvent.
getByToken(tokenGctHtMiss_[0], gct_htmiss_data);
358 iEvent.
getByToken(tokenGctHtMiss_[1], gct_htmiss_emul);
359 iEvent.
getByToken(tokenGctHFRingEtSums_[0], gct_hfring_data);
360 iEvent.
getByToken(tokenGctHFRingEtSums_[1], gct_hfring_emul);
361 iEvent.
getByToken(tokenGctHFBitCounts_[0], gct_hfbcnt_data);
362 iEvent.
getByToken(tokenGctHFBitCounts_[1], gct_hfbcnt_emul);
363 iEvent.
getByToken(tokenGctJetCounts_[0], gct_jetcnt_data);
364 iEvent.
getByToken(tokenGctJetCounts_[1], gct_jetcnt_emul);
374 iEvent.
getByToken(tokenMuDTChambPh_[0], dtp_ph_data_);
375 iEvent.
getByToken(tokenMuDTChambPh_[1], dtp_ph_emul_);
376 iEvent.
getByToken(tokenMuDTChambTh_[0], dtp_th_data_);
377 iEvent.
getByToken(tokenMuDTChambTh_[1], dtp_th_emul_);
399 iEvent.
getByToken(tokenMuDTTrack_[0], dtf_trk_data_);
400 iEvent.
getByToken(tokenMuDTTrack_[1], dtf_trk_emul_);
403 typedef std::vector<L1MuDTTrackCand> L1MuDTTrackCandCollection;
405 dtf_trk_data_v.clear();
406 dtf_trk_emul_v.clear();
408 L1MuDTTrackCandCollection
const* dttc = dtf_trk_data_->
getContainer();
409 for (L1MuDTTrackCandCollection::const_iterator it = dttc->begin(); it != dttc->end(); it++)
413 L1MuDTTrackCandCollection
const* dttc = dtf_trk_emul_->
getContainer();
414 for (L1MuDTTrackCandCollection::const_iterator it = dttc->begin(); it != dttc->end(); it++)
417 dtf_trk_data = &dtf_trk_data_v;
418 dtf_trk_emul = &dtf_trk_emul_v;
426 iEvent.
getByToken(tokenMuRegionalCandRPCb_[0], rpc_cen_data);
427 iEvent.
getByToken(tokenMuRegionalCandRPCb_[1], rpc_cen_emul);
428 iEvent.
getByToken(tokenMuRegionalCandRPCf_[0], rpc_for_data);
429 iEvent.
getByToken(tokenMuRegionalCandRPCf_[1], rpc_for_emul);
436 iEvent.
getByToken(tokenLTCDigi_[0], ltc_data);
437 iEvent.
getByToken(tokenLTCDigi_[1], ltc_emul);
451 iEvent.
getByToken(tokenMuGMTCand_[0], gmt_data);
452 iEvent.
getByToken(tokenMuGMTCand_[1], gmt_emul);
453 iEvent.
getByToken(tokenMuReadoutCand_[0], gmt_rdt_data_);
454 iEvent.
getByToken(tokenMuReadoutCand_[1], gmt_rdt_emul_);
458 gmt_can_data_vec.clear();
459 gmt_can_emul_vec.clear();
460 gmt_rdt_data_vec.clear();
461 gmt_rdt_emul_vec.clear();
463 typedef std::vector<L1MuGMTReadoutRecord>::const_iterator GmtRrIt;
465 std::vector<L1MuGMTReadoutRecord> gmt_rdt_data_bx = gmt_rdt_data_->
getRecords();
466 for (GmtRrIt igmtrr = gmt_rdt_data_bx.begin(); igmtrr != gmt_rdt_data_bx.end(); igmtrr++) {
468 typedef std::vector<L1MuGMTExtendedCand>::const_iterator GmtECIt;
469 std::vector<L1MuGMTExtendedCand> gmc;
470 gmc = igmtrr->getGMTCands();
471 for (GmtECIt iter1 = gmc.begin(); iter1 != gmc.end(); iter1++) {
473 cand.setPhiValue(iter1->phiValue());
474 cand.setEtaValue(iter1->etaValue());
475 cand.setPtValue(iter1->ptValue());
476 gmt_can_data_vec.push_back(
cand);
479 typedef L1MuRegionalCandCollection::const_iterator GmtRCIt;
482 rmc = igmtrr->getDTBXCands();
483 gmt_rdt_data_vec.insert(gmt_rdt_data_vec.end(), rmc.begin(), rmc.end());
485 rmc = igmtrr->getCSCCands();
486 gmt_rdt_data_vec.insert(gmt_rdt_data_vec.end(), rmc.begin(), rmc.end());
488 rmc = igmtrr->getBrlRPCCands();
489 gmt_rdt_data_vec.insert(gmt_rdt_data_vec.end(), rmc.begin(), rmc.end());
491 rmc = igmtrr->getFwdRPCCands();
492 gmt_rdt_data_vec.insert(gmt_rdt_data_vec.end(), rmc.begin(), rmc.end());
495 std::vector<L1MuGMTReadoutRecord> gmt_rdt_emul_bx = gmt_rdt_emul_->
getRecords();
496 for (GmtRrIt igmtrr = gmt_rdt_emul_bx.begin(); igmtrr != gmt_rdt_emul_bx.end(); igmtrr++) {
498 typedef std::vector<L1MuGMTExtendedCand>::const_iterator GmtECIt;
499 std::vector<L1MuGMTExtendedCand> gmc;
500 gmc = igmtrr->getGMTCands();
501 for (GmtECIt iter1 = gmc.begin(); iter1 != gmc.end(); iter1++) {
502 gmt_can_emul_vec.push_back(
L1MuGMTCand(iter1->getDataWord(), iter1->bx()));
505 typedef L1MuRegionalCandCollection::const_iterator GmtRCIt;
508 rmc = igmtrr->getDTBXCands();
509 gmt_rdt_emul_vec.insert(gmt_rdt_emul_vec.end(), rmc.begin(), rmc.end());
511 rmc = igmtrr->getCSCCands();
512 gmt_rdt_emul_vec.insert(gmt_rdt_emul_vec.end(), rmc.begin(), rmc.end());
514 rmc = igmtrr->getBrlRPCCands();
515 gmt_rdt_emul_vec.insert(gmt_rdt_emul_vec.end(), rmc.begin(), rmc.end());
517 rmc = igmtrr->getFwdRPCCands();
518 gmt_rdt_emul_vec.insert(gmt_rdt_emul_vec.end(), rmc.begin(), rmc.end());
521 gmt_rdt_data = &gmt_rdt_data_vec;
522 gmt_rdt_emul = &gmt_rdt_emul_vec;
523 gmt_can_data = &gmt_can_data_vec;
524 gmt_can_emul = &gmt_can_emul_vec;
529 bool isValidDE[
DEnsys][2];
531 for (
int j = 0;
j < 2;
j++)
532 isValidDE[
i][
j] =
false;
539 if (m_stage1_layer2_ ==
false) {
540 isValidDE[
GCT][0] = gct_isolaem_data.
isValid();
541 isValidDE[
GCT][1] = gct_isolaem_emul.
isValid();
542 isValidDE[
GCT][0] &= gct_noisoem_data.
isValid();
543 isValidDE[
GCT][1] &= gct_noisoem_emul.
isValid();
544 isValidDE[
GCT][0] &= gct_cenjets_data.
isValid();
545 isValidDE[
GCT][1] &= gct_cenjets_emul.
isValid();
546 isValidDE[
GCT][0] &= gct_forjets_data.
isValid();
547 isValidDE[
GCT][1] &= gct_forjets_emul.
isValid();
548 isValidDE[
GCT][0] &= gct_taujets_data.
isValid();
549 isValidDE[
GCT][1] &= gct_taujets_emul.
isValid();
550 isValidDE[
GCT][0] &= gct_etmiss_data.
isValid();
551 isValidDE[
GCT][1] &= gct_etmiss_emul.
isValid();
552 isValidDE[
GCT][0] &= gct_ettota_data.
isValid();
553 isValidDE[
GCT][1] &= gct_ettota_emul.
isValid();
554 isValidDE[
GCT][0] &= gct_htmiss_data.
isValid();
555 isValidDE[
GCT][1] &= gct_htmiss_emul.
isValid();
556 isValidDE[
GCT][0] &= gct_hfring_data.
isValid();
557 isValidDE[
GCT][1] &= gct_hfring_emul.
isValid();
558 isValidDE[
GCT][0] &= gct_hfbcnt_data.
isValid();
559 isValidDE[
GCT][1] &= gct_hfbcnt_emul.
isValid();
562 if (m_stage1_layer2_ ==
true) {
563 isValidDE[
GCT][0] = gct_isolaem_data.
isValid();
564 isValidDE[
GCT][1] = gct_isolaem_emul.
isValid();
565 isValidDE[
GCT][0] &= gct_noisoem_data.
isValid();
566 isValidDE[
GCT][1] &= gct_noisoem_emul.
isValid();
567 isValidDE[
GCT][0] &= gct_cenjets_data.
isValid();
568 isValidDE[
GCT][1] &= gct_cenjets_emul.
isValid();
569 isValidDE[
GCT][0] &= gct_forjets_data.
isValid();
570 isValidDE[
GCT][1] &= gct_forjets_emul.
isValid();
571 isValidDE[
GCT][0] &= gct_taujets_data.
isValid();
572 isValidDE[
GCT][1] &= gct_taujets_emul.
isValid();
573 isValidDE[
GCT][0] &= gct_isotaujets_data.
isValid();
574 isValidDE[
GCT][1] &= gct_isotaujets_emul.
isValid();
575 isValidDE[
GCT][0] &= gct_etmiss_data.
isValid();
576 isValidDE[
GCT][1] &= gct_etmiss_emul.
isValid();
577 isValidDE[
GCT][0] &= gct_ettota_data.
isValid();
578 isValidDE[
GCT][1] &= gct_ettota_emul.
isValid();
579 isValidDE[
GCT][0] &= gct_htmiss_data.
isValid();
580 isValidDE[
GCT][1] &= gct_htmiss_emul.
isValid();
581 isValidDE[
GCT][0] &= gct_hfring_data.
isValid();
582 isValidDE[
GCT][1] &= gct_hfring_emul.
isValid();
583 isValidDE[
GCT][0] &= gct_hfbcnt_data.
isValid();
584 isValidDE[
GCT][1] &= gct_hfbcnt_emul.
isValid();
609 for (
int j = 0;
j < 2;
j++) {
610 isValid[
i] &= isValidDE[
i][
j];
615 std::cout <<
"L1Comparator sys isValid? (evt:" << nevt_ <<
") ";
632 std::cout <<
"L1Comparator start processing the collections.\n" << std::flush;
635 if (m_doSys[RCT] && isValid[RCT])
636 process<L1CaloEmCollection>(rct_em_data, rct_em_emul,
RCT,
RCTem);
637 if (m_doSys[RCT] && isValid[RCT])
638 process<L1CaloRegionCollection>(rct_rgn_data, rct_rgn_emul,
RCT,
RCTrgn);
640 if (m_stage1_layer2_ ==
false) {
641 if (m_doSys[GCT] && isValid[GCT])
642 process<L1GctEmCandCollection>(gct_isolaem_data, gct_isolaem_emul,
GCT,
GCTisolaem);
643 if (m_doSys[GCT] && isValid[GCT])
644 process<L1GctEmCandCollection>(gct_noisoem_data, gct_noisoem_emul,
GCT,
GCTnoisoem);
645 if (m_doSys[GCT] && isValid[GCT])
646 process<L1GctJetCandCollection>(gct_cenjets_data, gct_cenjets_emul,
GCT,
GCTcenjets);
647 if (m_doSys[GCT] && isValid[GCT])
648 process<L1GctJetCandCollection>(gct_forjets_data, gct_forjets_emul,
GCT,
GCTforjets);
649 if (m_doSys[GCT] && isValid[GCT])
650 process<L1GctJetCandCollection>(gct_taujets_data, gct_taujets_emul,
GCT,
GCTtaujets);
651 if (m_doSys[GCT] && isValid[GCT])
652 process<L1GctEtHadCollection>(gct_ht_data, gct_ht_emul,
GCT,
GCTethad);
653 if (m_doSys[GCT] && isValid[GCT])
654 process<L1GctEtMissCollection>(gct_etmiss_data, gct_etmiss_emul,
GCT,
GCTetmiss);
655 if (m_doSys[GCT] && isValid[GCT])
656 process<L1GctEtTotalCollection>(gct_ettota_data, gct_ettota_emul,
GCT,
GCTettot);
657 if (m_doSys[GCT] && isValid[GCT])
658 process<L1GctHtMissCollection>(gct_htmiss_data, gct_htmiss_emul,
GCT,
GCThtmiss);
659 if (m_doSys[GCT] && isValid[GCT])
660 process<L1GctHFRingEtSumsCollection>(gct_hfring_data, gct_hfring_emul,
GCT,
GCThfring);
661 if (m_doSys[GCT] && isValid[GCT])
662 process<L1GctHFBitCountsCollection>(gct_hfbcnt_data, gct_hfbcnt_emul,
GCT,
GCThfbit);
665 if (m_stage1_layer2_ ==
true) {
666 if (m_doSys[GCT] && isValid[GCT])
667 process<L1GctEmCandCollection>(gct_isolaem_data, gct_isolaem_emul,
GCT,
GCTisolaem);
668 if (m_doSys[GCT] && isValid[GCT])
669 process<L1GctEmCandCollection>(gct_noisoem_data, gct_noisoem_emul,
GCT,
GCTnoisoem);
670 if (m_doSys[GCT] && isValid[GCT])
671 process<L1GctJetCandCollection>(gct_cenjets_data, gct_cenjets_emul,
GCT,
GCTcenjets);
672 if (m_doSys[GCT] && isValid[GCT])
673 process<L1GctJetCandCollection>(gct_forjets_data, gct_forjets_emul,
GCT,
GCTforjets);
674 if (m_doSys[GCT] && isValid[GCT])
675 process<L1GctJetCandCollection>(gct_taujets_data, gct_taujets_emul,
GCT,
GCTtaujets);
676 if (m_doSys[GCT] && isValid[GCT])
677 process<L1GctJetCandCollection>(gct_isotaujets_data, gct_isotaujets_emul,
GCT,
GCTisotaujets);
678 if (m_doSys[GCT] && isValid[GCT])
679 process<L1GctEtHadCollection>(gct_ht_data, gct_ht_emul,
GCT,
GCTethad);
680 if (m_doSys[GCT] && isValid[GCT])
681 process<L1GctEtMissCollection>(gct_etmiss_data, gct_etmiss_emul,
GCT,
GCTetmiss);
682 if (m_doSys[GCT] && isValid[GCT])
683 process<L1GctEtTotalCollection>(gct_ettota_data, gct_ettota_emul,
GCT,
GCTettot);
684 if (m_doSys[GCT] && isValid[GCT])
685 process<L1GctHtMissCollection>(gct_htmiss_data, gct_htmiss_emul,
GCT,
GCThtmiss);
686 if (m_doSys[GCT] && isValid[GCT])
687 process<L1GctHFRingEtSumsCollection>(gct_hfring_data, gct_hfring_emul,
GCT,
GCThfring);
688 if (m_doSys[GCT] && isValid[GCT])
689 process<L1GctHFBitCountsCollection>(gct_hfbcnt_data, gct_hfbcnt_emul,
GCT,
GCThfbit);
693 if (m_doSys[DTP] && isValid[DTP])
694 process<L1MuDTChambPhDigiCollection>(dtp_ph_data, dtp_ph_emul,
DTP,
DTtpPh);
695 if (m_doSys[DTP] && isValid[DTP])
696 process<L1MuDTChambThDigiCollection>(dtp_th_data, dtp_th_emul,
DTP,
DTtpTh);
698 if (m_doSys[DTF] && isValid[DTF])
699 process<L1MuRegionalCandCollection>(dtf_trk_data, dtf_trk_emul,
DTF,
DTtftrk);
701 if (m_doSys[RPC] && isValid[RPC])
702 process<L1MuRegionalCandCollection>(rpc_cen_data, rpc_cen_emul,
RPC,
RPCcen);
703 if (m_doSys[RPC] && isValid[RPC])
704 process<L1MuRegionalCandCollection>(rpc_for_data, rpc_for_emul,
RPC,
RPCfor);
706 if (m_doSys[GMT] && isValid[GMT])
707 process<L1MuGMTCandCollection>(gmt_data, gmt_emul,
GMT,
GMTmain);
708 if (m_doSys[GMT] && isValid[GMT])
709 process<L1MuRegionalCandCollection>(gmt_rdt_data, gmt_rdt_emul,
GMT,
GMTrdt);
710 if (m_doSys[GMT] && isValid[GMT])
711 process<L1MuGMTCandCollection>(gmt_can_data, gmt_can_emul,
GMT,
GMTcnd);
717 std::cout <<
"L1Comparator done processing all collections.\n" << std::flush;
720 std::cout <<
"[L1Comparator] sys match? << evt." << nevt_ <<
": ";
728 bool evt_match =
true;
730 evt_match &= DEmatchEvt[
i];
741 m_match &= evt_match;
742 m_dumpFile << std::flush;
745 if (m_dedigis.empty()) {
747 std::cout <<
"\n [L1Comparator] adding empty collection to DErecord\n";
752 std::unique_ptr<L1DataEmulRecord>
record(
753 new L1DataEmulRecord(evt_match, m_doSys, DEmatchEvt, DEncand, m_dedigis, gltdigimon));
755 std::cout <<
"\n [L1Comparator] printing DErecord" 756 <<
"(entry:" << nevt_ <<
"|evt:" << evtNum_ <<
"|run:" << runNum_ <<
"):\n" 758 std::cout << *record <<
"\n" << std::flush;
764 std::cout <<
"L1comparator::analize() end. " << nevt_ << std::endl;
770 std::cout <<
"L1Comparator::process -ing system:" << sys <<
" (" <<
SystLabel[sys] <<
"), data type " << cid
774 std::cout <<
"L1Comparator::process debug " 775 <<
" (size " << data->size() <<
"," << emul->size() <<
")" 783 else if (m_dumpMode == -1)
785 else if (m_dumpMode > 0) {
801 <<
" system:" <<
SystLabel[sys] <<
"(id " << sys <<
")" 803 <<
" ndata:" << ndata <<
" nemul:" << nemul <<
" (size " << data->size() <<
"," << emul->size() <<
")" 807 if (ndata == 0 && nemul == 0) {
810 <<
"empty collections -- exiting!\n" 815 m_dumpFile << std::setiosflags(std::ios::showpoint |
std::ios::fixed | std::ios::right | std::ios::adjustfield);
818 if (dumpEvent_ && prt) {
819 m_dumpFile <<
"\nEntry: " << nevt_ <<
" (event:" << evtNum_ <<
" | run:" << runNum_ <<
")\n" << std::flush;
824 m_dumpFile <<
"\n sys:" <<
SystLabel[sys] <<
" (" << sys <<
"), type:" << cid
828 std::cout <<
"L1Comparator::process print:\n" << std::flush << cmp.
print() << std::flush;
831 DEmatchEvt[sys] &= cmp.
do_compare(m_dumpFile, m_dumpMode);
837 for (L1DEDigiCollection::iterator it = dg.begin(); it != dg.end(); it++)
841 for (L1DEDigiCollection::iterator it = dg.begin(); it != dg.end(); it++)
844 for (L1DEDigiCollection::iterator it = dg.begin(); it != dg.end(); it++)
848 m_dedigis.insert(m_dedigis.end(), dg.begin(), dg.end());
849 for (
int i = 0;
i < 2;
i++)
854 <<
" system:" <<
SystLabel[sys] <<
" type:" << cmp.
GetName(0) <<
" ndata:" << DEncand[sys][0]
855 <<
" nemul:" << DEncand[sys][1] <<
" (size " << data->size() <<
"," << emul->size() <<
")" 856 <<
" ndigis:" << dg.size() <<
" agree? " << DEmatchEvt[sys] << std::endl;
859 std::cout <<
"L1Comparator::process -ing system:" << sys <<
" (" <<
SystLabel[sys] <<
")...done.\n" << std::flush;
862 template <
class myCol>
866 typedef typename myCol::iterator col_it;
867 col_sz ndata = data->size();
868 col_sz nemul = emul->size();
869 if (ndata != nemul) {
871 m_dumpFile <<
" #cand mismatch!" 872 <<
"\tdata: " << ndata <<
"\temul: " << nemul << std::endl;
874 col_it itd = data->begin();
875 col_it itm = emul->begin();
876 for (col_sz
i = 0;
i < ndata;
i++) {
877 match &= dumpCandidate(*itd++, *itm++, m_dumpFile);
886 s << dt << std::endl;
887 s << em << std::endl << std::endl;
T getParameter(std::string const &) const
EventNumber_t event() const
The_Container const * getContainer() const
T getUntrackedParameter(std::string const &, T const &) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
L1Comparator(const edm::ParameterSet &)
void beginJob(void) override
std::string print(col_cit it) const
int get_ncand(typeT) const
std::vector< L1DataEmulDigi > L1DEDigiCollection
void produce(edm::Event &, const edm::EventSetup &) override
L1DEDigiCollection getDEDigis() const
void beginRun(edm::Run const &, const edm::EventSetup &) final
std::string GetName(int i=0) const
std::vector< L1MuDTChambThDigi > L1MuDTChambThDigiCollection
std::vector< L1MuRegionalCand > L1MuRegionalCandCollection
bool do_compare(std::ofstream &, int dump=0)
std::vector< L1MuDTChambPhDigi > L1MuDTChambPhDigiCollection
Phi_Container const * getContainer() const
const std::string & tscKey() const
const std::string SystLabel[DEnsys]
bool dumpCandidate(const T &dt, const T &em, std::ostream &s)
char data[epos_bytes_allocation]
std::vector< L1MuGMTReadoutRecord > const & getRecords() const
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
bool CompareCollections(edm::Handle< T > data, edm::Handle< T > emul)
const std::string & subsystemKey(L1Subsystems subsystem) const
TrackContainer const * getContainer() const
std::vector< L1MuGMTCand > L1MuGMTCandCollection
void process(T const *, T const *, const int, const int)