27 #include "CLHEP/Random/RandFlat.h" 43 : muonSource_(iConfig.getParameter<
edm::InputTag>(
"muonSource")),
44 isoEmSource_(iConfig.getParameter<
edm::InputTag>(
"isolatedEmSource")),
46 iConfig.getParameter<
edm::InputTag>(
"nonIsolatedEmSource")),
47 cenJetSource_(iConfig.getParameter<
edm::InputTag>(
"centralJetSource")),
48 forJetSource_(iConfig.getParameter<
edm::InputTag>(
"forwardJetSource")),
49 tauJetSource_(iConfig.getParameter<
edm::InputTag>(
"tauJetSource")),
50 etMissSource_(iConfig.getParameter<
edm::InputTag>(
"etMissSource")),
51 htMissSource_(iConfig.getParameter<
edm::InputTag>(
"htMissSource")) {
55 produces<L1ParticleMapCollection>();
56 produces<L1GlobalTriggerReadoutRecord>();
59 for (
int i = 0;
i < L1ParticleMap::kNumOfL1TriggerTypes; ++
i) {
75 prescales_[L1ParticleMap::kSingleMu5] =
77 singleThresholds_[L1ParticleMap::kSingleMu7] =
79 prescales_[L1ParticleMap::kSingleMu7] =
81 singleThresholds_[L1ParticleMap::kSingleMu10] =
83 prescales_[L1ParticleMap::kSingleMu10] =
85 singleThresholds_[L1ParticleMap::kSingleMu14] =
87 prescales_[L1ParticleMap::kSingleMu14] =
89 singleThresholds_[L1ParticleMap::kSingleMu20] =
91 prescales_[L1ParticleMap::kSingleMu20] =
93 singleThresholds_[L1ParticleMap::kSingleMu25] =
95 prescales_[L1ParticleMap::kSingleMu25] =
98 singleThresholds_[L1ParticleMap::kSingleIsoEG5] =
100 prescales_[L1ParticleMap::kSingleIsoEG5] =
102 singleThresholds_[L1ParticleMap::kSingleIsoEG8] =
104 prescales_[L1ParticleMap::kSingleIsoEG8] =
106 singleThresholds_[L1ParticleMap::kSingleIsoEG10] =
107 iConfig.
getParameter<
double>(
"L1_SingleIsoEG10_thresh");
108 prescales_[L1ParticleMap::kSingleIsoEG10] =
110 singleThresholds_[L1ParticleMap::kSingleIsoEG12] =
111 iConfig.
getParameter<
double>(
"L1_SingleIsoEG12_thresh");
112 prescales_[L1ParticleMap::kSingleIsoEG12] =
114 singleThresholds_[L1ParticleMap::kSingleIsoEG15] =
115 iConfig.
getParameter<
double>(
"L1_SingleIsoEG15_thresh");
116 prescales_[L1ParticleMap::kSingleIsoEG15] =
118 singleThresholds_[L1ParticleMap::kSingleIsoEG20] =
119 iConfig.
getParameter<
double>(
"L1_SingleIsoEG20_thresh");
120 prescales_[L1ParticleMap::kSingleIsoEG20] =
122 singleThresholds_[L1ParticleMap::kSingleIsoEG25] =
123 iConfig.
getParameter<
double>(
"L1_SingleIsoEG25_thresh");
124 prescales_[L1ParticleMap::kSingleIsoEG25] =
127 singleThresholds_[L1ParticleMap::kSingleEG5] =
129 prescales_[L1ParticleMap::kSingleEG5] =
131 singleThresholds_[L1ParticleMap::kSingleEG8] =
133 prescales_[L1ParticleMap::kSingleEG8] =
135 singleThresholds_[L1ParticleMap::kSingleEG10] =
137 prescales_[L1ParticleMap::kSingleEG10] =
139 singleThresholds_[L1ParticleMap::kSingleEG12] =
141 prescales_[L1ParticleMap::kSingleEG12] =
143 singleThresholds_[L1ParticleMap::kSingleEG15] =
145 prescales_[L1ParticleMap::kSingleEG15] =
147 singleThresholds_[L1ParticleMap::kSingleEG20] =
149 prescales_[L1ParticleMap::kSingleEG20] =
151 singleThresholds_[L1ParticleMap::kSingleEG25] =
153 prescales_[L1ParticleMap::kSingleEG25] =
156 singleThresholds_[L1ParticleMap::kSingleJet15] =
158 prescales_[L1ParticleMap::kSingleJet15] =
160 singleThresholds_[L1ParticleMap::kSingleJet20] =
162 prescales_[L1ParticleMap::kSingleJet20] =
164 singleThresholds_[L1ParticleMap::kSingleJet30] =
166 prescales_[L1ParticleMap::kSingleJet30] =
168 singleThresholds_[L1ParticleMap::kSingleJet50] =
170 prescales_[L1ParticleMap::kSingleJet50] =
172 singleThresholds_[L1ParticleMap::kSingleJet70] =
174 prescales_[L1ParticleMap::kSingleJet70] =
176 singleThresholds_[L1ParticleMap::kSingleJet100] =
178 prescales_[L1ParticleMap::kSingleJet100] =
180 singleThresholds_[L1ParticleMap::kSingleJet150] =
182 prescales_[L1ParticleMap::kSingleJet150] =
184 singleThresholds_[L1ParticleMap::kSingleJet200] =
186 prescales_[L1ParticleMap::kSingleJet200] =
189 singleThresholds_[L1ParticleMap::kSingleTauJet10] =
190 iConfig.
getParameter<
double>(
"L1_SingleTauJet10_thresh");
191 prescales_[L1ParticleMap::kSingleTauJet10] =
192 iConfig.
getParameter<
int>(
"L1_SingleTauJet10_prescale");
193 singleThresholds_[L1ParticleMap::kSingleTauJet20] =
194 iConfig.
getParameter<
double>(
"L1_SingleTauJet20_thresh");
195 prescales_[L1ParticleMap::kSingleTauJet20] =
196 iConfig.
getParameter<
int>(
"L1_SingleTauJet20_prescale");
197 singleThresholds_[L1ParticleMap::kSingleTauJet30] =
198 iConfig.
getParameter<
double>(
"L1_SingleTauJet30_thresh");
199 prescales_[L1ParticleMap::kSingleTauJet30] =
200 iConfig.
getParameter<
int>(
"L1_SingleTauJet30_prescale");
201 singleThresholds_[L1ParticleMap::kSingleTauJet35] =
202 iConfig.
getParameter<
double>(
"L1_SingleTauJet35_thresh");
203 prescales_[L1ParticleMap::kSingleTauJet35] =
204 iConfig.
getParameter<
int>(
"L1_SingleTauJet35_prescale");
205 singleThresholds_[L1ParticleMap::kSingleTauJet40] =
206 iConfig.
getParameter<
double>(
"L1_SingleTauJet40_thresh");
207 prescales_[L1ParticleMap::kSingleTauJet40] =
208 iConfig.
getParameter<
int>(
"L1_SingleTauJet40_prescale");
209 singleThresholds_[L1ParticleMap::kSingleTauJet60] =
210 iConfig.
getParameter<
double>(
"L1_SingleTauJet60_thresh");
211 prescales_[L1ParticleMap::kSingleTauJet60] =
212 iConfig.
getParameter<
int>(
"L1_SingleTauJet60_prescale");
213 singleThresholds_[L1ParticleMap::kSingleTauJet80] =
214 iConfig.
getParameter<
double>(
"L1_SingleTauJet80_thresh");
215 prescales_[L1ParticleMap::kSingleTauJet80] =
216 iConfig.
getParameter<
int>(
"L1_SingleTauJet80_prescale");
217 singleThresholds_[L1ParticleMap::kSingleTauJet100] =
218 iConfig.
getParameter<
double>(
"L1_SingleTauJet100_thresh");
219 prescales_[L1ParticleMap::kSingleTauJet100] =
220 iConfig.
getParameter<
int>(
"L1_SingleTauJet100_prescale");
222 singleThresholds_[L1ParticleMap::kHTT100] =
224 prescales_[L1ParticleMap::kHTT100] =
226 singleThresholds_[L1ParticleMap::kHTT200] =
228 prescales_[L1ParticleMap::kHTT200] =
230 singleThresholds_[L1ParticleMap::kHTT250] =
232 prescales_[L1ParticleMap::kHTT250] =
234 singleThresholds_[L1ParticleMap::kHTT300] =
236 prescales_[L1ParticleMap::kHTT300] =
238 singleThresholds_[L1ParticleMap::kHTT400] =
240 prescales_[L1ParticleMap::kHTT400] =
242 singleThresholds_[L1ParticleMap::kHTT500] =
244 prescales_[L1ParticleMap::kHTT500] =
247 singleThresholds_[L1ParticleMap::kETM10] =
249 prescales_[L1ParticleMap::kETM10] =
251 singleThresholds_[L1ParticleMap::kETM15] =
253 prescales_[L1ParticleMap::kETM15] =
255 singleThresholds_[L1ParticleMap::kETM20] =
257 prescales_[L1ParticleMap::kETM20] =
259 singleThresholds_[L1ParticleMap::kETM30] =
261 prescales_[L1ParticleMap::kETM30] =
263 singleThresholds_[L1ParticleMap::kETM40] =
265 prescales_[L1ParticleMap::kETM40] =
267 singleThresholds_[L1ParticleMap::kETM50] =
269 prescales_[L1ParticleMap::kETM50] =
271 singleThresholds_[L1ParticleMap::kETM60] =
273 prescales_[L1ParticleMap::kETM60] =
276 singleThresholds_[L1ParticleMap::kETT60] =
278 prescales_[L1ParticleMap::kETT60] =
283 singleThresholds_[L1ParticleMap::kDoubleMu3] =
285 prescales_[L1ParticleMap::kDoubleMu3] =
288 singleThresholds_[L1ParticleMap::kDoubleIsoEG8] =
290 prescales_[L1ParticleMap::kDoubleIsoEG8] =
292 singleThresholds_[L1ParticleMap::kDoubleIsoEG10] =
293 iConfig.
getParameter<
double>(
"L1_DoubleIsoEG10_thresh");
294 prescales_[L1ParticleMap::kDoubleIsoEG10] =
297 singleThresholds_[L1ParticleMap::kDoubleEG5] =
299 prescales_[L1ParticleMap::kDoubleEG5] =
301 singleThresholds_[L1ParticleMap::kDoubleEG10] =
303 prescales_[L1ParticleMap::kDoubleEG10] =
305 singleThresholds_[L1ParticleMap::kDoubleEG15] =
307 prescales_[L1ParticleMap::kDoubleEG15] =
310 singleThresholds_[L1ParticleMap::kDoubleJet70] =
312 prescales_[L1ParticleMap::kDoubleJet70] =
314 singleThresholds_[L1ParticleMap::kDoubleJet100] =
316 prescales_[L1ParticleMap::kDoubleJet100] =
319 singleThresholds_[L1ParticleMap::kDoubleTauJet20] =
320 iConfig.
getParameter<
double>(
"L1_DoubleTauJet20_thresh");
321 prescales_[L1ParticleMap::kDoubleTauJet20] =
322 iConfig.
getParameter<
int>(
"L1_DoubleTauJet20_prescale");
323 singleThresholds_[L1ParticleMap::kDoubleTauJet30] =
324 iConfig.
getParameter<
double>(
"L1_DoubleTauJet30_thresh");
325 prescales_[L1ParticleMap::kDoubleTauJet30] =
326 iConfig.
getParameter<
int>(
"L1_DoubleTauJet30_prescale");
327 singleThresholds_[L1ParticleMap::kDoubleTauJet35] =
328 iConfig.
getParameter<
double>(
"L1_DoubleTauJet35_thresh");
329 prescales_[L1ParticleMap::kDoubleTauJet35] =
330 iConfig.
getParameter<
int>(
"L1_DoubleTauJet35_prescale");
331 singleThresholds_[L1ParticleMap::kDoubleTauJet40] =
332 iConfig.
getParameter<
double>(
"L1_DoubleTauJet40_thresh");
333 prescales_[L1ParticleMap::kDoubleTauJet40] =
334 iConfig.
getParameter<
int>(
"L1_DoubleTauJet40_prescale");
342 prescales_[L1ParticleMap::kMu3_IsoEG5] =
348 prescales_[L1ParticleMap::kMu5_IsoEG10] =
355 prescales_[L1ParticleMap::kMu3_EG12] =
362 prescales_[L1ParticleMap::kMu3_Jet15] =
368 prescales_[L1ParticleMap::kMu5_Jet15] =
374 prescales_[L1ParticleMap::kMu3_Jet70] =
380 prescales_[L1ParticleMap::kMu5_Jet20] =
384 iConfig.
getParameter<
double>(
"L1_Mu5_TauJet20_thresh1");
386 iConfig.
getParameter<
double>(
"L1_Mu5_TauJet20_thresh2");
387 prescales_[L1ParticleMap::kMu5_TauJet20] =
390 iConfig.
getParameter<
double>(
"L1_Mu5_TauJet30_thresh1");
392 iConfig.
getParameter<
double>(
"L1_Mu5_TauJet30_thresh2");
393 prescales_[L1ParticleMap::kMu5_TauJet30] =
397 iConfig.
getParameter<
double>(
"L1_IsoEG10_EG10_thresh1");
399 iConfig.
getParameter<
double>(
"L1_IsoEG10_EG10_thresh2");
400 prescales_[L1ParticleMap::kIsoEG10_EG10] =
404 iConfig.
getParameter<
double>(
"L1_IsoEG10_Jet15_thresh1");
406 iConfig.
getParameter<
double>(
"L1_IsoEG10_Jet15_thresh2");
407 prescales_[L1ParticleMap::kIsoEG10_Jet15] =
410 iConfig.
getParameter<
double>(
"L1_IsoEG10_Jet30_thresh1");
412 iConfig.
getParameter<
double>(
"L1_IsoEG10_Jet30_thresh2");
413 prescales_[L1ParticleMap::kIsoEG10_Jet30] =
416 iConfig.
getParameter<
double>(
"L1_IsoEG10_Jet20_thresh1");
418 iConfig.
getParameter<
double>(
"L1_IsoEG10_Jet20_thresh2");
419 prescales_[L1ParticleMap::kIsoEG10_Jet20] =
422 iConfig.
getParameter<
double>(
"L1_IsoEG10_Jet70_thresh1");
424 iConfig.
getParameter<
double>(
"L1_IsoEG10_Jet70_thresh2");
425 prescales_[L1ParticleMap::kIsoEG10_Jet70] =
429 iConfig.
getParameter<
double>(
"L1_IsoEG10_TauJet20_thresh1");
431 iConfig.
getParameter<
double>(
"L1_IsoEG10_TauJet20_thresh2");
432 prescales_[L1ParticleMap::kIsoEG10_TauJet20] =
433 iConfig.
getParameter<
int>(
"L1_IsoEG10_TauJet20_prescale");
435 iConfig.
getParameter<
double>(
"L1_IsoEG10_TauJet30_thresh1");
437 iConfig.
getParameter<
double>(
"L1_IsoEG10_TauJet30_thresh2");
438 prescales_[L1ParticleMap::kIsoEG10_TauJet30] =
439 iConfig.
getParameter<
int>(
"L1_IsoEG10_TauJet30_prescale");
445 prescales_[L1ParticleMap::kEG10_Jet15] =
451 prescales_[L1ParticleMap::kEG12_Jet20] =
457 prescales_[L1ParticleMap::kEG12_Jet70] =
461 iConfig.
getParameter<
double>(
"L1_EG12_TauJet40_thresh1");
463 iConfig.
getParameter<
double>(
"L1_EG12_TauJet40_thresh2");
464 prescales_[L1ParticleMap::kEG12_TauJet40] =
468 iConfig.
getParameter<
double>(
"L1_Jet70_TauJet40_thresh1");
470 iConfig.
getParameter<
double>(
"L1_Jet70_TauJet40_thresh2");
471 prescales_[L1ParticleMap::kJet70_TauJet40] =
472 iConfig.
getParameter<
int>(
"L1_Jet70_TauJet40_prescale");
478 prescales_[L1ParticleMap::kMu3_HTT200] =
481 iConfig.
getParameter<
double>(
"L1_IsoEG10_HTT200_thresh1");
483 iConfig.
getParameter<
double>(
"L1_IsoEG10_HTT200_thresh2");
484 prescales_[L1ParticleMap::kIsoEG10_HTT200] =
485 iConfig.
getParameter<
int>(
"L1_IsoEG10_HTT200_prescale");
490 prescales_[L1ParticleMap::kEG12_HTT200] =
493 iConfig.
getParameter<
double>(
"L1_Jet70_HTT200_thresh1");
495 iConfig.
getParameter<
double>(
"L1_Jet70_HTT200_thresh2");
496 prescales_[L1ParticleMap::kJet70_HTT200] =
499 iConfig.
getParameter<
double>(
"L1_TauJet40_HTT200_thresh1");
501 iConfig.
getParameter<
double>(
"L1_TauJet40_HTT200_thresh2");
502 prescales_[L1ParticleMap::kTauJet40_HTT200] =
503 iConfig.
getParameter<
int>(
"L1_TauJet40_HTT200_prescale");
509 prescales_[L1ParticleMap::kMu3_ETM30] =
512 iConfig.
getParameter<
double>(
"L1_IsoEG10_ETM30_thresh1");
514 iConfig.
getParameter<
double>(
"L1_IsoEG10_ETM30_thresh2");
515 prescales_[L1ParticleMap::kIsoEG10_ETM30] =
521 prescales_[L1ParticleMap::kEG12_ETM30] =
527 prescales_[L1ParticleMap::kJet70_ETM40] =
531 iConfig.
getParameter<
double>(
"L1_TauJet20_ETM20_thresh1");
533 iConfig.
getParameter<
double>(
"L1_TauJet20_ETM20_thresh2");
534 prescales_[L1ParticleMap::kTauJet20_ETM20] =
535 iConfig.
getParameter<
int>(
"L1_TauJet20_ETM20_prescale");
537 iConfig.
getParameter<
double>(
"L1_TauJet30_ETM30_thresh1");
539 iConfig.
getParameter<
double>(
"L1_TauJet30_ETM30_thresh2");
540 prescales_[L1ParticleMap::kTauJet30_ETM30] =
541 iConfig.
getParameter<
int>(
"L1_TauJet30_ETM30_prescale");
543 iConfig.
getParameter<
double>(
"L1_TauJet30_ETM40_thresh1");
545 iConfig.
getParameter<
double>(
"L1_TauJet30_ETM40_thresh2");
546 prescales_[L1ParticleMap::kTauJet30_ETM40] =
547 iConfig.
getParameter<
int>(
"L1_TauJet30_ETM40_prescale");
550 iConfig.
getParameter<
double>(
"L1_HTT100_ETM30_thresh1");
552 iConfig.
getParameter<
double>(
"L1_HTT100_ETM30_thresh2");
553 prescales_[L1ParticleMap::kHTT100_ETM30] =
558 singleThresholds_[L1ParticleMap::kTripleMu3] =
560 prescales_[L1ParticleMap::kTripleMu3] =
562 singleThresholds_[L1ParticleMap::kTripleIsoEG5] =
564 prescales_[L1ParticleMap::kTripleIsoEG5] =
566 singleThresholds_[L1ParticleMap::kTripleEG10] =
568 prescales_[L1ParticleMap::kTripleEG10] =
570 singleThresholds_[L1ParticleMap::kTripleJet50] =
572 prescales_[L1ParticleMap::kTripleJet50] =
574 singleThresholds_[L1ParticleMap::kTripleTauJet40] =
575 iConfig.
getParameter<
double>(
"L1_TripleTauJet40_thresh");
576 prescales_[L1ParticleMap::kTripleTauJet40] =
577 iConfig.
getParameter<
int>(
"L1_TripleTauJet40_prescale");
582 iConfig.
getParameter<
double>(
"L1_DoubleMu3_IsoEG5_thresh1");
584 iConfig.
getParameter<
double>(
"L1_DoubleMu3_IsoEG5_thresh2");
585 prescales_[L1ParticleMap::kDoubleMu3_IsoEG5] =
586 iConfig.
getParameter<
int>(
"L1_DoubleMu3_IsoEG5_prescale");
588 iConfig.
getParameter<
double>(
"L1_DoubleMu3_EG10_thresh1");
590 iConfig.
getParameter<
double>(
"L1_DoubleMu3_EG10_thresh2");
591 prescales_[L1ParticleMap::kDoubleMu3_EG10] =
592 iConfig.
getParameter<
int>(
"L1_DoubleMu3_EG10_prescale");
594 iConfig.
getParameter<
double>(
"L1_DoubleIsoEG5_Mu3_thresh1");
596 iConfig.
getParameter<
double>(
"L1_DoubleIsoEG5_Mu3_thresh2");
597 prescales_[L1ParticleMap::kDoubleIsoEG5_Mu3] =
598 iConfig.
getParameter<
int>(
"L1_DoubleIsoEG5_Mu3_prescale");
600 iConfig.
getParameter<
double>(
"L1_DoubleEG10_Mu3_thresh1");
602 iConfig.
getParameter<
double>(
"L1_DoubleEG10_Mu3_thresh2");
603 prescales_[L1ParticleMap::kDoubleEG10_Mu3] =
604 iConfig.
getParameter<
int>(
"L1_DoubleEG10_Mu3_prescale");
607 iConfig.
getParameter<
double>(
"L1_DoubleMu3_HTT200_thresh1");
609 iConfig.
getParameter<
double>(
"L1_DoubleMu3_HTT200_thresh2");
610 prescales_[L1ParticleMap::kDoubleMu3_HTT200] =
611 iConfig.
getParameter<
int>(
"L1_DoubleMu3_HTT200_prescale");
613 iConfig.
getParameter<
double>(
"L1_DoubleIsoEG5_HTT200_thresh1");
615 iConfig.
getParameter<
double>(
"L1_DoubleIsoEG5_HTT200_thresh2");
616 prescales_[L1ParticleMap::kDoubleIsoEG5_HTT200] =
617 iConfig.
getParameter<
int>(
"L1_DoubleIsoEG5_HTT200_prescale");
619 iConfig.
getParameter<
double>(
"L1_DoubleEG10_HTT200_thresh1");
621 iConfig.
getParameter<
double>(
"L1_DoubleEG10_HTT200_thresh2");
622 prescales_[L1ParticleMap::kDoubleEG10_HTT200] =
623 iConfig.
getParameter<
int>(
"L1_DoubleEG10_HTT200_prescale");
625 iConfig.
getParameter<
double>(
"L1_DoubleJet50_HTT200_thresh1");
627 iConfig.
getParameter<
double>(
"L1_DoubleJet50_HTT200_thresh2");
628 prescales_[L1ParticleMap::kDoubleJet50_HTT200] =
629 iConfig.
getParameter<
int>(
"L1_DoubleJet50_HTT200_prescale");
631 iConfig.
getParameter<
double>(
"L1_DoubleTauJet40_HTT200_thresh1");
633 iConfig.
getParameter<
double>(
"L1_DoubleTauJet40_HTT200_thresh2");
634 prescales_[L1ParticleMap::kDoubleTauJet40_HTT200] =
635 iConfig.
getParameter<
int>(
"L1_DoubleTauJet40_HTT200_prescale");
638 iConfig.
getParameter<
double>(
"L1_DoubleMu3_ETM20_thresh1");
640 iConfig.
getParameter<
double>(
"L1_DoubleMu3_ETM20_thresh2");
641 prescales_[L1ParticleMap::kDoubleMu3_ETM20] =
642 iConfig.
getParameter<
int>(
"L1_DoubleMu3_ETM20_prescale");
644 iConfig.
getParameter<
double>(
"L1_DoubleIsoEG5_ETM20_thresh1");
646 iConfig.
getParameter<
double>(
"L1_DoubleIsoEG5_ETM20_thresh2");
647 prescales_[L1ParticleMap::kDoubleIsoEG5_ETM20] =
648 iConfig.
getParameter<
int>(
"L1_DoubleIsoEG5_ETM20_prescale");
650 iConfig.
getParameter<
double>(
"L1_DoubleEG10_ETM20_thresh1");
652 iConfig.
getParameter<
double>(
"L1_DoubleEG10_ETM20_thresh2");
653 prescales_[L1ParticleMap::kDoubleEG10_ETM20] =
654 iConfig.
getParameter<
int>(
"L1_DoubleEG10_ETM20_prescale");
656 iConfig.
getParameter<
double>(
"L1_DoubleJet50_ETM20_thresh1");
658 iConfig.
getParameter<
double>(
"L1_DoubleJet50_ETM20_thresh2");
659 prescales_[L1ParticleMap::kDoubleJet50_ETM20] =
660 iConfig.
getParameter<
int>(
"L1_DoubleJet50_ETM20_prescale");
662 iConfig.
getParameter<
double>(
"L1_DoubleTauJet40_ETM20_thresh1");
664 iConfig.
getParameter<
double>(
"L1_DoubleTauJet40_ETM20_thresh2");
665 prescales_[L1ParticleMap::kDoubleTauJet40_ETM20] =
666 iConfig.
getParameter<
int>(
"L1_DoubleTauJet40_ETM20_prescale");
668 singleThresholds_[L1ParticleMap::kQuadJet30] =
670 prescales_[L1ParticleMap::kQuadJet30] =
675 iConfig.
getParameter<
double>(
"L1_ExclusiveDoubleIsoEG4_thresh1");
678 "L1_ExclusiveDoubleIsoEG4_thresh2");
679 prescales_[L1ParticleMap::kExclusiveDoubleIsoEG4] =
680 iConfig.
getParameter<
int>(
"L1_ExclusiveDoubleIsoEG4_prescale");
681 singleThresholds_[L1ParticleMap::kExclusiveDoubleJet60] =
682 iConfig.
getParameter<
double>(
"L1_ExclusiveDoubleJet60_thresh");
683 prescales_[L1ParticleMap::kExclusiveDoubleJet60] =
684 iConfig.
getParameter<
int>(
"L1_ExclusiveDoubleJet60_prescale");
685 singleThresholds_[L1ParticleMap::kExclusiveJet25_Gap_Jet25] =
686 iConfig.
getParameter<
double>(
"L1_ExclusiveJet25_Gap_Jet25_thresh");
687 prescales_[L1ParticleMap::kExclusiveJet25_Gap_Jet25] =
688 iConfig.
getParameter<
int>(
"L1_ExclusiveJet25_Gap_Jet25_prescale");
690 iConfig.
getParameter<
double>(
"L1_IsoEG10_Jet20_ForJet10_thresh1");
692 iConfig.
getParameter<
double>(
"L1_IsoEG10_Jet20_ForJet10_thresh2");
693 singleThresholds_[L1ParticleMap::kIsoEG10_Jet20_ForJet10] =
694 iConfig.
getParameter<
double>(
"L1_IsoEG10_Jet20_ForJet10_thresh3");
695 prescales_[L1ParticleMap::kIsoEG10_Jet20_ForJet10] =
696 iConfig.
getParameter<
int>(
"L1_IsoEG10_Jet20_ForJet10_prescale");
698 prescales_[L1ParticleMap::kMinBias_HTT10] =
700 prescales_[L1ParticleMap::kZeroBias] =
761 using namespace reco;
793 double ht = mhtHandle->
etTotal();
794 double ett = metHandle->
etTotal();
825 L1MuonParticleCollection::const_iterator muItr = muHandle->begin();
826 L1MuonParticleCollection::const_iterator muEnd = muHandle->end();
828 for (
size_t i = 0; muItr != muEnd; ++muItr, ++
i) {
829 if (!muItr->gmtMuonCand().empty()) {
830 unsigned int qual = muItr->gmtMuonCand().quality();
832 if (qual == 4 || qual == 5 || qual == 6 || qual == 7) {
833 inputMuonRefsSingle.push_back(
837 if (qual == 3 || qual == 5 || qual == 6 || qual == 7) {
838 inputMuonRefsDouble.push_back(
845 bool globalDecision =
false;
846 std::vector<bool> decisionWord;
848 for (
int itrig = 0; itrig < L1ParticleMap::kNumOfL1TriggerTypes; ++itrig) {
849 bool decision =
false;
850 std::vector<L1ParticleMap::L1ObjectType> objectTypes;
855 L1ParticleMap::L1IndexComboVector combosTmp;
857 if (itrig == L1ParticleMap::kSingleMu3 ||
858 itrig == L1ParticleMap::kSingleMu5 ||
859 itrig == L1ParticleMap::kSingleMu7 ||
860 itrig == L1ParticleMap::kSingleMu10 ||
861 itrig == L1ParticleMap::kSingleMu14 ||
862 itrig == L1ParticleMap::kSingleMu20 ||
863 itrig == L1ParticleMap::kSingleMu25) {
867 decision, outputMuonRefsTmp);
868 }
else if (itrig == L1ParticleMap::kSingleIsoEG5 ||
869 itrig == L1ParticleMap::kSingleIsoEG8 ||
870 itrig == L1ParticleMap::kSingleIsoEG10 ||
871 itrig == L1ParticleMap::kSingleIsoEG12 ||
872 itrig == L1ParticleMap::kSingleIsoEG15 ||
873 itrig == L1ParticleMap::kSingleIsoEG20 ||
874 itrig == L1ParticleMap::kSingleIsoEG25) {
875 objectTypes.push_back(L1ParticleMap::kEM);
878 decision, outputEmRefsTmp);
879 }
else if (itrig == L1ParticleMap::kSingleEG5 ||
880 itrig == L1ParticleMap::kSingleEG8 ||
881 itrig == L1ParticleMap::kSingleEG10 ||
882 itrig == L1ParticleMap::kSingleEG12 ||
883 itrig == L1ParticleMap::kSingleEG15 ||
884 itrig == L1ParticleMap::kSingleEG20 ||
885 itrig == L1ParticleMap::kSingleEG25) {
886 objectTypes.push_back(L1ParticleMap::kEM);
889 decision, outputEmRefsTmp);
890 }
else if (itrig == L1ParticleMap::kSingleJet15 ||
891 itrig == L1ParticleMap::kSingleJet20 ||
892 itrig == L1ParticleMap::kSingleJet30 ||
893 itrig == L1ParticleMap::kSingleJet50 ||
894 itrig == L1ParticleMap::kSingleJet70 ||
895 itrig == L1ParticleMap::kSingleJet100 ||
896 itrig == L1ParticleMap::kSingleJet150 ||
897 itrig == L1ParticleMap::kSingleJet200) {
898 objectTypes.push_back(L1ParticleMap::kJet);
901 decision, outputJetRefsTmp);
902 }
else if (itrig == L1ParticleMap::kSingleTauJet10 ||
903 itrig == L1ParticleMap::kSingleTauJet20 ||
904 itrig == L1ParticleMap::kSingleTauJet30 ||
905 itrig == L1ParticleMap::kSingleTauJet35 ||
906 itrig == L1ParticleMap::kSingleTauJet40 ||
907 itrig == L1ParticleMap::kSingleTauJet60 ||
908 itrig == L1ParticleMap::kSingleTauJet80 ||
909 itrig == L1ParticleMap::kSingleTauJet100) {
910 objectTypes.push_back(L1ParticleMap::kJet);
913 decision, outputJetRefsTmp);
914 }
else if (itrig == L1ParticleMap::kHTT100 ||
915 itrig == L1ParticleMap::kHTT200 ||
916 itrig == L1ParticleMap::kHTT250 ||
917 itrig == L1ParticleMap::kHTT300 ||
918 itrig == L1ParticleMap::kHTT400 ||
919 itrig == L1ParticleMap::kHTT500) {
920 objectTypes.push_back(L1ParticleMap::kEtHad);
926 }
else if (itrig == L1ParticleMap::kETM10 ||
927 itrig == L1ParticleMap::kETM15 ||
928 itrig == L1ParticleMap::kETM20 ||
929 itrig == L1ParticleMap::kETM30 ||
930 itrig == L1ParticleMap::kETM40 ||
931 itrig == L1ParticleMap::kETM50 ||
932 itrig == L1ParticleMap::kETM60) {
933 objectTypes.push_back(L1ParticleMap::kEtMiss);
939 }
else if (itrig == L1ParticleMap::kETT60) {
940 objectTypes.push_back(L1ParticleMap::kEtTotal);
946 }
else if (itrig == L1ParticleMap::kDoubleMu3) {
952 outputMuonRefsTmp, combosTmp);
953 }
else if (itrig == L1ParticleMap::kDoubleIsoEG8 ||
954 itrig == L1ParticleMap::kDoubleIsoEG10) {
955 objectTypes.push_back(L1ParticleMap::kEM);
956 objectTypes.push_back(L1ParticleMap::kEM);
959 decision, outputEmRefsTmp, combosTmp);
960 }
else if (itrig == L1ParticleMap::kDoubleEG5 ||
961 itrig == L1ParticleMap::kDoubleEG10 ||
962 itrig == L1ParticleMap::kDoubleEG15) {
963 objectTypes.push_back(L1ParticleMap::kEM);
964 objectTypes.push_back(L1ParticleMap::kEM);
968 outputEmRefsTmp, combosTmp);
969 }
else if (itrig == L1ParticleMap::kDoubleJet70 ||
970 itrig == L1ParticleMap::kDoubleJet100) {
971 objectTypes.push_back(L1ParticleMap::kJet);
972 objectTypes.push_back(L1ParticleMap::kJet);
975 decision, outputJetRefsTmp, combosTmp);
976 }
else if (itrig == L1ParticleMap::kDoubleTauJet20 ||
977 itrig == L1ParticleMap::kDoubleTauJet30 ||
978 itrig == L1ParticleMap::kDoubleTauJet35 ||
979 itrig == L1ParticleMap::kDoubleTauJet40) {
980 objectTypes.push_back(L1ParticleMap::kJet);
981 objectTypes.push_back(L1ParticleMap::kJet);
984 decision, outputJetRefsTmp, combosTmp);
985 }
else if (itrig == L1ParticleMap::kMu3_IsoEG5 ||
986 itrig == L1ParticleMap::kMu5_IsoEG10) {
988 objectTypes.push_back(L1ParticleMap::kEM);
993 outputEmRefsTmp, combosTmp);
994 }
else if (itrig == L1ParticleMap::kMu3_EG12) {
996 objectTypes.push_back(L1ParticleMap::kEM);
999 inputMuonRefsSingle, inputRelaxedEmRefs,
1001 decision, outputMuonRefsTmp, outputEmRefsTmp, combosTmp);
1002 }
else if (itrig == L1ParticleMap::kMu3_Jet15 ||
1003 itrig == L1ParticleMap::kMu5_Jet15 ||
1004 itrig == L1ParticleMap::kMu3_Jet70 ||
1005 itrig == L1ParticleMap::kMu5_Jet20) {
1007 objectTypes.push_back(L1ParticleMap::kJet);
1012 outputJetRefsTmp, combosTmp);
1013 }
else if (itrig == L1ParticleMap::kMu5_TauJet20 ||
1014 itrig == L1ParticleMap::kMu5_TauJet30) {
1016 objectTypes.push_back(L1ParticleMap::kJet);
1021 outputJetRefsTmp, combosTmp);
1022 }
else if (itrig == L1ParticleMap::kIsoEG10_EG10) {
1023 objectTypes.push_back(L1ParticleMap::kEM);
1024 objectTypes.push_back(L1ParticleMap::kEM);
1030 }
else if (itrig == L1ParticleMap::kIsoEG10_Jet15 ||
1031 itrig == L1ParticleMap::kIsoEG10_Jet30 ||
1032 itrig == L1ParticleMap::kIsoEG10_Jet20 ||
1033 itrig == L1ParticleMap::kIsoEG10_Jet70) {
1034 objectTypes.push_back(L1ParticleMap::kEM);
1035 objectTypes.push_back(L1ParticleMap::kJet);
1040 outputJetRefsTmp, combosTmp);
1041 }
else if (itrig == L1ParticleMap::kIsoEG10_TauJet20 ||
1042 itrig == L1ParticleMap::kIsoEG10_TauJet30) {
1043 objectTypes.push_back(L1ParticleMap::kEM);
1044 objectTypes.push_back(L1ParticleMap::kJet);
1049 outputJetRefsTmp, combosTmp);
1050 }
else if (itrig == L1ParticleMap::kEG10_Jet15 ||
1051 itrig == L1ParticleMap::kEG12_Jet20 ||
1052 itrig == L1ParticleMap::kEG12_Jet70) {
1053 objectTypes.push_back(L1ParticleMap::kEM);
1054 objectTypes.push_back(L1ParticleMap::kJet);
1059 outputJetRefsTmp, combosTmp);
1060 }
else if (itrig == L1ParticleMap::kEG12_TauJet40) {
1061 objectTypes.push_back(L1ParticleMap::kEM);
1062 objectTypes.push_back(L1ParticleMap::kJet);
1067 outputJetRefsTmp, combosTmp);
1068 }
else if (itrig == L1ParticleMap::kJet70_TauJet40) {
1069 objectTypes.push_back(L1ParticleMap::kJet);
1070 objectTypes.push_back(L1ParticleMap::kJet);
1076 }
else if (itrig == L1ParticleMap::kMu3_HTT200) {
1078 objectTypes.push_back(L1ParticleMap::kEtHad);
1089 }
else if (itrig == L1ParticleMap::kIsoEG10_HTT200) {
1090 objectTypes.push_back(L1ParticleMap::kEM);
1091 objectTypes.push_back(L1ParticleMap::kEtHad);
1102 }
else if (itrig == L1ParticleMap::kEG12_HTT200) {
1103 objectTypes.push_back(L1ParticleMap::kEM);
1104 objectTypes.push_back(L1ParticleMap::kEtHad);
1115 }
else if (itrig == L1ParticleMap::kJet70_HTT200) {
1116 objectTypes.push_back(L1ParticleMap::kJet);
1117 objectTypes.push_back(L1ParticleMap::kEtHad);
1128 }
else if (itrig == L1ParticleMap::kTauJet40_HTT200) {
1129 objectTypes.push_back(L1ParticleMap::kJet);
1130 objectTypes.push_back(L1ParticleMap::kEtHad);
1141 }
else if (itrig == L1ParticleMap::kMu3_ETM30) {
1143 objectTypes.push_back(L1ParticleMap::kEtMiss);
1154 }
else if (itrig == L1ParticleMap::kIsoEG10_ETM30) {
1155 objectTypes.push_back(L1ParticleMap::kEM);
1156 objectTypes.push_back(L1ParticleMap::kEtMiss);
1167 }
else if (itrig == L1ParticleMap::kEG12_ETM30) {
1168 objectTypes.push_back(L1ParticleMap::kEM);
1169 objectTypes.push_back(L1ParticleMap::kEtMiss);
1180 }
else if (itrig == L1ParticleMap::kJet70_ETM40) {
1181 objectTypes.push_back(L1ParticleMap::kJet);
1182 objectTypes.push_back(L1ParticleMap::kEtMiss);
1193 }
else if (itrig == L1ParticleMap::kTauJet20_ETM20 ||
1194 itrig == L1ParticleMap::kTauJet30_ETM30 ||
1195 itrig == L1ParticleMap::kTauJet30_ETM40) {
1196 objectTypes.push_back(L1ParticleMap::kJet);
1197 objectTypes.push_back(L1ParticleMap::kEtMiss);
1208 }
else if (itrig == L1ParticleMap::kHTT100_ETM30) {
1209 objectTypes.push_back(L1ParticleMap::kEtHad);
1210 objectTypes.push_back(L1ParticleMap::kEtMiss);
1217 }
else if (itrig == L1ParticleMap::kTripleMu3) {
1224 outputMuonRefsTmp, combosTmp);
1225 }
else if (itrig == L1ParticleMap::kTripleIsoEG5) {
1226 objectTypes.push_back(L1ParticleMap::kEM);
1227 objectTypes.push_back(L1ParticleMap::kEM);
1228 objectTypes.push_back(L1ParticleMap::kEM);
1231 decision, outputEmRefsTmp, combosTmp);
1232 }
else if (itrig == L1ParticleMap::kTripleEG10) {
1233 objectTypes.push_back(L1ParticleMap::kEM);
1234 objectTypes.push_back(L1ParticleMap::kEM);
1235 objectTypes.push_back(L1ParticleMap::kEM);
1239 outputEmRefsTmp, combosTmp);
1240 }
else if (itrig == L1ParticleMap::kTripleJet50) {
1241 objectTypes.push_back(L1ParticleMap::kJet);
1242 objectTypes.push_back(L1ParticleMap::kJet);
1243 objectTypes.push_back(L1ParticleMap::kJet);
1246 decision, outputJetRefsTmp, combosTmp);
1247 }
else if (itrig == L1ParticleMap::kTripleTauJet40) {
1248 objectTypes.push_back(L1ParticleMap::kJet);
1249 objectTypes.push_back(L1ParticleMap::kJet);
1250 objectTypes.push_back(L1ParticleMap::kJet);
1253 decision, outputJetRefsTmp, combosTmp);
1254 }
else if (itrig == L1ParticleMap::kDoubleMu3_IsoEG5) {
1257 objectTypes.push_back(L1ParticleMap::kEM);
1262 outputEmRefsTmp, combosTmp);
1263 }
else if (itrig == L1ParticleMap::kDoubleMu3_EG10) {
1266 objectTypes.push_back(L1ParticleMap::kEM);
1269 inputMuonRefsDouble, inputRelaxedEmRefs,
1271 decision, outputMuonRefsTmp, outputEmRefsTmp, combosTmp);
1272 }
else if (itrig == L1ParticleMap::kDoubleIsoEG5_Mu3) {
1273 objectTypes.push_back(L1ParticleMap::kEM);
1274 objectTypes.push_back(L1ParticleMap::kEM);
1280 outputMuonRefsTmp, combosTmp);
1281 }
else if (itrig == L1ParticleMap::kDoubleEG10_Mu3) {
1282 objectTypes.push_back(L1ParticleMap::kEM);
1283 objectTypes.push_back(L1ParticleMap::kEM);
1287 inputRelaxedEmRefs, inputMuonRefsSingle,
1289 decision, outputEmRefsTmp, outputMuonRefsTmp, combosTmp);
1290 }
else if (itrig == L1ParticleMap::kDoubleMu3_HTT200) {
1293 objectTypes.push_back(L1ParticleMap::kEtHad);
1298 outputMuonRefsTmp, combosTmp,
true);
1304 }
else if (itrig == L1ParticleMap::kDoubleIsoEG5_HTT200) {
1305 objectTypes.push_back(L1ParticleMap::kEM);
1306 objectTypes.push_back(L1ParticleMap::kEM);
1307 objectTypes.push_back(L1ParticleMap::kEtHad);
1312 outputEmRefsTmp, combosTmp,
true);
1318 }
else if (itrig == L1ParticleMap::kDoubleEG10_HTT200) {
1319 objectTypes.push_back(L1ParticleMap::kEM);
1320 objectTypes.push_back(L1ParticleMap::kEM);
1321 objectTypes.push_back(L1ParticleMap::kEtHad);
1326 outputEmRefsTmp, combosTmp,
true);
1332 }
else if (itrig == L1ParticleMap::kDoubleJet50_HTT200) {
1333 objectTypes.push_back(L1ParticleMap::kJet);
1334 objectTypes.push_back(L1ParticleMap::kJet);
1335 objectTypes.push_back(L1ParticleMap::kEtHad);
1340 outputJetRefsTmp, combosTmp,
true);
1346 }
else if (itrig == L1ParticleMap::kDoubleTauJet40_HTT200) {
1347 objectTypes.push_back(L1ParticleMap::kJet);
1348 objectTypes.push_back(L1ParticleMap::kJet);
1349 objectTypes.push_back(L1ParticleMap::kEtHad);
1354 outputJetRefsTmp, combosTmp,
true);
1360 }
else if (itrig == L1ParticleMap::kDoubleMu3_ETM20) {
1363 objectTypes.push_back(L1ParticleMap::kEtMiss);
1368 outputMuonRefsTmp, combosTmp,
true);
1374 }
else if (itrig == L1ParticleMap::kDoubleIsoEG5_ETM20) {
1375 objectTypes.push_back(L1ParticleMap::kEM);
1376 objectTypes.push_back(L1ParticleMap::kEM);
1377 objectTypes.push_back(L1ParticleMap::kEtMiss);
1382 outputEmRefsTmp, combosTmp,
true);
1388 }
else if (itrig == L1ParticleMap::kDoubleEG10_ETM20) {
1389 objectTypes.push_back(L1ParticleMap::kEM);
1390 objectTypes.push_back(L1ParticleMap::kEM);
1391 objectTypes.push_back(L1ParticleMap::kEtMiss);
1396 outputEmRefsTmp, combosTmp,
true);
1402 }
else if (itrig == L1ParticleMap::kDoubleJet50_ETM20) {
1403 objectTypes.push_back(L1ParticleMap::kJet);
1404 objectTypes.push_back(L1ParticleMap::kJet);
1405 objectTypes.push_back(L1ParticleMap::kEtMiss);
1410 outputJetRefsTmp, combosTmp,
true);
1416 }
else if (itrig == L1ParticleMap::kDoubleTauJet40_ETM20) {
1417 objectTypes.push_back(L1ParticleMap::kJet);
1418 objectTypes.push_back(L1ParticleMap::kJet);
1419 objectTypes.push_back(L1ParticleMap::kEtMiss);
1424 outputJetRefsTmp, combosTmp,
true);
1430 }
else if (itrig == L1ParticleMap::kQuadJet30) {
1431 objectTypes.push_back(L1ParticleMap::kJet);
1432 objectTypes.push_back(L1ParticleMap::kJet);
1433 objectTypes.push_back(L1ParticleMap::kJet);
1434 objectTypes.push_back(L1ParticleMap::kJet);
1437 decision, outputJetRefsTmp, combosTmp);
1438 }
else if (itrig == L1ParticleMap::kExclusiveDoubleIsoEG4) {
1439 objectTypes.push_back(L1ParticleMap::kEM);
1440 objectTypes.push_back(L1ParticleMap::kEM);
1445 outputEmRefsTmp, combosTmp);
1447 }
else if (itrig == L1ParticleMap::kExclusiveDoubleJet60) {
1448 objectTypes.push_back(L1ParticleMap::kJet);
1449 objectTypes.push_back(L1ParticleMap::kJet);
1451 if (inputJetRefs.size() == 2) {
1453 decision, outputJetRefsTmp, combosTmp);
1455 }
else if (itrig == L1ParticleMap::kExclusiveJet25_Gap_Jet25) {
1456 objectTypes.push_back(L1ParticleMap::kJet);
1457 objectTypes.push_back(L1ParticleMap::kJet);
1459 if (inputJetRefs.size() == 2) {
1461 decision, outputJetRefsTmp, combosTmp);
1463 }
else if (itrig == L1ParticleMap::kIsoEG10_Jet20_ForJet10) {
1464 objectTypes.push_back(L1ParticleMap::kEM);
1465 objectTypes.push_back(L1ParticleMap::kJet);
1473 inputIsoEmRefs, inputCenJetTauJetRefs,
1475 decision, outputEmRefsTmp, outputJetRefsTmp, combosTmp);
1477 }
else if (itrig == L1ParticleMap::kMinBias_HTT10) {
1478 objectTypes.push_back(L1ParticleMap::kEtHad);
1484 }
else if (itrig == L1ParticleMap::kZeroBias) {
1492 L1ParticleMap::L1IndexComboVector combos;
1497 double rand = CLHEP::RandFlat::shoot() * (double)
prescales_[itrig];
1501 outputEmRefs = outputEmRefsTmp;
1502 outputJetRefs = outputJetRefsTmp;
1503 outputMuonRefs = outputMuonRefsTmp;
1513 (L1ParticleMap::L1TriggerType)itrig, decision, objectTypes,
1514 outputEmRefs, outputJetRefs, outputMuonRefs, metRef, combos));
1516 globalDecision = globalDecision || decision;
1517 decisionWord.push_back(decision);
1524 unique_ptr<L1GlobalTriggerReadoutRecord> gtRecord(
1526 gtRecord->setDecision(globalDecision);
1527 gtRecord->setDecisionWord(decisionWord);
1533 template <
class TCollection>
1538 for (
size_t i = 0;
i < handle->size(); ++
i) {
1543 template <
class TCollection>
1546 const double &etThreshold,
1550 for (
size_t i = 0;
i < inputRefs.size(); ++
i) {
1551 if (inputRefs[
i].
get()->et() >= etThreshold) {
1553 outputRefs.push_back(inputRefs[
i]);
1558 template <
class TCollection>
1561 const double &etThreshold,
1565 bool combinedWithGlobalObject)
1569 for (
size_t i = 0;
i + 1 < inputRefs.size(); ++
i) {
1571 if (refi.
get()->et() >= etThreshold) {
1572 for (
size_t j =
i + 1; j < inputRefs.size(); ++j) {
1574 if (refj.
get()->et() >= etThreshold) {
1581 for (
size_t iout = 0; iout < outputRefs.size(); ++iout) {
1582 if (refi == outputRefs[iout]) {
1586 if (refj == outputRefs[iout]) {
1594 iInList = outputRefs.size();
1595 outputRefs.push_back(refi);
1599 jInList = outputRefs.size();
1600 outputRefs.push_back(refj);
1605 combo.push_back(iInList);
1606 combo.push_back(jInList);
1607 if (combinedWithGlobalObject)
1609 combos.push_back(combo);
1616 template <
class TCollection>
1619 const double &etThreshold,
1626 for (
size_t i = 0;
i + 2 < inputRefs.size(); ++
i) {
1628 if (refi.
get()->et() >= etThreshold) {
1629 for (
size_t j =
i + 1; j + 1 < inputRefs.size(); ++j) {
1631 if (refj.
get()->et() >= etThreshold) {
1632 for (
size_t k = j + 1;
k < inputRefs.size(); ++
k) {
1634 if (refk.
get()->et() >= etThreshold) {
1642 for (
size_t iout = 0; iout < outputRefs.size(); ++iout) {
1643 if (refi == outputRefs[iout]) {
1647 if (refj == outputRefs[iout]) {
1651 if (refk == outputRefs[iout]) {
1659 iInList = outputRefs.size();
1660 outputRefs.push_back(refi);
1664 jInList = outputRefs.size();
1665 outputRefs.push_back(refj);
1669 kInList = outputRefs.size();
1670 outputRefs.push_back(refk);
1675 combo.push_back(iInList);
1676 combo.push_back(jInList);
1677 combo.push_back(kInList);
1678 combos.push_back(combo);
1687 template <
class TCollection1,
class TCollection2>
1691 const double &etThreshold1,
1692 const double &etThreshold2,
1700 for (
size_t i = 0;
i + 1 < inputRefs1.size(); ++
i) {
1702 if (refi.
get()->et() >= etThreshold1) {
1703 for (
size_t j =
i + 1; j < inputRefs1.size(); ++j) {
1705 if (refj.
get()->et() >= etThreshold1) {
1706 for (
size_t k = 0;
k < inputRefs2.size(); ++
k) {
1708 if (refk.
get()->et() >= etThreshold2) {
1716 for (
size_t iout = 0; iout < outputRefs1.size(); ++iout) {
1717 if (refi == outputRefs1[iout]) {
1721 if (refj == outputRefs1[iout]) {
1727 for (
size_t kout = 0; kout < outputRefs2.size(); ++kout) {
1728 if (refk == outputRefs2[kout]) {
1736 iInList = outputRefs1.size();
1737 outputRefs1.push_back(refi);
1741 jInList = outputRefs1.size();
1742 outputRefs1.push_back(refj);
1746 kInList = outputRefs2.size();
1747 outputRefs2.push_back(refk);
1752 combo.push_back(iInList);
1753 combo.push_back(jInList);
1754 combo.push_back(kInList);
1755 combos.push_back(combo);
1764 template <
class TCollection>
1767 const double &etThreshold,
1774 for (
size_t i = 0;
i + 3 < inputRefs.size(); ++
i) {
1776 if (refi.
get()->et() >= etThreshold) {
1777 for (
size_t j =
i + 1; j + 2 < inputRefs.size(); ++j) {
1779 if (refj.
get()->et() >= etThreshold) {
1780 for (
size_t k = j + 1;
k + 1 < inputRefs.size(); ++
k) {
1782 if (refk.
get()->et() >= etThreshold) {
1783 for (
size_t p =
k + 1;
p < inputRefs.size(); ++
p) {
1785 if (refp.
get()->et() >= etThreshold) {
1794 for (
size_t iout = 0; iout < outputRefs.size(); ++iout) {
1795 if (refi == outputRefs[iout]) {
1799 if (refj == outputRefs[iout]) {
1803 if (refk == outputRefs[iout]) {
1807 if (refp == outputRefs[iout]) {
1815 iInList = outputRefs.size();
1816 outputRefs.push_back(refi);
1820 jInList = outputRefs.size();
1821 outputRefs.push_back(refj);
1825 kInList = outputRefs.size();
1826 outputRefs.push_back(refk);
1830 pInList = outputRefs.size();
1831 outputRefs.push_back(refp);
1836 combo.push_back(iInList);
1837 combo.push_back(jInList);
1838 combo.push_back(kInList);
1839 combo.push_back(pInList);
1840 combos.push_back(combo);
1851 template <
class TCollection1,
class TCollection2>
1855 const double &etThreshold1,
1856 const double &etThreshold2,
1862 for (
size_t i = 0;
i < inputRefs1.size(); ++
i) {
1864 if (refi.
get()->et() >= etThreshold1) {
1865 for (
size_t j = 0; j < inputRefs2.size(); ++j) {
1868 if (refj.
get()->et() >= etThreshold2) {
1874 for (
size_t iout = 0; iout < outputRefs1.size(); ++iout) {
1875 if (refi == outputRefs1[iout]) {
1881 for (
size_t jout = 0; jout < outputRefs2.size(); ++jout) {
1882 if (refj == outputRefs2[jout]) {
1890 iInList = outputRefs1.size();
1891 outputRefs1.push_back(refi);
1895 jInList = outputRefs2.size();
1896 outputRefs2.push_back(refj);
1901 combo.push_back(iInList);
1902 combo.push_back(jInList);
1903 combos.push_back(combo);
1910 template <
class TCollection>
1914 const double &etThreshold1,
1915 const double &etThreshold2,
1920 for (
size_t i = 0;
i < inputRefs1.size(); ++
i) {
1922 if (refi.
get()->et() >= etThreshold1) {
1923 for (
size_t j = 0; j < inputRefs2.size(); ++j) {
1926 if (refj.
get()->et() >= etThreshold2 && refi != refj) {
1932 for (
size_t iout = 0; iout < outputRefs.size(); ++iout) {
1933 if (refi == outputRefs[iout]) {
1939 for (
size_t jout = 0; jout < outputRefs.size(); ++jout) {
1940 if (refj == outputRefs[jout]) {
1948 iInList = outputRefs.size();
1949 outputRefs.push_back(refi);
1953 jInList = outputRefs.size();
1954 outputRefs.push_back(refj);
1959 combo.push_back(iInList);
1960 combo.push_back(jInList);
1961 combos.push_back(combo);
1971 const double &etThreshold1,
1972 const double &etThreshold2,
1978 for (
size_t i = 0;
i < inputRefs1.size(); ++
i) {
1980 if (refi.
get()->et() >= etThreshold1) {
1981 for (
size_t j = 0; j < inputRefs2.size(); ++j) {
1985 if (refj.
get()->et() >= etThreshold2 &&
1986 (refi.
get()->gctEmCand() ==
nullptr ||
1987 refj.
get()->gctJetCand() ==
nullptr ||
1988 refi.
get()->gctEmCand()->regionId() !=
1989 refj.
get()->gctJetCand()->regionId())) {
1995 for (
size_t iout = 0; iout < outputRefs1.size(); ++iout) {
1996 if (refi == outputRefs1[iout]) {
2002 for (
size_t jout = 0; jout < outputRefs2.size(); ++jout) {
2003 if (refj == outputRefs2[jout]) {
2011 iInList = outputRefs1.size();
2012 outputRefs1.push_back(refi);
2016 jInList = outputRefs2.size();
2017 outputRefs2.push_back(refj);
2022 combo.push_back(iInList);
2023 combo.push_back(jInList);
2024 combos.push_back(combo);
2034 const double &etThreshold,
2041 for (
size_t i = 0;
i + 1 < inputRefs.size(); ++
i) {
2043 if (refi.
get()->et() >= etThreshold) {
2044 for (
size_t j =
i + 1; j < inputRefs.size(); ++j) {
2046 if ((refj.
get()->et() >= etThreshold) &&
2047 (((refi.
get()->eta() < 0.) && (refj.
get()->eta() > 0.)) ||
2048 ((refi.
get()->eta() > 0.) && (refj.
get()->eta() < 0.)))) {
2055 for (
size_t iout = 0; iout < outputRefs.size(); ++iout) {
2056 if (refi == outputRefs[iout]) {
2060 if (refj == outputRefs[iout]) {
2068 iInList = outputRefs.size();
2069 outputRefs.push_back(refi);
2073 jInList = outputRefs.size();
2074 outputRefs.push_back(refj);
2079 combo.push_back(iInList);
2080 combo.push_back(jInList);
2081 combos.push_back(combo);
2091 const double &etThreshold,
2097 for (
size_t k = 0;
k + 1 < inputRefs.size(); ++
k) {
2099 double etak = refk.
get()->eta();
2101 (refk.
get()->et() >= etThreshold)) {
2102 for (
size_t l =
k + 1;
l < inputRefs.size(); ++
l) {
2104 double etal = refl.
get()->eta();
2106 (refl.
get()->et() >= etThreshold) &&
2107 ((etak > 0 && etal < 0) || (etak < 0 && etal > 0))) {
2119 const double &etThreshold1,
2120 const double &etThreshold2,
2125 if (inputRefs1.size() == 2) {
2127 if (!inputRefs2.empty()) {
2128 for (
size_t j = 0; j < inputRefs2.size(); ++j) {
2129 if (inputRefs2[j].
get()->gctJetCand()->regionId() ==
2130 inputRefs1[0].get()->gctEmCand()->regionId())
2132 if (inputRefs2[j].
get()->gctJetCand()->regionId() ==
2133 inputRefs1[1].get()->gctEmCand()->regionId())
2135 if (inputRefs2[j].
get()->et() > etThreshold2) {
2145 outputRefs1, combos);
edm::InputTag cenJetSource_
edm::InputTag tauJetSource_
T getParameter(std::string const &) const
edm::InputTag forJetSource_
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)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
std::pair< double, double > doubleThresholds_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
void evaluateSingleObjectTrigger(const std::vector< edm::Ref< TCollection >> &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection >> &outputRefs)
edm::InputTag nonIsoEmSource_
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)
edm::InputTag muonSource_
void evaluateTripleSameObjectTrigger(const std::vector< edm::Ref< TCollection >> &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection >> &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos)
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)
edm::InputTag isoEmSource_
void evaluateForwardRapidityGap(const l1extra::L1JetParticleVectorRef &inputRefs, const double &etThreshold, bool &decision)
void addToVectorRefs(const edm::Handle< TCollection > &handle, std::vector< edm::Ref< TCollection >> &vectorRefs)
void produce(edm::Event &, const edm::EventSetup &) override
static const int kDefault
U second(std::pair< T, U > const &p)
std::vector< unsigned int > L1IndexCombo
std::vector< L1IndexCombo > L1IndexComboVector
int prescaleCounters_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
double singleThresholds_[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)
T const * get() const
Returns C++ pointer to the item.
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
~L1ExtraParticleMapProd() override
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)
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)
edm::InputTag htMissSource_
void evaluateQuadSameObjectTrigger(const std::vector< edm::Ref< TCollection >> &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection >> &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos)
int prescales_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
edm::InputTag etMissSource_
const double & etTotal() const
L1ExtraParticleMapProd(const edm::ParameterSet &)
void evaluateJetGapJetTrigger(const l1extra::L1JetParticleVectorRef &inputRefs, const double &etThreshold, bool &decision, l1extra::L1JetParticleVectorRef &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos)