27 #include "CLHEP/Random/RandFlat.h"
44 : muonSource_( iConfig.getParameter< edm::InputTag >(
46 isoEmSource_( iConfig.getParameter< edm::InputTag >(
47 "isolatedEmSource" ) ),
48 nonIsoEmSource_( iConfig.getParameter< edm::InputTag >(
49 "nonIsolatedEmSource" ) ),
50 cenJetSource_( iConfig.getParameter< edm::InputTag >(
51 "centralJetSource" ) ),
52 forJetSource_( iConfig.getParameter< edm::InputTag >(
53 "forwardJetSource" ) ),
54 tauJetSource_( iConfig.getParameter< edm::InputTag >(
56 etMissSource_( iConfig.getParameter< edm::InputTag >(
58 htMissSource_( iConfig.getParameter< edm::InputTag >(
61 using namespace l1extra ;
64 produces< L1ParticleMapCollection >() ;
65 produces< L1GlobalTriggerReadoutRecord >();
68 for(
int i = 0 ;
i < L1ParticleMap::kNumOfL1TriggerTypes ; ++
i )
80 iConfig.
getParameter<
double >(
"L1_SingleMu3_thresh" ) ;
84 iConfig.
getParameter<
double >(
"L1_SingleMu5_thresh" ) ;
88 iConfig.
getParameter<
double >(
"L1_SingleMu7_thresh" ) ;
92 iConfig.
getParameter<
double >(
"L1_SingleMu10_thresh" ) ;
94 iConfig.
getParameter<
int >(
"L1_SingleMu10_prescale" ) ;
96 iConfig.
getParameter<
double >(
"L1_SingleMu14_thresh" ) ;
98 iConfig.
getParameter<
int >(
"L1_SingleMu14_prescale" ) ;
100 iConfig.
getParameter<
double >(
"L1_SingleMu20_thresh" ) ;
102 iConfig.
getParameter<
int >(
"L1_SingleMu20_prescale" ) ;
104 iConfig.
getParameter<
double >(
"L1_SingleMu25_thresh" ) ;
106 iConfig.
getParameter<
int >(
"L1_SingleMu25_prescale" ) ;
109 iConfig.
getParameter<
double >(
"L1_SingleIsoEG5_thresh" ) ;
111 iConfig.
getParameter<
int >(
"L1_SingleIsoEG5_prescale" ) ;
113 iConfig.
getParameter<
double >(
"L1_SingleIsoEG8_thresh" ) ;
115 iConfig.
getParameter<
int >(
"L1_SingleIsoEG8_prescale" ) ;
117 iConfig.
getParameter<
double >(
"L1_SingleIsoEG10_thresh" ) ;
119 iConfig.
getParameter<
int >(
"L1_SingleIsoEG10_prescale" ) ;
121 iConfig.
getParameter<
double >(
"L1_SingleIsoEG12_thresh" ) ;
123 iConfig.
getParameter<
int >(
"L1_SingleIsoEG12_prescale" ) ;
125 iConfig.
getParameter<
double >(
"L1_SingleIsoEG15_thresh" ) ;
127 iConfig.
getParameter<
int >(
"L1_SingleIsoEG15_prescale" ) ;
129 iConfig.
getParameter<
double >(
"L1_SingleIsoEG20_thresh" ) ;
131 iConfig.
getParameter<
int >(
"L1_SingleIsoEG20_prescale" ) ;
133 iConfig.
getParameter<
double >(
"L1_SingleIsoEG25_thresh" ) ;
135 iConfig.
getParameter<
int >(
"L1_SingleIsoEG25_prescale" ) ;
138 iConfig.
getParameter<
double >(
"L1_SingleEG5_thresh" ) ;
140 iConfig.
getParameter<
int >(
"L1_SingleEG5_prescale" ) ;
142 iConfig.
getParameter<
double >(
"L1_SingleEG8_thresh" ) ;
144 iConfig.
getParameter<
int >(
"L1_SingleEG8_prescale" ) ;
146 iConfig.
getParameter<
double >(
"L1_SingleEG10_thresh" ) ;
148 iConfig.
getParameter<
int >(
"L1_SingleEG10_prescale" ) ;
150 iConfig.
getParameter<
double >(
"L1_SingleEG12_thresh" ) ;
152 iConfig.
getParameter<
int >(
"L1_SingleEG12_prescale" ) ;
154 iConfig.
getParameter<
double >(
"L1_SingleEG15_thresh" ) ;
156 iConfig.
getParameter<
int >(
"L1_SingleEG15_prescale" ) ;
158 iConfig.
getParameter<
double >(
"L1_SingleEG20_thresh" ) ;
160 iConfig.
getParameter<
int >(
"L1_SingleEG20_prescale" ) ;
162 iConfig.
getParameter<
double >(
"L1_SingleEG25_thresh" ) ;
164 iConfig.
getParameter<
int >(
"L1_SingleEG25_prescale" ) ;
167 iConfig.
getParameter<
double >(
"L1_SingleJet15_thresh" ) ;
169 iConfig.
getParameter<
int >(
"L1_SingleJet15_prescale" ) ;
171 iConfig.
getParameter<
double >(
"L1_SingleJet20_thresh" ) ;
173 iConfig.
getParameter<
int >(
"L1_SingleJet20_prescale" ) ;
175 iConfig.
getParameter<
double >(
"L1_SingleJet30_thresh" ) ;
177 iConfig.
getParameter<
int >(
"L1_SingleJet30_prescale" ) ;
179 iConfig.
getParameter<
double >(
"L1_SingleJet50_thresh" ) ;
181 iConfig.
getParameter<
int >(
"L1_SingleJet50_prescale" ) ;
183 iConfig.
getParameter<
double >(
"L1_SingleJet70_thresh" ) ;
185 iConfig.
getParameter<
int >(
"L1_SingleJet70_prescale" ) ;
187 iConfig.
getParameter<
double >(
"L1_SingleJet100_thresh" ) ;
189 iConfig.
getParameter<
int >(
"L1_SingleJet100_prescale" ) ;
191 iConfig.
getParameter<
double >(
"L1_SingleJet150_thresh" ) ;
193 iConfig.
getParameter<
int >(
"L1_SingleJet150_prescale" ) ;
195 iConfig.
getParameter<
double >(
"L1_SingleJet200_thresh" ) ;
197 iConfig.
getParameter<
int >(
"L1_SingleJet200_prescale" ) ;
200 iConfig.
getParameter<
double >(
"L1_SingleTauJet10_thresh" ) ;
201 prescales_[ L1ParticleMap::kSingleTauJet10 ] =
202 iConfig.
getParameter<
int >(
"L1_SingleTauJet10_prescale" ) ;
204 iConfig.
getParameter<
double >(
"L1_SingleTauJet20_thresh" ) ;
205 prescales_[ L1ParticleMap::kSingleTauJet20 ] =
206 iConfig.
getParameter<
int >(
"L1_SingleTauJet20_prescale" ) ;
208 iConfig.
getParameter<
double >(
"L1_SingleTauJet30_thresh" ) ;
209 prescales_[ L1ParticleMap::kSingleTauJet30 ] =
210 iConfig.
getParameter<
int >(
"L1_SingleTauJet30_prescale" ) ;
212 iConfig.
getParameter<
double >(
"L1_SingleTauJet35_thresh" ) ;
213 prescales_[ L1ParticleMap::kSingleTauJet35 ] =
214 iConfig.
getParameter<
int >(
"L1_SingleTauJet35_prescale" ) ;
216 iConfig.
getParameter<
double >(
"L1_SingleTauJet40_thresh" ) ;
217 prescales_[ L1ParticleMap::kSingleTauJet40 ] =
218 iConfig.
getParameter<
int >(
"L1_SingleTauJet40_prescale" ) ;
220 iConfig.
getParameter<
double >(
"L1_SingleTauJet60_thresh" ) ;
221 prescales_[ L1ParticleMap::kSingleTauJet60 ] =
222 iConfig.
getParameter<
int >(
"L1_SingleTauJet60_prescale" ) ;
224 iConfig.
getParameter<
double >(
"L1_SingleTauJet80_thresh" ) ;
225 prescales_[ L1ParticleMap::kSingleTauJet80 ] =
226 iConfig.
getParameter<
int >(
"L1_SingleTauJet80_prescale" ) ;
228 iConfig.
getParameter<
double >(
"L1_SingleTauJet100_thresh" ) ;
229 prescales_[ L1ParticleMap::kSingleTauJet100 ] =
230 iConfig.
getParameter<
int >(
"L1_SingleTauJet100_prescale" ) ;
294 iConfig.
getParameter<
double >(
"L1_DoubleMu3_thresh" ) ;
296 iConfig.
getParameter<
int >(
"L1_DoubleMu3_prescale" ) ;
299 iConfig.
getParameter<
double >(
"L1_DoubleIsoEG8_thresh" ) ;
301 iConfig.
getParameter<
int >(
"L1_DoubleIsoEG8_prescale" ) ;
303 iConfig.
getParameter<
double >(
"L1_DoubleIsoEG10_thresh" ) ;
305 iConfig.
getParameter<
int >(
"L1_DoubleIsoEG10_prescale" ) ;
308 iConfig.
getParameter<
double >(
"L1_DoubleEG5_thresh" ) ;
310 iConfig.
getParameter<
int >(
"L1_DoubleEG5_prescale" ) ;
312 iConfig.
getParameter<
double >(
"L1_DoubleEG10_thresh" ) ;
314 iConfig.
getParameter<
int >(
"L1_DoubleEG10_prescale" ) ;
316 iConfig.
getParameter<
double >(
"L1_DoubleEG15_thresh" ) ;
318 iConfig.
getParameter<
int >(
"L1_DoubleEG15_prescale" ) ;
321 iConfig.
getParameter<
double >(
"L1_DoubleJet70_thresh" ) ;
323 iConfig.
getParameter<
int >(
"L1_DoubleJet70_prescale" ) ;
325 iConfig.
getParameter<
double >(
"L1_DoubleJet100_thresh" ) ;
327 iConfig.
getParameter<
int >(
"L1_DoubleJet100_prescale" ) ;
330 iConfig.
getParameter<
double >(
"L1_DoubleTauJet20_thresh" ) ;
331 prescales_[ L1ParticleMap::kDoubleTauJet20 ] =
332 iConfig.
getParameter<
int >(
"L1_DoubleTauJet20_prescale" ) ;
334 iConfig.
getParameter<
double >(
"L1_DoubleTauJet30_thresh" ) ;
335 prescales_[ L1ParticleMap::kDoubleTauJet30 ] =
336 iConfig.
getParameter<
int >(
"L1_DoubleTauJet30_prescale" ) ;
338 iConfig.
getParameter<
double >(
"L1_DoubleTauJet35_thresh" ) ;
339 prescales_[ L1ParticleMap::kDoubleTauJet35 ] =
340 iConfig.
getParameter<
int >(
"L1_DoubleTauJet35_prescale" ) ;
342 iConfig.
getParameter<
double >(
"L1_DoubleTauJet40_thresh" ) ;
343 prescales_[ L1ParticleMap::kDoubleTauJet40 ] =
344 iConfig.
getParameter<
int >(
"L1_DoubleTauJet40_prescale" ) ;
349 iConfig.
getParameter<
double >(
"L1_Mu3_IsoEG5_thresh1" ) ;
351 iConfig.
getParameter<
double >(
"L1_Mu3_IsoEG5_thresh2" ) ;
353 iConfig.
getParameter<
int >(
"L1_Mu3_IsoEG5_prescale" ) ;
355 iConfig.
getParameter<
double >(
"L1_Mu5_IsoEG10_thresh1" ) ;
357 iConfig.
getParameter<
double >(
"L1_Mu5_IsoEG10_thresh2" ) ;
359 iConfig.
getParameter<
int >(
"L1_Mu5_IsoEG10_prescale" ) ;
362 iConfig.
getParameter<
double >(
"L1_Mu3_EG12_thresh1" ) ;
364 iConfig.
getParameter<
double >(
"L1_Mu3_EG12_thresh2" ) ;
369 iConfig.
getParameter<
double >(
"L1_Mu3_Jet15_thresh1" ) ;
371 iConfig.
getParameter<
double >(
"L1_Mu3_Jet15_thresh2" ) ;
373 iConfig.
getParameter<
int >(
"L1_Mu3_Jet15_prescale" ) ;
375 iConfig.
getParameter<
double >(
"L1_Mu5_Jet15_thresh1" ) ;
377 iConfig.
getParameter<
double >(
"L1_Mu5_Jet15_thresh2" ) ;
379 iConfig.
getParameter<
int >(
"L1_Mu5_Jet15_prescale" ) ;
381 iConfig.
getParameter<
double >(
"L1_Mu3_Jet70_thresh1" ) ;
383 iConfig.
getParameter<
double >(
"L1_Mu3_Jet70_thresh2" ) ;
385 iConfig.
getParameter<
int >(
"L1_Mu3_Jet70_prescale" ) ;
387 iConfig.
getParameter<
double >(
"L1_Mu5_Jet20_thresh1" ) ;
389 iConfig.
getParameter<
double >(
"L1_Mu5_Jet20_thresh2" ) ;
391 iConfig.
getParameter<
int >(
"L1_Mu5_Jet20_prescale" ) ;
394 iConfig.
getParameter<
double >(
"L1_Mu5_TauJet20_thresh1" ) ;
396 iConfig.
getParameter<
double >(
"L1_Mu5_TauJet20_thresh2" ) ;
398 iConfig.
getParameter<
int >(
"L1_Mu5_TauJet20_prescale" ) ;
400 iConfig.
getParameter<
double >(
"L1_Mu5_TauJet30_thresh1" ) ;
402 iConfig.
getParameter<
double >(
"L1_Mu5_TauJet30_thresh2" ) ;
404 iConfig.
getParameter<
int >(
"L1_Mu5_TauJet30_prescale" ) ;
407 iConfig.
getParameter<
double >(
"L1_IsoEG10_EG10_thresh1" ) ;
409 iConfig.
getParameter<
double >(
"L1_IsoEG10_EG10_thresh2" ) ;
411 iConfig.
getParameter<
int >(
"L1_IsoEG10_EG10_prescale" ) ;
414 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet15_thresh1" ) ;
416 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet15_thresh2" ) ;
418 iConfig.
getParameter<
int >(
"L1_IsoEG10_Jet15_prescale" ) ;
420 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet30_thresh1" ) ;
422 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet30_thresh2" ) ;
424 iConfig.
getParameter<
int >(
"L1_IsoEG10_Jet30_prescale" ) ;
426 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet20_thresh1" ) ;
428 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet20_thresh2" ) ;
430 iConfig.
getParameter<
int >(
"L1_IsoEG10_Jet20_prescale" ) ;
432 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet70_thresh1" ) ;
434 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet70_thresh2" ) ;
436 iConfig.
getParameter<
int >(
"L1_IsoEG10_Jet70_prescale" ) ;
439 iConfig.
getParameter<
double >(
"L1_IsoEG10_TauJet20_thresh1" ) ;
441 iConfig.
getParameter<
double >(
"L1_IsoEG10_TauJet20_thresh2" ) ;
442 prescales_[ L1ParticleMap::kIsoEG10_TauJet20 ] =
443 iConfig.
getParameter<
int >(
"L1_IsoEG10_TauJet20_prescale" ) ;
445 iConfig.
getParameter<
double >(
"L1_IsoEG10_TauJet30_thresh1" ) ;
447 iConfig.
getParameter<
double >(
"L1_IsoEG10_TauJet30_thresh2" ) ;
448 prescales_[ L1ParticleMap::kIsoEG10_TauJet30 ] =
449 iConfig.
getParameter<
int >(
"L1_IsoEG10_TauJet30_prescale" ) ;
452 iConfig.
getParameter<
double >(
"L1_EG10_Jet15_thresh1" ) ;
454 iConfig.
getParameter<
double >(
"L1_EG10_Jet15_thresh2" ) ;
456 iConfig.
getParameter<
int >(
"L1_EG10_Jet15_prescale" ) ;
458 iConfig.
getParameter<
double >(
"L1_EG12_Jet20_thresh1" ) ;
460 iConfig.
getParameter<
double >(
"L1_EG12_Jet20_thresh2" ) ;
462 iConfig.
getParameter<
int >(
"L1_EG12_Jet20_prescale" ) ;
464 iConfig.
getParameter<
double >(
"L1_EG12_Jet70_thresh1" ) ;
466 iConfig.
getParameter<
double >(
"L1_EG12_Jet70_thresh2" ) ;
468 iConfig.
getParameter<
int >(
"L1_EG12_Jet70_prescale" ) ;
471 iConfig.
getParameter<
double >(
"L1_EG12_TauJet40_thresh1" ) ;
473 iConfig.
getParameter<
double >(
"L1_EG12_TauJet40_thresh2" ) ;
475 iConfig.
getParameter<
int >(
"L1_EG12_TauJet40_prescale" ) ;
478 iConfig.
getParameter<
double >(
"L1_Jet70_TauJet40_thresh1" ) ;
480 iConfig.
getParameter<
double >(
"L1_Jet70_TauJet40_thresh2" ) ;
481 prescales_[ L1ParticleMap::kJet70_TauJet40 ] =
482 iConfig.
getParameter<
int >(
"L1_Jet70_TauJet40_prescale" ) ;
485 iConfig.
getParameter<
double >(
"L1_Mu3_HTT200_thresh1" ) ;
487 iConfig.
getParameter<
double >(
"L1_Mu3_HTT200_thresh2" ) ;
489 iConfig.
getParameter<
int >(
"L1_Mu3_HTT200_prescale" ) ;
491 iConfig.
getParameter<
double >(
"L1_IsoEG10_HTT200_thresh1" ) ;
493 iConfig.
getParameter<
double >(
"L1_IsoEG10_HTT200_thresh2" ) ;
494 prescales_[ L1ParticleMap::kIsoEG10_HTT200 ] =
495 iConfig.
getParameter<
int >(
"L1_IsoEG10_HTT200_prescale" ) ;
497 iConfig.
getParameter<
double >(
"L1_EG12_HTT200_thresh1" ) ;
499 iConfig.
getParameter<
double >(
"L1_EG12_HTT200_thresh2" ) ;
501 iConfig.
getParameter<
int >(
"L1_EG12_HTT200_prescale" ) ;
503 iConfig.
getParameter<
double >(
"L1_Jet70_HTT200_thresh1" ) ;
505 iConfig.
getParameter<
double >(
"L1_Jet70_HTT200_thresh2" ) ;
507 iConfig.
getParameter<
int >(
"L1_Jet70_HTT200_prescale" ) ;
509 iConfig.
getParameter<
double >(
"L1_TauJet40_HTT200_thresh1" ) ;
511 iConfig.
getParameter<
double >(
"L1_TauJet40_HTT200_thresh2" ) ;
512 prescales_[ L1ParticleMap::kTauJet40_HTT200 ] =
513 iConfig.
getParameter<
int >(
"L1_TauJet40_HTT200_prescale" ) ;
516 iConfig.
getParameter<
double >(
"L1_Mu3_ETM30_thresh1" ) ;
518 iConfig.
getParameter<
double >(
"L1_Mu3_ETM30_thresh2" ) ;
520 iConfig.
getParameter<
int >(
"L1_Mu3_ETM30_prescale" ) ;
522 iConfig.
getParameter<
double >(
"L1_IsoEG10_ETM30_thresh1" ) ;
524 iConfig.
getParameter<
double >(
"L1_IsoEG10_ETM30_thresh2" ) ;
526 iConfig.
getParameter<
int >(
"L1_IsoEG10_ETM30_prescale" ) ;
528 iConfig.
getParameter<
double >(
"L1_EG12_ETM30_thresh1" ) ;
530 iConfig.
getParameter<
double >(
"L1_EG12_ETM30_thresh2" ) ;
532 iConfig.
getParameter<
int >(
"L1_EG12_ETM30_prescale" ) ;
534 iConfig.
getParameter<
double >(
"L1_Jet70_ETM40_thresh1" ) ;
536 iConfig.
getParameter<
double >(
"L1_Jet70_ETM40_thresh2" ) ;
538 iConfig.
getParameter<
int >(
"L1_Jet70_ETM40_prescale" ) ;
541 iConfig.
getParameter<
double >(
"L1_TauJet20_ETM20_thresh1" ) ;
543 iConfig.
getParameter<
double >(
"L1_TauJet20_ETM20_thresh2" ) ;
544 prescales_[ L1ParticleMap::kTauJet20_ETM20 ] =
545 iConfig.
getParameter<
int >(
"L1_TauJet20_ETM20_prescale" ) ;
547 iConfig.
getParameter<
double >(
"L1_TauJet30_ETM30_thresh1" ) ;
549 iConfig.
getParameter<
double >(
"L1_TauJet30_ETM30_thresh2" ) ;
550 prescales_[ L1ParticleMap::kTauJet30_ETM30 ] =
551 iConfig.
getParameter<
int >(
"L1_TauJet30_ETM30_prescale" ) ;
553 iConfig.
getParameter<
double >(
"L1_TauJet30_ETM40_thresh1" ) ;
555 iConfig.
getParameter<
double >(
"L1_TauJet30_ETM40_thresh2" ) ;
556 prescales_[ L1ParticleMap::kTauJet30_ETM40 ] =
557 iConfig.
getParameter<
int >(
"L1_TauJet30_ETM40_prescale" ) ;
560 iConfig.
getParameter<
double >(
"L1_HTT100_ETM30_thresh1" ) ;
562 iConfig.
getParameter<
double >(
"L1_HTT100_ETM30_thresh2" ) ;
564 iConfig.
getParameter<
int >(
"L1_HTT100_ETM30_prescale" ) ;
569 iConfig.
getParameter<
double >(
"L1_TripleMu3_thresh" ) ;
571 iConfig.
getParameter<
int >(
"L1_TripleMu3_prescale" ) ;
573 iConfig.
getParameter<
double >(
"L1_TripleIsoEG5_thresh" ) ;
575 iConfig.
getParameter<
int >(
"L1_TripleIsoEG5_prescale" ) ;
577 iConfig.
getParameter<
double >(
"L1_TripleEG10_thresh" ) ;
579 iConfig.
getParameter<
int >(
"L1_TripleEG10_prescale" ) ;
581 iConfig.
getParameter<
double >(
"L1_TripleJet50_thresh" ) ;
583 iConfig.
getParameter<
int >(
"L1_TripleJet50_prescale" ) ;
585 iConfig.
getParameter<
double >(
"L1_TripleTauJet40_thresh" ) ;
586 prescales_[ L1ParticleMap::kTripleTauJet40 ] =
587 iConfig.
getParameter<
int >(
"L1_TripleTauJet40_prescale" ) ;
592 iConfig.
getParameter<
double >(
"L1_DoubleMu3_IsoEG5_thresh1" ) ;
594 iConfig.
getParameter<
double >(
"L1_DoubleMu3_IsoEG5_thresh2" ) ;
595 prescales_[ L1ParticleMap::kDoubleMu3_IsoEG5 ] =
596 iConfig.
getParameter<
int >(
"L1_DoubleMu3_IsoEG5_prescale" ) ;
598 iConfig.
getParameter<
double >(
"L1_DoubleMu3_EG10_thresh1" ) ;
600 iConfig.
getParameter<
double >(
"L1_DoubleMu3_EG10_thresh2" ) ;
601 prescales_[ L1ParticleMap::kDoubleMu3_EG10 ] =
602 iConfig.
getParameter<
int >(
"L1_DoubleMu3_EG10_prescale" ) ;
604 iConfig.
getParameter<
double >(
"L1_DoubleIsoEG5_Mu3_thresh1" ) ;
606 iConfig.
getParameter<
double >(
"L1_DoubleIsoEG5_Mu3_thresh2" ) ;
607 prescales_[ L1ParticleMap::kDoubleIsoEG5_Mu3 ] =
608 iConfig.
getParameter<
int >(
"L1_DoubleIsoEG5_Mu3_prescale" ) ;
610 iConfig.
getParameter<
double >(
"L1_DoubleEG10_Mu3_thresh1" ) ;
612 iConfig.
getParameter<
double >(
"L1_DoubleEG10_Mu3_thresh2" ) ;
613 prescales_[ L1ParticleMap::kDoubleEG10_Mu3 ] =
614 iConfig.
getParameter<
int >(
"L1_DoubleEG10_Mu3_prescale" ) ;
617 iConfig.
getParameter<
double >(
"L1_DoubleMu3_HTT200_thresh1" ) ;
619 iConfig.
getParameter<
double >(
"L1_DoubleMu3_HTT200_thresh2" ) ;
620 prescales_[ L1ParticleMap::kDoubleMu3_HTT200 ] =
621 iConfig.
getParameter<
int >(
"L1_DoubleMu3_HTT200_prescale" ) ;
623 iConfig.
getParameter<
double >(
"L1_DoubleIsoEG5_HTT200_thresh1" ) ;
625 iConfig.
getParameter<
double >(
"L1_DoubleIsoEG5_HTT200_thresh2" ) ;
626 prescales_[ L1ParticleMap::kDoubleIsoEG5_HTT200 ] =
627 iConfig.
getParameter<
int >(
"L1_DoubleIsoEG5_HTT200_prescale" ) ;
629 iConfig.
getParameter<
double >(
"L1_DoubleEG10_HTT200_thresh1" ) ;
631 iConfig.
getParameter<
double >(
"L1_DoubleEG10_HTT200_thresh2" ) ;
632 prescales_[ L1ParticleMap::kDoubleEG10_HTT200 ] =
633 iConfig.
getParameter<
int >(
"L1_DoubleEG10_HTT200_prescale" ) ;
635 iConfig.
getParameter<
double >(
"L1_DoubleJet50_HTT200_thresh1" ) ;
637 iConfig.
getParameter<
double >(
"L1_DoubleJet50_HTT200_thresh2" ) ;
638 prescales_[ L1ParticleMap::kDoubleJet50_HTT200 ] =
639 iConfig.
getParameter<
int >(
"L1_DoubleJet50_HTT200_prescale" ) ;
641 iConfig.
getParameter<
double >(
"L1_DoubleTauJet40_HTT200_thresh1" ) ;
643 iConfig.
getParameter<
double >(
"L1_DoubleTauJet40_HTT200_thresh2" ) ;
644 prescales_[ L1ParticleMap::kDoubleTauJet40_HTT200 ] =
645 iConfig.
getParameter<
int >(
"L1_DoubleTauJet40_HTT200_prescale" ) ;
648 iConfig.
getParameter<
double >(
"L1_DoubleMu3_ETM20_thresh1" ) ;
650 iConfig.
getParameter<
double >(
"L1_DoubleMu3_ETM20_thresh2" ) ;
651 prescales_[ L1ParticleMap::kDoubleMu3_ETM20 ] =
652 iConfig.
getParameter<
int >(
"L1_DoubleMu3_ETM20_prescale" ) ;
654 iConfig.
getParameter<
double >(
"L1_DoubleIsoEG5_ETM20_thresh1" ) ;
656 iConfig.
getParameter<
double >(
"L1_DoubleIsoEG5_ETM20_thresh2" ) ;
657 prescales_[ L1ParticleMap::kDoubleIsoEG5_ETM20 ] =
658 iConfig.
getParameter<
int >(
"L1_DoubleIsoEG5_ETM20_prescale" ) ;
660 iConfig.
getParameter<
double >(
"L1_DoubleEG10_ETM20_thresh1" ) ;
662 iConfig.
getParameter<
double >(
"L1_DoubleEG10_ETM20_thresh2" ) ;
663 prescales_[ L1ParticleMap::kDoubleEG10_ETM20 ] =
664 iConfig.
getParameter<
int >(
"L1_DoubleEG10_ETM20_prescale" ) ;
666 iConfig.
getParameter<
double >(
"L1_DoubleJet50_ETM20_thresh1" ) ;
668 iConfig.
getParameter<
double >(
"L1_DoubleJet50_ETM20_thresh2" ) ;
669 prescales_[ L1ParticleMap::kDoubleJet50_ETM20 ] =
670 iConfig.
getParameter<
int >(
"L1_DoubleJet50_ETM20_prescale" ) ;
672 iConfig.
getParameter<
double >(
"L1_DoubleTauJet40_ETM20_thresh1" ) ;
674 iConfig.
getParameter<
double >(
"L1_DoubleTauJet40_ETM20_thresh2" ) ;
675 prescales_[ L1ParticleMap::kDoubleTauJet40_ETM20 ] =
676 iConfig.
getParameter<
int >(
"L1_DoubleTauJet40_ETM20_prescale" ) ;
679 iConfig.
getParameter<
double >(
"L1_QuadJet30_thresh" ) ;
681 iConfig.
getParameter<
int >(
"L1_QuadJet30_prescale" ) ;
685 iConfig.
getParameter<
double >(
"L1_ExclusiveDoubleIsoEG4_thresh1" );
687 iConfig.
getParameter<
double >(
"L1_ExclusiveDoubleIsoEG4_thresh2" );
688 prescales_[ L1ParticleMap::kExclusiveDoubleIsoEG4 ] =
689 iConfig.
getParameter<
int >(
"L1_ExclusiveDoubleIsoEG4_prescale" ) ;
691 iConfig.
getParameter<
double >(
"L1_ExclusiveDoubleJet60_thresh" );
692 prescales_[ L1ParticleMap::kExclusiveDoubleJet60 ] =
693 iConfig.
getParameter<
int >(
"L1_ExclusiveDoubleJet60_prescale" ) ;
695 iConfig.
getParameter<
double >(
"L1_ExclusiveJet25_Gap_Jet25_thresh" );
696 prescales_[ L1ParticleMap::kExclusiveJet25_Gap_Jet25 ] =
697 iConfig.
getParameter<
int >(
"L1_ExclusiveJet25_Gap_Jet25_prescale" ) ;
699 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet20_ForJet10_thresh1" ) ;
701 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet20_ForJet10_thresh2" ) ;
703 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet20_ForJet10_thresh3" ) ;
704 prescales_[ L1ParticleMap::kIsoEG10_Jet20_ForJet10 ] =
705 iConfig.
getParameter<
int >(
"L1_IsoEG10_Jet20_ForJet10_prescale" ) ;
708 iConfig.
getParameter<
int >(
"L1_MinBias_HTT10_prescale" ) ;
774 using namespace reco;
775 using namespace l1extra ;
806 double met = metHandle->etMiss() ;
807 double ht = mhtHandle->etTotal() ;
808 double ett = metHandle->etTotal() ;
839 L1MuonParticleCollection::const_iterator muItr = muHandle->begin() ;
840 L1MuonParticleCollection::const_iterator muEnd = muHandle->end() ;
842 for(
size_t i = 0 ; muItr != muEnd ; ++muItr, ++
i )
844 if( !muItr->gmtMuonCand().empty() )
846 unsigned int qual = muItr->gmtMuonCand().quality() ;
853 inputMuonRefsSingle.push_back(
862 inputMuonRefsDouble.push_back(
869 bool globalDecision =
false ;
870 std::vector< bool > decisionWord ;
872 for(
int itrig = 0 ; itrig < L1ParticleMap::kNumOfL1TriggerTypes; ++itrig )
874 bool decision =
false ;
875 std::vector< L1ParticleMap::L1ObjectType > objectTypes ;
880 L1ParticleMap::L1IndexComboVector combosTmp ;
882 if( itrig == L1ParticleMap::kSingleMu3 ||
883 itrig == L1ParticleMap::kSingleMu5 ||
884 itrig == L1ParticleMap::kSingleMu7 ||
885 itrig == L1ParticleMap::kSingleMu10 ||
886 itrig == L1ParticleMap::kSingleMu14 ||
887 itrig == L1ParticleMap::kSingleMu20 ||
888 itrig == L1ParticleMap::kSingleMu25 )
895 outputMuonRefsTmp ) ;
897 else if( itrig == L1ParticleMap::kSingleIsoEG5 ||
898 itrig == L1ParticleMap::kSingleIsoEG8 ||
899 itrig == L1ParticleMap::kSingleIsoEG10 ||
900 itrig == L1ParticleMap::kSingleIsoEG12 ||
901 itrig == L1ParticleMap::kSingleIsoEG15 ||
902 itrig == L1ParticleMap::kSingleIsoEG20 ||
903 itrig == L1ParticleMap::kSingleIsoEG25 )
905 objectTypes.push_back( L1ParticleMap::kEM ) ;
912 else if( itrig == L1ParticleMap::kSingleEG5 ||
913 itrig == L1ParticleMap::kSingleEG8 ||
914 itrig == L1ParticleMap::kSingleEG10 ||
915 itrig == L1ParticleMap::kSingleEG12 ||
916 itrig == L1ParticleMap::kSingleEG15 ||
917 itrig == L1ParticleMap::kSingleEG20 ||
918 itrig == L1ParticleMap::kSingleEG25 )
920 objectTypes.push_back( L1ParticleMap::kEM ) ;
927 else if( itrig == L1ParticleMap::kSingleJet15 ||
928 itrig == L1ParticleMap::kSingleJet20 ||
929 itrig == L1ParticleMap::kSingleJet30 ||
930 itrig == L1ParticleMap::kSingleJet50 ||
931 itrig == L1ParticleMap::kSingleJet70 ||
932 itrig == L1ParticleMap::kSingleJet100 ||
933 itrig == L1ParticleMap::kSingleJet150 ||
934 itrig == L1ParticleMap::kSingleJet200 )
936 objectTypes.push_back( L1ParticleMap::kJet ) ;
943 else if( itrig == L1ParticleMap::kSingleTauJet10 ||
944 itrig == L1ParticleMap::kSingleTauJet20 ||
945 itrig == L1ParticleMap::kSingleTauJet30 ||
946 itrig == L1ParticleMap::kSingleTauJet35 ||
947 itrig == L1ParticleMap::kSingleTauJet40 ||
948 itrig == L1ParticleMap::kSingleTauJet60 ||
949 itrig == L1ParticleMap::kSingleTauJet80 ||
950 itrig == L1ParticleMap::kSingleTauJet100 )
952 objectTypes.push_back( L1ParticleMap::kJet ) ;
959 else if( itrig == L1ParticleMap::kHTT100 ||
960 itrig == L1ParticleMap::kHTT200 ||
961 itrig == L1ParticleMap::kHTT250 ||
962 itrig == L1ParticleMap::kHTT300 ||
963 itrig == L1ParticleMap::kHTT400 ||
964 itrig == L1ParticleMap::kHTT500 )
966 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
974 else if( itrig == L1ParticleMap::kETM10 ||
975 itrig == L1ParticleMap::kETM15 ||
976 itrig == L1ParticleMap::kETM20 ||
977 itrig == L1ParticleMap::kETM30 ||
978 itrig == L1ParticleMap::kETM40 ||
979 itrig == L1ParticleMap::kETM50 ||
980 itrig == L1ParticleMap::kETM60 )
982 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
990 else if( itrig == L1ParticleMap::kETT60 )
992 objectTypes.push_back( L1ParticleMap::kEtTotal ) ;
1000 else if( itrig == L1ParticleMap::kDoubleMu3 )
1011 else if( itrig == L1ParticleMap::kDoubleIsoEG8 ||
1012 itrig == L1ParticleMap::kDoubleIsoEG10 )
1014 objectTypes.push_back( L1ParticleMap::kEM ) ;
1015 objectTypes.push_back( L1ParticleMap::kEM ) ;
1023 else if( itrig == L1ParticleMap::kDoubleEG5 ||
1024 itrig == L1ParticleMap::kDoubleEG10 ||
1025 itrig == L1ParticleMap::kDoubleEG15 )
1027 objectTypes.push_back( L1ParticleMap::kEM ) ;
1028 objectTypes.push_back( L1ParticleMap::kEM ) ;
1036 else if( itrig == L1ParticleMap::kDoubleJet70 ||
1037 itrig == L1ParticleMap::kDoubleJet100 )
1039 objectTypes.push_back( L1ParticleMap::kJet ) ;
1040 objectTypes.push_back( L1ParticleMap::kJet ) ;
1048 else if( itrig == L1ParticleMap::kDoubleTauJet20 ||
1049 itrig == L1ParticleMap::kDoubleTauJet30 ||
1050 itrig == L1ParticleMap::kDoubleTauJet35 ||
1051 itrig == L1ParticleMap::kDoubleTauJet40 )
1053 objectTypes.push_back( L1ParticleMap::kJet ) ;
1054 objectTypes.push_back( L1ParticleMap::kJet ) ;
1062 else if( itrig == L1ParticleMap::kMu3_IsoEG5 ||
1063 itrig == L1ParticleMap::kMu5_IsoEG10 )
1066 objectTypes.push_back( L1ParticleMap::kEM ) ;
1069 inputMuonRefsSingle,
1078 else if( itrig == L1ParticleMap::kMu3_EG12 )
1081 objectTypes.push_back( L1ParticleMap::kEM ) ;
1084 inputMuonRefsSingle,
1093 else if( itrig == L1ParticleMap::kMu3_Jet15 ||
1094 itrig == L1ParticleMap::kMu5_Jet15 ||
1095 itrig == L1ParticleMap::kMu3_Jet70 ||
1096 itrig == L1ParticleMap::kMu5_Jet20 )
1099 objectTypes.push_back( L1ParticleMap::kJet ) ;
1102 inputMuonRefsSingle,
1111 else if( itrig == L1ParticleMap::kMu5_TauJet20 ||
1112 itrig == L1ParticleMap::kMu5_TauJet30 )
1115 objectTypes.push_back( L1ParticleMap::kJet ) ;
1118 inputMuonRefsSingle,
1127 else if( itrig == L1ParticleMap::kIsoEG10_EG10 )
1129 objectTypes.push_back( L1ParticleMap::kEM ) ;
1130 objectTypes.push_back( L1ParticleMap::kEM ) ;
1141 else if( itrig == L1ParticleMap::kIsoEG10_Jet15 ||
1142 itrig == L1ParticleMap::kIsoEG10_Jet30 ||
1143 itrig == L1ParticleMap::kIsoEG10_Jet20 ||
1144 itrig == L1ParticleMap::kIsoEG10_Jet70 )
1146 objectTypes.push_back( L1ParticleMap::kEM ) ;
1147 objectTypes.push_back( L1ParticleMap::kJet ) ;
1159 else if( itrig == L1ParticleMap::kIsoEG10_TauJet20 ||
1160 itrig == L1ParticleMap::kIsoEG10_TauJet30 )
1162 objectTypes.push_back( L1ParticleMap::kEM ) ;
1163 objectTypes.push_back( L1ParticleMap::kJet ) ;
1175 else if( itrig == L1ParticleMap::kEG10_Jet15 ||
1176 itrig == L1ParticleMap::kEG12_Jet20 ||
1177 itrig == L1ParticleMap::kEG12_Jet70 )
1179 objectTypes.push_back( L1ParticleMap::kEM ) ;
1180 objectTypes.push_back( L1ParticleMap::kJet ) ;
1192 else if( itrig == L1ParticleMap::kEG12_TauJet40 )
1194 objectTypes.push_back( L1ParticleMap::kEM ) ;
1195 objectTypes.push_back( L1ParticleMap::kJet ) ;
1207 else if( itrig == L1ParticleMap::kJet70_TauJet40 )
1209 objectTypes.push_back( L1ParticleMap::kJet ) ;
1210 objectTypes.push_back( L1ParticleMap::kJet ) ;
1221 else if( itrig == L1ParticleMap::kMu3_HTT200 )
1224 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1231 outputMuonRefsTmp ) ;
1239 else if( itrig == L1ParticleMap::kIsoEG10_HTT200 )
1241 objectTypes.push_back( L1ParticleMap::kEM ) ;
1242 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1257 else if( itrig == L1ParticleMap::kEG12_HTT200 )
1259 objectTypes.push_back( L1ParticleMap::kEM ) ;
1260 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1275 else if( itrig == L1ParticleMap::kJet70_HTT200 )
1277 objectTypes.push_back( L1ParticleMap::kJet ) ;
1278 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1285 outputJetRefsTmp ) ;
1293 else if( itrig == L1ParticleMap::kTauJet40_HTT200 )
1295 objectTypes.push_back( L1ParticleMap::kJet ) ;
1296 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1303 outputJetRefsTmp ) ;
1311 else if( itrig == L1ParticleMap::kMu3_ETM30 )
1314 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1321 outputMuonRefsTmp ) ;
1329 else if( itrig == L1ParticleMap::kIsoEG10_ETM30 )
1331 objectTypes.push_back( L1ParticleMap::kEM ) ;
1332 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1347 else if( itrig == L1ParticleMap::kEG12_ETM30 )
1349 objectTypes.push_back( L1ParticleMap::kEM ) ;
1350 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1365 else if( itrig == L1ParticleMap::kJet70_ETM40 )
1367 objectTypes.push_back( L1ParticleMap::kJet ) ;
1368 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1375 outputJetRefsTmp ) ;
1383 else if( itrig == L1ParticleMap::kTauJet20_ETM20 ||
1384 itrig == L1ParticleMap::kTauJet30_ETM30 ||
1385 itrig == L1ParticleMap::kTauJet30_ETM40 )
1387 objectTypes.push_back( L1ParticleMap::kJet ) ;
1388 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1395 outputJetRefsTmp ) ;
1403 else if( itrig == L1ParticleMap::kHTT100_ETM30 )
1405 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1406 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1415 else if( itrig == L1ParticleMap::kTripleMu3 )
1427 else if( itrig == L1ParticleMap::kTripleIsoEG5 )
1429 objectTypes.push_back( L1ParticleMap::kEM ) ;
1430 objectTypes.push_back( L1ParticleMap::kEM ) ;
1431 objectTypes.push_back( L1ParticleMap::kEM ) ;
1439 else if( itrig == L1ParticleMap::kTripleEG10 )
1441 objectTypes.push_back( L1ParticleMap::kEM ) ;
1442 objectTypes.push_back( L1ParticleMap::kEM ) ;
1443 objectTypes.push_back( L1ParticleMap::kEM ) ;
1451 else if( itrig == L1ParticleMap::kTripleJet50 )
1453 objectTypes.push_back( L1ParticleMap::kJet ) ;
1454 objectTypes.push_back( L1ParticleMap::kJet ) ;
1455 objectTypes.push_back( L1ParticleMap::kJet ) ;
1463 else if( itrig == L1ParticleMap::kTripleTauJet40 )
1465 objectTypes.push_back( L1ParticleMap::kJet ) ;
1466 objectTypes.push_back( L1ParticleMap::kJet ) ;
1467 objectTypes.push_back( L1ParticleMap::kJet ) ;
1475 else if( itrig == L1ParticleMap::kDoubleMu3_IsoEG5 )
1479 objectTypes.push_back( L1ParticleMap::kEM ) ;
1482 inputMuonRefsDouble,
1491 else if( itrig == L1ParticleMap::kDoubleMu3_EG10 )
1495 objectTypes.push_back( L1ParticleMap::kEM ) ;
1498 inputMuonRefsDouble,
1507 else if( itrig == L1ParticleMap::kDoubleIsoEG5_Mu3 )
1509 objectTypes.push_back( L1ParticleMap::kEM ) ;
1510 objectTypes.push_back( L1ParticleMap::kEM ) ;
1515 inputMuonRefsSingle,
1523 else if( itrig == L1ParticleMap::kDoubleEG10_Mu3 )
1525 objectTypes.push_back( L1ParticleMap::kEM ) ;
1526 objectTypes.push_back( L1ParticleMap::kEM ) ;
1531 inputMuonRefsSingle,
1539 else if( itrig == L1ParticleMap::kDoubleMu3_HTT200 )
1543 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1560 else if( itrig == L1ParticleMap::kDoubleIsoEG5_HTT200 )
1562 objectTypes.push_back( L1ParticleMap::kEM ) ;
1563 objectTypes.push_back( L1ParticleMap::kEM ) ;
1564 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1581 else if( itrig == L1ParticleMap::kDoubleEG10_HTT200 )
1583 objectTypes.push_back( L1ParticleMap::kEM ) ;
1584 objectTypes.push_back( L1ParticleMap::kEM ) ;
1585 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1602 else if( itrig == L1ParticleMap::kDoubleJet50_HTT200 )
1604 objectTypes.push_back( L1ParticleMap::kJet ) ;
1605 objectTypes.push_back( L1ParticleMap::kJet ) ;
1606 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1623 else if( itrig == L1ParticleMap::kDoubleTauJet40_HTT200 )
1625 objectTypes.push_back( L1ParticleMap::kJet ) ;
1626 objectTypes.push_back( L1ParticleMap::kJet ) ;
1627 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1644 else if( itrig == L1ParticleMap::kDoubleMu3_ETM20 )
1648 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1665 else if( itrig == L1ParticleMap::kDoubleIsoEG5_ETM20 )
1667 objectTypes.push_back( L1ParticleMap::kEM ) ;
1668 objectTypes.push_back( L1ParticleMap::kEM ) ;
1669 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1686 else if( itrig == L1ParticleMap::kDoubleEG10_ETM20 )
1688 objectTypes.push_back( L1ParticleMap::kEM ) ;
1689 objectTypes.push_back( L1ParticleMap::kEM ) ;
1690 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1707 else if( itrig == L1ParticleMap::kDoubleJet50_ETM20 )
1709 objectTypes.push_back( L1ParticleMap::kJet ) ;
1710 objectTypes.push_back( L1ParticleMap::kJet ) ;
1711 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1728 else if( itrig == L1ParticleMap::kDoubleTauJet40_ETM20 )
1730 objectTypes.push_back( L1ParticleMap::kJet ) ;
1731 objectTypes.push_back( L1ParticleMap::kJet ) ;
1732 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1749 else if( itrig == L1ParticleMap::kQuadJet30 )
1751 objectTypes.push_back( L1ParticleMap::kJet ) ;
1752 objectTypes.push_back( L1ParticleMap::kJet ) ;
1753 objectTypes.push_back( L1ParticleMap::kJet ) ;
1754 objectTypes.push_back( L1ParticleMap::kJet ) ;
1762 else if( itrig == L1ParticleMap::kExclusiveDoubleIsoEG4 )
1764 objectTypes.push_back( L1ParticleMap::kEM ) ;
1765 objectTypes.push_back( L1ParticleMap::kEM ) ;
1776 else if( itrig == L1ParticleMap::kExclusiveDoubleJet60 )
1778 objectTypes.push_back( L1ParticleMap::kJet ) ;
1779 objectTypes.push_back( L1ParticleMap::kJet ) ;
1781 if( inputJetRefs.size() == 2 )
1790 else if( itrig == L1ParticleMap::kExclusiveJet25_Gap_Jet25 )
1792 objectTypes.push_back( L1ParticleMap::kJet ) ;
1793 objectTypes.push_back( L1ParticleMap::kJet ) ;
1795 if( inputJetRefs.size() == 2 )
1804 else if( itrig == L1ParticleMap::kIsoEG10_Jet20_ForJet10 )
1806 objectTypes.push_back( L1ParticleMap::kEM ) ;
1807 objectTypes.push_back( L1ParticleMap::kJet ) ;
1817 inputCenJetTauJetRefs,
1826 else if( itrig == L1ParticleMap::kMinBias_HTT10 )
1828 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1836 else if( itrig == L1ParticleMap::kZeroBias )
1845 L1ParticleMap::L1IndexComboVector combos ;
1851 double rand = CLHEP::RandFlat::shoot() * ( double )
prescales_[ itrig ] ;
1858 outputEmRefs = outputEmRefsTmp ;
1859 outputJetRefs = outputJetRefsTmp ;
1860 outputMuonRefs = outputMuonRefsTmp ;
1861 metRef = metRefTmp ;
1862 combos = combosTmp ;
1870 ( L1ParticleMap::L1TriggerType ) itrig,
1879 globalDecision = globalDecision || decision ;
1880 decisionWord.push_back( decision ) ;
1884 iEvent.
put( mapColl ) ;
1887 auto_ptr< L1GlobalTriggerReadoutRecord > gtRecord(
1889 gtRecord->setDecision( globalDecision ) ;
1890 gtRecord->setDecisionWord( decisionWord ) ;
1891 iEvent.
put( gtRecord ) ;
1897 template<
class TCollection >
1903 for(
size_t i = 0 ;
i < handle->size() ; ++
i )
1909 template<
class TCollection >
1913 const double& etThreshold,
1917 for(
size_t i = 0 ;
i < inputRefs.size() ; ++
i )
1919 if( inputRefs[
i ].
get()->et() >= etThreshold )
1922 outputRefs.push_back( inputRefs[
i ] ) ;
1927 template<
class TCollection >
1931 const double& etThreshold,
1935 bool combinedWithGlobalObject )
1939 for(
size_t i = 0 ;
i+1 < inputRefs.size() ; ++
i )
1942 if( refi.
get()->et() >= etThreshold )
1944 for(
size_t j =
i+1 ;
j < inputRefs.size() ; ++
j )
1947 if( refj.
get()->et() >= etThreshold )
1955 for(
size_t iout = 0 ; iout < outputRefs.size() ; ++iout )
1957 if( refi == outputRefs[ iout ] )
1962 if( refj == outputRefs[ iout ] )
1972 iInList = outputRefs.size() ;
1973 outputRefs.push_back( refi ) ;
1978 jInList = outputRefs.size() ;
1979 outputRefs.push_back( refj ) ;
1984 combo.push_back( iInList ) ;
1985 combo.push_back( jInList ) ;
1986 if( combinedWithGlobalObject ) combo.push_back( 0 ) ;
1987 combos.push_back( combo ) ;
1995 template<
class TCollection >
1999 const double& etThreshold,
2006 for(
size_t i = 0 ;
i+2 < inputRefs.size() ; ++
i )
2009 if( refi.
get()->et() >= etThreshold )
2011 for(
size_t j =
i+1 ;
j+1 < inputRefs.size() ; ++
j )
2014 if( refj.
get()->et() >= etThreshold )
2016 for(
size_t k =
j+1 ;
k < inputRefs.size() ; ++
k )
2019 if( refk.
get()->et() >= etThreshold )
2028 for(
size_t iout = 0 ; iout < outputRefs.size() ; ++iout )
2030 if( refi == outputRefs[ iout ] )
2035 if( refj == outputRefs[ iout ] )
2040 if( refk == outputRefs[ iout ] )
2050 iInList = outputRefs.size() ;
2051 outputRefs.push_back( refi );
2056 jInList = outputRefs.size() ;
2057 outputRefs.push_back( refj );
2062 kInList = outputRefs.size() ;
2063 outputRefs.push_back( refk );
2068 combo.push_back( iInList ) ;
2069 combo.push_back( jInList ) ;
2070 combo.push_back( kInList ) ;
2071 combos.push_back( combo ) ;
2081 template<
class TCollection1,
class TCollection2 >
2086 const double& etThreshold1,
2087 const double& etThreshold2,
2095 for(
size_t i = 0 ;
i+1 < inputRefs1.size() ; ++
i )
2098 if( refi.
get()->et() >= etThreshold1 )
2100 for(
size_t j =
i+1 ;
j < inputRefs1.size() ; ++
j )
2103 if( refj.
get()->et() >= etThreshold1 )
2105 for(
size_t k = 0 ;
k < inputRefs2.size() ; ++
k )
2108 if( refk.
get()->et() >= etThreshold2 )
2117 for(
size_t iout = 0 ;
2118 iout < outputRefs1.size() ; ++iout )
2120 if( refi == outputRefs1[ iout ] )
2125 if( refj == outputRefs1[ iout ] )
2132 for(
size_t kout = 0 ;
2133 kout < outputRefs2.size() ; ++kout )
2135 if( refk == outputRefs2[ kout ] )
2145 iInList = outputRefs1.size() ;
2146 outputRefs1.push_back( refi );
2151 jInList = outputRefs1.size() ;
2152 outputRefs1.push_back( refj );
2157 kInList = outputRefs2.size() ;
2158 outputRefs2.push_back( refk );
2163 combo.push_back( iInList ) ;
2164 combo.push_back( jInList ) ;
2165 combo.push_back( kInList ) ;
2166 combos.push_back( combo ) ;
2176 template<
class TCollection >
2180 const double& etThreshold,
2187 for(
size_t i = 0 ;
i+3 < inputRefs.size() ; ++
i )
2190 if( refi.
get()->et() >= etThreshold )
2192 for(
size_t j =
i+1 ;
j+2 < inputRefs.size() ; ++
j )
2195 if( refj.
get()->et() >= etThreshold )
2197 for(
size_t k =
j+1 ;
k+1 < inputRefs.size() ; ++
k )
2200 if( refk.
get()->et() >= etThreshold )
2202 for(
size_t p =
k+1 ;
p < inputRefs.size() ; ++
p )
2205 if( refp.
get()->et() >= etThreshold )
2215 for(
size_t iout = 0 ;
2216 iout < outputRefs.size() ; ++iout )
2218 if( refi == outputRefs[ iout ] )
2223 if( refj == outputRefs[ iout ] )
2228 if( refk == outputRefs[ iout ] )
2233 if( refp == outputRefs[ iout ] )
2243 iInList = outputRefs.size() ;
2244 outputRefs.push_back( refi ) ;
2249 jInList = outputRefs.size() ;
2250 outputRefs.push_back( refj ) ;
2255 kInList = outputRefs.size() ;
2256 outputRefs.push_back( refk ) ;
2261 pInList = outputRefs.size() ;
2262 outputRefs.push_back( refp ) ;
2267 combo.push_back( iInList ) ;
2268 combo.push_back( jInList ) ;
2269 combo.push_back( kInList ) ;
2270 combo.push_back( pInList ) ;
2271 combos.push_back( combo ) ;
2283 template<
class TCollection1,
class TCollection2 >
2288 const double& etThreshold1,
2289 const double& etThreshold2,
2295 for(
size_t i = 0 ;
i < inputRefs1.size() ; ++
i )
2298 if( refi.
get()->et() >= etThreshold1 )
2300 for(
size_t j = 0 ;
j < inputRefs2.size() ; ++
j )
2304 if( refj.
get()->et() >= etThreshold2 )
2311 for(
size_t iout = 0 ; iout < outputRefs1.size() ; ++iout )
2313 if( refi == outputRefs1[ iout ] )
2320 for(
size_t jout = 0 ; jout < outputRefs2.size() ; ++jout )
2322 if( refj == outputRefs2[ jout ] )
2332 iInList = outputRefs1.size() ;
2333 outputRefs1.push_back( refi ) ;
2338 jInList = outputRefs2.size() ;
2339 outputRefs2.push_back( refj ) ;
2344 combo.push_back( iInList ) ;
2345 combo.push_back( jInList ) ;
2346 combos.push_back( combo ) ;
2354 template<
class TCollection >
2359 const double& etThreshold1,
2360 const double& etThreshold2,
2365 for(
size_t i = 0 ;
i < inputRefs1.size() ; ++
i )
2368 if( refi.
get()->et() >= etThreshold1 )
2370 for(
size_t j = 0 ;
j < inputRefs2.size() ; ++
j )
2374 if( refj.
get()->et() >= etThreshold2 &&
2382 for(
size_t iout = 0 ; iout < outputRefs.size() ; ++iout )
2384 if( refi == outputRefs[ iout ] )
2391 for(
size_t jout = 0 ; jout < outputRefs.size() ; ++jout )
2393 if( refj == outputRefs[ jout ] )
2403 iInList = outputRefs.size() ;
2404 outputRefs.push_back( refi ) ;
2409 jInList = outputRefs.size() ;
2410 outputRefs.push_back( refj ) ;
2415 combo.push_back( iInList ) ;
2416 combo.push_back( jInList ) ;
2417 combos.push_back( combo ) ;
2428 const double& etThreshold1,
2429 const double& etThreshold2,
2435 for(
size_t i = 0 ;
i < inputRefs1.size() ; ++
i )
2438 if( refi.
get()->et() >= etThreshold1 )
2440 for(
size_t j = 0 ;
j < inputRefs2.size() ; ++
j )
2445 if( refj.
get()->et() >= etThreshold2 &&
2446 ( refi.
get()->gctEmCand() == 0 ||
2447 refj.
get()->gctJetCand() == 0 ||
2448 refi.
get()->gctEmCand()->regionId() !=
2449 refj.
get()->gctJetCand()->regionId() ) )
2456 for(
size_t iout = 0 ; iout < outputRefs1.size() ; ++iout )
2458 if( refi == outputRefs1[ iout ] )
2465 for(
size_t jout = 0 ; jout < outputRefs2.size() ; ++jout )
2467 if( refj == outputRefs2[ jout ] )
2477 iInList = outputRefs1.size() ;
2478 outputRefs1.push_back( refi ) ;
2483 jInList = outputRefs2.size() ;
2484 outputRefs2.push_back( refj ) ;
2489 combo.push_back( iInList ) ;
2490 combo.push_back( jInList ) ;
2491 combos.push_back( combo ) ;
2501 const double& etThreshold,
2508 for(
size_t i = 0 ;
i+1 < inputRefs.size() ; ++
i )
2511 if( refi.
get()->et() >= etThreshold )
2513 for(
size_t j =
i+1 ;
j < inputRefs.size() ; ++
j )
2516 if( ( refj.
get()->et() >= etThreshold ) &&
2517 ( ( ( refi.
get()->eta() < 0. ) && ( refj.
get()->eta() > 0. ) )
2519 ( ( refi.
get()->eta() > 0. ) && ( refj.
get()->eta() < 0. ) )
2529 for(
size_t iout = 0 ; iout < outputRefs.size() ; ++iout )
2531 if( refi == outputRefs[ iout ] )
2536 if( refj == outputRefs[ iout ] )
2546 iInList = outputRefs.size() ;
2547 outputRefs.push_back( refi ) ;
2552 jInList = outputRefs.size() ;
2553 outputRefs.push_back( refj ) ;
2558 combo.push_back( iInList ) ;
2559 combo.push_back( jInList ) ;
2560 combos.push_back( combo ) ;
2572 const double& etThreshold,
2579 for(
size_t k = 0 ;
k+1 < inputRefs.size() ; ++
k )
2582 double etak = refk.
get()->eta();
2584 ( refk.
get()->et() >= etThreshold ) )
2586 for(
size_t l =
k+1 ;
l < inputRefs.size() ; ++
l )
2589 double etal = refl.
get()->eta();
2591 (refl.
get()->et() >= etThreshold ) &&
2592 ((etak>0 && etal<0) || (etak<0 && etal>0)) )
2606 const double& etThreshold1,
2607 const double& etThreshold2,
2612 if ( inputRefs1.size() ==2 )
2615 if (inputRefs2.size()>0)
2617 for(
size_t j = 0 ;
j < inputRefs2.size() ; ++
j )
2619 if(inputRefs2[
j].
get()->gctJetCand()->regionId() ==
2620 inputRefs1[0].get()->gctEmCand()->regionId())
continue;
2621 if(inputRefs2[
j].
get()->gctJetCand()->regionId() ==
2622 inputRefs1[1].get()->gctEmCand()->regionId())
continue;
2623 if(inputRefs2[
j].
get()->et( )> etThreshold2 ) {
2624 decision=
false;
break; }
edm::InputTag cenJetSource_
edm::InputTag tauJetSource_
T getParameter(std::string const &) const
virtual void produce(edm::Event &, const edm::EventSetup &)
edm::InputTag forJetSource_
edm::InputTag nonIsoEmSource_
void evaluateQuadSameObjectTrigger(const std::vector< edm::Ref< TCollection > > &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection > > &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos)
edm::InputTag muonSource_
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)
edm::InputTag isoEmSource_
void evaluateForwardRapidityGap(const l1extra::L1JetParticleVectorRef &inputRefs, const double &etThreshold, bool &decision)
static const int kDefault
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)
U second(std::pair< T, U > const &p)
std::vector< unsigned int > L1IndexCombo
std::vector< L1IndexCombo > L1IndexComboVector
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
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)
int prescaleCounters_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
double singleThresholds_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
~L1ExtraParticleMapProd()
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
std::pair< double, double > doubleThresholds_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
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 evaluateTripleSameObjectTrigger(const std::vector< edm::Ref< TCollection > > &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection > > &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos)
void evaluateSingleObjectTrigger(const std::vector< edm::Ref< TCollection > > &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection > > &outputRefs)
int prescales_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
edm::InputTag etMissSource_
L1ExtraParticleMapProd(const edm::ParameterSet &)
T const * get() const
Returns C++ pointer to the item.
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)
void addToVectorRefs(const edm::Handle< TCollection > &handle, std::vector< edm::Ref< TCollection > > &vectorRefs)
void evaluateJetGapJetTrigger(const l1extra::L1JetParticleVectorRef &inputRefs, const double &etThreshold, bool &decision, l1extra::L1JetParticleVectorRef &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos)