22 using namespace l1extra ;
113 "L1_IsoEG10_TauJet20",
114 "L1_IsoEG10_TauJet30",
124 "L1_TauJet40_HTT200",
138 "L1_DoubleMu3_IsoEG5",
140 "L1_DoubleIsoEG5_Mu3",
142 "L1_DoubleMu3_HTT200",
143 "L1_DoubleIsoEG5_HTT200",
144 "L1_DoubleEG10_HTT200",
145 "L1_DoubleJet50_HTT200",
146 "L1_DoubleTauJet40_HTT200",
147 "L1_DoubleMu3_ETM20",
148 "L1_DoubleIsoEG5_ETM20",
149 "L1_DoubleEG10_ETM20",
150 "L1_DoubleJet50_ETM20",
151 "L1_DoubleTauJet40_ETM20",
153 "L1_ExclusiveDoubleIsoEG4",
154 "L1_ExclusiveDoubleJet60",
155 "L1_ExclusiveJet25_Gap_Jet25",
156 "L1_IsoEG10_Jet20_ForJet10",
178 bool triggerDecision,
185 : triggerType_( triggerType ),
186 triggerDecision_( triggerDecision ),
187 indexCombosState_{indexCombos.size()>0?
kSet:kUnset},
188 objectTypes_( objectTypes ),
189 emParticles_( emParticles ),
190 jetParticles_( jetParticles ),
191 muonParticles_( muonParticles ),
192 etMissParticle_( etMissParticle ),
193 indexCombos_( indexCombos )
198 triggerType_(rhs.triggerType_),
199 triggerDecision_(rhs.triggerDecision_),
200 indexCombosState_(kUnset),
201 objectTypes_(rhs.objectTypes_),
202 emParticles_(rhs.emParticles_),
203 jetParticles_(rhs.jetParticles_),
204 muonParticles_(rhs.muonParticles_),
205 etMissParticle_(rhs.etMissParticle_),
263 int numNonGlobal = 0 ;
265 int nonGlobalIndex = -1 ;
278 if( numNonGlobal == 0 )
285 tmpCombo.push_back( 0 ) ;
288 tempIndexCombos.push_back( tmpCombo ) ;
290 else if( numNonGlobal == 1 )
294 if( nonGlobalType ==
kEM )
298 else if( nonGlobalType ==
kJet )
302 else if( nonGlobalType ==
kMuon )
307 tempIndexCombos.reserve(nParticles);
308 for(
int i = 0 ;
i < nParticles ; ++
i )
314 if(
j == nonGlobalIndex )
316 tmpCombo.push_back(
i ) ;
320 tmpCombo.push_back( 0 ) ;
324 tempIndexCombos.push_back( tmpCombo ) ;
327 char expected = kUnset;
328 if(
indexCombosState_.compare_exchange_strong(expected,kSetting,std::memory_order_acq_rel)) {
350 int particleInList = aCombo[ aIndexInCombo ] ;
357 else if( type ==
kJet )
362 else if( type ==
kMuon )
383 int particleInList = aCombo[ aIndexInCombo ] ;
400 int particleInList = aCombo[ aIndexInCombo ] ;
417 int particleInList = aCombo[ aIndexInCombo ] ;
445 std::vector< const reco::LeafCandidate* >
448 std::vector< const reco::LeafCandidate* >
tmp ;
std::atomic< char > indexCombosState_
void swap(L1ParticleMap &)
const std::string & triggerName() const
const L1JetParticle * jetParticleInCombo(int aIndexInCombo, const L1IndexCombo &aCombo) const
L1IndexComboVector indexCombos_
const L1EtMissParticle * etMissParticleInCombo(int aIndexInCombo, const L1IndexCombo &aCombo) const
L1ParticleMap & operator=(const L1ParticleMap &)
static const std::string triggerNames_[kNumOfL1TriggerTypes]
std::vector< unsigned int > L1IndexCombo
const L1MuonParticle * muonParticleInCombo(int aIndexInCombo, const L1IndexCombo &aCombo) const
std::vector< L1IndexCombo > L1IndexComboVector
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
L1EtMissParticleRefProd etMissParticle_
const L1EmParticle * emParticleInCombo(int aIndexInCombo, const L1IndexCombo &aCombo) const
void setIndexCombos() const
std::vector< const reco::LeafCandidate * > candidateCombo(const L1IndexCombo &aCombo) const
L1EmParticleVectorRef emParticles_
L1MuonParticleVectorRef muonParticles_
product_type const * get() const
static bool objectTypeIsGlobal(L1ObjectType type)
L1TriggerType triggerType() const
std::vector< std::vector< double > > tmp
const reco::LeafCandidate * candidateInCombo(int aIndexInCombo, const L1IndexCombo &aCombo) const
const L1IndexComboVector & indexCombos() const
std::vector< L1ObjectType > L1ObjectTypeVector
L1JetParticleVectorRef jetParticles_
L1ObjectTypeVector objectTypes_
L1TriggerType triggerType_