111 "L1_IsoEG10_TauJet20",
112 "L1_IsoEG10_TauJet30",
122 "L1_TauJet40_HTT200",
136 "L1_DoubleMu3_IsoEG5",
138 "L1_DoubleIsoEG5_Mu3",
140 "L1_DoubleMu3_HTT200",
141 "L1_DoubleIsoEG5_HTT200",
142 "L1_DoubleEG10_HTT200",
143 "L1_DoubleJet50_HTT200",
144 "L1_DoubleTauJet40_HTT200",
145 "L1_DoubleMu3_ETM20",
146 "L1_DoubleIsoEG5_ETM20",
147 "L1_DoubleEG10_ETM20",
148 "L1_DoubleJet50_ETM20",
149 "L1_DoubleTauJet40_ETM20",
151 "L1_ExclusiveDoubleIsoEG4",
152 "L1_ExclusiveDoubleJet60",
153 "L1_ExclusiveJet25_Gap_Jet25",
154 "L1_IsoEG10_Jet20_ForJet10",
168 bool triggerDecision,
176 triggerDecision_(triggerDecision),
177 indexCombosState_{
static_cast<char>(!
indexCombos.empty() ?
kSet : IndexComboStates::kUnset)},
179 emParticles_(emParticles),
180 jetParticles_(jetParticles),
181 muonParticles_(muonParticles),
182 etMissParticle_(etMissParticle),
183 indexCombos_(indexCombos) {}
186 : triggerType_(rhs.triggerType_),
187 triggerDecision_(rhs.triggerDecision_),
189 objectTypes_(rhs.objectTypes_),
190 emParticles_(rhs.emParticles_),
191 jetParticles_(rhs.jetParticles_),
192 muonParticles_(rhs.muonParticles_),
193 etMissParticle_(rhs.etMissParticle_),
223 std::memory_order_release);
245 int numNonGlobal = 0;
247 int nonGlobalIndex = -1;
258 if (numNonGlobal == 0) {
263 tmpCombo.push_back(0);
266 tempIndexCombos.push_back(tmpCombo);
267 }
else if (numNonGlobal == 1) {
270 if (nonGlobalType ==
kEM) {
272 }
else if (nonGlobalType ==
kJet) {
274 }
else if (nonGlobalType ==
kMuon) {
278 tempIndexCombos.reserve(nParticles);
279 for (
int i = 0;
i < nParticles; ++
i) {
283 if (
j == nonGlobalIndex) {
284 tmpCombo.push_back(
i);
286 tmpCombo.push_back(0);
290 tempIndexCombos.push_back(tmpCombo);
293 char expected = IndexComboStates::kUnset;
294 if (
indexCombosState_.compare_exchange_strong(expected, kSetting, std::memory_order_acq_rel)) {
312 int particleInList = aCombo[aIndexInCombo];
329 int particleInList = aCombo[aIndexInCombo];
340 int particleInList = aCombo[aIndexInCombo];
351 int particleInList = aCombo[aIndexInCombo];
371 std::vector<const reco::LeafCandidate*>
tmp;
const L1EtMissParticle * etMissParticleInCombo(int aIndexInCombo, const L1IndexCombo &aCombo) const
L1TriggerType triggerType() const
const L1EmParticle * emParticleInCombo(int aIndexInCombo, const L1IndexCombo &aCombo) const
std::atomic< char > indexCombosState_
void swap(L1ParticleMap &)
std::vector< unsigned int > L1IndexCombo
std::vector< L1ObjectType > L1ObjectTypeVector
L1IndexComboVector indexCombos_
void swap(Association< C > &lhs, Association< C > &rhs)
L1ParticleMap & operator=(const L1ParticleMap &)
static const std::string triggerNames_[kNumOfL1TriggerTypes]
const std::string & triggerName() const
const reco::LeafCandidate * candidateInCombo(int aIndexInCombo, const L1IndexCombo &aCombo) const
std::vector< const reco::LeafCandidate * > candidateCombo(const L1IndexCombo &aCombo) const
L1EtMissParticleRefProd etMissParticle_
const L1IndexComboVector & indexCombos() const
product_type const * get() const
L1EmParticleVectorRef emParticles_
std::vector< L1IndexCombo > L1IndexComboVector
L1MuonParticleVectorRef muonParticles_
static bool objectTypeIsGlobal(L1ObjectType type)
const L1MuonParticle * muonParticleInCombo(int aIndexInCombo, const L1IndexCombo &aCombo) const
L1JetParticleVectorRef jetParticles_
L1ObjectTypeVector objectTypes_
const L1JetParticle * jetParticleInCombo(int aIndexInCombo, const L1IndexCombo &aCombo) const
void setIndexCombos() const
L1TriggerType triggerType_