CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
L1ExtraParticleMapProd Class Reference

#include <L1ExtraParticleMapProd.h>

Inheritance diagram for L1ExtraParticleMapProd:
edm::global::EDProducer<> edm::global::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 L1ExtraParticleMapProd (const edm::ParameterSet &)
 
void produce (edm::StreamID, edm::Event &, const edm::EventSetup &) const override
 
 ~L1ExtraParticleMapProd () override
 
- Public Member Functions inherited from edm::global::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
EDProduceroperator= (const EDProducer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
bool wantsStreamLuminosityBlocks () const final
 
bool wantsStreamRuns () const final
 
- Public Member Functions inherited from edm::global::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const *> const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

template<class TCollection >
void addToVectorRefs (const edm::Handle< TCollection > &handle, std::vector< edm::Ref< TCollection >> &vectorRefs) const
 
void evaluateDoubleDifferentCaloObjectTrigger (const l1extra::L1EmParticleVectorRef &inputRefs1, const l1extra::L1JetParticleVectorRef &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, l1extra::L1EmParticleVectorRef &outputRefs1, l1extra::L1JetParticleVectorRef &outputRefs2, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
 
template<class TCollection >
void evaluateDoubleDifferentObjectSameTypeTrigger (const std::vector< edm::Ref< TCollection >> &inputRefs1, const std::vector< edm::Ref< TCollection >> &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, std::vector< edm::Ref< TCollection >> &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
 
template<class TCollection1 , class TCollection2 >
void evaluateDoubleDifferentObjectTrigger (const std::vector< edm::Ref< TCollection1 >> &inputRefs1, const std::vector< edm::Ref< TCollection2 >> &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, std::vector< edm::Ref< TCollection1 >> &outputRefs1, std::vector< edm::Ref< TCollection2 >> &outputRefs2, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
 
void evaluateDoubleExclusiveIsoEG (const l1extra::L1EmParticleVectorRef &inputRefs1, const l1extra::L1JetParticleVectorRef &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, l1extra::L1EmParticleVectorRef &outputRefs1, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
 
template<class TCollection1 , class TCollection2 >
void evaluateDoublePlusSingleObjectTrigger (const std::vector< edm::Ref< TCollection1 >> &inputRefs1, const std::vector< edm::Ref< TCollection2 >> &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, std::vector< edm::Ref< TCollection1 >> &outputRefs1, std::vector< edm::Ref< TCollection2 >> &outputRefs2, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
 
template<class TCollection >
void evaluateDoubleSameObjectTrigger (const std::vector< edm::Ref< TCollection >> &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection >> &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos, bool combinedWithGlobalObject=false) const
 
void evaluateForwardRapidityGap (const l1extra::L1JetParticleVectorRef &inputRefs, const double &etThreshold, bool &decision) const
 
void evaluateJetGapJetTrigger (const l1extra::L1JetParticleVectorRef &inputRefs, const double &etThreshold, bool &decision, l1extra::L1JetParticleVectorRef &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
 
template<class TCollection >
void evaluateQuadSameObjectTrigger (const std::vector< edm::Ref< TCollection >> &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection >> &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
 
template<class TCollection >
void evaluateSingleObjectTrigger (const std::vector< edm::Ref< TCollection >> &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection >> &outputRefs) const
 
template<class TCollection >
void evaluateTripleSameObjectTrigger (const std::vector< edm::Ref< TCollection >> &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection >> &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
 

Private Attributes

edm::InputTag cenJetSource_
 
std::pair< double, double > doubleThresholds_ [l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
 
edm::InputTag etMissSource_
 
edm::InputTag forJetSource_
 
edm::InputTag htMissSource_
 
edm::InputTag isoEmSource_
 
edm::InputTag muonSource_
 
edm::InputTag nonIsoEmSource_
 
int prescales_ [l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
 
double singleThresholds_ [l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
 
edm::InputTag tauJetSource_
 

Additional Inherited Members

- Public Types inherited from edm::global::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
template<typename T >
using BranchAliasSetterT = ProductRegistryHelper::BranchAliasSetterT< T >
 
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::global::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::ProducerBase
template<Transition Tr = Transition::Event>
auto produces (std::string instanceName) noexcept
 declare what type of product will make and with which optional label More...
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
template<Transition Tr = Transition::Event>
auto produces () noexcept
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

L1Trigger/L1ExtraFromDigis/interface/L1ExtraParticleMapProd.h

Author
Werner Sun

Description: producer of L1ParticleMap objects from GT emulator object maps.

L1Trigger/L1ExtraParticleMapProd/src/L1ExtraParticleMapProd.cc

Author
Werner Sun

Definition at line 40 of file L1ExtraParticleMapProd.h.

Constructor & Destructor Documentation

◆ L1ExtraParticleMapProd()

L1ExtraParticleMapProd::L1ExtraParticleMapProd ( const edm::ParameterSet iConfig)
explicit

Definition at line 42 of file L1ExtraParticleMapProd.cc.

References doubleThresholds_, edm::ParameterSet::getParameter(), mps_fire::i, prescales_, and singleThresholds_.

43  : muonSource_(iConfig.getParameter<edm::InputTag>("muonSource")),
44  isoEmSource_(iConfig.getParameter<edm::InputTag>("isolatedEmSource")),
45  nonIsoEmSource_(iConfig.getParameter<edm::InputTag>("nonIsolatedEmSource")),
46  cenJetSource_(iConfig.getParameter<edm::InputTag>("centralJetSource")),
47  forJetSource_(iConfig.getParameter<edm::InputTag>("forwardJetSource")),
48  tauJetSource_(iConfig.getParameter<edm::InputTag>("tauJetSource")),
49  etMissSource_(iConfig.getParameter<edm::InputTag>("etMissSource")),
50  htMissSource_(iConfig.getParameter<edm::InputTag>("htMissSource")) {
51  using namespace l1extra;
52 
53  // register your products
54  produces<L1ParticleMapCollection>();
55  produces<L1GlobalTriggerReadoutRecord>();
56 
57  // now do what ever other initialization is needed
58  for (int i = 0; i < L1ParticleMap::kNumOfL1TriggerTypes; ++i) {
59  singleThresholds_[i] = 0.;
60  doubleThresholds_[i].first = 0.;
61  doubleThresholds_[i].second = 0.;
62  prescales_[i] = 1;
63  }
64 
65  // Single object triggers, 5 thresholds each
66 
67  singleThresholds_[L1ParticleMap::kSingleMu3] = iConfig.getParameter<double>("L1_SingleMu3_thresh");
68  prescales_[L1ParticleMap::kSingleMu3] = iConfig.getParameter<int>("L1_SingleMu3_prescale");
69  singleThresholds_[L1ParticleMap::kSingleMu5] = iConfig.getParameter<double>("L1_SingleMu5_thresh");
70  prescales_[L1ParticleMap::kSingleMu5] = iConfig.getParameter<int>("L1_SingleMu5_prescale");
71  singleThresholds_[L1ParticleMap::kSingleMu7] = iConfig.getParameter<double>("L1_SingleMu7_thresh");
72  prescales_[L1ParticleMap::kSingleMu7] = iConfig.getParameter<int>("L1_SingleMu7_prescale");
73  singleThresholds_[L1ParticleMap::kSingleMu10] = iConfig.getParameter<double>("L1_SingleMu10_thresh");
74  prescales_[L1ParticleMap::kSingleMu10] = iConfig.getParameter<int>("L1_SingleMu10_prescale");
75  singleThresholds_[L1ParticleMap::kSingleMu14] = iConfig.getParameter<double>("L1_SingleMu14_thresh");
76  prescales_[L1ParticleMap::kSingleMu14] = iConfig.getParameter<int>("L1_SingleMu14_prescale");
77  singleThresholds_[L1ParticleMap::kSingleMu20] = iConfig.getParameter<double>("L1_SingleMu20_thresh");
78  prescales_[L1ParticleMap::kSingleMu20] = iConfig.getParameter<int>("L1_SingleMu20_prescale");
79  singleThresholds_[L1ParticleMap::kSingleMu25] = iConfig.getParameter<double>("L1_SingleMu25_thresh");
80  prescales_[L1ParticleMap::kSingleMu25] = iConfig.getParameter<int>("L1_SingleMu25_prescale");
81 
82  singleThresholds_[L1ParticleMap::kSingleIsoEG5] = iConfig.getParameter<double>("L1_SingleIsoEG5_thresh");
83  prescales_[L1ParticleMap::kSingleIsoEG5] = iConfig.getParameter<int>("L1_SingleIsoEG5_prescale");
84  singleThresholds_[L1ParticleMap::kSingleIsoEG8] = iConfig.getParameter<double>("L1_SingleIsoEG8_thresh");
85  prescales_[L1ParticleMap::kSingleIsoEG8] = iConfig.getParameter<int>("L1_SingleIsoEG8_prescale");
86  singleThresholds_[L1ParticleMap::kSingleIsoEG10] = iConfig.getParameter<double>("L1_SingleIsoEG10_thresh");
87  prescales_[L1ParticleMap::kSingleIsoEG10] = iConfig.getParameter<int>("L1_SingleIsoEG10_prescale");
88  singleThresholds_[L1ParticleMap::kSingleIsoEG12] = iConfig.getParameter<double>("L1_SingleIsoEG12_thresh");
89  prescales_[L1ParticleMap::kSingleIsoEG12] = iConfig.getParameter<int>("L1_SingleIsoEG12_prescale");
90  singleThresholds_[L1ParticleMap::kSingleIsoEG15] = iConfig.getParameter<double>("L1_SingleIsoEG15_thresh");
91  prescales_[L1ParticleMap::kSingleIsoEG15] = iConfig.getParameter<int>("L1_SingleIsoEG15_prescale");
92  singleThresholds_[L1ParticleMap::kSingleIsoEG20] = iConfig.getParameter<double>("L1_SingleIsoEG20_thresh");
93  prescales_[L1ParticleMap::kSingleIsoEG20] = iConfig.getParameter<int>("L1_SingleIsoEG20_prescale");
94  singleThresholds_[L1ParticleMap::kSingleIsoEG25] = iConfig.getParameter<double>("L1_SingleIsoEG25_thresh");
95  prescales_[L1ParticleMap::kSingleIsoEG25] = iConfig.getParameter<int>("L1_SingleIsoEG25_prescale");
96 
97  singleThresholds_[L1ParticleMap::kSingleEG5] = iConfig.getParameter<double>("L1_SingleEG5_thresh");
98  prescales_[L1ParticleMap::kSingleEG5] = iConfig.getParameter<int>("L1_SingleEG5_prescale");
99  singleThresholds_[L1ParticleMap::kSingleEG8] = iConfig.getParameter<double>("L1_SingleEG8_thresh");
100  prescales_[L1ParticleMap::kSingleEG8] = iConfig.getParameter<int>("L1_SingleEG8_prescale");
101  singleThresholds_[L1ParticleMap::kSingleEG10] = iConfig.getParameter<double>("L1_SingleEG10_thresh");
102  prescales_[L1ParticleMap::kSingleEG10] = iConfig.getParameter<int>("L1_SingleEG10_prescale");
103  singleThresholds_[L1ParticleMap::kSingleEG12] = iConfig.getParameter<double>("L1_SingleEG12_thresh");
104  prescales_[L1ParticleMap::kSingleEG12] = iConfig.getParameter<int>("L1_SingleEG12_prescale");
105  singleThresholds_[L1ParticleMap::kSingleEG15] = iConfig.getParameter<double>("L1_SingleEG15_thresh");
106  prescales_[L1ParticleMap::kSingleEG15] = iConfig.getParameter<int>("L1_SingleEG15_prescale");
107  singleThresholds_[L1ParticleMap::kSingleEG20] = iConfig.getParameter<double>("L1_SingleEG20_thresh");
108  prescales_[L1ParticleMap::kSingleEG20] = iConfig.getParameter<int>("L1_SingleEG20_prescale");
109  singleThresholds_[L1ParticleMap::kSingleEG25] = iConfig.getParameter<double>("L1_SingleEG25_thresh");
110  prescales_[L1ParticleMap::kSingleEG25] = iConfig.getParameter<int>("L1_SingleEG25_prescale");
111 
112  singleThresholds_[L1ParticleMap::kSingleJet15] = iConfig.getParameter<double>("L1_SingleJet15_thresh");
113  prescales_[L1ParticleMap::kSingleJet15] = iConfig.getParameter<int>("L1_SingleJet15_prescale");
114  singleThresholds_[L1ParticleMap::kSingleJet20] = iConfig.getParameter<double>("L1_SingleJet20_thresh");
115  prescales_[L1ParticleMap::kSingleJet20] = iConfig.getParameter<int>("L1_SingleJet20_prescale");
116  singleThresholds_[L1ParticleMap::kSingleJet30] = iConfig.getParameter<double>("L1_SingleJet30_thresh");
117  prescales_[L1ParticleMap::kSingleJet30] = iConfig.getParameter<int>("L1_SingleJet30_prescale");
118  singleThresholds_[L1ParticleMap::kSingleJet50] = iConfig.getParameter<double>("L1_SingleJet50_thresh");
119  prescales_[L1ParticleMap::kSingleJet50] = iConfig.getParameter<int>("L1_SingleJet50_prescale");
120  singleThresholds_[L1ParticleMap::kSingleJet70] = iConfig.getParameter<double>("L1_SingleJet70_thresh");
121  prescales_[L1ParticleMap::kSingleJet70] = iConfig.getParameter<int>("L1_SingleJet70_prescale");
122  singleThresholds_[L1ParticleMap::kSingleJet100] = iConfig.getParameter<double>("L1_SingleJet100_thresh");
123  prescales_[L1ParticleMap::kSingleJet100] = iConfig.getParameter<int>("L1_SingleJet100_prescale");
124  singleThresholds_[L1ParticleMap::kSingleJet150] = iConfig.getParameter<double>("L1_SingleJet150_thresh");
125  prescales_[L1ParticleMap::kSingleJet150] = iConfig.getParameter<int>("L1_SingleJet150_prescale");
126  singleThresholds_[L1ParticleMap::kSingleJet200] = iConfig.getParameter<double>("L1_SingleJet200_thresh");
127  prescales_[L1ParticleMap::kSingleJet200] = iConfig.getParameter<int>("L1_SingleJet200_prescale");
128 
129  singleThresholds_[L1ParticleMap::kSingleTauJet10] = iConfig.getParameter<double>("L1_SingleTauJet10_thresh");
130  prescales_[L1ParticleMap::kSingleTauJet10] = iConfig.getParameter<int>("L1_SingleTauJet10_prescale");
131  singleThresholds_[L1ParticleMap::kSingleTauJet20] = iConfig.getParameter<double>("L1_SingleTauJet20_thresh");
132  prescales_[L1ParticleMap::kSingleTauJet20] = iConfig.getParameter<int>("L1_SingleTauJet20_prescale");
133  singleThresholds_[L1ParticleMap::kSingleTauJet30] = iConfig.getParameter<double>("L1_SingleTauJet30_thresh");
134  prescales_[L1ParticleMap::kSingleTauJet30] = iConfig.getParameter<int>("L1_SingleTauJet30_prescale");
135  singleThresholds_[L1ParticleMap::kSingleTauJet35] = iConfig.getParameter<double>("L1_SingleTauJet35_thresh");
136  prescales_[L1ParticleMap::kSingleTauJet35] = iConfig.getParameter<int>("L1_SingleTauJet35_prescale");
137  singleThresholds_[L1ParticleMap::kSingleTauJet40] = iConfig.getParameter<double>("L1_SingleTauJet40_thresh");
138  prescales_[L1ParticleMap::kSingleTauJet40] = iConfig.getParameter<int>("L1_SingleTauJet40_prescale");
139  singleThresholds_[L1ParticleMap::kSingleTauJet60] = iConfig.getParameter<double>("L1_SingleTauJet60_thresh");
140  prescales_[L1ParticleMap::kSingleTauJet60] = iConfig.getParameter<int>("L1_SingleTauJet60_prescale");
141  singleThresholds_[L1ParticleMap::kSingleTauJet80] = iConfig.getParameter<double>("L1_SingleTauJet80_thresh");
142  prescales_[L1ParticleMap::kSingleTauJet80] = iConfig.getParameter<int>("L1_SingleTauJet80_prescale");
143  singleThresholds_[L1ParticleMap::kSingleTauJet100] = iConfig.getParameter<double>("L1_SingleTauJet100_thresh");
144  prescales_[L1ParticleMap::kSingleTauJet100] = iConfig.getParameter<int>("L1_SingleTauJet100_prescale");
145 
146  singleThresholds_[L1ParticleMap::kHTT100] = iConfig.getParameter<double>("L1_HTT100_thresh");
147  prescales_[L1ParticleMap::kHTT100] = iConfig.getParameter<int>("L1_HTT100_prescale");
148  singleThresholds_[L1ParticleMap::kHTT200] = iConfig.getParameter<double>("L1_HTT200_thresh");
149  prescales_[L1ParticleMap::kHTT200] = iConfig.getParameter<int>("L1_HTT200_prescale");
150  singleThresholds_[L1ParticleMap::kHTT250] = iConfig.getParameter<double>("L1_HTT250_thresh");
151  prescales_[L1ParticleMap::kHTT250] = iConfig.getParameter<int>("L1_HTT250_prescale");
152  singleThresholds_[L1ParticleMap::kHTT300] = iConfig.getParameter<double>("L1_HTT300_thresh");
153  prescales_[L1ParticleMap::kHTT300] = iConfig.getParameter<int>("L1_HTT300_prescale");
154  singleThresholds_[L1ParticleMap::kHTT400] = iConfig.getParameter<double>("L1_HTT400_thresh");
155  prescales_[L1ParticleMap::kHTT400] = iConfig.getParameter<int>("L1_HTT400_prescale");
156  singleThresholds_[L1ParticleMap::kHTT500] = iConfig.getParameter<double>("L1_HTT500_thresh");
157  prescales_[L1ParticleMap::kHTT500] = iConfig.getParameter<int>("L1_HTT500_prescale");
158 
159  singleThresholds_[L1ParticleMap::kETM10] = iConfig.getParameter<double>("L1_ETM10_thresh");
160  prescales_[L1ParticleMap::kETM10] = iConfig.getParameter<int>("L1_ETM10_prescale");
161  singleThresholds_[L1ParticleMap::kETM15] = iConfig.getParameter<double>("L1_ETM15_thresh");
162  prescales_[L1ParticleMap::kETM15] = iConfig.getParameter<int>("L1_ETM15_prescale");
163  singleThresholds_[L1ParticleMap::kETM20] = iConfig.getParameter<double>("L1_ETM20_thresh");
164  prescales_[L1ParticleMap::kETM20] = iConfig.getParameter<int>("L1_ETM20_prescale");
165  singleThresholds_[L1ParticleMap::kETM30] = iConfig.getParameter<double>("L1_ETM30_thresh");
166  prescales_[L1ParticleMap::kETM30] = iConfig.getParameter<int>("L1_ETM30_prescale");
167  singleThresholds_[L1ParticleMap::kETM40] = iConfig.getParameter<double>("L1_ETM40_thresh");
168  prescales_[L1ParticleMap::kETM40] = iConfig.getParameter<int>("L1_ETM40_prescale");
169  singleThresholds_[L1ParticleMap::kETM50] = iConfig.getParameter<double>("L1_ETM50_thresh");
170  prescales_[L1ParticleMap::kETM50] = iConfig.getParameter<int>("L1_ETM50_prescale");
171  singleThresholds_[L1ParticleMap::kETM60] = iConfig.getParameter<double>("L1_ETM60_thresh");
172  prescales_[L1ParticleMap::kETM60] = iConfig.getParameter<int>("L1_ETM60_prescale");
173 
174  singleThresholds_[L1ParticleMap::kETT60] = iConfig.getParameter<double>("L1_ETT60_thresh");
175  prescales_[L1ParticleMap::kETT60] = iConfig.getParameter<int>("L1_ETT60_prescale");
176 
177  // AA triggers
178 
179  singleThresholds_[L1ParticleMap::kDoubleMu3] = iConfig.getParameter<double>("L1_DoubleMu3_thresh");
180  prescales_[L1ParticleMap::kDoubleMu3] = iConfig.getParameter<int>("L1_DoubleMu3_prescale");
181 
182  singleThresholds_[L1ParticleMap::kDoubleIsoEG8] = iConfig.getParameter<double>("L1_DoubleIsoEG8_thresh");
183  prescales_[L1ParticleMap::kDoubleIsoEG8] = iConfig.getParameter<int>("L1_DoubleIsoEG8_prescale");
184  singleThresholds_[L1ParticleMap::kDoubleIsoEG10] = iConfig.getParameter<double>("L1_DoubleIsoEG10_thresh");
185  prescales_[L1ParticleMap::kDoubleIsoEG10] = iConfig.getParameter<int>("L1_DoubleIsoEG10_prescale");
186 
187  singleThresholds_[L1ParticleMap::kDoubleEG5] = iConfig.getParameter<double>("L1_DoubleEG5_thresh");
188  prescales_[L1ParticleMap::kDoubleEG5] = iConfig.getParameter<int>("L1_DoubleEG5_prescale");
189  singleThresholds_[L1ParticleMap::kDoubleEG10] = iConfig.getParameter<double>("L1_DoubleEG10_thresh");
190  prescales_[L1ParticleMap::kDoubleEG10] = iConfig.getParameter<int>("L1_DoubleEG10_prescale");
191  singleThresholds_[L1ParticleMap::kDoubleEG15] = iConfig.getParameter<double>("L1_DoubleEG15_thresh");
192  prescales_[L1ParticleMap::kDoubleEG15] = iConfig.getParameter<int>("L1_DoubleEG15_prescale");
193 
194  singleThresholds_[L1ParticleMap::kDoubleJet70] = iConfig.getParameter<double>("L1_DoubleJet70_thresh");
195  prescales_[L1ParticleMap::kDoubleJet70] = iConfig.getParameter<int>("L1_DoubleJet70_prescale");
196  singleThresholds_[L1ParticleMap::kDoubleJet100] = iConfig.getParameter<double>("L1_DoubleJet100_thresh");
197  prescales_[L1ParticleMap::kDoubleJet100] = iConfig.getParameter<int>("L1_DoubleJet100_prescale");
198 
199  singleThresholds_[L1ParticleMap::kDoubleTauJet20] = iConfig.getParameter<double>("L1_DoubleTauJet20_thresh");
200  prescales_[L1ParticleMap::kDoubleTauJet20] = iConfig.getParameter<int>("L1_DoubleTauJet20_prescale");
201  singleThresholds_[L1ParticleMap::kDoubleTauJet30] = iConfig.getParameter<double>("L1_DoubleTauJet30_thresh");
202  prescales_[L1ParticleMap::kDoubleTauJet30] = iConfig.getParameter<int>("L1_DoubleTauJet30_prescale");
203  singleThresholds_[L1ParticleMap::kDoubleTauJet35] = iConfig.getParameter<double>("L1_DoubleTauJet35_thresh");
204  prescales_[L1ParticleMap::kDoubleTauJet35] = iConfig.getParameter<int>("L1_DoubleTauJet35_prescale");
205  singleThresholds_[L1ParticleMap::kDoubleTauJet40] = iConfig.getParameter<double>("L1_DoubleTauJet40_thresh");
206  prescales_[L1ParticleMap::kDoubleTauJet40] = iConfig.getParameter<int>("L1_DoubleTauJet40_prescale");
207 
208  // AB triggers
209 
210  doubleThresholds_[L1ParticleMap::kMu3_IsoEG5].first = iConfig.getParameter<double>("L1_Mu3_IsoEG5_thresh1");
211  doubleThresholds_[L1ParticleMap::kMu3_IsoEG5].second = iConfig.getParameter<double>("L1_Mu3_IsoEG5_thresh2");
212  prescales_[L1ParticleMap::kMu3_IsoEG5] = iConfig.getParameter<int>("L1_Mu3_IsoEG5_prescale");
213  doubleThresholds_[L1ParticleMap::kMu5_IsoEG10].first = iConfig.getParameter<double>("L1_Mu5_IsoEG10_thresh1");
214  doubleThresholds_[L1ParticleMap::kMu5_IsoEG10].second = iConfig.getParameter<double>("L1_Mu5_IsoEG10_thresh2");
215  prescales_[L1ParticleMap::kMu5_IsoEG10] = iConfig.getParameter<int>("L1_Mu5_IsoEG10_prescale");
216 
217  doubleThresholds_[L1ParticleMap::kMu3_EG12].first = iConfig.getParameter<double>("L1_Mu3_EG12_thresh1");
218  doubleThresholds_[L1ParticleMap::kMu3_EG12].second = iConfig.getParameter<double>("L1_Mu3_EG12_thresh2");
219  prescales_[L1ParticleMap::kMu3_EG12] = iConfig.getParameter<int>("L1_Mu3_EG12_prescale");
220 
221  doubleThresholds_[L1ParticleMap::kMu3_Jet15].first = iConfig.getParameter<double>("L1_Mu3_Jet15_thresh1");
222  doubleThresholds_[L1ParticleMap::kMu3_Jet15].second = iConfig.getParameter<double>("L1_Mu3_Jet15_thresh2");
223  prescales_[L1ParticleMap::kMu3_Jet15] = iConfig.getParameter<int>("L1_Mu3_Jet15_prescale");
224  doubleThresholds_[L1ParticleMap::kMu5_Jet15].first = iConfig.getParameter<double>("L1_Mu5_Jet15_thresh1");
225  doubleThresholds_[L1ParticleMap::kMu5_Jet15].second = iConfig.getParameter<double>("L1_Mu5_Jet15_thresh2");
226  prescales_[L1ParticleMap::kMu5_Jet15] = iConfig.getParameter<int>("L1_Mu5_Jet15_prescale");
227  doubleThresholds_[L1ParticleMap::kMu3_Jet70].first = iConfig.getParameter<double>("L1_Mu3_Jet70_thresh1");
228  doubleThresholds_[L1ParticleMap::kMu3_Jet70].second = iConfig.getParameter<double>("L1_Mu3_Jet70_thresh2");
229  prescales_[L1ParticleMap::kMu3_Jet70] = iConfig.getParameter<int>("L1_Mu3_Jet70_prescale");
230  doubleThresholds_[L1ParticleMap::kMu5_Jet20].first = iConfig.getParameter<double>("L1_Mu5_Jet20_thresh1");
231  doubleThresholds_[L1ParticleMap::kMu5_Jet20].second = iConfig.getParameter<double>("L1_Mu5_Jet20_thresh2");
232  prescales_[L1ParticleMap::kMu5_Jet20] = iConfig.getParameter<int>("L1_Mu5_Jet20_prescale");
233 
234  doubleThresholds_[L1ParticleMap::kMu5_TauJet20].first = iConfig.getParameter<double>("L1_Mu5_TauJet20_thresh1");
235  doubleThresholds_[L1ParticleMap::kMu5_TauJet20].second = iConfig.getParameter<double>("L1_Mu5_TauJet20_thresh2");
236  prescales_[L1ParticleMap::kMu5_TauJet20] = iConfig.getParameter<int>("L1_Mu5_TauJet20_prescale");
237  doubleThresholds_[L1ParticleMap::kMu5_TauJet30].first = iConfig.getParameter<double>("L1_Mu5_TauJet30_thresh1");
238  doubleThresholds_[L1ParticleMap::kMu5_TauJet30].second = iConfig.getParameter<double>("L1_Mu5_TauJet30_thresh2");
239  prescales_[L1ParticleMap::kMu5_TauJet30] = iConfig.getParameter<int>("L1_Mu5_TauJet30_prescale");
240 
241  doubleThresholds_[L1ParticleMap::kIsoEG10_EG10].first = iConfig.getParameter<double>("L1_IsoEG10_EG10_thresh1");
242  doubleThresholds_[L1ParticleMap::kIsoEG10_EG10].second = iConfig.getParameter<double>("L1_IsoEG10_EG10_thresh2");
243  prescales_[L1ParticleMap::kIsoEG10_EG10] = iConfig.getParameter<int>("L1_IsoEG10_EG10_prescale");
244 
245  doubleThresholds_[L1ParticleMap::kIsoEG10_Jet15].first = iConfig.getParameter<double>("L1_IsoEG10_Jet15_thresh1");
246  doubleThresholds_[L1ParticleMap::kIsoEG10_Jet15].second = iConfig.getParameter<double>("L1_IsoEG10_Jet15_thresh2");
247  prescales_[L1ParticleMap::kIsoEG10_Jet15] = iConfig.getParameter<int>("L1_IsoEG10_Jet15_prescale");
248  doubleThresholds_[L1ParticleMap::kIsoEG10_Jet30].first = iConfig.getParameter<double>("L1_IsoEG10_Jet30_thresh1");
249  doubleThresholds_[L1ParticleMap::kIsoEG10_Jet30].second = iConfig.getParameter<double>("L1_IsoEG10_Jet30_thresh2");
250  prescales_[L1ParticleMap::kIsoEG10_Jet30] = iConfig.getParameter<int>("L1_IsoEG10_Jet30_prescale");
251  doubleThresholds_[L1ParticleMap::kIsoEG10_Jet20].first = iConfig.getParameter<double>("L1_IsoEG10_Jet20_thresh1");
252  doubleThresholds_[L1ParticleMap::kIsoEG10_Jet20].second = iConfig.getParameter<double>("L1_IsoEG10_Jet20_thresh2");
253  prescales_[L1ParticleMap::kIsoEG10_Jet20] = iConfig.getParameter<int>("L1_IsoEG10_Jet20_prescale");
254  doubleThresholds_[L1ParticleMap::kIsoEG10_Jet70].first = iConfig.getParameter<double>("L1_IsoEG10_Jet70_thresh1");
255  doubleThresholds_[L1ParticleMap::kIsoEG10_Jet70].second = iConfig.getParameter<double>("L1_IsoEG10_Jet70_thresh2");
256  prescales_[L1ParticleMap::kIsoEG10_Jet70] = iConfig.getParameter<int>("L1_IsoEG10_Jet70_prescale");
257 
258  doubleThresholds_[L1ParticleMap::kIsoEG10_TauJet20].first =
259  iConfig.getParameter<double>("L1_IsoEG10_TauJet20_thresh1");
260  doubleThresholds_[L1ParticleMap::kIsoEG10_TauJet20].second =
261  iConfig.getParameter<double>("L1_IsoEG10_TauJet20_thresh2");
262  prescales_[L1ParticleMap::kIsoEG10_TauJet20] = iConfig.getParameter<int>("L1_IsoEG10_TauJet20_prescale");
263  doubleThresholds_[L1ParticleMap::kIsoEG10_TauJet30].first =
264  iConfig.getParameter<double>("L1_IsoEG10_TauJet30_thresh1");
265  doubleThresholds_[L1ParticleMap::kIsoEG10_TauJet30].second =
266  iConfig.getParameter<double>("L1_IsoEG10_TauJet30_thresh2");
267  prescales_[L1ParticleMap::kIsoEG10_TauJet30] = iConfig.getParameter<int>("L1_IsoEG10_TauJet30_prescale");
268 
269  doubleThresholds_[L1ParticleMap::kEG10_Jet15].first = iConfig.getParameter<double>("L1_EG10_Jet15_thresh1");
270  doubleThresholds_[L1ParticleMap::kEG10_Jet15].second = iConfig.getParameter<double>("L1_EG10_Jet15_thresh2");
271  prescales_[L1ParticleMap::kEG10_Jet15] = iConfig.getParameter<int>("L1_EG10_Jet15_prescale");
272  doubleThresholds_[L1ParticleMap::kEG12_Jet20].first = iConfig.getParameter<double>("L1_EG12_Jet20_thresh1");
273  doubleThresholds_[L1ParticleMap::kEG12_Jet20].second = iConfig.getParameter<double>("L1_EG12_Jet20_thresh2");
274  prescales_[L1ParticleMap::kEG12_Jet20] = iConfig.getParameter<int>("L1_EG12_Jet20_prescale");
275  doubleThresholds_[L1ParticleMap::kEG12_Jet70].first = iConfig.getParameter<double>("L1_EG12_Jet70_thresh1");
276  doubleThresholds_[L1ParticleMap::kEG12_Jet70].second = iConfig.getParameter<double>("L1_EG12_Jet70_thresh2");
277  prescales_[L1ParticleMap::kEG12_Jet70] = iConfig.getParameter<int>("L1_EG12_Jet70_prescale");
278 
279  doubleThresholds_[L1ParticleMap::kEG12_TauJet40].first = iConfig.getParameter<double>("L1_EG12_TauJet40_thresh1");
280  doubleThresholds_[L1ParticleMap::kEG12_TauJet40].second = iConfig.getParameter<double>("L1_EG12_TauJet40_thresh2");
281  prescales_[L1ParticleMap::kEG12_TauJet40] = iConfig.getParameter<int>("L1_EG12_TauJet40_prescale");
282 
283  doubleThresholds_[L1ParticleMap::kJet70_TauJet40].first = iConfig.getParameter<double>("L1_Jet70_TauJet40_thresh1");
284  doubleThresholds_[L1ParticleMap::kJet70_TauJet40].second = iConfig.getParameter<double>("L1_Jet70_TauJet40_thresh2");
285  prescales_[L1ParticleMap::kJet70_TauJet40] = iConfig.getParameter<int>("L1_Jet70_TauJet40_prescale");
286 
287  doubleThresholds_[L1ParticleMap::kMu3_HTT200].first = iConfig.getParameter<double>("L1_Mu3_HTT200_thresh1");
288  doubleThresholds_[L1ParticleMap::kMu3_HTT200].second = iConfig.getParameter<double>("L1_Mu3_HTT200_thresh2");
289  prescales_[L1ParticleMap::kMu3_HTT200] = iConfig.getParameter<int>("L1_Mu3_HTT200_prescale");
290  doubleThresholds_[L1ParticleMap::kIsoEG10_HTT200].first = iConfig.getParameter<double>("L1_IsoEG10_HTT200_thresh1");
291  doubleThresholds_[L1ParticleMap::kIsoEG10_HTT200].second = iConfig.getParameter<double>("L1_IsoEG10_HTT200_thresh2");
292  prescales_[L1ParticleMap::kIsoEG10_HTT200] = iConfig.getParameter<int>("L1_IsoEG10_HTT200_prescale");
293  doubleThresholds_[L1ParticleMap::kEG12_HTT200].first = iConfig.getParameter<double>("L1_EG12_HTT200_thresh1");
294  doubleThresholds_[L1ParticleMap::kEG12_HTT200].second = iConfig.getParameter<double>("L1_EG12_HTT200_thresh2");
295  prescales_[L1ParticleMap::kEG12_HTT200] = iConfig.getParameter<int>("L1_EG12_HTT200_prescale");
296  doubleThresholds_[L1ParticleMap::kJet70_HTT200].first = iConfig.getParameter<double>("L1_Jet70_HTT200_thresh1");
297  doubleThresholds_[L1ParticleMap::kJet70_HTT200].second = iConfig.getParameter<double>("L1_Jet70_HTT200_thresh2");
298  prescales_[L1ParticleMap::kJet70_HTT200] = iConfig.getParameter<int>("L1_Jet70_HTT200_prescale");
299  doubleThresholds_[L1ParticleMap::kTauJet40_HTT200].first = iConfig.getParameter<double>("L1_TauJet40_HTT200_thresh1");
300  doubleThresholds_[L1ParticleMap::kTauJet40_HTT200].second =
301  iConfig.getParameter<double>("L1_TauJet40_HTT200_thresh2");
302  prescales_[L1ParticleMap::kTauJet40_HTT200] = iConfig.getParameter<int>("L1_TauJet40_HTT200_prescale");
303 
304  doubleThresholds_[L1ParticleMap::kMu3_ETM30].first = iConfig.getParameter<double>("L1_Mu3_ETM30_thresh1");
305  doubleThresholds_[L1ParticleMap::kMu3_ETM30].second = iConfig.getParameter<double>("L1_Mu3_ETM30_thresh2");
306  prescales_[L1ParticleMap::kMu3_ETM30] = iConfig.getParameter<int>("L1_Mu3_ETM30_prescale");
307  doubleThresholds_[L1ParticleMap::kIsoEG10_ETM30].first = iConfig.getParameter<double>("L1_IsoEG10_ETM30_thresh1");
308  doubleThresholds_[L1ParticleMap::kIsoEG10_ETM30].second = iConfig.getParameter<double>("L1_IsoEG10_ETM30_thresh2");
309  prescales_[L1ParticleMap::kIsoEG10_ETM30] = iConfig.getParameter<int>("L1_IsoEG10_ETM30_prescale");
310  doubleThresholds_[L1ParticleMap::kEG12_ETM30].first = iConfig.getParameter<double>("L1_EG12_ETM30_thresh1");
311  doubleThresholds_[L1ParticleMap::kEG12_ETM30].second = iConfig.getParameter<double>("L1_EG12_ETM30_thresh2");
312  prescales_[L1ParticleMap::kEG12_ETM30] = iConfig.getParameter<int>("L1_EG12_ETM30_prescale");
313  doubleThresholds_[L1ParticleMap::kJet70_ETM40].first = iConfig.getParameter<double>("L1_Jet70_ETM40_thresh1");
314  doubleThresholds_[L1ParticleMap::kJet70_ETM40].second = iConfig.getParameter<double>("L1_Jet70_ETM40_thresh2");
315  prescales_[L1ParticleMap::kJet70_ETM40] = iConfig.getParameter<int>("L1_Jet70_ETM40_prescale");
316 
317  doubleThresholds_[L1ParticleMap::kTauJet20_ETM20].first = iConfig.getParameter<double>("L1_TauJet20_ETM20_thresh1");
318  doubleThresholds_[L1ParticleMap::kTauJet20_ETM20].second = iConfig.getParameter<double>("L1_TauJet20_ETM20_thresh2");
319  prescales_[L1ParticleMap::kTauJet20_ETM20] = iConfig.getParameter<int>("L1_TauJet20_ETM20_prescale");
320  doubleThresholds_[L1ParticleMap::kTauJet30_ETM30].first = iConfig.getParameter<double>("L1_TauJet30_ETM30_thresh1");
321  doubleThresholds_[L1ParticleMap::kTauJet30_ETM30].second = iConfig.getParameter<double>("L1_TauJet30_ETM30_thresh2");
322  prescales_[L1ParticleMap::kTauJet30_ETM30] = iConfig.getParameter<int>("L1_TauJet30_ETM30_prescale");
323  doubleThresholds_[L1ParticleMap::kTauJet30_ETM40].first = iConfig.getParameter<double>("L1_TauJet30_ETM40_thresh1");
324  doubleThresholds_[L1ParticleMap::kTauJet30_ETM40].second = iConfig.getParameter<double>("L1_TauJet30_ETM40_thresh2");
325  prescales_[L1ParticleMap::kTauJet30_ETM40] = iConfig.getParameter<int>("L1_TauJet30_ETM40_prescale");
326 
327  doubleThresholds_[L1ParticleMap::kHTT100_ETM30].first = iConfig.getParameter<double>("L1_HTT100_ETM30_thresh1");
328  doubleThresholds_[L1ParticleMap::kHTT100_ETM30].second = iConfig.getParameter<double>("L1_HTT100_ETM30_thresh2");
329  prescales_[L1ParticleMap::kHTT100_ETM30] = iConfig.getParameter<int>("L1_HTT100_ETM30_prescale");
330 
331  // AAA triggers
332 
333  singleThresholds_[L1ParticleMap::kTripleMu3] = iConfig.getParameter<double>("L1_TripleMu3_thresh");
334  prescales_[L1ParticleMap::kTripleMu3] = iConfig.getParameter<int>("L1_TripleMu3_prescale");
335  singleThresholds_[L1ParticleMap::kTripleIsoEG5] = iConfig.getParameter<double>("L1_TripleIsoEG5_thresh");
336  prescales_[L1ParticleMap::kTripleIsoEG5] = iConfig.getParameter<int>("L1_TripleIsoEG5_prescale");
337  singleThresholds_[L1ParticleMap::kTripleEG10] = iConfig.getParameter<double>("L1_TripleEG10_thresh");
338  prescales_[L1ParticleMap::kTripleEG10] = iConfig.getParameter<int>("L1_TripleEG10_prescale");
339  singleThresholds_[L1ParticleMap::kTripleJet50] = iConfig.getParameter<double>("L1_TripleJet50_thresh");
340  prescales_[L1ParticleMap::kTripleJet50] = iConfig.getParameter<int>("L1_TripleJet50_prescale");
341  singleThresholds_[L1ParticleMap::kTripleTauJet40] = iConfig.getParameter<double>("L1_TripleTauJet40_thresh");
342  prescales_[L1ParticleMap::kTripleTauJet40] = iConfig.getParameter<int>("L1_TripleTauJet40_prescale");
343 
344  // AAB triggers
345 
346  doubleThresholds_[L1ParticleMap::kDoubleMu3_IsoEG5].first =
347  iConfig.getParameter<double>("L1_DoubleMu3_IsoEG5_thresh1");
348  doubleThresholds_[L1ParticleMap::kDoubleMu3_IsoEG5].second =
349  iConfig.getParameter<double>("L1_DoubleMu3_IsoEG5_thresh2");
350  prescales_[L1ParticleMap::kDoubleMu3_IsoEG5] = iConfig.getParameter<int>("L1_DoubleMu3_IsoEG5_prescale");
351  doubleThresholds_[L1ParticleMap::kDoubleMu3_EG10].first = iConfig.getParameter<double>("L1_DoubleMu3_EG10_thresh1");
352  doubleThresholds_[L1ParticleMap::kDoubleMu3_EG10].second = iConfig.getParameter<double>("L1_DoubleMu3_EG10_thresh2");
353  prescales_[L1ParticleMap::kDoubleMu3_EG10] = iConfig.getParameter<int>("L1_DoubleMu3_EG10_prescale");
354  doubleThresholds_[L1ParticleMap::kDoubleIsoEG5_Mu3].first =
355  iConfig.getParameter<double>("L1_DoubleIsoEG5_Mu3_thresh1");
356  doubleThresholds_[L1ParticleMap::kDoubleIsoEG5_Mu3].second =
357  iConfig.getParameter<double>("L1_DoubleIsoEG5_Mu3_thresh2");
358  prescales_[L1ParticleMap::kDoubleIsoEG5_Mu3] = iConfig.getParameter<int>("L1_DoubleIsoEG5_Mu3_prescale");
359  doubleThresholds_[L1ParticleMap::kDoubleEG10_Mu3].first = iConfig.getParameter<double>("L1_DoubleEG10_Mu3_thresh1");
360  doubleThresholds_[L1ParticleMap::kDoubleEG10_Mu3].second = iConfig.getParameter<double>("L1_DoubleEG10_Mu3_thresh2");
361  prescales_[L1ParticleMap::kDoubleEG10_Mu3] = iConfig.getParameter<int>("L1_DoubleEG10_Mu3_prescale");
362 
363  doubleThresholds_[L1ParticleMap::kDoubleMu3_HTT200].first =
364  iConfig.getParameter<double>("L1_DoubleMu3_HTT200_thresh1");
365  doubleThresholds_[L1ParticleMap::kDoubleMu3_HTT200].second =
366  iConfig.getParameter<double>("L1_DoubleMu3_HTT200_thresh2");
367  prescales_[L1ParticleMap::kDoubleMu3_HTT200] = iConfig.getParameter<int>("L1_DoubleMu3_HTT200_prescale");
368  doubleThresholds_[L1ParticleMap::kDoubleIsoEG5_HTT200].first =
369  iConfig.getParameter<double>("L1_DoubleIsoEG5_HTT200_thresh1");
370  doubleThresholds_[L1ParticleMap::kDoubleIsoEG5_HTT200].second =
371  iConfig.getParameter<double>("L1_DoubleIsoEG5_HTT200_thresh2");
372  prescales_[L1ParticleMap::kDoubleIsoEG5_HTT200] = iConfig.getParameter<int>("L1_DoubleIsoEG5_HTT200_prescale");
373  doubleThresholds_[L1ParticleMap::kDoubleEG10_HTT200].first =
374  iConfig.getParameter<double>("L1_DoubleEG10_HTT200_thresh1");
375  doubleThresholds_[L1ParticleMap::kDoubleEG10_HTT200].second =
376  iConfig.getParameter<double>("L1_DoubleEG10_HTT200_thresh2");
377  prescales_[L1ParticleMap::kDoubleEG10_HTT200] = iConfig.getParameter<int>("L1_DoubleEG10_HTT200_prescale");
378  doubleThresholds_[L1ParticleMap::kDoubleJet50_HTT200].first =
379  iConfig.getParameter<double>("L1_DoubleJet50_HTT200_thresh1");
380  doubleThresholds_[L1ParticleMap::kDoubleJet50_HTT200].second =
381  iConfig.getParameter<double>("L1_DoubleJet50_HTT200_thresh2");
382  prescales_[L1ParticleMap::kDoubleJet50_HTT200] = iConfig.getParameter<int>("L1_DoubleJet50_HTT200_prescale");
383  doubleThresholds_[L1ParticleMap::kDoubleTauJet40_HTT200].first =
384  iConfig.getParameter<double>("L1_DoubleTauJet40_HTT200_thresh1");
385  doubleThresholds_[L1ParticleMap::kDoubleTauJet40_HTT200].second =
386  iConfig.getParameter<double>("L1_DoubleTauJet40_HTT200_thresh2");
387  prescales_[L1ParticleMap::kDoubleTauJet40_HTT200] = iConfig.getParameter<int>("L1_DoubleTauJet40_HTT200_prescale");
388 
389  doubleThresholds_[L1ParticleMap::kDoubleMu3_ETM20].first = iConfig.getParameter<double>("L1_DoubleMu3_ETM20_thresh1");
390  doubleThresholds_[L1ParticleMap::kDoubleMu3_ETM20].second =
391  iConfig.getParameter<double>("L1_DoubleMu3_ETM20_thresh2");
392  prescales_[L1ParticleMap::kDoubleMu3_ETM20] = iConfig.getParameter<int>("L1_DoubleMu3_ETM20_prescale");
393  doubleThresholds_[L1ParticleMap::kDoubleIsoEG5_ETM20].first =
394  iConfig.getParameter<double>("L1_DoubleIsoEG5_ETM20_thresh1");
395  doubleThresholds_[L1ParticleMap::kDoubleIsoEG5_ETM20].second =
396  iConfig.getParameter<double>("L1_DoubleIsoEG5_ETM20_thresh2");
397  prescales_[L1ParticleMap::kDoubleIsoEG5_ETM20] = iConfig.getParameter<int>("L1_DoubleIsoEG5_ETM20_prescale");
398  doubleThresholds_[L1ParticleMap::kDoubleEG10_ETM20].first =
399  iConfig.getParameter<double>("L1_DoubleEG10_ETM20_thresh1");
400  doubleThresholds_[L1ParticleMap::kDoubleEG10_ETM20].second =
401  iConfig.getParameter<double>("L1_DoubleEG10_ETM20_thresh2");
402  prescales_[L1ParticleMap::kDoubleEG10_ETM20] = iConfig.getParameter<int>("L1_DoubleEG10_ETM20_prescale");
403  doubleThresholds_[L1ParticleMap::kDoubleJet50_ETM20].first =
404  iConfig.getParameter<double>("L1_DoubleJet50_ETM20_thresh1");
405  doubleThresholds_[L1ParticleMap::kDoubleJet50_ETM20].second =
406  iConfig.getParameter<double>("L1_DoubleJet50_ETM20_thresh2");
407  prescales_[L1ParticleMap::kDoubleJet50_ETM20] = iConfig.getParameter<int>("L1_DoubleJet50_ETM20_prescale");
408  doubleThresholds_[L1ParticleMap::kDoubleTauJet40_ETM20].first =
409  iConfig.getParameter<double>("L1_DoubleTauJet40_ETM20_thresh1");
410  doubleThresholds_[L1ParticleMap::kDoubleTauJet40_ETM20].second =
411  iConfig.getParameter<double>("L1_DoubleTauJet40_ETM20_thresh2");
412  prescales_[L1ParticleMap::kDoubleTauJet40_ETM20] = iConfig.getParameter<int>("L1_DoubleTauJet40_ETM20_prescale");
413 
414  singleThresholds_[L1ParticleMap::kQuadJet30] = iConfig.getParameter<double>("L1_QuadJet30_thresh");
415  prescales_[L1ParticleMap::kQuadJet30] = iConfig.getParameter<int>("L1_QuadJet30_prescale");
416 
417  // Diffractive triggers
418  doubleThresholds_[L1ParticleMap::kExclusiveDoubleIsoEG4].first =
419  iConfig.getParameter<double>("L1_ExclusiveDoubleIsoEG4_thresh1");
420  doubleThresholds_[L1ParticleMap::kExclusiveDoubleIsoEG4].second =
421  iConfig.getParameter<double>("L1_ExclusiveDoubleIsoEG4_thresh2"); // for jet rejection
422  prescales_[L1ParticleMap::kExclusiveDoubleIsoEG4] = iConfig.getParameter<int>("L1_ExclusiveDoubleIsoEG4_prescale");
423  singleThresholds_[L1ParticleMap::kExclusiveDoubleJet60] =
424  iConfig.getParameter<double>("L1_ExclusiveDoubleJet60_thresh");
425  prescales_[L1ParticleMap::kExclusiveDoubleJet60] = iConfig.getParameter<int>("L1_ExclusiveDoubleJet60_prescale");
426  singleThresholds_[L1ParticleMap::kExclusiveJet25_Gap_Jet25] =
427  iConfig.getParameter<double>("L1_ExclusiveJet25_Gap_Jet25_thresh");
428  prescales_[L1ParticleMap::kExclusiveJet25_Gap_Jet25] =
429  iConfig.getParameter<int>("L1_ExclusiveJet25_Gap_Jet25_prescale");
430  doubleThresholds_[L1ParticleMap::kIsoEG10_Jet20_ForJet10].first =
431  iConfig.getParameter<double>("L1_IsoEG10_Jet20_ForJet10_thresh1");
432  doubleThresholds_[L1ParticleMap::kIsoEG10_Jet20_ForJet10].second =
433  iConfig.getParameter<double>("L1_IsoEG10_Jet20_ForJet10_thresh2");
434  singleThresholds_[L1ParticleMap::kIsoEG10_Jet20_ForJet10] =
435  iConfig.getParameter<double>("L1_IsoEG10_Jet20_ForJet10_thresh3");
436  prescales_[L1ParticleMap::kIsoEG10_Jet20_ForJet10] = iConfig.getParameter<int>("L1_IsoEG10_Jet20_ForJet10_prescale");
437 
438  prescales_[L1ParticleMap::kMinBias_HTT10] = iConfig.getParameter<int>("L1_MinBias_HTT10_prescale");
439  prescales_[L1ParticleMap::kZeroBias] = iConfig.getParameter<int>("L1_ZeroBias_prescale");
440 
441  // // Print trigger table in Twiki table format.
442  // std::cout << "| *Trigger Index* | *Trigger Name* | *E<sub>T</sub>
443  // Threshold (!GeV)* | *Prescale* |"
444  // << std::endl ;
445 
446  // for( int i = 0 ; i < L1ParticleMap::kNumOfL1TriggerTypes ; ++i )
447  // {
448  // std::cout
449  // << "| "
450  // << i
451  // << " | " ;
452  // if( prescales_[ i ] == 999999999 ) std::cout << "<strike>" ;
453  // std::cout
454  // << L1ParticleMap::triggerName( ( L1ParticleMap::L1TriggerType ) i ) ;
455  // if( prescales_[ i ] == 999999999 ) std::cout << "</strike>" ;
456  // std::cout << " | " ;
457 
458  // if( singleThresholds_[ i ] > 0 )
459  // {
460  // if( doubleThresholds_[ i ].first > 0 )
461  // {
462  // std::cout << doubleThresholds_[ i ].first << ", "
463  // << doubleThresholds_[ i ].second << ", " ;
464  // }
465 
466  // std::cout << singleThresholds_[ i ] ;
467  // }
468  // else if( doubleThresholds_[ i ].first > 0 )
469  // {
470  // std::cout << doubleThresholds_[ i ].first << ", "
471  // << doubleThresholds_[ i ].second ;
472  // }
473  // else
474  // {
475  // std::cout << "---" ;
476  // }
477 
478  // std::cout << " | " ;
479  // if( prescales_[ i ] != 999999999 ) std::cout << prescales_[ i ] ;
480  // std::cout << " |"
481  // << std::endl ;
482  // }
483 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
std::pair< double, double > doubleThresholds_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
double singleThresholds_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
int prescales_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]

◆ ~L1ExtraParticleMapProd()

L1ExtraParticleMapProd::~L1ExtraParticleMapProd ( )
override

Definition at line 485 of file L1ExtraParticleMapProd.cc.

485  {
486  // do anything here that needs to be done at desctruction time
487  // (e.g. close files, deallocate resources etc.)
488 }

Member Function Documentation

◆ addToVectorRefs()

template<class TCollection >
void L1ExtraParticleMapProd::addToVectorRefs ( const edm::Handle< TCollection > &  handle,
std::vector< edm::Ref< TCollection >> &  vectorRefs 
) const
private

Definition at line 1241 of file L1ExtraParticleMapProd.cc.

References patZpeak::handle, and mps_fire::i.

Referenced by produce().

1243 {
1244  for (size_t i = 0; i < handle->size(); ++i) {
1245  vectorRefs.push_back(edm::Ref<TCollection>(handle, i));
1246  }
1247 }

◆ evaluateDoubleDifferentCaloObjectTrigger()

void L1ExtraParticleMapProd::evaluateDoubleDifferentCaloObjectTrigger ( const l1extra::L1EmParticleVectorRef inputRefs1,
const l1extra::L1JetParticleVectorRef inputRefs2,
const double &  etThreshold1,
const double &  etThreshold2,
bool &  decision,
l1extra::L1EmParticleVectorRef outputRefs1,
l1extra::L1JetParticleVectorRef outputRefs2,
l1extra::L1ParticleMap::L1IndexComboVector combos 
) const
private

Definition at line 1673 of file L1ExtraParticleMapProd.cc.

References edm::Ref< C, T, F >::get(), mps_fire::i, dqmiolumiharvest::j, and kDefault.

Referenced by produce().

1682 {
1683  for (size_t i = 0; i < inputRefs1.size(); ++i) {
1684  const l1extra::L1EmParticleRef &refi = inputRefs1[i];
1685  if (refi.get()->et() >= etThreshold1) {
1686  for (size_t j = 0; j < inputRefs2.size(); ++j) {
1687  const l1extra::L1JetParticleRef &refj = inputRefs2[j];
1688 
1689  // Check for identical region only if both HW objects are non-null.
1690  if (refj.get()->et() >= etThreshold2 &&
1691  (refi.get()->gctEmCand() == nullptr || refj.get()->gctJetCand() == nullptr ||
1692  refi.get()->gctEmCand()->regionId() != refj.get()->gctJetCand()->regionId())) {
1693  decision = true;
1694 
1695  // If the two objects are already in their respective lists,
1696  // find their indices.
1697  int iInList = kDefault;
1698  for (size_t iout = 0; iout < outputRefs1.size(); ++iout) {
1699  if (refi == outputRefs1[iout]) {
1700  iInList = iout;
1701  }
1702  }
1703 
1704  int jInList = kDefault;
1705  for (size_t jout = 0; jout < outputRefs2.size(); ++jout) {
1706  if (refj == outputRefs2[jout]) {
1707  jInList = jout;
1708  }
1709  }
1710 
1711  // If either object is not in the list, add it, and
1712  // record its index.
1713  if (iInList == kDefault) {
1714  iInList = outputRefs1.size();
1715  outputRefs1.push_back(refi);
1716  }
1717 
1718  if (jInList == kDefault) {
1719  jInList = outputRefs2.size();
1720  outputRefs2.push_back(refj);
1721  }
1722 
1723  // Record this object combination.
1725  combo.push_back(iInList);
1726  combo.push_back(jInList);
1727  combos.push_back(combo);
1728  }
1729  }
1730  }
1731  }
1732 }
std::vector< unsigned int > L1IndexCombo
static const int kDefault
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:232

◆ evaluateDoubleDifferentObjectSameTypeTrigger()

template<class TCollection >
void L1ExtraParticleMapProd::evaluateDoubleDifferentObjectSameTypeTrigger ( const std::vector< edm::Ref< TCollection >> &  inputRefs1,
const std::vector< edm::Ref< TCollection >> &  inputRefs2,
const double &  etThreshold1,
const double &  etThreshold2,
bool &  decision,
std::vector< edm::Ref< TCollection >> &  outputRefs,
l1extra::L1ParticleMap::L1IndexComboVector combos 
) const
private

Definition at line 1616 of file L1ExtraParticleMapProd.cc.

References edm::Ref< C, T, F >::get(), mps_fire::i, dqmiolumiharvest::j, and kDefault.

Referenced by produce().

1624 {
1625  for (size_t i = 0; i < inputRefs1.size(); ++i) {
1626  const edm::Ref<TCollection> &refi = inputRefs1[i];
1627  if (refi.get()->et() >= etThreshold1) {
1628  for (size_t j = 0; j < inputRefs2.size(); ++j) {
1629  const edm::Ref<TCollection> &refj = inputRefs2[j];
1630 
1631  if (refj.get()->et() >= etThreshold2 && refi != refj) {
1632  decision = true;
1633 
1634  // If the two objects are already in their respective lists,
1635  // find their indices.
1636  int iInList = kDefault;
1637  for (size_t iout = 0; iout < outputRefs.size(); ++iout) {
1638  if (refi == outputRefs[iout]) {
1639  iInList = iout;
1640  }
1641  }
1642 
1643  int jInList = kDefault;
1644  for (size_t jout = 0; jout < outputRefs.size(); ++jout) {
1645  if (refj == outputRefs[jout]) {
1646  jInList = jout;
1647  }
1648  }
1649 
1650  // If either object is not in the list, add it, and
1651  // record its index.
1652  if (iInList == kDefault) {
1653  iInList = outputRefs.size();
1654  outputRefs.push_back(refi);
1655  }
1656 
1657  if (jInList == kDefault) {
1658  jInList = outputRefs.size();
1659  outputRefs.push_back(refj);
1660  }
1661 
1662  // Record this object combination.
1664  combo.push_back(iInList);
1665  combo.push_back(jInList);
1666  combos.push_back(combo);
1667  }
1668  }
1669  }
1670  }
1671 }
std::vector< unsigned int > L1IndexCombo
static const int kDefault
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:232

◆ evaluateDoubleDifferentObjectTrigger()

template<class TCollection1 , class TCollection2 >
void L1ExtraParticleMapProd::evaluateDoubleDifferentObjectTrigger ( const std::vector< edm::Ref< TCollection1 >> &  inputRefs1,
const std::vector< edm::Ref< TCollection2 >> &  inputRefs2,
const double &  etThreshold1,
const double &  etThreshold2,
bool &  decision,
std::vector< edm::Ref< TCollection1 >> &  outputRefs1,
std::vector< edm::Ref< TCollection2 >> &  outputRefs2,
l1extra::L1ParticleMap::L1IndexComboVector combos 
) const
private

Definition at line 1557 of file L1ExtraParticleMapProd.cc.

References edm::Ref< C, T, F >::get(), mps_fire::i, dqmiolumiharvest::j, and kDefault.

Referenced by produce().

1566 {
1567  for (size_t i = 0; i < inputRefs1.size(); ++i) {
1568  const edm::Ref<TCollection1> &refi = inputRefs1[i];
1569  if (refi.get()->et() >= etThreshold1) {
1570  for (size_t j = 0; j < inputRefs2.size(); ++j) {
1571  const edm::Ref<TCollection2> &refj = inputRefs2[j];
1572 
1573  if (refj.get()->et() >= etThreshold2) {
1574  decision = true;
1575 
1576  // If the two objects are already in their respective lists,
1577  // find their indices.
1578  int iInList = kDefault;
1579  for (size_t iout = 0; iout < outputRefs1.size(); ++iout) {
1580  if (refi == outputRefs1[iout]) {
1581  iInList = iout;
1582  }
1583  }
1584 
1585  int jInList = kDefault;
1586  for (size_t jout = 0; jout < outputRefs2.size(); ++jout) {
1587  if (refj == outputRefs2[jout]) {
1588  jInList = jout;
1589  }
1590  }
1591 
1592  // If either object is not in the list, add it, and
1593  // record its index.
1594  if (iInList == kDefault) {
1595  iInList = outputRefs1.size();
1596  outputRefs1.push_back(refi);
1597  }
1598 
1599  if (jInList == kDefault) {
1600  jInList = outputRefs2.size();
1601  outputRefs2.push_back(refj);
1602  }
1603 
1604  // Record this object combination.
1606  combo.push_back(iInList);
1607  combo.push_back(jInList);
1608  combos.push_back(combo);
1609  }
1610  }
1611  }
1612  }
1613 }
std::vector< unsigned int > L1IndexCombo
static const int kDefault
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:232

◆ evaluateDoubleExclusiveIsoEG()

void L1ExtraParticleMapProd::evaluateDoubleExclusiveIsoEG ( const l1extra::L1EmParticleVectorRef inputRefs1,
const l1extra::L1JetParticleVectorRef inputRefs2,
const double &  etThreshold1,
const double &  etThreshold2,
bool &  decision,
l1extra::L1EmParticleVectorRef outputRefs1,
l1extra::L1ParticleMap::L1IndexComboVector combos 
) const
private

Definition at line 1815 of file L1ExtraParticleMapProd.cc.

References evaluateDoubleSameObjectTrigger(), and dqmiolumiharvest::j.

Referenced by produce().

1823 {
1824  if (inputRefs1.size() == 2) { // 2 iso EG
1825  decision = true;
1826  if (!inputRefs2.empty()) { // should veto if there are jets, with pt>thresh
1827  for (size_t j = 0; j < inputRefs2.size(); ++j) {
1828  if (inputRefs2[j].get()->gctJetCand()->regionId() == inputRefs1[0].get()->gctEmCand()->regionId())
1829  continue;
1830  if (inputRefs2[j].get()->gctJetCand()->regionId() == inputRefs1[1].get()->gctEmCand()->regionId())
1831  continue;
1832  if (inputRefs2[j].get()->et() > etThreshold2) {
1833  decision = false;
1834  break;
1835  }
1836  // break : for a faster algorithm
1837  }
1838  }
1839  if (decision) { // threshold evaluation for the Exclusive double isoEG
1840  decision = false;
1841  evaluateDoubleSameObjectTrigger(inputRefs1, etThreshold1, decision, outputRefs1, combos);
1842  }
1843  }
1844 }
void evaluateDoubleSameObjectTrigger(const std::vector< edm::Ref< TCollection >> &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection >> &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos, bool combinedWithGlobalObject=false) const

◆ evaluateDoublePlusSingleObjectTrigger()

template<class TCollection1 , class TCollection2 >
void L1ExtraParticleMapProd::evaluateDoublePlusSingleObjectTrigger ( const std::vector< edm::Ref< TCollection1 >> &  inputRefs1,
const std::vector< edm::Ref< TCollection2 >> &  inputRefs2,
const double &  etThreshold1,
const double &  etThreshold2,
bool &  decision,
std::vector< edm::Ref< TCollection1 >> &  outputRefs1,
std::vector< edm::Ref< TCollection2 >> &  outputRefs2,
l1extra::L1ParticleMap::L1IndexComboVector combos 
) const
private

Definition at line 1393 of file L1ExtraParticleMapProd.cc.

References edm::Ref< C, T, F >::get(), mps_fire::i, dqmiolumiharvest::j, dqmdumpme::k, and kDefault.

Referenced by produce().

1402 {
1403  // Use i+1 < inputRefs.size() instead of i < inputRefs.size()-1
1404  // because i is unsigned, and if size() is 0, then RHS undefined.
1405  for (size_t i = 0; i + 1 < inputRefs1.size(); ++i) {
1406  const edm::Ref<TCollection1> &refi = inputRefs1[i];
1407  if (refi.get()->et() >= etThreshold1) {
1408  for (size_t j = i + 1; j < inputRefs1.size(); ++j) {
1409  const edm::Ref<TCollection1> &refj = inputRefs1[j];
1410  if (refj.get()->et() >= etThreshold1) {
1411  for (size_t k = 0; k < inputRefs2.size(); ++k) {
1412  const edm::Ref<TCollection2> &refk = inputRefs2[k];
1413  if (refk.get()->et() >= etThreshold2) {
1414  decision = true;
1415 
1416  // If the three objects are already in the list, find
1417  // their indices.
1418  int iInList = kDefault;
1419  int jInList = kDefault;
1420 
1421  for (size_t iout = 0; iout < outputRefs1.size(); ++iout) {
1422  if (refi == outputRefs1[iout]) {
1423  iInList = iout;
1424  }
1425 
1426  if (refj == outputRefs1[iout]) {
1427  jInList = iout;
1428  }
1429  }
1430 
1431  int kInList = kDefault;
1432  for (size_t kout = 0; kout < outputRefs2.size(); ++kout) {
1433  if (refk == outputRefs2[kout]) {
1434  kInList = kout;
1435  }
1436  }
1437 
1438  // If any object is not in the list, add it, and
1439  // record its index.
1440  if (iInList == kDefault) {
1441  iInList = outputRefs1.size();
1442  outputRefs1.push_back(refi);
1443  }
1444 
1445  if (jInList == kDefault) {
1446  jInList = outputRefs1.size();
1447  outputRefs1.push_back(refj);
1448  }
1449 
1450  if (kInList == kDefault) {
1451  kInList = outputRefs2.size();
1452  outputRefs2.push_back(refk);
1453  }
1454 
1455  // Record this object combination.
1457  combo.push_back(iInList);
1458  combo.push_back(jInList);
1459  combo.push_back(kInList);
1460  combos.push_back(combo);
1461  }
1462  }
1463  }
1464  }
1465  }
1466  }
1467 }
std::vector< unsigned int > L1IndexCombo
static const int kDefault
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:232

◆ evaluateDoubleSameObjectTrigger()

template<class TCollection >
void L1ExtraParticleMapProd::evaluateDoubleSameObjectTrigger ( const std::vector< edm::Ref< TCollection >> &  inputRefs,
const double &  etThreshold,
bool &  decision,
std::vector< edm::Ref< TCollection >> &  outputRefs,
l1extra::L1ParticleMap::L1IndexComboVector combos,
bool  combinedWithGlobalObject = false 
) const
private

Definition at line 1264 of file L1ExtraParticleMapProd.cc.

References edm::Ref< C, T, F >::get(), mps_fire::i, dqmiolumiharvest::j, and kDefault.

Referenced by evaluateDoubleExclusiveIsoEG(), and produce().

1271 {
1272  // Use i+1 < inputRefs.size() instead of i < inputRefs.size()-1
1273  // because i is unsigned, and if size() is 0, then RHS undefined.
1274  for (size_t i = 0; i + 1 < inputRefs.size(); ++i) {
1275  const edm::Ref<TCollection> &refi = inputRefs[i];
1276  if (refi.get()->et() >= etThreshold) {
1277  for (size_t j = i + 1; j < inputRefs.size(); ++j) {
1278  const edm::Ref<TCollection> &refj = inputRefs[j];
1279  if (refj.get()->et() >= etThreshold) {
1280  decision = true;
1281 
1282  // If the two objects are already in the list, find
1283  // their indices.
1284  int iInList = kDefault;
1285  int jInList = kDefault;
1286  for (size_t iout = 0; iout < outputRefs.size(); ++iout) {
1287  if (refi == outputRefs[iout]) {
1288  iInList = iout;
1289  }
1290 
1291  if (refj == outputRefs[iout]) {
1292  jInList = iout;
1293  }
1294  }
1295 
1296  // If either object is not in the list, add it, and
1297  // record its index.
1298  if (iInList == kDefault) {
1299  iInList = outputRefs.size();
1300  outputRefs.push_back(refi);
1301  }
1302 
1303  if (jInList == kDefault) {
1304  jInList = outputRefs.size();
1305  outputRefs.push_back(refj);
1306  }
1307 
1308  // Record this object combination.
1310  combo.push_back(iInList);
1311  combo.push_back(jInList);
1312  if (combinedWithGlobalObject)
1313  combo.push_back(0);
1314  combos.push_back(combo);
1315  }
1316  }
1317  }
1318  }
1319 }
std::vector< unsigned int > L1IndexCombo
static const int kDefault
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:232

◆ evaluateForwardRapidityGap()

void L1ExtraParticleMapProd::evaluateForwardRapidityGap ( const l1extra::L1JetParticleVectorRef inputRefs,
const double &  etThreshold,
bool &  decision 
) const
private

Definition at line 1791 of file L1ExtraParticleMapProd.cc.

References edm::Ref< C, T, F >::get(), dqmdumpme::k, l1extra::L1JetParticle::kForward, cmsLHEtoEOSManager::l, and truncPyr::refl().

Referenced by produce().

1794  {
1795  decision = true;
1796 
1797  // search for forward pair
1798  for (size_t k = 0; k + 1 < inputRefs.size(); ++k) {
1799  const l1extra::L1JetParticleRef &refk = inputRefs[k];
1800  double etak = refk.get()->eta();
1801  if ((refk.get()->type() == l1extra::L1JetParticle::kForward) && (refk.get()->et() >= etThreshold)) {
1802  for (size_t l = k + 1; l < inputRefs.size(); ++l) {
1803  const l1extra::L1JetParticleRef &refl = inputRefs[l];
1804  double etal = refl.get()->eta();
1805  if ((refl.get()->type() == l1extra::L1JetParticle::kForward) && (refl.get()->et() >= etThreshold) &&
1806  ((etak > 0 && etal < 0) || (etak < 0 && etal > 0))) {
1807  decision = false;
1808  return; // no need for going further -- for a faster algorithm
1809  }
1810  }
1811  }
1812  }
1813 }
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:232
Pt3D refl(const Pt3D &p)

◆ evaluateJetGapJetTrigger()

void L1ExtraParticleMapProd::evaluateJetGapJetTrigger ( const l1extra::L1JetParticleVectorRef inputRefs,
const double &  etThreshold,
bool &  decision,
l1extra::L1JetParticleVectorRef outputRefs,
l1extra::L1ParticleMap::L1IndexComboVector combos 
) const
private

Definition at line 1735 of file L1ExtraParticleMapProd.cc.

References edm::Ref< C, T, F >::get(), mps_fire::i, dqmiolumiharvest::j, and kDefault.

Referenced by produce().

1741 {
1742  // Use i+1 < inputRefs.size() instead of i < inputRefs.size()-1
1743  // because i is unsigned, and if size() is 0, then RHS undefined.
1744  for (size_t i = 0; i + 1 < inputRefs.size(); ++i) {
1745  const l1extra::L1JetParticleRef &refi = inputRefs[i];
1746  if (refi.get()->et() >= etThreshold) {
1747  for (size_t j = i + 1; j < inputRefs.size(); ++j) {
1748  const l1extra::L1JetParticleRef &refj = inputRefs[j];
1749  if ((refj.get()->et() >= etThreshold) && (((refi.get()->eta() < 0.) && (refj.get()->eta() > 0.)) ||
1750  ((refi.get()->eta() > 0.) && (refj.get()->eta() < 0.)))) {
1751  decision = true;
1752 
1753  // If the two objects are already in the list, find
1754  // their indices.
1755  int iInList = kDefault;
1756  int jInList = kDefault;
1757  for (size_t iout = 0; iout < outputRefs.size(); ++iout) {
1758  if (refi == outputRefs[iout]) {
1759  iInList = iout;
1760  }
1761 
1762  if (refj == outputRefs[iout]) {
1763  jInList = iout;
1764  }
1765  }
1766 
1767  // If either object is not in the list, add it, and
1768  // record its index.
1769  if (iInList == kDefault) {
1770  iInList = outputRefs.size();
1771  outputRefs.push_back(refi);
1772  }
1773 
1774  if (jInList == kDefault) {
1775  jInList = outputRefs.size();
1776  outputRefs.push_back(refj);
1777  }
1778 
1779  // Record this object combination.
1781  combo.push_back(iInList);
1782  combo.push_back(jInList);
1783  combos.push_back(combo);
1784  }
1785  }
1786  }
1787  }
1788 }
std::vector< unsigned int > L1IndexCombo
static const int kDefault
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:232

◆ evaluateQuadSameObjectTrigger()

template<class TCollection >
void L1ExtraParticleMapProd::evaluateQuadSameObjectTrigger ( const std::vector< edm::Ref< TCollection >> &  inputRefs,
const double &  etThreshold,
bool &  decision,
std::vector< edm::Ref< TCollection >> &  outputRefs,
l1extra::L1ParticleMap::L1IndexComboVector combos 
) const
private

Definition at line 1470 of file L1ExtraParticleMapProd.cc.

References edm::Ref< C, T, F >::get(), mps_fire::i, dqmiolumiharvest::j, dqmdumpme::k, kDefault, and AlCaHLTBitMon_ParallelJobs::p.

Referenced by produce().

1476 {
1477  // Use i+3 < inputRefs.size() instead of i < inputRefs.size()-3
1478  // because i is unsigned, and if size() is 0, then RHS undefined.
1479  for (size_t i = 0; i + 3 < inputRefs.size(); ++i) {
1480  const edm::Ref<TCollection> &refi = inputRefs[i];
1481  if (refi.get()->et() >= etThreshold) {
1482  for (size_t j = i + 1; j + 2 < inputRefs.size(); ++j) {
1483  const edm::Ref<TCollection> &refj = inputRefs[j];
1484  if (refj.get()->et() >= etThreshold) {
1485  for (size_t k = j + 1; k + 1 < inputRefs.size(); ++k) {
1486  const edm::Ref<TCollection> &refk = inputRefs[k];
1487  if (refk.get()->et() >= etThreshold) {
1488  for (size_t p = k + 1; p < inputRefs.size(); ++p) {
1489  const edm::Ref<TCollection> &refp = inputRefs[p];
1490  if (refp.get()->et() >= etThreshold) {
1491  decision = true;
1492 
1493  // If the objects are already in the list, find
1494  // their indices.
1495  int iInList = kDefault;
1496  int jInList = kDefault;
1497  int kInList = kDefault;
1498  int pInList = kDefault;
1499  for (size_t iout = 0; iout < outputRefs.size(); ++iout) {
1500  if (refi == outputRefs[iout]) {
1501  iInList = iout;
1502  }
1503 
1504  if (refj == outputRefs[iout]) {
1505  jInList = iout;
1506  }
1507 
1508  if (refk == outputRefs[iout]) {
1509  kInList = iout;
1510  }
1511 
1512  if (refp == outputRefs[iout]) {
1513  pInList = iout;
1514  }
1515  }
1516 
1517  // If any object is not in the list, add it, and
1518  // record its index.
1519  if (iInList == kDefault) {
1520  iInList = outputRefs.size();
1521  outputRefs.push_back(refi);
1522  }
1523 
1524  if (jInList == kDefault) {
1525  jInList = outputRefs.size();
1526  outputRefs.push_back(refj);
1527  }
1528 
1529  if (kInList == kDefault) {
1530  kInList = outputRefs.size();
1531  outputRefs.push_back(refk);
1532  }
1533 
1534  if (pInList == kDefault) {
1535  pInList = outputRefs.size();
1536  outputRefs.push_back(refp);
1537  }
1538 
1539  // Record this object combination.
1541  combo.push_back(iInList);
1542  combo.push_back(jInList);
1543  combo.push_back(kInList);
1544  combo.push_back(pInList);
1545  combos.push_back(combo);
1546  }
1547  }
1548  }
1549  }
1550  }
1551  }
1552  }
1553  }
1554 }
std::vector< unsigned int > L1IndexCombo
static const int kDefault
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:232

◆ evaluateSingleObjectTrigger()

template<class TCollection >
void L1ExtraParticleMapProd::evaluateSingleObjectTrigger ( const std::vector< edm::Ref< TCollection >> &  inputRefs,
const double &  etThreshold,
bool &  decision,
std::vector< edm::Ref< TCollection >> &  outputRefs 
) const
private

Definition at line 1250 of file L1ExtraParticleMapProd.cc.

References mps_fire::i.

Referenced by produce().

1254 {
1255  for (size_t i = 0; i < inputRefs.size(); ++i) {
1256  if (inputRefs[i].get()->et() >= etThreshold) {
1257  decision = true;
1258  outputRefs.push_back(inputRefs[i]);
1259  }
1260  }
1261 }

◆ evaluateTripleSameObjectTrigger()

template<class TCollection >
void L1ExtraParticleMapProd::evaluateTripleSameObjectTrigger ( const std::vector< edm::Ref< TCollection >> &  inputRefs,
const double &  etThreshold,
bool &  decision,
std::vector< edm::Ref< TCollection >> &  outputRefs,
l1extra::L1ParticleMap::L1IndexComboVector combos 
) const
private

Definition at line 1322 of file L1ExtraParticleMapProd.cc.

References edm::Ref< C, T, F >::get(), mps_fire::i, dqmiolumiharvest::j, dqmdumpme::k, and kDefault.

Referenced by produce().

1328 {
1329  // Use i+2 < inputRefs.size() instead of i < inputRefs.size()-2
1330  // because i is unsigned, and if size() is 0, then RHS undefined.
1331  for (size_t i = 0; i + 2 < inputRefs.size(); ++i) {
1332  const edm::Ref<TCollection> &refi = inputRefs[i];
1333  if (refi.get()->et() >= etThreshold) {
1334  for (size_t j = i + 1; j + 1 < inputRefs.size(); ++j) {
1335  const edm::Ref<TCollection> &refj = inputRefs[j];
1336  if (refj.get()->et() >= etThreshold) {
1337  for (size_t k = j + 1; k < inputRefs.size(); ++k) {
1338  const edm::Ref<TCollection> &refk = inputRefs[k];
1339  if (refk.get()->et() >= etThreshold) {
1340  decision = true;
1341 
1342  // If the three objects are already in the list, find
1343  // their indices.
1344  int iInList = kDefault;
1345  int jInList = kDefault;
1346  int kInList = kDefault;
1347  for (size_t iout = 0; iout < outputRefs.size(); ++iout) {
1348  if (refi == outputRefs[iout]) {
1349  iInList = iout;
1350  }
1351 
1352  if (refj == outputRefs[iout]) {
1353  jInList = iout;
1354  }
1355 
1356  if (refk == outputRefs[iout]) {
1357  kInList = iout;
1358  }
1359  }
1360 
1361  // If any object is not in the list, add it, and
1362  // record its index.
1363  if (iInList == kDefault) {
1364  iInList = outputRefs.size();
1365  outputRefs.push_back(refi);
1366  }
1367 
1368  if (jInList == kDefault) {
1369  jInList = outputRefs.size();
1370  outputRefs.push_back(refj);
1371  }
1372 
1373  if (kInList == kDefault) {
1374  kInList = outputRefs.size();
1375  outputRefs.push_back(refk);
1376  }
1377 
1378  // Record this object combination.
1380  combo.push_back(iInList);
1381  combo.push_back(jInList);
1382  combo.push_back(kInList);
1383  combos.push_back(combo);
1384  }
1385  }
1386  }
1387  }
1388  }
1389  }
1390 }
std::vector< unsigned int > L1IndexCombo
static const int kDefault
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:232

◆ produce()

void L1ExtraParticleMapProd::produce ( edm::StreamID  ,
edm::Event iEvent,
const edm::EventSetup iSetup 
) const
overridevirtual

Implements edm::global::EDProducerBase.

Definition at line 495 of file L1ExtraParticleMapProd.cc.

References addToVectorRefs(), cenJetSource_, doubleThresholds_, l1extra::L1EtMissParticle::etMiss(), etMissSource_, l1extra::L1EtMissParticle::etTotal(), evaluateDoubleDifferentCaloObjectTrigger(), evaluateDoubleDifferentObjectSameTypeTrigger(), evaluateDoubleDifferentObjectTrigger(), evaluateDoubleExclusiveIsoEG(), evaluateDoublePlusSingleObjectTrigger(), evaluateDoubleSameObjectTrigger(), evaluateForwardRapidityGap(), evaluateJetGapJetTrigger(), evaluateQuadSameObjectTrigger(), evaluateSingleObjectTrigger(), evaluateTripleSameObjectTrigger(), first, forJetSource_, htMissSource_, mps_fire::i, iEvent, isoEmSource_, WDecay::kMuon, BTaggingMonitor_cfi::met, eostools::move(), muonSource_, nonIsoEmSource_, L1MuTriggerScaleKeysOnlineProd_cfi::objectTypes, prescales_, edm::second(), singleThresholds_, and tauJetSource_.

495  {
496  using namespace edm;
497  using namespace std;
498  using namespace reco;
499  using namespace l1extra;
500 
501  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
502  // ~~~~~~~~ Get L1Extra particles ~~~~~~~~
503  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
504 
505  Handle<L1EmParticleCollection> isoEmHandle;
506  iEvent.getByLabel(isoEmSource_, isoEmHandle);
507 
508  Handle<L1EmParticleCollection> nonIsoEmHandle;
509  iEvent.getByLabel(nonIsoEmSource_, nonIsoEmHandle);
510 
511  Handle<L1JetParticleCollection> cenJetHandle;
512  iEvent.getByLabel(cenJetSource_, cenJetHandle);
513 
514  Handle<L1JetParticleCollection> forJetHandle;
515  iEvent.getByLabel(forJetSource_, forJetHandle);
516 
517  Handle<L1JetParticleCollection> tauJetHandle;
518  iEvent.getByLabel(tauJetSource_, tauJetHandle);
519 
521  iEvent.getByLabel(muonSource_, muHandle);
522 
523  Handle<L1EtMissParticle> metHandle;
524  iEvent.getByLabel(etMissSource_, metHandle);
525 
526  Handle<L1EtMissParticle> mhtHandle;
527  iEvent.getByLabel(htMissSource_, mhtHandle);
528 
529  double met = metHandle->etMiss();
530  double ht = mhtHandle->etTotal();
531  double ett = metHandle->etTotal();
532 
533  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
534  // ~~~ Evaluate trigger conditions and make a L1ParticleMapCollection. ~~~
535  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
536 
537  // First, form the input vector<Ref>s that will be needed.
538  L1EmParticleVectorRef inputIsoEmRefs;
539  addToVectorRefs(isoEmHandle, inputIsoEmRefs);
540 
541  L1EmParticleVectorRef inputRelaxedEmRefs;
542  addToVectorRefs(isoEmHandle, inputRelaxedEmRefs);
543  addToVectorRefs(nonIsoEmHandle, inputRelaxedEmRefs);
544 
545  L1JetParticleVectorRef inputTauRefs;
546  addToVectorRefs(tauJetHandle, inputTauRefs);
547 
548  L1JetParticleVectorRef inputJetRefs;
549  addToVectorRefs(forJetHandle, inputJetRefs);
550  addToVectorRefs(cenJetHandle, inputJetRefs);
551  addToVectorRefs(tauJetHandle, inputJetRefs);
552 
553  L1JetParticleVectorRef inputForJetRefs;
554  addToVectorRefs(forJetHandle, inputForJetRefs);
555 
556  L1JetParticleVectorRef inputCenJetTauJetRefs;
557  addToVectorRefs(cenJetHandle, inputCenJetTauJetRefs);
558  addToVectorRefs(tauJetHandle, inputCenJetTauJetRefs);
559 
560  L1MuonParticleVectorRef inputMuonRefsSingle;
561  L1MuonParticleVectorRef inputMuonRefsDouble;
562  L1MuonParticleCollection::const_iterator muItr = muHandle->begin();
563  L1MuonParticleCollection::const_iterator muEnd = muHandle->end();
564 
565  for (size_t i = 0; muItr != muEnd; ++muItr, ++i) {
566  if (!muItr->gmtMuonCand().empty()) {
567  unsigned int qual = muItr->gmtMuonCand().quality();
568 
569  if (qual == 4 || qual == 5 || qual == 6 || qual == 7) {
570  inputMuonRefsSingle.push_back(edm::Ref<L1MuonParticleCollection>(muHandle, i));
571  }
572 
573  if (qual == 3 || qual == 5 || qual == 6 || qual == 7) {
574  inputMuonRefsDouble.push_back(edm::Ref<L1MuonParticleCollection>(muHandle, i));
575  }
576  }
577  }
578 
579  unique_ptr<L1ParticleMapCollection> mapColl(new L1ParticleMapCollection);
580  bool globalDecision = false;
581  std::vector<bool> decisionWord;
582 
583  for (int itrig = 0; itrig < L1ParticleMap::kNumOfL1TriggerTypes; ++itrig) {
584  bool decision = false;
585  std::vector<L1ParticleMap::L1ObjectType> objectTypes;
586  L1EmParticleVectorRef outputEmRefsTmp;
587  L1JetParticleVectorRef outputJetRefsTmp;
588  L1MuonParticleVectorRef outputMuonRefsTmp;
589  L1EtMissParticleRefProd metRefTmp;
590  L1ParticleMap::L1IndexComboVector combosTmp; // unfilled for single objs
591 
592  if (itrig == L1ParticleMap::kSingleMu3 || itrig == L1ParticleMap::kSingleMu5 ||
593  itrig == L1ParticleMap::kSingleMu7 || itrig == L1ParticleMap::kSingleMu10 ||
594  itrig == L1ParticleMap::kSingleMu14 || itrig == L1ParticleMap::kSingleMu20 ||
595  itrig == L1ParticleMap::kSingleMu25) {
597 
598  evaluateSingleObjectTrigger(inputMuonRefsSingle, singleThresholds_[itrig], decision, outputMuonRefsTmp);
599  } else if (itrig == L1ParticleMap::kSingleIsoEG5 || itrig == L1ParticleMap::kSingleIsoEG8 ||
600  itrig == L1ParticleMap::kSingleIsoEG10 || itrig == L1ParticleMap::kSingleIsoEG12 ||
601  itrig == L1ParticleMap::kSingleIsoEG15 || itrig == L1ParticleMap::kSingleIsoEG20 ||
602  itrig == L1ParticleMap::kSingleIsoEG25) {
603  objectTypes.push_back(L1ParticleMap::kEM);
604 
605  evaluateSingleObjectTrigger(inputIsoEmRefs, singleThresholds_[itrig], decision, outputEmRefsTmp);
606  } else if (itrig == L1ParticleMap::kSingleEG5 || itrig == L1ParticleMap::kSingleEG8 ||
607  itrig == L1ParticleMap::kSingleEG10 || itrig == L1ParticleMap::kSingleEG12 ||
608  itrig == L1ParticleMap::kSingleEG15 || itrig == L1ParticleMap::kSingleEG20 ||
609  itrig == L1ParticleMap::kSingleEG25) {
610  objectTypes.push_back(L1ParticleMap::kEM);
611 
612  evaluateSingleObjectTrigger(inputRelaxedEmRefs, singleThresholds_[itrig], decision, outputEmRefsTmp);
613  } else if (itrig == L1ParticleMap::kSingleJet15 || itrig == L1ParticleMap::kSingleJet20 ||
614  itrig == L1ParticleMap::kSingleJet30 || itrig == L1ParticleMap::kSingleJet50 ||
615  itrig == L1ParticleMap::kSingleJet70 || itrig == L1ParticleMap::kSingleJet100 ||
616  itrig == L1ParticleMap::kSingleJet150 || itrig == L1ParticleMap::kSingleJet200) {
617  objectTypes.push_back(L1ParticleMap::kJet);
618 
619  evaluateSingleObjectTrigger(inputJetRefs, singleThresholds_[itrig], decision, outputJetRefsTmp);
620  } else if (itrig == L1ParticleMap::kSingleTauJet10 || itrig == L1ParticleMap::kSingleTauJet20 ||
621  itrig == L1ParticleMap::kSingleTauJet30 || itrig == L1ParticleMap::kSingleTauJet35 ||
622  itrig == L1ParticleMap::kSingleTauJet40 || itrig == L1ParticleMap::kSingleTauJet60 ||
623  itrig == L1ParticleMap::kSingleTauJet80 || itrig == L1ParticleMap::kSingleTauJet100) {
624  objectTypes.push_back(L1ParticleMap::kJet);
625 
626  evaluateSingleObjectTrigger(inputTauRefs, singleThresholds_[itrig], decision, outputJetRefsTmp);
627  } else if (itrig == L1ParticleMap::kHTT100 || itrig == L1ParticleMap::kHTT200 || itrig == L1ParticleMap::kHTT250 ||
628  itrig == L1ParticleMap::kHTT300 || itrig == L1ParticleMap::kHTT400 || itrig == L1ParticleMap::kHTT500) {
629  objectTypes.push_back(L1ParticleMap::kEtHad);
630 
631  if (ht >= singleThresholds_[itrig]) {
632  decision = true;
633  metRefTmp = L1EtMissParticleRefProd(mhtHandle);
634  }
635  } else if (itrig == L1ParticleMap::kETM10 || itrig == L1ParticleMap::kETM15 || itrig == L1ParticleMap::kETM20 ||
636  itrig == L1ParticleMap::kETM30 || itrig == L1ParticleMap::kETM40 || itrig == L1ParticleMap::kETM50 ||
637  itrig == L1ParticleMap::kETM60) {
638  objectTypes.push_back(L1ParticleMap::kEtMiss);
639 
640  if (met >= singleThresholds_[itrig]) {
641  decision = true;
642  metRefTmp = L1EtMissParticleRefProd(metHandle);
643  }
644  } else if (itrig == L1ParticleMap::kETT60) {
645  objectTypes.push_back(L1ParticleMap::kEtTotal);
646 
647  if (ett >= singleThresholds_[itrig]) {
648  decision = true;
649  metRefTmp = L1EtMissParticleRefProd(metHandle);
650  }
651  } else if (itrig == L1ParticleMap::kDoubleMu3) {
654 
656  inputMuonRefsDouble, singleThresholds_[itrig], decision, outputMuonRefsTmp, combosTmp);
657  } else if (itrig == L1ParticleMap::kDoubleIsoEG8 || itrig == L1ParticleMap::kDoubleIsoEG10) {
658  objectTypes.push_back(L1ParticleMap::kEM);
659  objectTypes.push_back(L1ParticleMap::kEM);
660 
661  evaluateDoubleSameObjectTrigger(inputIsoEmRefs, singleThresholds_[itrig], decision, outputEmRefsTmp, combosTmp);
662  } else if (itrig == L1ParticleMap::kDoubleEG5 || itrig == L1ParticleMap::kDoubleEG10 ||
663  itrig == L1ParticleMap::kDoubleEG15) {
664  objectTypes.push_back(L1ParticleMap::kEM);
665  objectTypes.push_back(L1ParticleMap::kEM);
666 
668  inputRelaxedEmRefs, singleThresholds_[itrig], decision, outputEmRefsTmp, combosTmp);
669  } else if (itrig == L1ParticleMap::kDoubleJet70 || itrig == L1ParticleMap::kDoubleJet100) {
670  objectTypes.push_back(L1ParticleMap::kJet);
671  objectTypes.push_back(L1ParticleMap::kJet);
672 
673  evaluateDoubleSameObjectTrigger(inputJetRefs, singleThresholds_[itrig], decision, outputJetRefsTmp, combosTmp);
674  } else if (itrig == L1ParticleMap::kDoubleTauJet20 || itrig == L1ParticleMap::kDoubleTauJet30 ||
675  itrig == L1ParticleMap::kDoubleTauJet35 || itrig == L1ParticleMap::kDoubleTauJet40) {
676  objectTypes.push_back(L1ParticleMap::kJet);
677  objectTypes.push_back(L1ParticleMap::kJet);
678 
679  evaluateDoubleSameObjectTrigger(inputTauRefs, singleThresholds_[itrig], decision, outputJetRefsTmp, combosTmp);
680  } else if (itrig == L1ParticleMap::kMu3_IsoEG5 || itrig == L1ParticleMap::kMu5_IsoEG10) {
682  objectTypes.push_back(L1ParticleMap::kEM);
683 
684  evaluateDoubleDifferentObjectTrigger(inputMuonRefsSingle,
685  inputIsoEmRefs,
686  doubleThresholds_[itrig].first,
687  doubleThresholds_[itrig].second,
688  decision,
689  outputMuonRefsTmp,
690  outputEmRefsTmp,
691  combosTmp);
692  } else if (itrig == L1ParticleMap::kMu3_EG12) {
694  objectTypes.push_back(L1ParticleMap::kEM);
695 
696  evaluateDoubleDifferentObjectTrigger(inputMuonRefsSingle,
697  inputRelaxedEmRefs,
698  doubleThresholds_[itrig].first,
699  doubleThresholds_[itrig].second,
700  decision,
701  outputMuonRefsTmp,
702  outputEmRefsTmp,
703  combosTmp);
704  } else if (itrig == L1ParticleMap::kMu3_Jet15 || itrig == L1ParticleMap::kMu5_Jet15 ||
705  itrig == L1ParticleMap::kMu3_Jet70 || itrig == L1ParticleMap::kMu5_Jet20) {
707  objectTypes.push_back(L1ParticleMap::kJet);
708 
709  evaluateDoubleDifferentObjectTrigger(inputMuonRefsSingle,
710  inputJetRefs,
711  doubleThresholds_[itrig].first,
712  doubleThresholds_[itrig].second,
713  decision,
714  outputMuonRefsTmp,
715  outputJetRefsTmp,
716  combosTmp);
717  } else if (itrig == L1ParticleMap::kMu5_TauJet20 || itrig == L1ParticleMap::kMu5_TauJet30) {
719  objectTypes.push_back(L1ParticleMap::kJet);
720 
721  evaluateDoubleDifferentObjectTrigger(inputMuonRefsSingle,
722  inputTauRefs,
723  doubleThresholds_[itrig].first,
724  doubleThresholds_[itrig].second,
725  decision,
726  outputMuonRefsTmp,
727  outputJetRefsTmp,
728  combosTmp);
729  } else if (itrig == L1ParticleMap::kIsoEG10_EG10) {
730  objectTypes.push_back(L1ParticleMap::kEM);
731  objectTypes.push_back(L1ParticleMap::kEM);
732 
734  inputRelaxedEmRefs,
735  doubleThresholds_[itrig].first,
736  doubleThresholds_[itrig].second,
737  decision,
738  outputEmRefsTmp,
739  combosTmp);
740  } else if (itrig == L1ParticleMap::kIsoEG10_Jet15 || itrig == L1ParticleMap::kIsoEG10_Jet30 ||
741  itrig == L1ParticleMap::kIsoEG10_Jet20 || itrig == L1ParticleMap::kIsoEG10_Jet70) {
742  objectTypes.push_back(L1ParticleMap::kEM);
743  objectTypes.push_back(L1ParticleMap::kJet);
744 
746  inputJetRefs,
747  doubleThresholds_[itrig].first,
748  doubleThresholds_[itrig].second,
749  decision,
750  outputEmRefsTmp,
751  outputJetRefsTmp,
752  combosTmp);
753  } else if (itrig == L1ParticleMap::kIsoEG10_TauJet20 || itrig == L1ParticleMap::kIsoEG10_TauJet30) {
754  objectTypes.push_back(L1ParticleMap::kEM);
755  objectTypes.push_back(L1ParticleMap::kJet);
756 
758  inputTauRefs,
759  doubleThresholds_[itrig].first,
760  doubleThresholds_[itrig].second,
761  decision,
762  outputEmRefsTmp,
763  outputJetRefsTmp,
764  combosTmp);
765  } else if (itrig == L1ParticleMap::kEG10_Jet15 || itrig == L1ParticleMap::kEG12_Jet20 ||
766  itrig == L1ParticleMap::kEG12_Jet70) {
767  objectTypes.push_back(L1ParticleMap::kEM);
768  objectTypes.push_back(L1ParticleMap::kJet);
769 
770  evaluateDoubleDifferentCaloObjectTrigger(inputRelaxedEmRefs,
771  inputJetRefs,
772  doubleThresholds_[itrig].first,
773  doubleThresholds_[itrig].second,
774  decision,
775  outputEmRefsTmp,
776  outputJetRefsTmp,
777  combosTmp);
778  } else if (itrig == L1ParticleMap::kEG12_TauJet40) {
779  objectTypes.push_back(L1ParticleMap::kEM);
780  objectTypes.push_back(L1ParticleMap::kJet);
781 
782  evaluateDoubleDifferentCaloObjectTrigger(inputRelaxedEmRefs,
783  inputTauRefs,
784  doubleThresholds_[itrig].first,
785  doubleThresholds_[itrig].second,
786  decision,
787  outputEmRefsTmp,
788  outputJetRefsTmp,
789  combosTmp);
790  } else if (itrig == L1ParticleMap::kJet70_TauJet40) {
791  objectTypes.push_back(L1ParticleMap::kJet);
792  objectTypes.push_back(L1ParticleMap::kJet);
793 
795  inputTauRefs,
796  doubleThresholds_[itrig].first,
797  doubleThresholds_[itrig].second,
798  decision,
799  outputJetRefsTmp,
800  combosTmp);
801  } else if (itrig == L1ParticleMap::kMu3_HTT200) {
803  objectTypes.push_back(L1ParticleMap::kEtHad);
804 
805  if (ht >= doubleThresholds_[itrig].second) {
806  evaluateSingleObjectTrigger(inputMuonRefsSingle, doubleThresholds_[itrig].first, decision, outputMuonRefsTmp);
807 
808  if (decision) {
809  metRefTmp = L1EtMissParticleRefProd(mhtHandle);
810  }
811  }
812  } else if (itrig == L1ParticleMap::kIsoEG10_HTT200) {
813  objectTypes.push_back(L1ParticleMap::kEM);
814  objectTypes.push_back(L1ParticleMap::kEtHad);
815 
816  if (ht >= doubleThresholds_[itrig].second) {
817  evaluateSingleObjectTrigger(inputIsoEmRefs, doubleThresholds_[itrig].first, decision, outputEmRefsTmp);
818 
819  if (decision) {
820  metRefTmp = L1EtMissParticleRefProd(mhtHandle);
821  }
822  }
823  } else if (itrig == L1ParticleMap::kEG12_HTT200) {
824  objectTypes.push_back(L1ParticleMap::kEM);
825  objectTypes.push_back(L1ParticleMap::kEtHad);
826 
827  if (ht >= doubleThresholds_[itrig].second) {
828  evaluateSingleObjectTrigger(inputRelaxedEmRefs, doubleThresholds_[itrig].first, decision, outputEmRefsTmp);
829 
830  if (decision) {
831  metRefTmp = L1EtMissParticleRefProd(mhtHandle);
832  }
833  }
834  } else if (itrig == L1ParticleMap::kJet70_HTT200) {
835  objectTypes.push_back(L1ParticleMap::kJet);
836  objectTypes.push_back(L1ParticleMap::kEtHad);
837 
838  if (ht >= doubleThresholds_[itrig].second) {
839  evaluateSingleObjectTrigger(inputJetRefs, doubleThresholds_[itrig].first, decision, outputJetRefsTmp);
840 
841  if (decision) {
842  metRefTmp = L1EtMissParticleRefProd(mhtHandle);
843  }
844  }
845  } else if (itrig == L1ParticleMap::kTauJet40_HTT200) {
846  objectTypes.push_back(L1ParticleMap::kJet);
847  objectTypes.push_back(L1ParticleMap::kEtHad);
848 
849  if (ht >= doubleThresholds_[itrig].second) {
850  evaluateSingleObjectTrigger(inputTauRefs, doubleThresholds_[itrig].first, decision, outputJetRefsTmp);
851 
852  if (decision) {
853  metRefTmp = L1EtMissParticleRefProd(mhtHandle);
854  }
855  }
856  } else if (itrig == L1ParticleMap::kMu3_ETM30) {
858  objectTypes.push_back(L1ParticleMap::kEtMiss);
859 
860  if (met >= doubleThresholds_[itrig].second) {
861  evaluateSingleObjectTrigger(inputMuonRefsSingle, doubleThresholds_[itrig].first, decision, outputMuonRefsTmp);
862 
863  if (decision) {
864  metRefTmp = L1EtMissParticleRefProd(metHandle);
865  }
866  }
867  } else if (itrig == L1ParticleMap::kIsoEG10_ETM30) {
868  objectTypes.push_back(L1ParticleMap::kEM);
869  objectTypes.push_back(L1ParticleMap::kEtMiss);
870 
871  if (met >= doubleThresholds_[itrig].second) {
872  evaluateSingleObjectTrigger(inputIsoEmRefs, doubleThresholds_[itrig].first, decision, outputEmRefsTmp);
873 
874  if (decision) {
875  metRefTmp = L1EtMissParticleRefProd(metHandle);
876  }
877  }
878  } else if (itrig == L1ParticleMap::kEG12_ETM30) {
879  objectTypes.push_back(L1ParticleMap::kEM);
880  objectTypes.push_back(L1ParticleMap::kEtMiss);
881 
882  if (met >= doubleThresholds_[itrig].second) {
883  evaluateSingleObjectTrigger(inputRelaxedEmRefs, doubleThresholds_[itrig].first, decision, outputEmRefsTmp);
884 
885  if (decision) {
886  metRefTmp = L1EtMissParticleRefProd(metHandle);
887  }
888  }
889  } else if (itrig == L1ParticleMap::kJet70_ETM40) {
890  objectTypes.push_back(L1ParticleMap::kJet);
891  objectTypes.push_back(L1ParticleMap::kEtMiss);
892 
893  if (met >= doubleThresholds_[itrig].second) {
894  evaluateSingleObjectTrigger(inputJetRefs, doubleThresholds_[itrig].first, decision, outputJetRefsTmp);
895 
896  if (decision) {
897  metRefTmp = L1EtMissParticleRefProd(metHandle);
898  }
899  }
900  } else if (itrig == L1ParticleMap::kTauJet20_ETM20 || itrig == L1ParticleMap::kTauJet30_ETM30 ||
901  itrig == L1ParticleMap::kTauJet30_ETM40) {
902  objectTypes.push_back(L1ParticleMap::kJet);
903  objectTypes.push_back(L1ParticleMap::kEtMiss);
904 
905  if (met >= doubleThresholds_[itrig].second) {
906  evaluateSingleObjectTrigger(inputTauRefs, doubleThresholds_[itrig].first, decision, outputJetRefsTmp);
907 
908  if (decision) {
909  metRefTmp = L1EtMissParticleRefProd(metHandle);
910  }
911  }
912  } else if (itrig == L1ParticleMap::kHTT100_ETM30) {
913  objectTypes.push_back(L1ParticleMap::kEtHad);
914  objectTypes.push_back(L1ParticleMap::kEtMiss);
915 
916  if (ht >= doubleThresholds_[itrig].first && met >= doubleThresholds_[itrig].second) {
917  decision = true;
918  metRefTmp = L1EtMissParticleRefProd(metHandle);
919  }
920  } else if (itrig == L1ParticleMap::kTripleMu3) {
924 
926  inputMuonRefsDouble, singleThresholds_[itrig], decision, outputMuonRefsTmp, combosTmp);
927  } else if (itrig == L1ParticleMap::kTripleIsoEG5) {
928  objectTypes.push_back(L1ParticleMap::kEM);
929  objectTypes.push_back(L1ParticleMap::kEM);
930  objectTypes.push_back(L1ParticleMap::kEM);
931 
932  evaluateTripleSameObjectTrigger(inputIsoEmRefs, singleThresholds_[itrig], decision, outputEmRefsTmp, combosTmp);
933  } else if (itrig == L1ParticleMap::kTripleEG10) {
934  objectTypes.push_back(L1ParticleMap::kEM);
935  objectTypes.push_back(L1ParticleMap::kEM);
936  objectTypes.push_back(L1ParticleMap::kEM);
937 
939  inputRelaxedEmRefs, singleThresholds_[itrig], decision, outputEmRefsTmp, combosTmp);
940  } else if (itrig == L1ParticleMap::kTripleJet50) {
941  objectTypes.push_back(L1ParticleMap::kJet);
942  objectTypes.push_back(L1ParticleMap::kJet);
943  objectTypes.push_back(L1ParticleMap::kJet);
944 
945  evaluateTripleSameObjectTrigger(inputJetRefs, singleThresholds_[itrig], decision, outputJetRefsTmp, combosTmp);
946  } else if (itrig == L1ParticleMap::kTripleTauJet40) {
947  objectTypes.push_back(L1ParticleMap::kJet);
948  objectTypes.push_back(L1ParticleMap::kJet);
949  objectTypes.push_back(L1ParticleMap::kJet);
950 
951  evaluateTripleSameObjectTrigger(inputTauRefs, singleThresholds_[itrig], decision, outputJetRefsTmp, combosTmp);
952  } else if (itrig == L1ParticleMap::kDoubleMu3_IsoEG5) {
955  objectTypes.push_back(L1ParticleMap::kEM);
956 
957  evaluateDoublePlusSingleObjectTrigger(inputMuonRefsDouble,
958  inputIsoEmRefs,
959  doubleThresholds_[itrig].first,
960  doubleThresholds_[itrig].second,
961  decision,
962  outputMuonRefsTmp,
963  outputEmRefsTmp,
964  combosTmp);
965  } else if (itrig == L1ParticleMap::kDoubleMu3_EG10) {
968  objectTypes.push_back(L1ParticleMap::kEM);
969 
970  evaluateDoublePlusSingleObjectTrigger(inputMuonRefsDouble,
971  inputRelaxedEmRefs,
972  doubleThresholds_[itrig].first,
973  doubleThresholds_[itrig].second,
974  decision,
975  outputMuonRefsTmp,
976  outputEmRefsTmp,
977  combosTmp);
978  } else if (itrig == L1ParticleMap::kDoubleIsoEG5_Mu3) {
979  objectTypes.push_back(L1ParticleMap::kEM);
980  objectTypes.push_back(L1ParticleMap::kEM);
982 
984  inputMuonRefsSingle,
985  doubleThresholds_[itrig].first,
986  doubleThresholds_[itrig].second,
987  decision,
988  outputEmRefsTmp,
989  outputMuonRefsTmp,
990  combosTmp);
991  } else if (itrig == L1ParticleMap::kDoubleEG10_Mu3) {
992  objectTypes.push_back(L1ParticleMap::kEM);
993  objectTypes.push_back(L1ParticleMap::kEM);
995 
996  evaluateDoublePlusSingleObjectTrigger(inputRelaxedEmRefs,
997  inputMuonRefsSingle,
998  doubleThresholds_[itrig].first,
999  doubleThresholds_[itrig].second,
1000  decision,
1001  outputEmRefsTmp,
1002  outputMuonRefsTmp,
1003  combosTmp);
1004  } else if (itrig == L1ParticleMap::kDoubleMu3_HTT200) {
1005  objectTypes.push_back(L1ParticleMap::kMuon);
1006  objectTypes.push_back(L1ParticleMap::kMuon);
1007  objectTypes.push_back(L1ParticleMap::kEtHad);
1008 
1009  if (ht >= doubleThresholds_[itrig].second) {
1011  inputMuonRefsDouble, doubleThresholds_[itrig].first, decision, outputMuonRefsTmp, combosTmp, true);
1012 
1013  if (decision) {
1014  metRefTmp = L1EtMissParticleRefProd(mhtHandle);
1015  }
1016  }
1017  } else if (itrig == L1ParticleMap::kDoubleIsoEG5_HTT200) {
1018  objectTypes.push_back(L1ParticleMap::kEM);
1019  objectTypes.push_back(L1ParticleMap::kEM);
1020  objectTypes.push_back(L1ParticleMap::kEtHad);
1021 
1022  if (ht >= doubleThresholds_[itrig].second) {
1024  inputIsoEmRefs, doubleThresholds_[itrig].first, decision, outputEmRefsTmp, combosTmp, true);
1025 
1026  if (decision) {
1027  metRefTmp = L1EtMissParticleRefProd(mhtHandle);
1028  }
1029  }
1030  } else if (itrig == L1ParticleMap::kDoubleEG10_HTT200) {
1031  objectTypes.push_back(L1ParticleMap::kEM);
1032  objectTypes.push_back(L1ParticleMap::kEM);
1033  objectTypes.push_back(L1ParticleMap::kEtHad);
1034 
1035  if (ht >= doubleThresholds_[itrig].second) {
1037  inputRelaxedEmRefs, doubleThresholds_[itrig].first, decision, outputEmRefsTmp, combosTmp, true);
1038 
1039  if (decision) {
1040  metRefTmp = L1EtMissParticleRefProd(mhtHandle);
1041  }
1042  }
1043  } else if (itrig == L1ParticleMap::kDoubleJet50_HTT200) {
1044  objectTypes.push_back(L1ParticleMap::kJet);
1045  objectTypes.push_back(L1ParticleMap::kJet);
1046  objectTypes.push_back(L1ParticleMap::kEtHad);
1047 
1048  if (ht >= doubleThresholds_[itrig].second) {
1050  inputJetRefs, doubleThresholds_[itrig].first, decision, outputJetRefsTmp, combosTmp, true);
1051 
1052  if (decision) {
1053  metRefTmp = L1EtMissParticleRefProd(mhtHandle);
1054  }
1055  }
1056  } else if (itrig == L1ParticleMap::kDoubleTauJet40_HTT200) {
1057  objectTypes.push_back(L1ParticleMap::kJet);
1058  objectTypes.push_back(L1ParticleMap::kJet);
1059  objectTypes.push_back(L1ParticleMap::kEtHad);
1060 
1061  if (ht >= doubleThresholds_[itrig].second) {
1063  inputTauRefs, doubleThresholds_[itrig].first, decision, outputJetRefsTmp, combosTmp, true);
1064 
1065  if (decision) {
1066  metRefTmp = L1EtMissParticleRefProd(mhtHandle);
1067  }
1068  }
1069  } else if (itrig == L1ParticleMap::kDoubleMu3_ETM20) {
1070  objectTypes.push_back(L1ParticleMap::kMuon);
1071  objectTypes.push_back(L1ParticleMap::kMuon);
1072  objectTypes.push_back(L1ParticleMap::kEtMiss);
1073 
1074  if (met >= doubleThresholds_[itrig].second) {
1076  inputMuonRefsDouble, doubleThresholds_[itrig].first, decision, outputMuonRefsTmp, combosTmp, true);
1077 
1078  if (decision) {
1079  metRefTmp = L1EtMissParticleRefProd(metHandle);
1080  }
1081  }
1082  } else if (itrig == L1ParticleMap::kDoubleIsoEG5_ETM20) {
1083  objectTypes.push_back(L1ParticleMap::kEM);
1084  objectTypes.push_back(L1ParticleMap::kEM);
1085  objectTypes.push_back(L1ParticleMap::kEtMiss);
1086 
1087  if (met >= doubleThresholds_[itrig].second) {
1089  inputIsoEmRefs, doubleThresholds_[itrig].first, decision, outputEmRefsTmp, combosTmp, true);
1090 
1091  if (decision) {
1092  metRefTmp = L1EtMissParticleRefProd(metHandle);
1093  }
1094  }
1095  } else if (itrig == L1ParticleMap::kDoubleEG10_ETM20) {
1096  objectTypes.push_back(L1ParticleMap::kEM);
1097  objectTypes.push_back(L1ParticleMap::kEM);
1098  objectTypes.push_back(L1ParticleMap::kEtMiss);
1099 
1100  if (met >= doubleThresholds_[itrig].second) {
1102  inputRelaxedEmRefs, doubleThresholds_[itrig].first, decision, outputEmRefsTmp, combosTmp, true);
1103 
1104  if (decision) {
1105  metRefTmp = L1EtMissParticleRefProd(metHandle);
1106  }
1107  }
1108  } else if (itrig == L1ParticleMap::kDoubleJet50_ETM20) {
1109  objectTypes.push_back(L1ParticleMap::kJet);
1110  objectTypes.push_back(L1ParticleMap::kJet);
1111  objectTypes.push_back(L1ParticleMap::kEtMiss);
1112 
1113  if (met >= doubleThresholds_[itrig].second) {
1115  inputJetRefs, doubleThresholds_[itrig].first, decision, outputJetRefsTmp, combosTmp, true);
1116 
1117  if (decision) {
1118  metRefTmp = L1EtMissParticleRefProd(metHandle);
1119  }
1120  }
1121  } else if (itrig == L1ParticleMap::kDoubleTauJet40_ETM20) {
1122  objectTypes.push_back(L1ParticleMap::kJet);
1123  objectTypes.push_back(L1ParticleMap::kJet);
1124  objectTypes.push_back(L1ParticleMap::kEtMiss);
1125 
1126  if (met >= doubleThresholds_[itrig].second) {
1128  inputTauRefs, doubleThresholds_[itrig].first, decision, outputJetRefsTmp, combosTmp, true);
1129 
1130  if (decision) {
1131  metRefTmp = L1EtMissParticleRefProd(metHandle);
1132  }
1133  }
1134  } else if (itrig == L1ParticleMap::kQuadJet30) {
1135  objectTypes.push_back(L1ParticleMap::kJet);
1136  objectTypes.push_back(L1ParticleMap::kJet);
1137  objectTypes.push_back(L1ParticleMap::kJet);
1138  objectTypes.push_back(L1ParticleMap::kJet);
1139 
1140  evaluateQuadSameObjectTrigger(inputJetRefs, singleThresholds_[itrig], decision, outputJetRefsTmp, combosTmp);
1141  } else if (itrig == L1ParticleMap::kExclusiveDoubleIsoEG4) {
1142  objectTypes.push_back(L1ParticleMap::kEM);
1143  objectTypes.push_back(L1ParticleMap::kEM);
1144 
1145  evaluateDoubleExclusiveIsoEG(inputIsoEmRefs,
1146  inputJetRefs,
1147  doubleThresholds_[itrig].first,
1148  doubleThresholds_[itrig].second,
1149  decision,
1150  outputEmRefsTmp,
1151  combosTmp);
1152 
1153  } else if (itrig == L1ParticleMap::kExclusiveDoubleJet60) {
1154  objectTypes.push_back(L1ParticleMap::kJet);
1155  objectTypes.push_back(L1ParticleMap::kJet);
1156 
1157  if (inputJetRefs.size() == 2) {
1158  evaluateDoubleSameObjectTrigger(inputJetRefs, singleThresholds_[itrig], decision, outputJetRefsTmp, combosTmp);
1159  }
1160  } else if (itrig == L1ParticleMap::kExclusiveJet25_Gap_Jet25) {
1161  objectTypes.push_back(L1ParticleMap::kJet);
1162  objectTypes.push_back(L1ParticleMap::kJet);
1163 
1164  if (inputJetRefs.size() == 2) {
1165  evaluateJetGapJetTrigger(inputForJetRefs, singleThresholds_[itrig], decision, outputJetRefsTmp, combosTmp);
1166  }
1167  } else if (itrig == L1ParticleMap::kIsoEG10_Jet20_ForJet10) {
1168  objectTypes.push_back(L1ParticleMap::kEM);
1169  objectTypes.push_back(L1ParticleMap::kJet);
1170 
1171  evaluateForwardRapidityGap(inputForJetRefs, singleThresholds_[itrig], decision);
1172 
1173  if (decision) {
1174  decision = false;
1176  inputCenJetTauJetRefs,
1177  doubleThresholds_[itrig].first,
1178  doubleThresholds_[itrig].second,
1179  decision,
1180  outputEmRefsTmp,
1181  outputJetRefsTmp,
1182  combosTmp);
1183  }
1184  } else if (itrig == L1ParticleMap::kMinBias_HTT10) {
1185  objectTypes.push_back(L1ParticleMap::kEtHad);
1186 
1187  if (ht >= 10.) {
1188  decision = true;
1189  metRefTmp = L1EtMissParticleRefProd(mhtHandle);
1190  }
1191  } else if (itrig == L1ParticleMap::kZeroBias) {
1192  decision = true;
1193  }
1194 
1195  L1EmParticleVectorRef outputEmRefs;
1196  L1JetParticleVectorRef outputJetRefs;
1197  L1MuonParticleVectorRef outputMuonRefs;
1198  L1EtMissParticleRefProd metRef;
1199  L1ParticleMap::L1IndexComboVector combos; // unfilled for single objs
1200 
1201  if (decision) {
1202  double rand = CLHEP::RandFlat::shoot() * (double)prescales_[itrig];
1203  if (rand > 1.) {
1204  decision = false;
1205  } else {
1206  outputEmRefs = outputEmRefsTmp;
1207  outputJetRefs = outputJetRefsTmp;
1208  outputMuonRefs = outputMuonRefsTmp;
1209  metRef = metRefTmp;
1210  combos = combosTmp;
1211  }
1212  }
1213 
1214  // Construct a L1ParticleMap and add it to the collection.
1215  mapColl->push_back(L1ParticleMap((L1ParticleMap::L1TriggerType)itrig,
1216  decision,
1217  objectTypes,
1218  outputEmRefs,
1219  outputJetRefs,
1220  outputMuonRefs,
1221  metRef,
1222  combos));
1223 
1224  globalDecision = globalDecision || decision;
1225  decisionWord.push_back(decision);
1226  }
1227 
1228  // Put the L1ParticleMapCollection into the event.
1229  iEvent.put(std::move(mapColl));
1230 
1231  // Make a L1GlobalTriggerReadoutRecord and put it into the event.
1232  unique_ptr<L1GlobalTriggerReadoutRecord> gtRecord(new L1GlobalTriggerReadoutRecord());
1233  gtRecord->setDecision(globalDecision);
1234  gtRecord->setDecisionWord(decisionWord);
1235  iEvent.put(std::move(gtRecord));
1236 
1237  return;
1238 }
void evaluateTripleSameObjectTrigger(const std::vector< edm::Ref< TCollection >> &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection >> &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
void evaluateSingleObjectTrigger(const std::vector< edm::Ref< TCollection >> &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection >> &outputRefs) const
std::pair< double, double > doubleThresholds_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
void evaluateDoubleDifferentObjectTrigger(const std::vector< edm::Ref< TCollection1 >> &inputRefs1, const std::vector< edm::Ref< TCollection2 >> &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, std::vector< edm::Ref< TCollection1 >> &outputRefs1, std::vector< edm::Ref< TCollection2 >> &outputRefs2, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
void addToVectorRefs(const edm::Handle< TCollection > &handle, std::vector< edm::Ref< TCollection >> &vectorRefs) const
void evaluateForwardRapidityGap(const l1extra::L1JetParticleVectorRef &inputRefs, const double &etThreshold, bool &decision) const
U second(std::pair< T, U > const &p)
int iEvent
Definition: GenABIO.cc:224
std::vector< L1JetParticleRef > L1JetParticleVectorRef
std::vector< L1MuonParticleRef > L1MuonParticleVectorRef
void evaluateJetGapJetTrigger(const l1extra::L1JetParticleVectorRef &inputRefs, const double &etThreshold, bool &decision, l1extra::L1JetParticleVectorRef &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
void evaluateDoublePlusSingleObjectTrigger(const std::vector< edm::Ref< TCollection1 >> &inputRefs1, const std::vector< edm::Ref< TCollection2 >> &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, std::vector< edm::Ref< TCollection1 >> &outputRefs1, std::vector< edm::Ref< TCollection2 >> &outputRefs2, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
double singleThresholds_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
edm::RefProd< L1EtMissParticle > L1EtMissParticleRefProd
const double & etTotal() const
void evaluateQuadSameObjectTrigger(const std::vector< edm::Ref< TCollection >> &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection >> &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
fixed size matrix
HLT enums.
int prescales_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
std::vector< L1EmParticleRef > L1EmParticleVectorRef
void evaluateDoubleDifferentObjectSameTypeTrigger(const std::vector< edm::Ref< TCollection >> &inputRefs1, const std::vector< edm::Ref< TCollection >> &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, std::vector< edm::Ref< TCollection >> &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
void evaluateDoubleDifferentCaloObjectTrigger(const l1extra::L1EmParticleVectorRef &inputRefs1, const l1extra::L1JetParticleVectorRef &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, l1extra::L1EmParticleVectorRef &outputRefs1, l1extra::L1JetParticleVectorRef &outputRefs2, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
def move(src, dest)
Definition: eostools.py:511
void evaluateDoubleExclusiveIsoEG(const l1extra::L1EmParticleVectorRef &inputRefs1, const l1extra::L1JetParticleVectorRef &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, l1extra::L1EmParticleVectorRef &outputRefs1, l1extra::L1ParticleMap::L1IndexComboVector &combos) const
void evaluateDoubleSameObjectTrigger(const std::vector< edm::Ref< TCollection >> &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection >> &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos, bool combinedWithGlobalObject=false) const

Member Data Documentation

◆ cenJetSource_

edm::InputTag L1ExtraParticleMapProd::cenJetSource_
private

Definition at line 142 of file L1ExtraParticleMapProd.h.

Referenced by produce().

◆ doubleThresholds_

std::pair<double, double> L1ExtraParticleMapProd::doubleThresholds_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
private

Definition at line 150 of file L1ExtraParticleMapProd.h.

Referenced by L1ExtraParticleMapProd(), and produce().

◆ etMissSource_

edm::InputTag L1ExtraParticleMapProd::etMissSource_
private

Definition at line 145 of file L1ExtraParticleMapProd.h.

Referenced by produce().

◆ forJetSource_

edm::InputTag L1ExtraParticleMapProd::forJetSource_
private

Definition at line 143 of file L1ExtraParticleMapProd.h.

Referenced by produce().

◆ htMissSource_

edm::InputTag L1ExtraParticleMapProd::htMissSource_
private

Definition at line 146 of file L1ExtraParticleMapProd.h.

Referenced by produce().

◆ isoEmSource_

edm::InputTag L1ExtraParticleMapProd::isoEmSource_
private

Definition at line 140 of file L1ExtraParticleMapProd.h.

Referenced by produce().

◆ muonSource_

edm::InputTag L1ExtraParticleMapProd::muonSource_
private

Definition at line 139 of file L1ExtraParticleMapProd.h.

Referenced by produce().

◆ nonIsoEmSource_

edm::InputTag L1ExtraParticleMapProd::nonIsoEmSource_
private

Definition at line 141 of file L1ExtraParticleMapProd.h.

Referenced by produce().

◆ prescales_

int L1ExtraParticleMapProd::prescales_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
private

Definition at line 149 of file L1ExtraParticleMapProd.h.

Referenced by L1ExtraParticleMapProd(), and produce().

◆ singleThresholds_

double L1ExtraParticleMapProd::singleThresholds_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
private

Definition at line 148 of file L1ExtraParticleMapProd.h.

Referenced by L1ExtraParticleMapProd(), and produce().

◆ tauJetSource_

edm::InputTag L1ExtraParticleMapProd::tauJetSource_
private

Definition at line 144 of file L1ExtraParticleMapProd.h.

Referenced by produce().