26 #include "CLHEP/Random/RandFlat.h"
43 : muonSource_( iConfig.getParameter< edm::
InputTag >(
45 isoEmSource_( iConfig.getParameter< edm::
InputTag >(
46 "isolatedEmSource" ) ),
47 nonIsoEmSource_( iConfig.getParameter< edm::
InputTag >(
48 "nonIsolatedEmSource" ) ),
49 cenJetSource_( iConfig.getParameter< edm::
InputTag >(
50 "centralJetSource" ) ),
51 forJetSource_( iConfig.getParameter< edm::
InputTag >(
52 "forwardJetSource" ) ),
53 tauJetSource_( iConfig.getParameter< edm::
InputTag >(
55 etMissSource_( iConfig.getParameter< edm::
InputTag >(
57 htMissSource_( iConfig.getParameter< edm::
InputTag >(
60 using namespace l1extra ;
63 produces< L1ParticleMapCollection >() ;
64 produces< L1GlobalTriggerReadoutRecord >();
67 for(
int i = 0 ;
i < L1ParticleMap::kNumOfL1TriggerTypes ; ++
i )
79 iConfig.
getParameter<
double >(
"L1_SingleMu3_thresh" ) ;
83 iConfig.
getParameter<
double >(
"L1_SingleMu5_thresh" ) ;
87 iConfig.
getParameter<
double >(
"L1_SingleMu7_thresh" ) ;
91 iConfig.
getParameter<
double >(
"L1_SingleMu10_thresh" ) ;
93 iConfig.
getParameter<
int >(
"L1_SingleMu10_prescale" ) ;
95 iConfig.
getParameter<
double >(
"L1_SingleMu14_thresh" ) ;
97 iConfig.
getParameter<
int >(
"L1_SingleMu14_prescale" ) ;
99 iConfig.
getParameter<
double >(
"L1_SingleMu20_thresh" ) ;
101 iConfig.
getParameter<
int >(
"L1_SingleMu20_prescale" ) ;
103 iConfig.
getParameter<
double >(
"L1_SingleMu25_thresh" ) ;
105 iConfig.
getParameter<
int >(
"L1_SingleMu25_prescale" ) ;
108 iConfig.
getParameter<
double >(
"L1_SingleIsoEG5_thresh" ) ;
110 iConfig.
getParameter<
int >(
"L1_SingleIsoEG5_prescale" ) ;
112 iConfig.
getParameter<
double >(
"L1_SingleIsoEG8_thresh" ) ;
114 iConfig.
getParameter<
int >(
"L1_SingleIsoEG8_prescale" ) ;
116 iConfig.
getParameter<
double >(
"L1_SingleIsoEG10_thresh" ) ;
118 iConfig.
getParameter<
int >(
"L1_SingleIsoEG10_prescale" ) ;
120 iConfig.
getParameter<
double >(
"L1_SingleIsoEG12_thresh" ) ;
122 iConfig.
getParameter<
int >(
"L1_SingleIsoEG12_prescale" ) ;
124 iConfig.
getParameter<
double >(
"L1_SingleIsoEG15_thresh" ) ;
126 iConfig.
getParameter<
int >(
"L1_SingleIsoEG15_prescale" ) ;
128 iConfig.
getParameter<
double >(
"L1_SingleIsoEG20_thresh" ) ;
130 iConfig.
getParameter<
int >(
"L1_SingleIsoEG20_prescale" ) ;
132 iConfig.
getParameter<
double >(
"L1_SingleIsoEG25_thresh" ) ;
134 iConfig.
getParameter<
int >(
"L1_SingleIsoEG25_prescale" ) ;
137 iConfig.
getParameter<
double >(
"L1_SingleEG5_thresh" ) ;
139 iConfig.
getParameter<
int >(
"L1_SingleEG5_prescale" ) ;
141 iConfig.
getParameter<
double >(
"L1_SingleEG8_thresh" ) ;
143 iConfig.
getParameter<
int >(
"L1_SingleEG8_prescale" ) ;
145 iConfig.
getParameter<
double >(
"L1_SingleEG10_thresh" ) ;
147 iConfig.
getParameter<
int >(
"L1_SingleEG10_prescale" ) ;
149 iConfig.
getParameter<
double >(
"L1_SingleEG12_thresh" ) ;
151 iConfig.
getParameter<
int >(
"L1_SingleEG12_prescale" ) ;
153 iConfig.
getParameter<
double >(
"L1_SingleEG15_thresh" ) ;
155 iConfig.
getParameter<
int >(
"L1_SingleEG15_prescale" ) ;
157 iConfig.
getParameter<
double >(
"L1_SingleEG20_thresh" ) ;
159 iConfig.
getParameter<
int >(
"L1_SingleEG20_prescale" ) ;
161 iConfig.
getParameter<
double >(
"L1_SingleEG25_thresh" ) ;
163 iConfig.
getParameter<
int >(
"L1_SingleEG25_prescale" ) ;
166 iConfig.
getParameter<
double >(
"L1_SingleJet15_thresh" ) ;
168 iConfig.
getParameter<
int >(
"L1_SingleJet15_prescale" ) ;
170 iConfig.
getParameter<
double >(
"L1_SingleJet20_thresh" ) ;
172 iConfig.
getParameter<
int >(
"L1_SingleJet20_prescale" ) ;
174 iConfig.
getParameter<
double >(
"L1_SingleJet30_thresh" ) ;
176 iConfig.
getParameter<
int >(
"L1_SingleJet30_prescale" ) ;
178 iConfig.
getParameter<
double >(
"L1_SingleJet50_thresh" ) ;
180 iConfig.
getParameter<
int >(
"L1_SingleJet50_prescale" ) ;
182 iConfig.
getParameter<
double >(
"L1_SingleJet70_thresh" ) ;
184 iConfig.
getParameter<
int >(
"L1_SingleJet70_prescale" ) ;
186 iConfig.
getParameter<
double >(
"L1_SingleJet100_thresh" ) ;
188 iConfig.
getParameter<
int >(
"L1_SingleJet100_prescale" ) ;
190 iConfig.
getParameter<
double >(
"L1_SingleJet150_thresh" ) ;
192 iConfig.
getParameter<
int >(
"L1_SingleJet150_prescale" ) ;
194 iConfig.
getParameter<
double >(
"L1_SingleJet200_thresh" ) ;
196 iConfig.
getParameter<
int >(
"L1_SingleJet200_prescale" ) ;
199 iConfig.
getParameter<
double >(
"L1_SingleTauJet10_thresh" ) ;
200 prescales_[ L1ParticleMap::kSingleTauJet10 ] =
201 iConfig.
getParameter<
int >(
"L1_SingleTauJet10_prescale" ) ;
203 iConfig.
getParameter<
double >(
"L1_SingleTauJet20_thresh" ) ;
204 prescales_[ L1ParticleMap::kSingleTauJet20 ] =
205 iConfig.
getParameter<
int >(
"L1_SingleTauJet20_prescale" ) ;
207 iConfig.
getParameter<
double >(
"L1_SingleTauJet30_thresh" ) ;
208 prescales_[ L1ParticleMap::kSingleTauJet30 ] =
209 iConfig.
getParameter<
int >(
"L1_SingleTauJet30_prescale" ) ;
211 iConfig.
getParameter<
double >(
"L1_SingleTauJet35_thresh" ) ;
212 prescales_[ L1ParticleMap::kSingleTauJet35 ] =
213 iConfig.
getParameter<
int >(
"L1_SingleTauJet35_prescale" ) ;
215 iConfig.
getParameter<
double >(
"L1_SingleTauJet40_thresh" ) ;
216 prescales_[ L1ParticleMap::kSingleTauJet40 ] =
217 iConfig.
getParameter<
int >(
"L1_SingleTauJet40_prescale" ) ;
219 iConfig.
getParameter<
double >(
"L1_SingleTauJet60_thresh" ) ;
220 prescales_[ L1ParticleMap::kSingleTauJet60 ] =
221 iConfig.
getParameter<
int >(
"L1_SingleTauJet60_prescale" ) ;
223 iConfig.
getParameter<
double >(
"L1_SingleTauJet80_thresh" ) ;
224 prescales_[ L1ParticleMap::kSingleTauJet80 ] =
225 iConfig.
getParameter<
int >(
"L1_SingleTauJet80_prescale" ) ;
227 iConfig.
getParameter<
double >(
"L1_SingleTauJet100_thresh" ) ;
228 prescales_[ L1ParticleMap::kSingleTauJet100 ] =
229 iConfig.
getParameter<
int >(
"L1_SingleTauJet100_prescale" ) ;
293 iConfig.
getParameter<
double >(
"L1_DoubleMu3_thresh" ) ;
295 iConfig.
getParameter<
int >(
"L1_DoubleMu3_prescale" ) ;
298 iConfig.
getParameter<
double >(
"L1_DoubleIsoEG8_thresh" ) ;
300 iConfig.
getParameter<
int >(
"L1_DoubleIsoEG8_prescale" ) ;
302 iConfig.
getParameter<
double >(
"L1_DoubleIsoEG10_thresh" ) ;
304 iConfig.
getParameter<
int >(
"L1_DoubleIsoEG10_prescale" ) ;
307 iConfig.
getParameter<
double >(
"L1_DoubleEG5_thresh" ) ;
309 iConfig.
getParameter<
int >(
"L1_DoubleEG5_prescale" ) ;
311 iConfig.
getParameter<
double >(
"L1_DoubleEG10_thresh" ) ;
313 iConfig.
getParameter<
int >(
"L1_DoubleEG10_prescale" ) ;
315 iConfig.
getParameter<
double >(
"L1_DoubleEG15_thresh" ) ;
317 iConfig.
getParameter<
int >(
"L1_DoubleEG15_prescale" ) ;
320 iConfig.
getParameter<
double >(
"L1_DoubleJet70_thresh" ) ;
322 iConfig.
getParameter<
int >(
"L1_DoubleJet70_prescale" ) ;
324 iConfig.
getParameter<
double >(
"L1_DoubleJet100_thresh" ) ;
326 iConfig.
getParameter<
int >(
"L1_DoubleJet100_prescale" ) ;
329 iConfig.
getParameter<
double >(
"L1_DoubleTauJet20_thresh" ) ;
330 prescales_[ L1ParticleMap::kDoubleTauJet20 ] =
331 iConfig.
getParameter<
int >(
"L1_DoubleTauJet20_prescale" ) ;
333 iConfig.
getParameter<
double >(
"L1_DoubleTauJet30_thresh" ) ;
334 prescales_[ L1ParticleMap::kDoubleTauJet30 ] =
335 iConfig.
getParameter<
int >(
"L1_DoubleTauJet30_prescale" ) ;
337 iConfig.
getParameter<
double >(
"L1_DoubleTauJet35_thresh" ) ;
338 prescales_[ L1ParticleMap::kDoubleTauJet35 ] =
339 iConfig.
getParameter<
int >(
"L1_DoubleTauJet35_prescale" ) ;
341 iConfig.
getParameter<
double >(
"L1_DoubleTauJet40_thresh" ) ;
342 prescales_[ L1ParticleMap::kDoubleTauJet40 ] =
343 iConfig.
getParameter<
int >(
"L1_DoubleTauJet40_prescale" ) ;
348 iConfig.
getParameter<
double >(
"L1_Mu3_IsoEG5_thresh1" ) ;
350 iConfig.
getParameter<
double >(
"L1_Mu3_IsoEG5_thresh2" ) ;
352 iConfig.
getParameter<
int >(
"L1_Mu3_IsoEG5_prescale" ) ;
354 iConfig.
getParameter<
double >(
"L1_Mu5_IsoEG10_thresh1" ) ;
356 iConfig.
getParameter<
double >(
"L1_Mu5_IsoEG10_thresh2" ) ;
358 iConfig.
getParameter<
int >(
"L1_Mu5_IsoEG10_prescale" ) ;
361 iConfig.
getParameter<
double >(
"L1_Mu3_EG12_thresh1" ) ;
363 iConfig.
getParameter<
double >(
"L1_Mu3_EG12_thresh2" ) ;
368 iConfig.
getParameter<
double >(
"L1_Mu3_Jet15_thresh1" ) ;
370 iConfig.
getParameter<
double >(
"L1_Mu3_Jet15_thresh2" ) ;
372 iConfig.
getParameter<
int >(
"L1_Mu3_Jet15_prescale" ) ;
374 iConfig.
getParameter<
double >(
"L1_Mu5_Jet15_thresh1" ) ;
376 iConfig.
getParameter<
double >(
"L1_Mu5_Jet15_thresh2" ) ;
378 iConfig.
getParameter<
int >(
"L1_Mu5_Jet15_prescale" ) ;
380 iConfig.
getParameter<
double >(
"L1_Mu3_Jet70_thresh1" ) ;
382 iConfig.
getParameter<
double >(
"L1_Mu3_Jet70_thresh2" ) ;
384 iConfig.
getParameter<
int >(
"L1_Mu3_Jet70_prescale" ) ;
386 iConfig.
getParameter<
double >(
"L1_Mu5_Jet20_thresh1" ) ;
388 iConfig.
getParameter<
double >(
"L1_Mu5_Jet20_thresh2" ) ;
390 iConfig.
getParameter<
int >(
"L1_Mu5_Jet20_prescale" ) ;
393 iConfig.
getParameter<
double >(
"L1_Mu5_TauJet20_thresh1" ) ;
395 iConfig.
getParameter<
double >(
"L1_Mu5_TauJet20_thresh2" ) ;
397 iConfig.
getParameter<
int >(
"L1_Mu5_TauJet20_prescale" ) ;
399 iConfig.
getParameter<
double >(
"L1_Mu5_TauJet30_thresh1" ) ;
401 iConfig.
getParameter<
double >(
"L1_Mu5_TauJet30_thresh2" ) ;
403 iConfig.
getParameter<
int >(
"L1_Mu5_TauJet30_prescale" ) ;
406 iConfig.
getParameter<
double >(
"L1_IsoEG10_EG10_thresh1" ) ;
408 iConfig.
getParameter<
double >(
"L1_IsoEG10_EG10_thresh2" ) ;
410 iConfig.
getParameter<
int >(
"L1_IsoEG10_EG10_prescale" ) ;
413 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet15_thresh1" ) ;
415 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet15_thresh2" ) ;
417 iConfig.
getParameter<
int >(
"L1_IsoEG10_Jet15_prescale" ) ;
419 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet30_thresh1" ) ;
421 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet30_thresh2" ) ;
423 iConfig.
getParameter<
int >(
"L1_IsoEG10_Jet30_prescale" ) ;
425 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet20_thresh1" ) ;
427 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet20_thresh2" ) ;
429 iConfig.
getParameter<
int >(
"L1_IsoEG10_Jet20_prescale" ) ;
431 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet70_thresh1" ) ;
433 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet70_thresh2" ) ;
435 iConfig.
getParameter<
int >(
"L1_IsoEG10_Jet70_prescale" ) ;
438 iConfig.
getParameter<
double >(
"L1_IsoEG10_TauJet20_thresh1" ) ;
440 iConfig.
getParameter<
double >(
"L1_IsoEG10_TauJet20_thresh2" ) ;
441 prescales_[ L1ParticleMap::kIsoEG10_TauJet20 ] =
442 iConfig.
getParameter<
int >(
"L1_IsoEG10_TauJet20_prescale" ) ;
444 iConfig.
getParameter<
double >(
"L1_IsoEG10_TauJet30_thresh1" ) ;
446 iConfig.
getParameter<
double >(
"L1_IsoEG10_TauJet30_thresh2" ) ;
447 prescales_[ L1ParticleMap::kIsoEG10_TauJet30 ] =
448 iConfig.
getParameter<
int >(
"L1_IsoEG10_TauJet30_prescale" ) ;
451 iConfig.
getParameter<
double >(
"L1_EG10_Jet15_thresh1" ) ;
453 iConfig.
getParameter<
double >(
"L1_EG10_Jet15_thresh2" ) ;
455 iConfig.
getParameter<
int >(
"L1_EG10_Jet15_prescale" ) ;
457 iConfig.
getParameter<
double >(
"L1_EG12_Jet20_thresh1" ) ;
459 iConfig.
getParameter<
double >(
"L1_EG12_Jet20_thresh2" ) ;
461 iConfig.
getParameter<
int >(
"L1_EG12_Jet20_prescale" ) ;
463 iConfig.
getParameter<
double >(
"L1_EG12_Jet70_thresh1" ) ;
465 iConfig.
getParameter<
double >(
"L1_EG12_Jet70_thresh2" ) ;
467 iConfig.
getParameter<
int >(
"L1_EG12_Jet70_prescale" ) ;
470 iConfig.
getParameter<
double >(
"L1_EG12_TauJet40_thresh1" ) ;
472 iConfig.
getParameter<
double >(
"L1_EG12_TauJet40_thresh2" ) ;
474 iConfig.
getParameter<
int >(
"L1_EG12_TauJet40_prescale" ) ;
477 iConfig.
getParameter<
double >(
"L1_Jet70_TauJet40_thresh1" ) ;
479 iConfig.
getParameter<
double >(
"L1_Jet70_TauJet40_thresh2" ) ;
480 prescales_[ L1ParticleMap::kJet70_TauJet40 ] =
481 iConfig.
getParameter<
int >(
"L1_Jet70_TauJet40_prescale" ) ;
484 iConfig.
getParameter<
double >(
"L1_Mu3_HTT200_thresh1" ) ;
486 iConfig.
getParameter<
double >(
"L1_Mu3_HTT200_thresh2" ) ;
488 iConfig.
getParameter<
int >(
"L1_Mu3_HTT200_prescale" ) ;
490 iConfig.
getParameter<
double >(
"L1_IsoEG10_HTT200_thresh1" ) ;
492 iConfig.
getParameter<
double >(
"L1_IsoEG10_HTT200_thresh2" ) ;
493 prescales_[ L1ParticleMap::kIsoEG10_HTT200 ] =
494 iConfig.
getParameter<
int >(
"L1_IsoEG10_HTT200_prescale" ) ;
496 iConfig.
getParameter<
double >(
"L1_EG12_HTT200_thresh1" ) ;
498 iConfig.
getParameter<
double >(
"L1_EG12_HTT200_thresh2" ) ;
500 iConfig.
getParameter<
int >(
"L1_EG12_HTT200_prescale" ) ;
502 iConfig.
getParameter<
double >(
"L1_Jet70_HTT200_thresh1" ) ;
504 iConfig.
getParameter<
double >(
"L1_Jet70_HTT200_thresh2" ) ;
506 iConfig.
getParameter<
int >(
"L1_Jet70_HTT200_prescale" ) ;
508 iConfig.
getParameter<
double >(
"L1_TauJet40_HTT200_thresh1" ) ;
510 iConfig.
getParameter<
double >(
"L1_TauJet40_HTT200_thresh2" ) ;
511 prescales_[ L1ParticleMap::kTauJet40_HTT200 ] =
512 iConfig.
getParameter<
int >(
"L1_TauJet40_HTT200_prescale" ) ;
515 iConfig.
getParameter<
double >(
"L1_Mu3_ETM30_thresh1" ) ;
517 iConfig.
getParameter<
double >(
"L1_Mu3_ETM30_thresh2" ) ;
519 iConfig.
getParameter<
int >(
"L1_Mu3_ETM30_prescale" ) ;
521 iConfig.
getParameter<
double >(
"L1_IsoEG10_ETM30_thresh1" ) ;
523 iConfig.
getParameter<
double >(
"L1_IsoEG10_ETM30_thresh2" ) ;
525 iConfig.
getParameter<
int >(
"L1_IsoEG10_ETM30_prescale" ) ;
527 iConfig.
getParameter<
double >(
"L1_EG12_ETM30_thresh1" ) ;
529 iConfig.
getParameter<
double >(
"L1_EG12_ETM30_thresh2" ) ;
531 iConfig.
getParameter<
int >(
"L1_EG12_ETM30_prescale" ) ;
533 iConfig.
getParameter<
double >(
"L1_Jet70_ETM40_thresh1" ) ;
535 iConfig.
getParameter<
double >(
"L1_Jet70_ETM40_thresh2" ) ;
537 iConfig.
getParameter<
int >(
"L1_Jet70_ETM40_prescale" ) ;
540 iConfig.
getParameter<
double >(
"L1_TauJet20_ETM20_thresh1" ) ;
542 iConfig.
getParameter<
double >(
"L1_TauJet20_ETM20_thresh2" ) ;
543 prescales_[ L1ParticleMap::kTauJet20_ETM20 ] =
544 iConfig.
getParameter<
int >(
"L1_TauJet20_ETM20_prescale" ) ;
546 iConfig.
getParameter<
double >(
"L1_TauJet30_ETM30_thresh1" ) ;
548 iConfig.
getParameter<
double >(
"L1_TauJet30_ETM30_thresh2" ) ;
549 prescales_[ L1ParticleMap::kTauJet30_ETM30 ] =
550 iConfig.
getParameter<
int >(
"L1_TauJet30_ETM30_prescale" ) ;
552 iConfig.
getParameter<
double >(
"L1_TauJet30_ETM40_thresh1" ) ;
554 iConfig.
getParameter<
double >(
"L1_TauJet30_ETM40_thresh2" ) ;
555 prescales_[ L1ParticleMap::kTauJet30_ETM40 ] =
556 iConfig.
getParameter<
int >(
"L1_TauJet30_ETM40_prescale" ) ;
559 iConfig.
getParameter<
double >(
"L1_HTT100_ETM30_thresh1" ) ;
561 iConfig.
getParameter<
double >(
"L1_HTT100_ETM30_thresh2" ) ;
563 iConfig.
getParameter<
int >(
"L1_HTT100_ETM30_prescale" ) ;
568 iConfig.
getParameter<
double >(
"L1_TripleMu3_thresh" ) ;
570 iConfig.
getParameter<
int >(
"L1_TripleMu3_prescale" ) ;
572 iConfig.
getParameter<
double >(
"L1_TripleIsoEG5_thresh" ) ;
574 iConfig.
getParameter<
int >(
"L1_TripleIsoEG5_prescale" ) ;
576 iConfig.
getParameter<
double >(
"L1_TripleEG10_thresh" ) ;
578 iConfig.
getParameter<
int >(
"L1_TripleEG10_prescale" ) ;
580 iConfig.
getParameter<
double >(
"L1_TripleJet50_thresh" ) ;
582 iConfig.
getParameter<
int >(
"L1_TripleJet50_prescale" ) ;
584 iConfig.
getParameter<
double >(
"L1_TripleTauJet40_thresh" ) ;
585 prescales_[ L1ParticleMap::kTripleTauJet40 ] =
586 iConfig.
getParameter<
int >(
"L1_TripleTauJet40_prescale" ) ;
591 iConfig.
getParameter<
double >(
"L1_DoubleMu3_IsoEG5_thresh1" ) ;
593 iConfig.
getParameter<
double >(
"L1_DoubleMu3_IsoEG5_thresh2" ) ;
594 prescales_[ L1ParticleMap::kDoubleMu3_IsoEG5 ] =
595 iConfig.
getParameter<
int >(
"L1_DoubleMu3_IsoEG5_prescale" ) ;
597 iConfig.
getParameter<
double >(
"L1_DoubleMu3_EG10_thresh1" ) ;
599 iConfig.
getParameter<
double >(
"L1_DoubleMu3_EG10_thresh2" ) ;
600 prescales_[ L1ParticleMap::kDoubleMu3_EG10 ] =
601 iConfig.
getParameter<
int >(
"L1_DoubleMu3_EG10_prescale" ) ;
603 iConfig.
getParameter<
double >(
"L1_DoubleIsoEG5_Mu3_thresh1" ) ;
605 iConfig.
getParameter<
double >(
"L1_DoubleIsoEG5_Mu3_thresh2" ) ;
606 prescales_[ L1ParticleMap::kDoubleIsoEG5_Mu3 ] =
607 iConfig.
getParameter<
int >(
"L1_DoubleIsoEG5_Mu3_prescale" ) ;
609 iConfig.
getParameter<
double >(
"L1_DoubleEG10_Mu3_thresh1" ) ;
611 iConfig.
getParameter<
double >(
"L1_DoubleEG10_Mu3_thresh2" ) ;
612 prescales_[ L1ParticleMap::kDoubleEG10_Mu3 ] =
613 iConfig.
getParameter<
int >(
"L1_DoubleEG10_Mu3_prescale" ) ;
616 iConfig.
getParameter<
double >(
"L1_DoubleMu3_HTT200_thresh1" ) ;
618 iConfig.
getParameter<
double >(
"L1_DoubleMu3_HTT200_thresh2" ) ;
619 prescales_[ L1ParticleMap::kDoubleMu3_HTT200 ] =
620 iConfig.
getParameter<
int >(
"L1_DoubleMu3_HTT200_prescale" ) ;
622 iConfig.
getParameter<
double >(
"L1_DoubleIsoEG5_HTT200_thresh1" ) ;
624 iConfig.
getParameter<
double >(
"L1_DoubleIsoEG5_HTT200_thresh2" ) ;
625 prescales_[ L1ParticleMap::kDoubleIsoEG5_HTT200 ] =
626 iConfig.
getParameter<
int >(
"L1_DoubleIsoEG5_HTT200_prescale" ) ;
628 iConfig.
getParameter<
double >(
"L1_DoubleEG10_HTT200_thresh1" ) ;
630 iConfig.
getParameter<
double >(
"L1_DoubleEG10_HTT200_thresh2" ) ;
631 prescales_[ L1ParticleMap::kDoubleEG10_HTT200 ] =
632 iConfig.
getParameter<
int >(
"L1_DoubleEG10_HTT200_prescale" ) ;
634 iConfig.
getParameter<
double >(
"L1_DoubleJet50_HTT200_thresh1" ) ;
636 iConfig.
getParameter<
double >(
"L1_DoubleJet50_HTT200_thresh2" ) ;
637 prescales_[ L1ParticleMap::kDoubleJet50_HTT200 ] =
638 iConfig.
getParameter<
int >(
"L1_DoubleJet50_HTT200_prescale" ) ;
640 iConfig.
getParameter<
double >(
"L1_DoubleTauJet40_HTT200_thresh1" ) ;
642 iConfig.
getParameter<
double >(
"L1_DoubleTauJet40_HTT200_thresh2" ) ;
643 prescales_[ L1ParticleMap::kDoubleTauJet40_HTT200 ] =
644 iConfig.
getParameter<
int >(
"L1_DoubleTauJet40_HTT200_prescale" ) ;
647 iConfig.
getParameter<
double >(
"L1_DoubleMu3_ETM20_thresh1" ) ;
649 iConfig.
getParameter<
double >(
"L1_DoubleMu3_ETM20_thresh2" ) ;
650 prescales_[ L1ParticleMap::kDoubleMu3_ETM20 ] =
651 iConfig.
getParameter<
int >(
"L1_DoubleMu3_ETM20_prescale" ) ;
653 iConfig.
getParameter<
double >(
"L1_DoubleIsoEG5_ETM20_thresh1" ) ;
655 iConfig.
getParameter<
double >(
"L1_DoubleIsoEG5_ETM20_thresh2" ) ;
656 prescales_[ L1ParticleMap::kDoubleIsoEG5_ETM20 ] =
657 iConfig.
getParameter<
int >(
"L1_DoubleIsoEG5_ETM20_prescale" ) ;
659 iConfig.
getParameter<
double >(
"L1_DoubleEG10_ETM20_thresh1" ) ;
661 iConfig.
getParameter<
double >(
"L1_DoubleEG10_ETM20_thresh2" ) ;
662 prescales_[ L1ParticleMap::kDoubleEG10_ETM20 ] =
663 iConfig.
getParameter<
int >(
"L1_DoubleEG10_ETM20_prescale" ) ;
665 iConfig.
getParameter<
double >(
"L1_DoubleJet50_ETM20_thresh1" ) ;
667 iConfig.
getParameter<
double >(
"L1_DoubleJet50_ETM20_thresh2" ) ;
668 prescales_[ L1ParticleMap::kDoubleJet50_ETM20 ] =
669 iConfig.
getParameter<
int >(
"L1_DoubleJet50_ETM20_prescale" ) ;
671 iConfig.
getParameter<
double >(
"L1_DoubleTauJet40_ETM20_thresh1" ) ;
673 iConfig.
getParameter<
double >(
"L1_DoubleTauJet40_ETM20_thresh2" ) ;
674 prescales_[ L1ParticleMap::kDoubleTauJet40_ETM20 ] =
675 iConfig.
getParameter<
int >(
"L1_DoubleTauJet40_ETM20_prescale" ) ;
678 iConfig.
getParameter<
double >(
"L1_QuadJet30_thresh" ) ;
680 iConfig.
getParameter<
int >(
"L1_QuadJet30_prescale" ) ;
684 iConfig.
getParameter<
double >(
"L1_ExclusiveDoubleIsoEG4_thresh1" );
686 iConfig.
getParameter<
double >(
"L1_ExclusiveDoubleIsoEG4_thresh2" );
687 prescales_[ L1ParticleMap::kExclusiveDoubleIsoEG4 ] =
688 iConfig.
getParameter<
int >(
"L1_ExclusiveDoubleIsoEG4_prescale" ) ;
690 iConfig.
getParameter<
double >(
"L1_ExclusiveDoubleJet60_thresh" );
691 prescales_[ L1ParticleMap::kExclusiveDoubleJet60 ] =
692 iConfig.
getParameter<
int >(
"L1_ExclusiveDoubleJet60_prescale" ) ;
694 iConfig.
getParameter<
double >(
"L1_ExclusiveJet25_Gap_Jet25_thresh" );
695 prescales_[ L1ParticleMap::kExclusiveJet25_Gap_Jet25 ] =
696 iConfig.
getParameter<
int >(
"L1_ExclusiveJet25_Gap_Jet25_prescale" ) ;
698 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet20_ForJet10_thresh1" ) ;
700 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet20_ForJet10_thresh2" ) ;
702 iConfig.
getParameter<
double >(
"L1_IsoEG10_Jet20_ForJet10_thresh3" ) ;
703 prescales_[ L1ParticleMap::kIsoEG10_Jet20_ForJet10 ] =
704 iConfig.
getParameter<
int >(
"L1_IsoEG10_Jet20_ForJet10_prescale" ) ;
707 iConfig.
getParameter<
int >(
"L1_MinBias_HTT10_prescale" ) ;
773 using namespace reco;
774 using namespace l1extra ;
805 double met = metHandle->etMiss() ;
806 double ht = mhtHandle->etTotal() ;
807 double ett = metHandle->etTotal() ;
838 L1MuonParticleCollection::const_iterator muItr = muHandle->begin() ;
839 L1MuonParticleCollection::const_iterator muEnd = muHandle->end() ;
841 for(
size_t i = 0 ; muItr != muEnd ; ++muItr, ++
i )
843 if( !muItr->gmtMuonCand().empty() )
845 unsigned int qual = muItr->gmtMuonCand().quality() ;
852 inputMuonRefsSingle.push_back(
861 inputMuonRefsDouble.push_back(
868 bool globalDecision =
false ;
869 std::vector< bool > decisionWord ;
871 for(
int itrig = 0 ; itrig < L1ParticleMap::kNumOfL1TriggerTypes; ++itrig )
873 bool decision =
false ;
874 std::vector< L1ParticleMap::L1ObjectType > objectTypes ;
879 L1ParticleMap::L1IndexComboVector combosTmp ;
881 if( itrig == L1ParticleMap::kSingleMu3 ||
882 itrig == L1ParticleMap::kSingleMu5 ||
883 itrig == L1ParticleMap::kSingleMu7 ||
884 itrig == L1ParticleMap::kSingleMu10 ||
885 itrig == L1ParticleMap::kSingleMu14 ||
886 itrig == L1ParticleMap::kSingleMu20 ||
887 itrig == L1ParticleMap::kSingleMu25 )
894 outputMuonRefsTmp ) ;
896 else if( itrig == L1ParticleMap::kSingleIsoEG5 ||
897 itrig == L1ParticleMap::kSingleIsoEG8 ||
898 itrig == L1ParticleMap::kSingleIsoEG10 ||
899 itrig == L1ParticleMap::kSingleIsoEG12 ||
900 itrig == L1ParticleMap::kSingleIsoEG15 ||
901 itrig == L1ParticleMap::kSingleIsoEG20 ||
902 itrig == L1ParticleMap::kSingleIsoEG25 )
904 objectTypes.push_back( L1ParticleMap::kEM ) ;
911 else if( itrig == L1ParticleMap::kSingleEG5 ||
912 itrig == L1ParticleMap::kSingleEG8 ||
913 itrig == L1ParticleMap::kSingleEG10 ||
914 itrig == L1ParticleMap::kSingleEG12 ||
915 itrig == L1ParticleMap::kSingleEG15 ||
916 itrig == L1ParticleMap::kSingleEG20 ||
917 itrig == L1ParticleMap::kSingleEG25 )
919 objectTypes.push_back( L1ParticleMap::kEM ) ;
926 else if( itrig == L1ParticleMap::kSingleJet15 ||
927 itrig == L1ParticleMap::kSingleJet20 ||
928 itrig == L1ParticleMap::kSingleJet30 ||
929 itrig == L1ParticleMap::kSingleJet50 ||
930 itrig == L1ParticleMap::kSingleJet70 ||
931 itrig == L1ParticleMap::kSingleJet100 ||
932 itrig == L1ParticleMap::kSingleJet150 ||
933 itrig == L1ParticleMap::kSingleJet200 )
935 objectTypes.push_back( L1ParticleMap::kJet ) ;
942 else if( itrig == L1ParticleMap::kSingleTauJet10 ||
943 itrig == L1ParticleMap::kSingleTauJet20 ||
944 itrig == L1ParticleMap::kSingleTauJet30 ||
945 itrig == L1ParticleMap::kSingleTauJet35 ||
946 itrig == L1ParticleMap::kSingleTauJet40 ||
947 itrig == L1ParticleMap::kSingleTauJet60 ||
948 itrig == L1ParticleMap::kSingleTauJet80 ||
949 itrig == L1ParticleMap::kSingleTauJet100 )
951 objectTypes.push_back( L1ParticleMap::kJet ) ;
958 else if( itrig == L1ParticleMap::kHTT100 ||
959 itrig == L1ParticleMap::kHTT200 ||
960 itrig == L1ParticleMap::kHTT250 ||
961 itrig == L1ParticleMap::kHTT300 ||
962 itrig == L1ParticleMap::kHTT400 ||
963 itrig == L1ParticleMap::kHTT500 )
965 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
973 else if( itrig == L1ParticleMap::kETM10 ||
974 itrig == L1ParticleMap::kETM15 ||
975 itrig == L1ParticleMap::kETM20 ||
976 itrig == L1ParticleMap::kETM30 ||
977 itrig == L1ParticleMap::kETM40 ||
978 itrig == L1ParticleMap::kETM50 ||
979 itrig == L1ParticleMap::kETM60 )
981 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
989 else if( itrig == L1ParticleMap::kETT60 )
991 objectTypes.push_back( L1ParticleMap::kEtTotal ) ;
999 else if( itrig == L1ParticleMap::kDoubleMu3 )
1010 else if( itrig == L1ParticleMap::kDoubleIsoEG8 ||
1011 itrig == L1ParticleMap::kDoubleIsoEG10 )
1013 objectTypes.push_back( L1ParticleMap::kEM ) ;
1014 objectTypes.push_back( L1ParticleMap::kEM ) ;
1022 else if( itrig == L1ParticleMap::kDoubleEG5 ||
1023 itrig == L1ParticleMap::kDoubleEG10 ||
1024 itrig == L1ParticleMap::kDoubleEG15 )
1026 objectTypes.push_back( L1ParticleMap::kEM ) ;
1027 objectTypes.push_back( L1ParticleMap::kEM ) ;
1035 else if( itrig == L1ParticleMap::kDoubleJet70 ||
1036 itrig == L1ParticleMap::kDoubleJet100 )
1038 objectTypes.push_back( L1ParticleMap::kJet ) ;
1039 objectTypes.push_back( L1ParticleMap::kJet ) ;
1047 else if( itrig == L1ParticleMap::kDoubleTauJet20 ||
1048 itrig == L1ParticleMap::kDoubleTauJet30 ||
1049 itrig == L1ParticleMap::kDoubleTauJet35 ||
1050 itrig == L1ParticleMap::kDoubleTauJet40 )
1052 objectTypes.push_back( L1ParticleMap::kJet ) ;
1053 objectTypes.push_back( L1ParticleMap::kJet ) ;
1061 else if( itrig == L1ParticleMap::kMu3_IsoEG5 ||
1062 itrig == L1ParticleMap::kMu5_IsoEG10 )
1065 objectTypes.push_back( L1ParticleMap::kEM ) ;
1068 inputMuonRefsSingle,
1077 else if( itrig == L1ParticleMap::kMu3_EG12 )
1080 objectTypes.push_back( L1ParticleMap::kEM ) ;
1083 inputMuonRefsSingle,
1092 else if( itrig == L1ParticleMap::kMu3_Jet15 ||
1093 itrig == L1ParticleMap::kMu5_Jet15 ||
1094 itrig == L1ParticleMap::kMu3_Jet70 ||
1095 itrig == L1ParticleMap::kMu5_Jet20 )
1098 objectTypes.push_back( L1ParticleMap::kJet ) ;
1101 inputMuonRefsSingle,
1110 else if( itrig == L1ParticleMap::kMu5_TauJet20 ||
1111 itrig == L1ParticleMap::kMu5_TauJet30 )
1114 objectTypes.push_back( L1ParticleMap::kJet ) ;
1117 inputMuonRefsSingle,
1126 else if( itrig == L1ParticleMap::kIsoEG10_EG10 )
1128 objectTypes.push_back( L1ParticleMap::kEM ) ;
1129 objectTypes.push_back( L1ParticleMap::kEM ) ;
1140 else if( itrig == L1ParticleMap::kIsoEG10_Jet15 ||
1141 itrig == L1ParticleMap::kIsoEG10_Jet30 ||
1142 itrig == L1ParticleMap::kIsoEG10_Jet20 ||
1143 itrig == L1ParticleMap::kIsoEG10_Jet70 )
1145 objectTypes.push_back( L1ParticleMap::kEM ) ;
1146 objectTypes.push_back( L1ParticleMap::kJet ) ;
1158 else if( itrig == L1ParticleMap::kIsoEG10_TauJet20 ||
1159 itrig == L1ParticleMap::kIsoEG10_TauJet30 )
1161 objectTypes.push_back( L1ParticleMap::kEM ) ;
1162 objectTypes.push_back( L1ParticleMap::kJet ) ;
1174 else if( itrig == L1ParticleMap::kEG10_Jet15 ||
1175 itrig == L1ParticleMap::kEG12_Jet20 ||
1176 itrig == L1ParticleMap::kEG12_Jet70 )
1178 objectTypes.push_back( L1ParticleMap::kEM ) ;
1179 objectTypes.push_back( L1ParticleMap::kJet ) ;
1191 else if( itrig == L1ParticleMap::kEG12_TauJet40 )
1193 objectTypes.push_back( L1ParticleMap::kEM ) ;
1194 objectTypes.push_back( L1ParticleMap::kJet ) ;
1206 else if( itrig == L1ParticleMap::kJet70_TauJet40 )
1208 objectTypes.push_back( L1ParticleMap::kJet ) ;
1209 objectTypes.push_back( L1ParticleMap::kJet ) ;
1220 else if( itrig == L1ParticleMap::kMu3_HTT200 )
1223 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1230 outputMuonRefsTmp ) ;
1238 else if( itrig == L1ParticleMap::kIsoEG10_HTT200 )
1240 objectTypes.push_back( L1ParticleMap::kEM ) ;
1241 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1256 else if( itrig == L1ParticleMap::kEG12_HTT200 )
1258 objectTypes.push_back( L1ParticleMap::kEM ) ;
1259 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1274 else if( itrig == L1ParticleMap::kJet70_HTT200 )
1276 objectTypes.push_back( L1ParticleMap::kJet ) ;
1277 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1284 outputJetRefsTmp ) ;
1292 else if( itrig == L1ParticleMap::kTauJet40_HTT200 )
1294 objectTypes.push_back( L1ParticleMap::kJet ) ;
1295 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1302 outputJetRefsTmp ) ;
1310 else if( itrig == L1ParticleMap::kMu3_ETM30 )
1313 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1320 outputMuonRefsTmp ) ;
1328 else if( itrig == L1ParticleMap::kIsoEG10_ETM30 )
1330 objectTypes.push_back( L1ParticleMap::kEM ) ;
1331 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1346 else if( itrig == L1ParticleMap::kEG12_ETM30 )
1348 objectTypes.push_back( L1ParticleMap::kEM ) ;
1349 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1364 else if( itrig == L1ParticleMap::kJet70_ETM40 )
1366 objectTypes.push_back( L1ParticleMap::kJet ) ;
1367 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1374 outputJetRefsTmp ) ;
1382 else if( itrig == L1ParticleMap::kTauJet20_ETM20 ||
1383 itrig == L1ParticleMap::kTauJet30_ETM30 ||
1384 itrig == L1ParticleMap::kTauJet30_ETM40 )
1386 objectTypes.push_back( L1ParticleMap::kJet ) ;
1387 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1394 outputJetRefsTmp ) ;
1402 else if( itrig == L1ParticleMap::kHTT100_ETM30 )
1404 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1405 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1414 else if( itrig == L1ParticleMap::kTripleMu3 )
1426 else if( itrig == L1ParticleMap::kTripleIsoEG5 )
1428 objectTypes.push_back( L1ParticleMap::kEM ) ;
1429 objectTypes.push_back( L1ParticleMap::kEM ) ;
1430 objectTypes.push_back( L1ParticleMap::kEM ) ;
1438 else if( itrig == L1ParticleMap::kTripleEG10 )
1440 objectTypes.push_back( L1ParticleMap::kEM ) ;
1441 objectTypes.push_back( L1ParticleMap::kEM ) ;
1442 objectTypes.push_back( L1ParticleMap::kEM ) ;
1450 else if( itrig == L1ParticleMap::kTripleJet50 )
1452 objectTypes.push_back( L1ParticleMap::kJet ) ;
1453 objectTypes.push_back( L1ParticleMap::kJet ) ;
1454 objectTypes.push_back( L1ParticleMap::kJet ) ;
1462 else if( itrig == L1ParticleMap::kTripleTauJet40 )
1464 objectTypes.push_back( L1ParticleMap::kJet ) ;
1465 objectTypes.push_back( L1ParticleMap::kJet ) ;
1466 objectTypes.push_back( L1ParticleMap::kJet ) ;
1474 else if( itrig == L1ParticleMap::kDoubleMu3_IsoEG5 )
1478 objectTypes.push_back( L1ParticleMap::kEM ) ;
1481 inputMuonRefsDouble,
1490 else if( itrig == L1ParticleMap::kDoubleMu3_EG10 )
1494 objectTypes.push_back( L1ParticleMap::kEM ) ;
1497 inputMuonRefsDouble,
1506 else if( itrig == L1ParticleMap::kDoubleIsoEG5_Mu3 )
1508 objectTypes.push_back( L1ParticleMap::kEM ) ;
1509 objectTypes.push_back( L1ParticleMap::kEM ) ;
1514 inputMuonRefsSingle,
1522 else if( itrig == L1ParticleMap::kDoubleEG10_Mu3 )
1524 objectTypes.push_back( L1ParticleMap::kEM ) ;
1525 objectTypes.push_back( L1ParticleMap::kEM ) ;
1530 inputMuonRefsSingle,
1538 else if( itrig == L1ParticleMap::kDoubleMu3_HTT200 )
1542 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1559 else if( itrig == L1ParticleMap::kDoubleIsoEG5_HTT200 )
1561 objectTypes.push_back( L1ParticleMap::kEM ) ;
1562 objectTypes.push_back( L1ParticleMap::kEM ) ;
1563 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1580 else if( itrig == L1ParticleMap::kDoubleEG10_HTT200 )
1582 objectTypes.push_back( L1ParticleMap::kEM ) ;
1583 objectTypes.push_back( L1ParticleMap::kEM ) ;
1584 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1601 else if( itrig == L1ParticleMap::kDoubleJet50_HTT200 )
1603 objectTypes.push_back( L1ParticleMap::kJet ) ;
1604 objectTypes.push_back( L1ParticleMap::kJet ) ;
1605 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1622 else if( itrig == L1ParticleMap::kDoubleTauJet40_HTT200 )
1624 objectTypes.push_back( L1ParticleMap::kJet ) ;
1625 objectTypes.push_back( L1ParticleMap::kJet ) ;
1626 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1643 else if( itrig == L1ParticleMap::kDoubleMu3_ETM20 )
1647 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1664 else if( itrig == L1ParticleMap::kDoubleIsoEG5_ETM20 )
1666 objectTypes.push_back( L1ParticleMap::kEM ) ;
1667 objectTypes.push_back( L1ParticleMap::kEM ) ;
1668 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1685 else if( itrig == L1ParticleMap::kDoubleEG10_ETM20 )
1687 objectTypes.push_back( L1ParticleMap::kEM ) ;
1688 objectTypes.push_back( L1ParticleMap::kEM ) ;
1689 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1706 else if( itrig == L1ParticleMap::kDoubleJet50_ETM20 )
1708 objectTypes.push_back( L1ParticleMap::kJet ) ;
1709 objectTypes.push_back( L1ParticleMap::kJet ) ;
1710 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1727 else if( itrig == L1ParticleMap::kDoubleTauJet40_ETM20 )
1729 objectTypes.push_back( L1ParticleMap::kJet ) ;
1730 objectTypes.push_back( L1ParticleMap::kJet ) ;
1731 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
1748 else if( itrig == L1ParticleMap::kQuadJet30 )
1750 objectTypes.push_back( L1ParticleMap::kJet ) ;
1751 objectTypes.push_back( L1ParticleMap::kJet ) ;
1752 objectTypes.push_back( L1ParticleMap::kJet ) ;
1753 objectTypes.push_back( L1ParticleMap::kJet ) ;
1761 else if( itrig == L1ParticleMap::kExclusiveDoubleIsoEG4 )
1763 objectTypes.push_back( L1ParticleMap::kEM ) ;
1764 objectTypes.push_back( L1ParticleMap::kEM ) ;
1775 else if( itrig == L1ParticleMap::kExclusiveDoubleJet60 )
1777 objectTypes.push_back( L1ParticleMap::kJet ) ;
1778 objectTypes.push_back( L1ParticleMap::kJet ) ;
1780 if( inputJetRefs.size() == 2 )
1789 else if( itrig == L1ParticleMap::kExclusiveJet25_Gap_Jet25 )
1791 objectTypes.push_back( L1ParticleMap::kJet ) ;
1792 objectTypes.push_back( L1ParticleMap::kJet ) ;
1794 if( inputJetRefs.size() == 2 )
1803 else if( itrig == L1ParticleMap::kIsoEG10_Jet20_ForJet10 )
1805 objectTypes.push_back( L1ParticleMap::kEM ) ;
1806 objectTypes.push_back( L1ParticleMap::kJet ) ;
1816 inputCenJetTauJetRefs,
1825 else if( itrig == L1ParticleMap::kMinBias_HTT10 )
1827 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
1835 else if( itrig == L1ParticleMap::kZeroBias )
1844 L1ParticleMap::L1IndexComboVector combos ;
1850 double rand = CLHEP::RandFlat::shoot() * ( double )
prescales_[ itrig ] ;
1857 outputEmRefs = outputEmRefsTmp ;
1858 outputJetRefs = outputJetRefsTmp ;
1859 outputMuonRefs = outputMuonRefsTmp ;
1860 metRef = metRefTmp ;
1861 combos = combosTmp ;
1869 ( L1ParticleMap::L1TriggerType ) itrig,
1878 globalDecision = globalDecision || decision ;
1879 decisionWord.push_back( decision ) ;
1883 iEvent.
put( mapColl ) ;
1886 auto_ptr< L1GlobalTriggerReadoutRecord > gtRecord(
1888 gtRecord->setDecision( globalDecision ) ;
1889 gtRecord->setDecisionWord( decisionWord ) ;
1890 iEvent.
put( gtRecord ) ;
1896 template<
class TCollection >
1902 for(
size_t i = 0 ;
i < handle->size() ; ++
i )
1908 template<
class TCollection >
1912 const double& etThreshold,
1916 for(
size_t i = 0 ;
i < inputRefs.size() ; ++
i )
1918 if( inputRefs[
i ].
get()->et() >= etThreshold )
1921 outputRefs.push_back( inputRefs[
i ] ) ;
1926 template<
class TCollection >
1930 const double& etThreshold,
1934 bool combinedWithGlobalObject )
1938 for(
size_t i = 0 ;
i+1 < inputRefs.size() ; ++
i )
1941 if( refi.
get()->et() >= etThreshold )
1943 for(
size_t j =
i+1 ;
j < inputRefs.size() ; ++
j )
1946 if( refj.
get()->et() >= etThreshold )
1954 for(
size_t iout = 0 ; iout < outputRefs.size() ; ++iout )
1956 if( refi == outputRefs[ iout ] )
1961 if( refj == outputRefs[ iout ] )
1971 iInList = outputRefs.size() ;
1972 outputRefs.push_back( refi ) ;
1977 jInList = outputRefs.size() ;
1978 outputRefs.push_back( refj ) ;
1983 combo.push_back( iInList ) ;
1984 combo.push_back( jInList ) ;
1985 if( combinedWithGlobalObject ) combo.push_back( 0 ) ;
1986 combos.push_back( combo ) ;
1994 template<
class TCollection >
1998 const double& etThreshold,
2005 for(
size_t i = 0 ;
i+2 < inputRefs.size() ; ++
i )
2008 if( refi.
get()->et() >= etThreshold )
2010 for(
size_t j =
i+1 ;
j+1 < inputRefs.size() ; ++
j )
2013 if( refj.
get()->et() >= etThreshold )
2015 for(
size_t k =
j+1 ;
k < inputRefs.size() ; ++
k )
2018 if( refk.
get()->et() >= etThreshold )
2027 for(
size_t iout = 0 ; iout < outputRefs.size() ; ++iout )
2029 if( refi == outputRefs[ iout ] )
2034 if( refj == outputRefs[ iout ] )
2039 if( refk == outputRefs[ iout ] )
2049 iInList = outputRefs.size() ;
2050 outputRefs.push_back( refi );
2055 jInList = outputRefs.size() ;
2056 outputRefs.push_back( refj );
2061 kInList = outputRefs.size() ;
2062 outputRefs.push_back( refk );
2067 combo.push_back( iInList ) ;
2068 combo.push_back( jInList ) ;
2069 combo.push_back( kInList ) ;
2070 combos.push_back( combo ) ;
2080 template<
class TCollection1,
class TCollection2 >
2085 const double& etThreshold1,
2086 const double& etThreshold2,
2094 for(
size_t i = 0 ;
i+1 < inputRefs1.size() ; ++
i )
2097 if( refi.
get()->et() >= etThreshold1 )
2099 for(
size_t j =
i+1 ;
j < inputRefs1.size() ; ++
j )
2102 if( refj.
get()->et() >= etThreshold1 )
2104 for(
size_t k = 0 ;
k < inputRefs2.size() ; ++
k )
2107 if( refk.
get()->et() >= etThreshold2 )
2116 for(
size_t iout = 0 ;
2117 iout < outputRefs1.size() ; ++iout )
2119 if( refi == outputRefs1[ iout ] )
2124 if( refj == outputRefs1[ iout ] )
2131 for(
size_t kout = 0 ;
2132 kout < outputRefs2.size() ; ++kout )
2134 if( refk == outputRefs2[ kout ] )
2144 iInList = outputRefs1.size() ;
2145 outputRefs1.push_back( refi );
2150 jInList = outputRefs1.size() ;
2151 outputRefs1.push_back( refj );
2156 kInList = outputRefs2.size() ;
2157 outputRefs2.push_back( refk );
2162 combo.push_back( iInList ) ;
2163 combo.push_back( jInList ) ;
2164 combo.push_back( kInList ) ;
2165 combos.push_back( combo ) ;
2175 template<
class TCollection >
2179 const double& etThreshold,
2186 for(
size_t i = 0 ;
i+3 < inputRefs.size() ; ++
i )
2189 if( refi.
get()->et() >= etThreshold )
2191 for(
size_t j =
i+1 ;
j+2 < inputRefs.size() ; ++
j )
2194 if( refj.
get()->et() >= etThreshold )
2196 for(
size_t k =
j+1 ;
k+1 < inputRefs.size() ; ++
k )
2199 if( refk.
get()->et() >= etThreshold )
2201 for(
size_t p =
k+1 ;
p < inputRefs.size() ; ++
p )
2204 if( refp.
get()->et() >= etThreshold )
2214 for(
size_t iout = 0 ;
2215 iout < outputRefs.size() ; ++iout )
2217 if( refi == outputRefs[ iout ] )
2222 if( refj == outputRefs[ iout ] )
2227 if( refk == outputRefs[ iout ] )
2232 if( refp == outputRefs[ iout ] )
2242 iInList = outputRefs.size() ;
2243 outputRefs.push_back( refi ) ;
2248 jInList = outputRefs.size() ;
2249 outputRefs.push_back( refj ) ;
2254 kInList = outputRefs.size() ;
2255 outputRefs.push_back( refk ) ;
2260 pInList = outputRefs.size() ;
2261 outputRefs.push_back( refp ) ;
2266 combo.push_back( iInList ) ;
2267 combo.push_back( jInList ) ;
2268 combo.push_back( kInList ) ;
2269 combo.push_back( pInList ) ;
2270 combos.push_back( combo ) ;
2282 template<
class TCollection1,
class TCollection2 >
2287 const double& etThreshold1,
2288 const double& etThreshold2,
2294 for(
size_t i = 0 ;
i < inputRefs1.size() ; ++
i )
2297 if( refi.
get()->et() >= etThreshold1 )
2299 for(
size_t j = 0 ;
j < inputRefs2.size() ; ++
j )
2303 if( refj.
get()->et() >= etThreshold2 )
2310 for(
size_t iout = 0 ; iout < outputRefs1.size() ; ++iout )
2312 if( refi == outputRefs1[ iout ] )
2319 for(
size_t jout = 0 ; jout < outputRefs2.size() ; ++jout )
2321 if( refj == outputRefs2[ jout ] )
2331 iInList = outputRefs1.size() ;
2332 outputRefs1.push_back( refi ) ;
2337 jInList = outputRefs2.size() ;
2338 outputRefs2.push_back( refj ) ;
2343 combo.push_back( iInList ) ;
2344 combo.push_back( jInList ) ;
2345 combos.push_back( combo ) ;
2353 template<
class TCollection >
2358 const double& etThreshold1,
2359 const double& etThreshold2,
2364 for(
size_t i = 0 ;
i < inputRefs1.size() ; ++
i )
2367 if( refi.
get()->et() >= etThreshold1 )
2369 for(
size_t j = 0 ;
j < inputRefs2.size() ; ++
j )
2373 if( refj.
get()->et() >= etThreshold2 &&
2381 for(
size_t iout = 0 ; iout < outputRefs.size() ; ++iout )
2383 if( refi == outputRefs[ iout ] )
2390 for(
size_t jout = 0 ; jout < outputRefs.size() ; ++jout )
2392 if( refj == outputRefs[ jout ] )
2402 iInList = outputRefs.size() ;
2403 outputRefs.push_back( refi ) ;
2408 jInList = outputRefs.size() ;
2409 outputRefs.push_back( refj ) ;
2414 combo.push_back( iInList ) ;
2415 combo.push_back( jInList ) ;
2416 combos.push_back( combo ) ;
2427 const double& etThreshold1,
2428 const double& etThreshold2,
2434 for(
size_t i = 0 ;
i < inputRefs1.size() ; ++
i )
2437 if( refi.
get()->et() >= etThreshold1 )
2439 for(
size_t j = 0 ;
j < inputRefs2.size() ; ++
j )
2444 if( refj.
get()->et() >= etThreshold2 &&
2445 ( refi.
get()->gctEmCand() == 0 ||
2446 refj.
get()->gctJetCand() == 0 ||
2447 refi.
get()->gctEmCand()->regionId() !=
2448 refj.
get()->gctJetCand()->regionId() ) )
2455 for(
size_t iout = 0 ; iout < outputRefs1.size() ; ++iout )
2457 if( refi == outputRefs1[ iout ] )
2464 for(
size_t jout = 0 ; jout < outputRefs2.size() ; ++jout )
2466 if( refj == outputRefs2[ jout ] )
2476 iInList = outputRefs1.size() ;
2477 outputRefs1.push_back( refi ) ;
2482 jInList = outputRefs2.size() ;
2483 outputRefs2.push_back( refj ) ;
2488 combo.push_back( iInList ) ;
2489 combo.push_back( jInList ) ;
2490 combos.push_back( combo ) ;
2500 const double& etThreshold,
2507 for(
size_t i = 0 ;
i+1 < inputRefs.size() ; ++
i )
2510 if( refi.
get()->et() >= etThreshold )
2512 for(
size_t j =
i+1 ;
j < inputRefs.size() ; ++
j )
2515 if( ( refj.
get()->et() >= etThreshold ) &&
2516 ( ( ( refi.
get()->eta() < 0. ) && ( refj.
get()->eta() > 0. ) )
2518 ( ( refi.
get()->eta() > 0. ) && ( refj.
get()->eta() < 0. ) )
2528 for(
size_t iout = 0 ; iout < outputRefs.size() ; ++iout )
2530 if( refi == outputRefs[ iout ] )
2535 if( refj == outputRefs[ iout ] )
2545 iInList = outputRefs.size() ;
2546 outputRefs.push_back( refi ) ;
2551 jInList = outputRefs.size() ;
2552 outputRefs.push_back( refj ) ;
2557 combo.push_back( iInList ) ;
2558 combo.push_back( jInList ) ;
2559 combos.push_back( combo ) ;
2571 const double& etThreshold,
2578 for(
size_t k = 0 ;
k+1 < inputRefs.size() ; ++
k )
2581 double etak = refk.
get()->eta();
2583 ( refk.
get()->et() >= etThreshold ) )
2585 for(
size_t l =
k+1 ;
l < inputRefs.size() ; ++
l )
2588 double etal = refl.
get()->eta();
2590 (refl.
get()->et() >= etThreshold ) &&
2591 ((etak>0 && etal<0) || (etak<0 && etal>0)) )
2605 const double& etThreshold1,
2606 const double& etThreshold2,
2611 if ( inputRefs1.size() ==2 )
2614 if (inputRefs2.size()>0)
2616 for(
size_t j = 0 ;
j < inputRefs2.size() ; ++
j )
2618 if(inputRefs2[
j].
get()->gctJetCand()->regionId() ==
2619 inputRefs1[0].get()->gctEmCand()->regionId())
continue;
2620 if(inputRefs2[
j].
get()->gctJetCand()->regionId() ==
2621 inputRefs1[1].get()->gctEmCand()->regionId())
continue;
2622 if(inputRefs2[
j].
get()->et( )> etThreshold2 ) {
2623 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]
T const * get() const
Returns C++ pointer to the item.
~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)
return(e1-e2)*(e1-e2)+dp *dp
int prescales_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
edm::InputTag etMissSource_
L1ExtraParticleMapProd(const edm::ParameterSet &)
volatile std::atomic< bool > shutdown_flag false
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)