27 #include "CLHEP/Random/RandFlat.h" 43 : muonSource_(iConfig.getParameter<
edm::
InputTag>(
"muonSource")),
44 isoEmSource_(iConfig.getParameter<
edm::
InputTag>(
"isolatedEmSource")),
45 nonIsoEmSource_(iConfig.getParameter<
edm::
InputTag>(
"nonIsolatedEmSource")),
46 cenJetSource_(iConfig.getParameter<
edm::
InputTag>(
"centralJetSource")),
47 forJetSource_(iConfig.getParameter<
edm::
InputTag>(
"forwardJetSource")),
48 tauJetSource_(iConfig.getParameter<
edm::
InputTag>(
"tauJetSource")),
49 etMissSource_(iConfig.getParameter<
edm::
InputTag>(
"etMissSource")),
50 htMissSource_(iConfig.getParameter<
edm::
InputTag>(
"htMissSource")) {
54 produces<L1ParticleMapCollection>();
55 produces<L1GlobalTriggerReadoutRecord>();
58 for (
int i = 0;
i < L1ParticleMap::kNumOfL1TriggerTypes; ++
i) {
259 iConfig.
getParameter<
double>(
"L1_IsoEG10_TauJet20_thresh1");
261 iConfig.
getParameter<
double>(
"L1_IsoEG10_TauJet20_thresh2");
264 iConfig.
getParameter<
double>(
"L1_IsoEG10_TauJet30_thresh1");
266 iConfig.
getParameter<
double>(
"L1_IsoEG10_TauJet30_thresh2");
301 iConfig.
getParameter<
double>(
"L1_TauJet40_HTT200_thresh2");
347 iConfig.
getParameter<
double>(
"L1_DoubleMu3_IsoEG5_thresh1");
349 iConfig.
getParameter<
double>(
"L1_DoubleMu3_IsoEG5_thresh2");
355 iConfig.
getParameter<
double>(
"L1_DoubleIsoEG5_Mu3_thresh1");
357 iConfig.
getParameter<
double>(
"L1_DoubleIsoEG5_Mu3_thresh2");
364 iConfig.
getParameter<
double>(
"L1_DoubleMu3_HTT200_thresh1");
366 iConfig.
getParameter<
double>(
"L1_DoubleMu3_HTT200_thresh2");
369 iConfig.
getParameter<
double>(
"L1_DoubleIsoEG5_HTT200_thresh1");
371 iConfig.
getParameter<
double>(
"L1_DoubleIsoEG5_HTT200_thresh2");
372 prescales_[L1ParticleMap::kDoubleIsoEG5_HTT200] = iConfig.
getParameter<
int>(
"L1_DoubleIsoEG5_HTT200_prescale");
374 iConfig.
getParameter<
double>(
"L1_DoubleEG10_HTT200_thresh1");
376 iConfig.
getParameter<
double>(
"L1_DoubleEG10_HTT200_thresh2");
377 prescales_[L1ParticleMap::kDoubleEG10_HTT200] = iConfig.
getParameter<
int>(
"L1_DoubleEG10_HTT200_prescale");
379 iConfig.
getParameter<
double>(
"L1_DoubleJet50_HTT200_thresh1");
381 iConfig.
getParameter<
double>(
"L1_DoubleJet50_HTT200_thresh2");
382 prescales_[L1ParticleMap::kDoubleJet50_HTT200] = iConfig.
getParameter<
int>(
"L1_DoubleJet50_HTT200_prescale");
384 iConfig.
getParameter<
double>(
"L1_DoubleTauJet40_HTT200_thresh1");
386 iConfig.
getParameter<
double>(
"L1_DoubleTauJet40_HTT200_thresh2");
387 prescales_[L1ParticleMap::kDoubleTauJet40_HTT200] = iConfig.
getParameter<
int>(
"L1_DoubleTauJet40_HTT200_prescale");
391 iConfig.
getParameter<
double>(
"L1_DoubleMu3_ETM20_thresh2");
394 iConfig.
getParameter<
double>(
"L1_DoubleIsoEG5_ETM20_thresh1");
396 iConfig.
getParameter<
double>(
"L1_DoubleIsoEG5_ETM20_thresh2");
397 prescales_[L1ParticleMap::kDoubleIsoEG5_ETM20] = iConfig.
getParameter<
int>(
"L1_DoubleIsoEG5_ETM20_prescale");
399 iConfig.
getParameter<
double>(
"L1_DoubleEG10_ETM20_thresh1");
401 iConfig.
getParameter<
double>(
"L1_DoubleEG10_ETM20_thresh2");
404 iConfig.
getParameter<
double>(
"L1_DoubleJet50_ETM20_thresh1");
406 iConfig.
getParameter<
double>(
"L1_DoubleJet50_ETM20_thresh2");
407 prescales_[L1ParticleMap::kDoubleJet50_ETM20] = iConfig.
getParameter<
int>(
"L1_DoubleJet50_ETM20_prescale");
409 iConfig.
getParameter<
double>(
"L1_DoubleTauJet40_ETM20_thresh1");
411 iConfig.
getParameter<
double>(
"L1_DoubleTauJet40_ETM20_thresh2");
412 prescales_[L1ParticleMap::kDoubleTauJet40_ETM20] = iConfig.
getParameter<
int>(
"L1_DoubleTauJet40_ETM20_prescale");
419 iConfig.
getParameter<
double>(
"L1_ExclusiveDoubleIsoEG4_thresh1");
421 iConfig.
getParameter<
double>(
"L1_ExclusiveDoubleIsoEG4_thresh2");
422 prescales_[L1ParticleMap::kExclusiveDoubleIsoEG4] = iConfig.
getParameter<
int>(
"L1_ExclusiveDoubleIsoEG4_prescale");
424 iConfig.
getParameter<
double>(
"L1_ExclusiveDoubleJet60_thresh");
425 prescales_[L1ParticleMap::kExclusiveDoubleJet60] = iConfig.
getParameter<
int>(
"L1_ExclusiveDoubleJet60_prescale");
427 iConfig.
getParameter<
double>(
"L1_ExclusiveJet25_Gap_Jet25_thresh");
428 prescales_[L1ParticleMap::kExclusiveJet25_Gap_Jet25] =
429 iConfig.
getParameter<
int>(
"L1_ExclusiveJet25_Gap_Jet25_prescale");
431 iConfig.
getParameter<
double>(
"L1_IsoEG10_Jet20_ForJet10_thresh1");
433 iConfig.
getParameter<
double>(
"L1_IsoEG10_Jet20_ForJet10_thresh2");
435 iConfig.
getParameter<
double>(
"L1_IsoEG10_Jet20_ForJet10_thresh3");
436 prescales_[L1ParticleMap::kIsoEG10_Jet20_ForJet10] = iConfig.
getParameter<
int>(
"L1_IsoEG10_Jet20_ForJet10_prescale");
498 using namespace reco;
530 double ht = mhtHandle->
etTotal();
531 double ett = metHandle->
etTotal();
562 L1MuonParticleCollection::const_iterator muItr = muHandle->begin();
563 L1MuonParticleCollection::const_iterator muEnd = muHandle->end();
565 for (
size_t i = 0; muItr != muEnd; ++muItr, ++
i) {
566 if (!muItr->gmtMuonCand().empty()) {
567 unsigned int qual = muItr->gmtMuonCand().quality();
580 bool globalDecision =
false;
581 std::vector<bool> decisionWord;
583 for (
int itrig = 0; itrig < L1ParticleMap::kNumOfL1TriggerTypes; ++itrig) {
584 bool decision =
false;
585 std::vector<L1ParticleMap::L1ObjectType>
objectTypes;
590 L1ParticleMap::L1IndexComboVector combosTmp;
592 if (itrig == L1ParticleMap::kSingleMu3 || itrig == L1ParticleMap::kSingleMu5 ||
593 itrig == L1ParticleMap::kSingleMu7 || itrig == L1ParticleMap::kSingleMu10 ||
594 itrig == L1ParticleMap::kSingleMu14 || itrig == L1ParticleMap::kSingleMu20 ||
595 itrig == L1ParticleMap::kSingleMu25) {
599 }
else if (itrig == L1ParticleMap::kSingleIsoEG5 || itrig == L1ParticleMap::kSingleIsoEG8 ||
600 itrig == L1ParticleMap::kSingleIsoEG10 || itrig == L1ParticleMap::kSingleIsoEG12 ||
601 itrig == L1ParticleMap::kSingleIsoEG15 || itrig == L1ParticleMap::kSingleIsoEG20 ||
602 itrig == L1ParticleMap::kSingleIsoEG25) {
606 }
else if (itrig == L1ParticleMap::kSingleEG5 || itrig == L1ParticleMap::kSingleEG8 ||
607 itrig == L1ParticleMap::kSingleEG10 || itrig == L1ParticleMap::kSingleEG12 ||
608 itrig == L1ParticleMap::kSingleEG15 || itrig == L1ParticleMap::kSingleEG20 ||
609 itrig == L1ParticleMap::kSingleEG25) {
613 }
else if (itrig == L1ParticleMap::kSingleJet15 || itrig == L1ParticleMap::kSingleJet20 ||
614 itrig == L1ParticleMap::kSingleJet30 || itrig == L1ParticleMap::kSingleJet50 ||
615 itrig == L1ParticleMap::kSingleJet70 || itrig == L1ParticleMap::kSingleJet100 ||
616 itrig == L1ParticleMap::kSingleJet150 || itrig == L1ParticleMap::kSingleJet200) {
620 }
else if (itrig == L1ParticleMap::kSingleTauJet10 || itrig == L1ParticleMap::kSingleTauJet20 ||
621 itrig == L1ParticleMap::kSingleTauJet30 || itrig == L1ParticleMap::kSingleTauJet35 ||
622 itrig == L1ParticleMap::kSingleTauJet40 || itrig == L1ParticleMap::kSingleTauJet60 ||
623 itrig == L1ParticleMap::kSingleTauJet80 || itrig == L1ParticleMap::kSingleTauJet100) {
627 }
else if (itrig == L1ParticleMap::kHTT100 || itrig == L1ParticleMap::kHTT200 || itrig == L1ParticleMap::kHTT250 ||
628 itrig == L1ParticleMap::kHTT300 || itrig == L1ParticleMap::kHTT400 || itrig == L1ParticleMap::kHTT500) {
635 }
else if (itrig == L1ParticleMap::kETM10 || itrig == L1ParticleMap::kETM15 || itrig == L1ParticleMap::kETM20 ||
636 itrig == L1ParticleMap::kETM30 || itrig == L1ParticleMap::kETM40 || itrig == L1ParticleMap::kETM50 ||
637 itrig == L1ParticleMap::kETM60) {
644 }
else if (itrig == L1ParticleMap::kETT60) {
651 }
else if (itrig == L1ParticleMap::kDoubleMu3) {
656 inputMuonRefsDouble,
singleThresholds_[itrig], decision, outputMuonRefsTmp, combosTmp);
657 }
else if (itrig == L1ParticleMap::kDoubleIsoEG8 || itrig == L1ParticleMap::kDoubleIsoEG10) {
662 }
else if (itrig == L1ParticleMap::kDoubleEG5 || itrig == L1ParticleMap::kDoubleEG10 ||
663 itrig == L1ParticleMap::kDoubleEG15) {
668 inputRelaxedEmRefs,
singleThresholds_[itrig], decision, outputEmRefsTmp, combosTmp);
669 }
else if (itrig == L1ParticleMap::kDoubleJet70 || itrig == L1ParticleMap::kDoubleJet100) {
674 }
else if (itrig == L1ParticleMap::kDoubleTauJet20 || itrig == L1ParticleMap::kDoubleTauJet30 ||
675 itrig == L1ParticleMap::kDoubleTauJet35 || itrig == L1ParticleMap::kDoubleTauJet40) {
680 }
else if (itrig == L1ParticleMap::kMu3_IsoEG5 || itrig == L1ParticleMap::kMu5_IsoEG10) {
692 }
else if (itrig == L1ParticleMap::kMu3_EG12) {
704 }
else if (itrig == L1ParticleMap::kMu3_Jet15 || itrig == L1ParticleMap::kMu5_Jet15 ||
705 itrig == L1ParticleMap::kMu3_Jet70 || itrig == L1ParticleMap::kMu5_Jet20) {
717 }
else if (itrig == L1ParticleMap::kMu5_TauJet20 || itrig == L1ParticleMap::kMu5_TauJet30) {
729 }
else if (itrig == L1ParticleMap::kIsoEG10_EG10) {
740 }
else if (itrig == L1ParticleMap::kIsoEG10_Jet15 || itrig == L1ParticleMap::kIsoEG10_Jet30 ||
741 itrig == L1ParticleMap::kIsoEG10_Jet20 || itrig == L1ParticleMap::kIsoEG10_Jet70) {
753 }
else if (itrig == L1ParticleMap::kIsoEG10_TauJet20 || itrig == L1ParticleMap::kIsoEG10_TauJet30) {
765 }
else if (itrig == L1ParticleMap::kEG10_Jet15 || itrig == L1ParticleMap::kEG12_Jet20 ||
766 itrig == L1ParticleMap::kEG12_Jet70) {
778 }
else if (itrig == L1ParticleMap::kEG12_TauJet40) {
790 }
else if (itrig == L1ParticleMap::kJet70_TauJet40) {
801 }
else if (itrig == L1ParticleMap::kMu3_HTT200) {
812 }
else if (itrig == L1ParticleMap::kIsoEG10_HTT200) {
823 }
else if (itrig == L1ParticleMap::kEG12_HTT200) {
834 }
else if (itrig == L1ParticleMap::kJet70_HTT200) {
845 }
else if (itrig == L1ParticleMap::kTauJet40_HTT200) {
856 }
else if (itrig == L1ParticleMap::kMu3_ETM30) {
867 }
else if (itrig == L1ParticleMap::kIsoEG10_ETM30) {
878 }
else if (itrig == L1ParticleMap::kEG12_ETM30) {
889 }
else if (itrig == L1ParticleMap::kJet70_ETM40) {
900 }
else if (itrig == L1ParticleMap::kTauJet20_ETM20 || itrig == L1ParticleMap::kTauJet30_ETM30 ||
901 itrig == L1ParticleMap::kTauJet30_ETM40) {
912 }
else if (itrig == L1ParticleMap::kHTT100_ETM30) {
920 }
else if (itrig == L1ParticleMap::kTripleMu3) {
926 inputMuonRefsDouble,
singleThresholds_[itrig], decision, outputMuonRefsTmp, combosTmp);
927 }
else if (itrig == L1ParticleMap::kTripleIsoEG5) {
933 }
else if (itrig == L1ParticleMap::kTripleEG10) {
939 inputRelaxedEmRefs,
singleThresholds_[itrig], decision, outputEmRefsTmp, combosTmp);
940 }
else if (itrig == L1ParticleMap::kTripleJet50) {
946 }
else if (itrig == L1ParticleMap::kTripleTauJet40) {
952 }
else if (itrig == L1ParticleMap::kDoubleMu3_IsoEG5) {
965 }
else if (itrig == L1ParticleMap::kDoubleMu3_EG10) {
978 }
else if (itrig == L1ParticleMap::kDoubleIsoEG5_Mu3) {
991 }
else if (itrig == L1ParticleMap::kDoubleEG10_Mu3) {
1004 }
else if (itrig == L1ParticleMap::kDoubleMu3_HTT200) {
1017 }
else if (itrig == L1ParticleMap::kDoubleIsoEG5_HTT200) {
1030 }
else if (itrig == L1ParticleMap::kDoubleEG10_HTT200) {
1043 }
else if (itrig == L1ParticleMap::kDoubleJet50_HTT200) {
1056 }
else if (itrig == L1ParticleMap::kDoubleTauJet40_HTT200) {
1069 }
else if (itrig == L1ParticleMap::kDoubleMu3_ETM20) {
1082 }
else if (itrig == L1ParticleMap::kDoubleIsoEG5_ETM20) {
1095 }
else if (itrig == L1ParticleMap::kDoubleEG10_ETM20) {
1108 }
else if (itrig == L1ParticleMap::kDoubleJet50_ETM20) {
1121 }
else if (itrig == L1ParticleMap::kDoubleTauJet40_ETM20) {
1134 }
else if (itrig == L1ParticleMap::kQuadJet30) {
1141 }
else if (itrig == L1ParticleMap::kExclusiveDoubleIsoEG4) {
1153 }
else if (itrig == L1ParticleMap::kExclusiveDoubleJet60) {
1157 if (inputJetRefs.size() == 2) {
1160 }
else if (itrig == L1ParticleMap::kExclusiveJet25_Gap_Jet25) {
1164 if (inputJetRefs.size() == 2) {
1167 }
else if (itrig == L1ParticleMap::kIsoEG10_Jet20_ForJet10) {
1176 inputCenJetTauJetRefs,
1184 }
else if (itrig == L1ParticleMap::kMinBias_HTT10) {
1191 }
else if (itrig == L1ParticleMap::kZeroBias) {
1199 L1ParticleMap::L1IndexComboVector combos;
1202 double rand = CLHEP::RandFlat::shoot() * (double)
prescales_[itrig];
1206 outputEmRefs = outputEmRefsTmp;
1207 outputJetRefs = outputJetRefsTmp;
1208 outputMuonRefs = outputMuonRefsTmp;
1215 mapColl->push_back(
L1ParticleMap((L1ParticleMap::L1TriggerType)itrig,
1224 globalDecision = globalDecision || decision;
1225 decisionWord.push_back(decision);
1233 gtRecord->setDecision(globalDecision);
1234 gtRecord->setDecisionWord(decisionWord);
1240 template <
class TCollection>
1244 for (
size_t i = 0;
i <
handle->size(); ++
i) {
1249 template <
class TCollection>
1251 const double &etThreshold,
1255 for (
size_t i = 0;
i < inputRefs.size(); ++
i) {
1256 if (inputRefs[
i].
get()->et() >= etThreshold) {
1258 outputRefs.push_back(inputRefs[
i]);
1263 template <
class TCollection>
1266 const double &etThreshold,
1270 bool combinedWithGlobalObject)
const 1274 for (
size_t i = 0;
i + 1 < inputRefs.size(); ++
i) {
1276 if (refi.
get()->et() >= etThreshold) {
1277 for (
size_t j =
i + 1;
j < inputRefs.size(); ++
j) {
1279 if (refj.
get()->et() >= etThreshold) {
1286 for (
size_t iout = 0; iout < outputRefs.size(); ++iout) {
1287 if (refi == outputRefs[iout]) {
1291 if (refj == outputRefs[iout]) {
1299 iInList = outputRefs.size();
1300 outputRefs.push_back(refi);
1304 jInList = outputRefs.size();
1305 outputRefs.push_back(refj);
1310 combo.push_back(iInList);
1311 combo.push_back(jInList);
1312 if (combinedWithGlobalObject)
1314 combos.push_back(combo);
1321 template <
class TCollection>
1324 const double &etThreshold,
1331 for (
size_t i = 0;
i + 2 < inputRefs.size(); ++
i) {
1333 if (refi.
get()->et() >= etThreshold) {
1334 for (
size_t j =
i + 1;
j + 1 < inputRefs.size(); ++
j) {
1336 if (refj.
get()->et() >= etThreshold) {
1337 for (
size_t k =
j + 1;
k < inputRefs.size(); ++
k) {
1339 if (refk.
get()->et() >= etThreshold) {
1347 for (
size_t iout = 0; iout < outputRefs.size(); ++iout) {
1348 if (refi == outputRefs[iout]) {
1352 if (refj == outputRefs[iout]) {
1356 if (refk == outputRefs[iout]) {
1364 iInList = outputRefs.size();
1365 outputRefs.push_back(refi);
1369 jInList = outputRefs.size();
1370 outputRefs.push_back(refj);
1374 kInList = outputRefs.size();
1375 outputRefs.push_back(refk);
1380 combo.push_back(iInList);
1381 combo.push_back(jInList);
1382 combo.push_back(kInList);
1383 combos.push_back(combo);
1392 template <
class TCollection1,
class TCollection2>
1396 const double &etThreshold1,
1397 const double &etThreshold2,
1405 for (
size_t i = 0;
i + 1 < inputRefs1.size(); ++
i) {
1407 if (refi.
get()->et() >= etThreshold1) {
1408 for (
size_t j =
i + 1;
j < inputRefs1.size(); ++
j) {
1410 if (refj.
get()->et() >= etThreshold1) {
1411 for (
size_t k = 0;
k < inputRefs2.size(); ++
k) {
1413 if (refk.
get()->et() >= etThreshold2) {
1421 for (
size_t iout = 0; iout < outputRefs1.size(); ++iout) {
1422 if (refi == outputRefs1[iout]) {
1426 if (refj == outputRefs1[iout]) {
1432 for (
size_t kout = 0; kout < outputRefs2.size(); ++kout) {
1433 if (refk == outputRefs2[kout]) {
1441 iInList = outputRefs1.size();
1442 outputRefs1.push_back(refi);
1446 jInList = outputRefs1.size();
1447 outputRefs1.push_back(refj);
1451 kInList = outputRefs2.size();
1452 outputRefs2.push_back(refk);
1457 combo.push_back(iInList);
1458 combo.push_back(jInList);
1459 combo.push_back(kInList);
1460 combos.push_back(combo);
1469 template <
class TCollection>
1472 const double &etThreshold,
1479 for (
size_t i = 0;
i + 3 < inputRefs.size(); ++
i) {
1481 if (refi.
get()->et() >= etThreshold) {
1482 for (
size_t j =
i + 1;
j + 2 < inputRefs.size(); ++
j) {
1484 if (refj.
get()->et() >= etThreshold) {
1485 for (
size_t k =
j + 1;
k + 1 < inputRefs.size(); ++
k) {
1487 if (refk.
get()->et() >= etThreshold) {
1488 for (
size_t p =
k + 1;
p < inputRefs.size(); ++
p) {
1490 if (refp.
get()->et() >= etThreshold) {
1499 for (
size_t iout = 0; iout < outputRefs.size(); ++iout) {
1500 if (refi == outputRefs[iout]) {
1504 if (refj == outputRefs[iout]) {
1508 if (refk == outputRefs[iout]) {
1512 if (refp == outputRefs[iout]) {
1520 iInList = outputRefs.size();
1521 outputRefs.push_back(refi);
1525 jInList = outputRefs.size();
1526 outputRefs.push_back(refj);
1530 kInList = outputRefs.size();
1531 outputRefs.push_back(refk);
1535 pInList = outputRefs.size();
1536 outputRefs.push_back(refp);
1541 combo.push_back(iInList);
1542 combo.push_back(jInList);
1543 combo.push_back(kInList);
1544 combo.push_back(pInList);
1545 combos.push_back(combo);
1556 template <
class TCollection1,
class TCollection2>
1560 const double &etThreshold1,
1561 const double &etThreshold2,
1567 for (
size_t i = 0;
i < inputRefs1.size(); ++
i) {
1569 if (refi.
get()->et() >= etThreshold1) {
1570 for (
size_t j = 0;
j < inputRefs2.size(); ++
j) {
1573 if (refj.
get()->et() >= etThreshold2) {
1579 for (
size_t iout = 0; iout < outputRefs1.size(); ++iout) {
1580 if (refi == outputRefs1[iout]) {
1586 for (
size_t jout = 0; jout < outputRefs2.size(); ++jout) {
1587 if (refj == outputRefs2[jout]) {
1595 iInList = outputRefs1.size();
1596 outputRefs1.push_back(refi);
1600 jInList = outputRefs2.size();
1601 outputRefs2.push_back(refj);
1606 combo.push_back(iInList);
1607 combo.push_back(jInList);
1608 combos.push_back(combo);
1615 template <
class TCollection>
1619 const double &etThreshold1,
1620 const double &etThreshold2,
1625 for (
size_t i = 0;
i < inputRefs1.size(); ++
i) {
1627 if (refi.
get()->et() >= etThreshold1) {
1628 for (
size_t j = 0;
j < inputRefs2.size(); ++
j) {
1631 if (refj.
get()->et() >= etThreshold2 && refi != refj) {
1637 for (
size_t iout = 0; iout < outputRefs.size(); ++iout) {
1638 if (refi == outputRefs[iout]) {
1644 for (
size_t jout = 0; jout < outputRefs.size(); ++jout) {
1645 if (refj == outputRefs[jout]) {
1653 iInList = outputRefs.size();
1654 outputRefs.push_back(refi);
1658 jInList = outputRefs.size();
1659 outputRefs.push_back(refj);
1664 combo.push_back(iInList);
1665 combo.push_back(jInList);
1666 combos.push_back(combo);
1676 const double &etThreshold1,
1677 const double &etThreshold2,
1683 for (
size_t i = 0;
i < inputRefs1.size(); ++
i) {
1685 if (refi.
get()->et() >= etThreshold1) {
1686 for (
size_t j = 0;
j < inputRefs2.size(); ++
j) {
1690 if (refj.
get()->et() >= etThreshold2 &&
1691 (refi.
get()->gctEmCand() ==
nullptr || refj.
get()->gctJetCand() ==
nullptr ||
1692 refi.
get()->gctEmCand()->regionId() != refj.
get()->gctJetCand()->regionId())) {
1698 for (
size_t iout = 0; iout < outputRefs1.size(); ++iout) {
1699 if (refi == outputRefs1[iout]) {
1705 for (
size_t jout = 0; jout < outputRefs2.size(); ++jout) {
1706 if (refj == outputRefs2[jout]) {
1714 iInList = outputRefs1.size();
1715 outputRefs1.push_back(refi);
1719 jInList = outputRefs2.size();
1720 outputRefs2.push_back(refj);
1725 combo.push_back(iInList);
1726 combo.push_back(jInList);
1727 combos.push_back(combo);
1737 const double &etThreshold,
1744 for (
size_t i = 0;
i + 1 < inputRefs.size(); ++
i) {
1746 if (refi.
get()->et() >= etThreshold) {
1747 for (
size_t j =
i + 1;
j < inputRefs.size(); ++
j) {
1749 if ((refj.
get()->et() >= etThreshold) && (((refi.
get()->eta() < 0.) && (refj.
get()->eta() > 0.)) ||
1750 ((refi.
get()->eta() > 0.) && (refj.
get()->eta() < 0.)))) {
1757 for (
size_t iout = 0; iout < outputRefs.size(); ++iout) {
1758 if (refi == outputRefs[iout]) {
1762 if (refj == outputRefs[iout]) {
1770 iInList = outputRefs.size();
1771 outputRefs.push_back(refi);
1775 jInList = outputRefs.size();
1776 outputRefs.push_back(refj);
1781 combo.push_back(iInList);
1782 combo.push_back(jInList);
1783 combos.push_back(combo);
1792 const double &etThreshold,
1798 for (
size_t k = 0;
k + 1 < inputRefs.size(); ++
k) {
1800 double etak = refk.
get()->eta();
1802 for (
size_t l =
k + 1;
l < inputRefs.size(); ++
l) {
1804 double etal =
refl.get()->eta();
1806 ((etak > 0 && etal < 0) || (etak < 0 && etal > 0))) {
1818 const double &etThreshold1,
1819 const double &etThreshold2,
1824 if (inputRefs1.size() == 2) {
1826 if (!inputRefs2.empty()) {
1827 for (
size_t j = 0;
j < inputRefs2.size(); ++
j) {
1828 if (inputRefs2[
j].
get()->gctJetCand()->regionId() == inputRefs1[0].get()->gctEmCand()->regionId())
1830 if (inputRefs2[
j].
get()->gctJetCand()->regionId() == inputRefs1[1].get()->gctEmCand()->regionId())
1832 if (inputRefs2[
j].
get()->et() > etThreshold2) {
edm::InputTag cenJetSource_
void evaluateTripleSameObjectTrigger(const std::vector< edm::Ref< TCollection >> &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection >> &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
void evaluateSingleObjectTrigger(const std::vector< edm::Ref< TCollection >> &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection >> &outputRefs) const
edm::InputTag tauJetSource_
edm::InputTag forJetSource_
T getParameter(std::string const &) const
std::pair< double, double > doubleThresholds_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
void evaluateDoubleDifferentObjectTrigger(const std::vector< edm::Ref< TCollection1 >> &inputRefs1, const std::vector< edm::Ref< TCollection2 >> &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, std::vector< edm::Ref< TCollection1 >> &outputRefs1, std::vector< edm::Ref< TCollection2 >> &outputRefs2, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
std::vector< unsigned int > L1IndexCombo
edm::InputTag nonIsoEmSource_
edm::InputTag muonSource_
void addToVectorRefs(const edm::Handle< TCollection > &handle, std::vector< edm::Ref< TCollection >> &vectorRefs) const
edm::InputTag isoEmSource_
static const int kDefault
void evaluateForwardRapidityGap(const l1extra::L1JetParticleVectorRef &inputRefs, const double &etThreshold, bool &decision) const
U second(std::pair< T, U > const &p)
void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override
void evaluateJetGapJetTrigger(const l1extra::L1JetParticleVectorRef &inputRefs, const double &etThreshold, bool &decision, l1extra::L1JetParticleVectorRef &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
void evaluateDoublePlusSingleObjectTrigger(const std::vector< edm::Ref< TCollection1 >> &inputRefs1, const std::vector< edm::Ref< TCollection2 >> &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, std::vector< edm::Ref< TCollection1 >> &outputRefs1, std::vector< edm::Ref< TCollection2 >> &outputRefs2, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
double singleThresholds_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
~L1ExtraParticleMapProd() override
const double & etTotal() const
void evaluateQuadSameObjectTrigger(const std::vector< edm::Ref< TCollection >> &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection >> &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
std::vector< L1IndexCombo > L1IndexComboVector
edm::InputTag htMissSource_
int prescales_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
edm::InputTag etMissSource_
T const * get() const
Returns C++ pointer to the item.
L1ExtraParticleMapProd(const edm::ParameterSet &)
void evaluateDoubleDifferentObjectSameTypeTrigger(const std::vector< edm::Ref< TCollection >> &inputRefs1, const std::vector< edm::Ref< TCollection >> &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, std::vector< edm::Ref< TCollection >> &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
void evaluateDoubleDifferentCaloObjectTrigger(const l1extra::L1EmParticleVectorRef &inputRefs1, const l1extra::L1JetParticleVectorRef &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, l1extra::L1EmParticleVectorRef &outputRefs1, l1extra::L1JetParticleVectorRef &outputRefs2, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
void evaluateDoubleExclusiveIsoEG(const l1extra::L1EmParticleVectorRef &inputRefs1, const l1extra::L1JetParticleVectorRef &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, l1extra::L1EmParticleVectorRef &outputRefs1, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
void evaluateDoubleSameObjectTrigger(const std::vector< edm::Ref< TCollection >> &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection >> &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos, bool combinedWithGlobalObject=false) const