44 nameProcess_( iConfig.getParameter< std::string >(
"processName" ) ),
45 autoProcessName_( nameProcess_ ==
"*" ),
46 onlyStandAlone_( iConfig.getParameter< bool >(
"onlyStandAlone" ) ),
49 tagL1GlobalTriggerObjectMapRecord_(
"hltL1GtObjectMap" ),
58 autoProcessNameL1ExtraMu_(
false ),
59 autoProcessNameL1ExtraNoIsoEG_(
false ),
60 autoProcessNameL1ExtraIsoEG_(
false ),
61 autoProcessNameL1ExtraCenJet_(
false ),
62 autoProcessNameL1ExtraForJet_(
false ),
63 autoProcessNameL1ExtraTauJet_(
false ),
64 autoProcessNameL1ExtraETM_(
false ),
65 autoProcessNameL1ExtraHTM_(
false ),
69 tagTriggerResults_(
"TriggerResults" ),
70 tagTriggerEvent_(
"hltTriggerSummaryAOD" ),
72 labelHltPrescaleTable_(),
73 hltPrescaleTableRun_(),
74 hltPrescaleTableLumi_(),
75 addPathModuleLabels_(
false )
81 if ( iConfig.
exists(
"l1ExtraMu" ) ) {
88 if ( iConfig.
exists(
"l1ExtraNoIsoEG" ) ) {
95 if ( iConfig.
exists(
"l1ExtraIsoEG" ) ) {
102 if ( iConfig.
exists(
"l1ExtraCenJet" ) ) {
109 if ( iConfig.
exists(
"l1ExtraForJet" ) ) {
116 if ( iConfig.
exists(
"l1ExtraTauJet" ) ) {
123 if ( iConfig.
exists(
"l1ExtraETM" ) ) {
130 if ( iConfig.
exists(
"l1ExtraHTM" ) ) {
150 produces< TriggerAlgorithmCollection >();
151 produces< TriggerConditionCollection >();
152 produces< TriggerPathCollection >();
153 produces< TriggerFilterCollection >();
154 produces< TriggerObjectCollection >();
156 produces< TriggerObjectStandAloneCollection >();
177 if ( processHistory.getConfigurationForProcess( iHist->processName(), processConfiguration ) &&
178 pset::Registry::instance()->getMapped( processConfiguration.parameterSetID(), processPSet ) &&
187 LogError(
"autoProcessName" ) <<
"trigger::TriggerEvent product with label '" <<
tagTriggerEvent_.
label() <<
"' not produced according to process history of input data\n"
188 <<
"No trigger information produced";
191 LogInfo(
"autoProcessName" ) <<
"HLT process name' " <<
nameProcess_ <<
"' used for PAT trigger information";
214 bool changed(
true );
216 LogError(
"hltConfigExtraction" ) <<
"HLT config extraction error with process name '" <<
nameProcess_ <<
"'";
218 LogError(
"hltConfigSize" ) <<
"HLT config size error";
229 if ( handleHltPrescaleTable.
isValid() ) {
252 if ( handleHltPrescaleTable.
isValid() ) {
280 if( ! handleTriggerResults.
isValid() ) {
282 <<
"No HLT information produced";
284 }
else if ( ! handleTriggerEvent.
isValid() ) {
286 <<
"No HLT information produced";
302 if ( handleHltPrescaleTable.
isValid() ) {
303 hltPrescaleTable =
trigger::HLTPrescaleTable( handleHltPrescaleTable->set(), handleHltPrescaleTable->labels(), handleHltPrescaleTable->table() );
307 if ( hltPrescaleTable.size() == 0 ) {
310 <<
"Using default from event setup";
315 LogDebug(
"hltPrescaleTable" ) <<
"HLT prescale table found in event setup";
317 LogWarning(
"hltPrescaleSet" ) <<
"HLTPrescaleTable from event setup has error";
321 unsigned set( hltPrescaleTable.set() );
322 if ( hltPrescaleTable.size() > 0 ) {
324 bool foundPrescaleLabel(
false );
325 for (
unsigned iLabel = 0; iLabel < hltPrescaleTable.labels().size(); ++iLabel ) {
328 foundPrescaleLabel =
true;
332 if ( ! foundPrescaleLabel ) {
338 LogWarning(
"hltPrescaleTable" ) <<
"No HLT prescale table found\n"
339 <<
"Using default empty table with all prescales 1";
343 const unsigned sizeFilters( handleTriggerEvent->sizeFilters() );
344 const unsigned sizeObjects( handleTriggerEvent->sizeObjects() );
348 std::map< std::string, int > moduleStates;
349 std::multimap< std::string, std::pair< std::string, bool > > filterPaths;
351 for (
size_t iP = 0; iP < sizePaths; ++iP ) {
355 const unsigned indexLastFilterPath( handleTriggerResults->index( indexPath ) );
356 unsigned indexLastFilterPathModules( indexLastFilterPath + 1 );
357 unsigned indexLastFilterFilters( sizeFilters );
358 while ( indexLastFilterPathModules > 0 ) {
359 --indexLastFilterPathModules;
360 const std::string labelLastFilterModules(
hltConfig_.
moduleLabel( indexPath, indexLastFilterPathModules ) );
361 indexLastFilterFilters = handleTriggerEvent->filterIndex(
InputTag( labelLastFilterModules,
"",
nameProcess_ ) );
362 if ( indexLastFilterFilters < sizeFilters )
break;
364 for (
size_t iM = 0; iM < sizeModulesPath; ++iM ) {
366 const unsigned indexFilter( handleTriggerEvent->filterIndex(
InputTag( nameFilter,
"",
nameProcess_ ) ) );
367 if ( indexFilter < sizeFilters ) {
368 std::pair< std::string, bool > pathAndStatus( namePath, handleTriggerResults->wasrun( indexPath ) && handleTriggerResults->accept( indexPath ) && indexFilter == indexLastFilterFilters );
369 filterPaths.insert( std::pair< std::string, std::pair< std::string, bool > >( nameFilter, pathAndStatus ) );
373 TriggerPath triggerPath( namePath, indexPath,
hltConfig_.
prescaleValue( set, namePath ), handleTriggerResults->wasrun( indexPath ), handleTriggerResults->accept( indexPath ), handleTriggerResults->error( indexPath ), indexLastFilterPath );
375 assert( indexLastFilterPath < sizeModulesPath );
376 std::map< unsigned, std::string > indicesModules;
377 for (
size_t iM = 0; iM < sizeModulesPath; ++iM ) {
380 triggerPath.addModule( nameModule );
382 const unsigned indexFilter( handleTriggerEvent->filterIndex(
InputTag( nameModule,
"",
nameProcess_ ) ) );
383 if ( indexFilter < sizeFilters ) {
384 triggerPath.addFilterIndex( indexFilter );
387 indicesModules.insert( std::pair< unsigned, std::string >( slotModule, nameModule ) );
391 for ( L1SeedCollection::const_iterator iSeed = l1Seeds.begin(); iSeed != l1Seeds.end(); ++iSeed ) {
392 triggerPath.addL1Seed( *iSeed );
395 triggerPaths->push_back( triggerPath );
397 for ( std::map< unsigned, std::string >::const_iterator iM = indicesModules.begin(); iM != indicesModules.end(); ++iM ) {
398 if ( iM->first < indexLastFilterPath ) {
399 moduleStates[ iM->second ] = 1;
400 }
else if ( iM->first == indexLastFilterPath ) {
401 moduleStates[ iM->second ] = handleTriggerResults->accept( indexPath );
402 }
else if ( moduleStates.find( iM->second ) == moduleStates.end() ) {
403 moduleStates[ iM->second ] = -1;
417 std::multimap< trigger::size_type, int > objectTypes;
418 std::multimap< trigger::size_type, std::string > filterLabels;
420 for (
size_t iF = 0; iF < sizeFilters; ++iF ) {
421 const std::string nameFilter( handleTriggerEvent->filterTag( iF ).label() );
423 const trigger::Vids & types = handleTriggerEvent->filterIds( iF );
424 assert( types.size() == keys.size() );
425 for (
size_t iK = 0; iK < keys.size(); ++iK ) {
426 filterLabels.insert( std::pair< trigger::size_type, std::string >( keys[ iK ], nameFilter ) );
427 objectTypes.insert( std::pair< trigger::size_type, int >( keys[ iK ], types[ iK ] ) );
433 const trigger::Keys & collectionKeys( handleTriggerEvent->collectionKeys() );
434 std::map< trigger::size_type, trigger::size_type > newObjectKeys;
435 for (
size_t iO = 0, iC = 0; iO < sizeObjects && iC < handleTriggerEvent->sizeCollections(); ++iO ) {
437 TriggerObject triggerObject( handleTriggerEvent->getObjects().at( iO ) );
439 while ( iO >= collectionKeys[ iC ] ) ++iC;
440 triggerObject.
setCollection( handleTriggerEvent->collectionTag( iC ) );
442 for ( std::multimap< trigger::size_type, int >::iterator iM = objectTypes.begin(); iM != objectTypes.end(); ++iM ) {
443 if ( iM->first == iO ) {
444 triggerObject.addTriggerObjectType( iM->second );
451 bool excluded(
false );
459 if ( excluded )
continue;
460 for ( std::multimap< trigger::size_type, std::string >::iterator iM = filterLabels.begin(); iM != filterLabels.end(); ++iM ) {
461 if ( iM->first == iO ) {
463 for ( std::multimap< std::string, std::pair< std::string, bool > >::iterator iP = filterPaths.begin(); iP != filterPaths.end(); ++iP ) {
464 if ( iP->first == iM->second ) {
465 triggerObjectStandAlone.
addPathName( iP->second.first, iP->second.second );
472 triggerObjectsStandAlone->push_back( triggerObjectStandAlone );
480 for (
size_t iF = 0; iF < sizeFilters; ++iF ) {
481 const std::string nameFilter( handleTriggerEvent->filterTag( iF ).label() );
483 const trigger::Vids & types = handleTriggerEvent->filterIds( iF );
487 triggerFilter.
setType( typeFilter );
489 for (
size_t iK = 0; iK < keys.size(); ++iK ) {
491 if ( newObjectKeys.find( keys.at( iK ) ) != newObjectKeys.end() ) {
492 if ( newObjectKeys[ keys.at( iK ) ] == sizeObjects )
continue;
496 LogWarning(
"triggerObjectKey" ) <<
"TriggerFilter '" << nameFilter <<
"' requests non-existing TriggerObject key " << keys.at( iK ) <<
"\n"
497 <<
"Skipping object assignment";
501 std::map< std::string, int >::iterator iS( moduleStates.find( nameFilter ) );
502 if ( iS != moduleStates.end() ) {
503 if ( ! triggerFilter.
setStatus( iS->second ) ) {
510 triggerFilters->push_back( triggerFilter );
513 iEvent.
put( triggerFilters );
522 std::map< L1GtObject, std::vector< unsigned > > l1ObjectTypeMap;
527 if ( handleL1ExtraMu.
isValid() ) {
528 std::vector< unsigned > muKeys;
529 for (
size_t l1Mu = 0; l1Mu < handleL1ExtraMu->size(); ++l1Mu ) {
530 if (
mainBxOnly_ && handleL1ExtraMu->at( l1Mu ).bx() != 0 )
continue;
536 const reco::LeafCandidate * leafCandidate( handleL1ExtraMu->at( l1Mu ).reco::LeafCandidate::clone() );
543 triggerObjectsStandAlone->push_back( triggerObjectStandAlone );
544 if ( handleL1ExtraMu->at( l1Mu ).bx() == 0 ) muKeys.push_back( triggerObjectsStandAlone->size() - 1 );
546 l1ObjectTypeMap.insert( std::make_pair(
Mu, muKeys ) );
547 }
else LogError(
"l1ExtraValid" ) <<
"l1extra::L1MuonParticleCollection product with InputTag '" <<
tagL1ExtraMu_.
encode() <<
"' not in event";
552 if ( handleL1ExtraNoIsoEG.
isValid() ) {
553 std::vector< unsigned > noIsoEGKeys;
554 for (
size_t l1NoIsoEG = 0; l1NoIsoEG < handleL1ExtraNoIsoEG->size(); ++l1NoIsoEG ) {
555 if (
mainBxOnly_ && handleL1ExtraNoIsoEG->at( l1NoIsoEG ).bx() != 0 )
continue;
561 const reco::LeafCandidate * leafCandidate( handleL1ExtraNoIsoEG->at( l1NoIsoEG ).reco::LeafCandidate::clone() );
568 triggerObjectsStandAlone->push_back( triggerObjectStandAlone );
569 if ( handleL1ExtraNoIsoEG->at( l1NoIsoEG ).bx() == 0 ) noIsoEGKeys.push_back( triggerObjectsStandAlone->size() - 1 );
571 l1ObjectTypeMap.insert( std::make_pair(
NoIsoEG, noIsoEGKeys ) );
577 if ( handleL1ExtraIsoEG.
isValid() ) {
578 std::vector< unsigned > isoEGKeys;
579 for (
size_t l1IsoEG = 0; l1IsoEG < handleL1ExtraIsoEG->size(); ++l1IsoEG ) {
580 if (
mainBxOnly_ && handleL1ExtraIsoEG->at( l1IsoEG ).bx() != 0 )
continue;
586 const reco::LeafCandidate * leafCandidate( handleL1ExtraIsoEG->at( l1IsoEG ).reco::LeafCandidate::clone() );
593 triggerObjectsStandAlone->push_back( triggerObjectStandAlone );
594 if ( handleL1ExtraIsoEG->at( l1IsoEG ).bx() == 0 ) isoEGKeys.push_back( triggerObjectsStandAlone->size() - 1 );
596 l1ObjectTypeMap.insert( std::make_pair(
IsoEG, isoEGKeys ) );
602 if ( handleL1ExtraCenJet.
isValid() ) {
603 std::vector< unsigned > cenJetKeys;
604 for (
size_t l1CenJet = 0; l1CenJet < handleL1ExtraCenJet->size(); ++l1CenJet ) {
605 if (
mainBxOnly_ && handleL1ExtraCenJet->at( l1CenJet ).bx() != 0 )
continue;
611 const reco::LeafCandidate * leafCandidate( handleL1ExtraCenJet->at( l1CenJet ).reco::LeafCandidate::clone() );
618 triggerObjectsStandAlone->push_back( triggerObjectStandAlone );
619 if ( handleL1ExtraCenJet->at( l1CenJet ).bx() == 0 ) cenJetKeys.push_back( triggerObjectsStandAlone->size() - 1 );
621 l1ObjectTypeMap.insert( std::make_pair(
CenJet, cenJetKeys ) );
627 if ( handleL1ExtraForJet.
isValid() ) {
628 std::vector< unsigned > forJetKeys;
629 for (
size_t l1ForJet = 0; l1ForJet < handleL1ExtraForJet->size(); ++l1ForJet ) {
630 if (
mainBxOnly_ && handleL1ExtraForJet->at( l1ForJet ).bx() != 0 )
continue;
636 const reco::LeafCandidate * leafCandidate( handleL1ExtraForJet->at( l1ForJet ).reco::LeafCandidate::clone() );
643 triggerObjectsStandAlone->push_back( triggerObjectStandAlone );
644 if ( handleL1ExtraForJet->at( l1ForJet ).bx() == 0 ) forJetKeys.push_back( triggerObjectsStandAlone->size() - 1 );
646 l1ObjectTypeMap.insert( std::make_pair(
ForJet, forJetKeys ) );
652 if ( handleL1ExtraTauJet.
isValid() ) {
653 std::vector< unsigned > tauJetKeys;
654 for (
size_t l1TauJet = 0; l1TauJet < handleL1ExtraTauJet->size(); ++l1TauJet ) {
655 if (
mainBxOnly_ && handleL1ExtraTauJet->at( l1TauJet ).bx() != 0 )
continue;
661 const reco::LeafCandidate * leafCandidate( handleL1ExtraTauJet->at( l1TauJet ).reco::LeafCandidate::clone() );
668 triggerObjectsStandAlone->push_back( triggerObjectStandAlone );
669 if ( handleL1ExtraTauJet->at( l1TauJet ).bx() == 0 ) tauJetKeys.push_back( triggerObjectsStandAlone->size() - 1 );
671 l1ObjectTypeMap.insert( std::make_pair(
TauJet, tauJetKeys ) );
677 if ( handleL1ExtraETM.
isValid() ) {
678 std::vector< unsigned > etmKeys;
679 for (
size_t l1ETM = 0; l1ETM < handleL1ExtraETM->size(); ++l1ETM ) {
680 if (
mainBxOnly_ && handleL1ExtraETM->at( l1ETM ).bx() != 0 )
continue;
686 const reco::LeafCandidate * leafCandidate( handleL1ExtraETM->at( l1ETM ).reco::LeafCandidate::clone() );
693 triggerObjectsStandAlone->push_back( triggerObjectStandAlone );
694 if ( handleL1ExtraETM->at( l1ETM ).bx() == 0 ) etmKeys.push_back( triggerObjectsStandAlone->size() - 1 );
696 l1ObjectTypeMap.insert( std::make_pair(
ETM, etmKeys ) );
697 }
else LogError(
"l1ExtraValid" ) <<
"l1extra::L1EtMissParticleCollection product with InputTag '" <<
tagL1ExtraETM_.
encode() <<
"' not in event";
702 if ( handleL1ExtraHTM.
isValid() ) {
703 std::vector< unsigned > htmKeys;
704 for (
size_t l1HTM = 0; l1HTM < handleL1ExtraHTM->size(); ++l1HTM ) {
705 if (
mainBxOnly_ && handleL1ExtraHTM->at( l1HTM ).bx() != 0 )
continue;
711 const reco::LeafCandidate * leafCandidate( handleL1ExtraHTM->at( l1HTM ).reco::LeafCandidate::clone() );
718 triggerObjectsStandAlone->push_back( triggerObjectStandAlone );
719 if ( handleL1ExtraHTM->at( l1HTM ).bx() == 0 ) htmKeys.push_back( triggerObjectsStandAlone->size() - 1 );
721 l1ObjectTypeMap.insert( std::make_pair(
HTM, htmKeys ) );
722 }
else LogError(
"l1ExtraValid" ) <<
"l1extra::L1EtMissParticleCollection product with InputTag '" <<
tagL1ExtraHTM_.
encode() <<
"' not in event";
734 std::map< L1GtObject, trigger::TriggerObjectType > mapObjectTypes;
751 const std::vector< ConditionMap > l1GtConditionsVector( l1GtTriggerMenu.
gtConditionMap() );
754 for (
size_t iCv = 0; iCv < l1GtConditionsVector.size(); ++iCv ) {
755 l1GtConditions.insert( l1GtConditionsVector.at( iCv ).begin(), l1GtConditionsVector.at( iCv ).end() );
757 triggerAlgos->reserve( l1GtAlgorithms.size() + l1GtTechTriggers.size() );
760 if( ! handleL1GlobalTriggerObjectMapRecord.
isValid() ) {
762 <<
"No L1 objects and GTL results available for physics algorithms";
765 for (
CItAlgo iAlgo = l1GtAlgorithms.begin(); iAlgo != l1GtAlgorithms.end(); ++iAlgo ) {
766 const std::string & algoName( iAlgo->second.algoName() );
775 LogError(
"l1Algo" ) <<
"L1 physics algorithm '" << algoName <<
"' not found in the L1 menu\n"
780 LogError(
"l1Algo" ) <<
"L1 physics algorithm '" << algoName <<
"' does not have category 'AlgorithmTrigger' from 'L1GtUtils'\n"
784 bool decisionBeforeMask;
785 bool decisionAfterMask;
790 LogError(
"l1Algo" ) <<
"L1 physics algorithm '" << algoName <<
"' decision has error code " <<
error <<
" from 'L1GtUtils'\n"
797 if( ! handleL1GlobalTriggerObjectMapRecord.
isValid() ) {
798 triggerAlgos->push_back( triggerAlgo );
802 if ( ! l1ObjectMap ) {
803 LogError(
"l1ObjectMap" ) <<
"L1 physics algorithm '" << algoName <<
"' is missing in L1GlobalTriggerObjectMapRecord\n"
804 <<
"Skipping conditions and GTL result";
805 triggerAlgos->push_back( triggerAlgo );
809 if ( ( l1ObjectMap->algoGtlResult() != decisionBeforeMask ) && ( decisionBeforeMask ==
true ) ) {
810 LogInfo(
"l1ObjectMap" ) <<
"L1 physics algorithm '" << algoName <<
"' with different decisions in\n"
811 <<
"L1GlobalTriggerObjectMapRecord (GTL result) : " << l1ObjectMap->algoGtlResult() <<
"\n"
812 <<
"L1GlobalTriggerReadoutRecord (decision before mask): " << decisionBeforeMask;
814 triggerAlgo.
setGtlResult( l1ObjectMap->algoGtlResult() );
816 const std::vector< L1GtLogicParser::OperandToken > &
tokens( l1ObjectMap->operandTokenVector() );
817 for (
size_t iT = 0; iT <
tokens.size(); ++iT ) {
819 size_t key( triggerConditions->size() );
820 for (
size_t iC = 0; iC < triggerConditions->size(); ++iC ) {
821 if ( token.tokenName == triggerConditions->at( iC ).name() ) {
826 if (
key == triggerConditions->size() ) {
828 if ( l1GtConditions.find( triggerCond.
name() ) != l1GtConditions.end() ) {
829 triggerCond.
setCategory( l1GtConditions[ triggerCond.
name() ]->condCategory() );
830 triggerCond.
setType( l1GtConditions[ triggerCond.
name() ]->condType() );
831 const std::vector< L1GtObject > l1ObjectTypes( l1GtConditions[ triggerCond.
name() ]->objectType() );
832 for (
size_t iT = 0 ; iT < l1ObjectTypes.size(); ++iT ) {
836 CombinationsInCond combis( l1ObjectMap->combinationVector().at( token.tokenNumber ) );
837 for (
size_t iVV = 0; iVV < combis.size(); ++iVV ) {
839 for (
size_t iV = 0; iV < combi.size(); ++iV ) {
840 if ( iV >= l1ObjectTypes.size() ) {
841 LogError(
"l1CondMap" ) <<
"Index " << iV <<
" in combinations vector overshoots size " << l1ObjectTypes.size() <<
" of types vector in conditions map\n"
842 <<
"Skipping object key in condition " << triggerCond.
name();
843 }
else if ( l1ObjectTypeMap.find( l1ObjectTypes.at( iV ) ) != l1ObjectTypeMap.end() ) {
844 if ( combi.at( iV ) >= int( l1ObjectTypeMap[ l1ObjectTypes.at( iV ) ].size() ) ) {
845 LogError(
"l1CondMap" ) <<
"Index " << combi.at( iV ) <<
" in combination overshoots number " << l1ObjectTypeMap[ l1ObjectTypes.at( iV ) ].size() <<
"of according trigger objects\n"
846 <<
"Skipping object key in condition " << triggerCond.
name();
848 const unsigned objectKey( l1ObjectTypeMap[ l1ObjectTypes.at( iV ) ].at( combi.at( iV ) ) );
851 triggerObjectsStandAlone->at( objectKey ).addAlgorithmName( triggerAlgo.
name(), ( triggerAlgo.
decision() && triggerCond.
wasAccept() ) );
852 triggerObjectsStandAlone->at( objectKey ).addConditionName( triggerCond.
name() );
857 LogWarning(
"l1CondMap" ) <<
"L1 conditions '" << triggerCond.
name() <<
"' not found in the L1 menu\n"
858 <<
"Remains incomplete";
860 triggerConditions->push_back( triggerCond );
864 triggerAlgos->push_back( triggerAlgo );
867 for (
CItAlgo iAlgo = l1GtTechTriggers.begin(); iAlgo != l1GtTechTriggers.end(); ++iAlgo ) {
868 const std::string & algoName( iAlgo->second.algoName() );
877 LogError(
"l1Algo" ) <<
"L1 technical trigger '" << algoName <<
"' not found in the L1 menu\n"
882 LogError(
"l1Algo" ) <<
"L1 technical trigger '" << algoName <<
"' does not have category 'TechnicalTrigger' from 'L1GtUtils'\n"
886 bool decisionBeforeMask;
887 bool decisionAfterMask;
892 LogError(
"l1Algo" ) <<
"L1 technical trigger '" << algoName <<
"' decision has error code " <<
error <<
" from 'L1GtUtils'\n"
898 triggerAlgos->push_back( triggerAlgo );
903 iEvent.
put( triggerAlgos );
904 iEvent.
put( triggerConditions );
908 iEvent.
put( triggerObjectsStandAlone );
unsigned int set() const
low-level const accessors for data members
unsigned int size() const
number of trigger paths in trigger table
collection_type::const_iterator const_iterator
T getParameter(std::string const &) const
bool getByLabel(std::string const &label, Handle< PROD > &result) const
std::string name() const
Get the filter label.
Analysis-level L1 trigger algorithm class.
const int l1Results(const edm::Event &iEvent, const edm::InputTag &l1GtRecordInputTag, const edm::InputTag &l1GtReadoutRecordInputTag, const std::string &nameAlgoTechTrig, bool &decisionBeforeMask, bool &decisionAfterMask, int &prescaleFactor, int &triggerMask) const
virtual void produce(edm::Event &iEvent, const edm::EventSetup &iSetup)
edm::InputTag tagL1ExtraForJet_
const std::string moduleType(const std::string &module) const
C++ class name of module.
bool autoProcessNameL1ExtraHTM_
virtual void beginLuminosityBlock(edm::LuminosityBlock &iLuminosityBlock, const edm::EventSetup &iSetup)
bool autoProcessNameL1ExtraIsoEG_
const std::string & triggerName(unsigned int triggerIndex) const
edm::InputTag tagTriggerEvent_
PATTriggerProducer(const edm::ParameterSet &iConfig)
HLTConfigProvider hltConfig_
bool setStatus(int status)
enum start value shifted to 81 so as to avoid clashes with PDG codes
bool autoProcessNameL1ExtraTauJet_
virtual bool hasCollection(const std::string &collName) const
Checks, if a certain label of original collection is assigned (method overrides)
#define DEFINE_FWK_MODULE(type)
edm::InputTag tagTriggerResults_
const bool l1AlgoTechTrigBitNumber(const std::string &nameAlgoTechTrig, TriggerCategory &trigCategory, int &bitNumber) const
static const unsigned int NumberTechnicalTriggers
bool wasAccept() const
Get the success flag.
std::string name() const
Get L1 algorithm name.
const std::vector< std::vector< std::pair< bool, std::string > > > & hltL1GTSeeds() const
The single EDProduct containing the HLT Prescale Table.
void setGtlResult(bool gtlResult)
Set L1 algorithm GTL result.
void addTriggerObjectType(trigger::TriggerObjectType triggerObjectType)
Add a new trigger object type.
bool exists(std::string const ¶meterName) const
checks if a parameter exists
std::vector< int > SingleCombInCond
typedefs
edm::InputTag tagL1ExtraETM_
void addTriggerObjectType(trigger::TriggerObjectType triggerObjectType)
Add a new trigger object type identifier.
std::string hltPrescaleLabel_
std::vector< TriggerObjectStandAlone > TriggerObjectStandAloneCollection
Collection of TriggerObjectStandAlone.
void addObjectKey(unsigned objectKey)
Add a new trigger object collection index.
bool getByLabel(std::string const &label, Handle< PROD > &result) const
const std::map< std::string, std::vector< unsigned int > > & prescaleTable() const
Analysis-level trigger object class.
const std::map< std::string, std::vector< unsigned int > > & table() const
bool autoProcessNameL1ExtraMu_
void addFilterLabel(const std::string &filterLabel)
Methods.
bool autoProcessNameL1ExtraCenJet_
const std::string & moduleLabel(unsigned int trigger, unsigned int module) const
unsigned int triggerIndex(const std::string &triggerName) const
slot position of trigger path in trigger table (0 to size-1)
std::vector< TriggerAlgorithm > TriggerAlgorithmCollection
Collection of TriggerAlgorithm.
bool addPathModuleLabels_
Analysis-level HLTrigger filter class.
Produces the full or stand-alone PAT trigger information collections.
unsigned int prescaleValue(unsigned int set, const std::string &trigger) const
HLT prescale value in specific prescale set for a specific trigger path.
unsigned int moduleIndex(unsigned int trigger, const std::string &module) const
slot position of module on trigger path (0 to size-1)
edm::InputTag tagL1ExtraIsoEG_
void setCollection(const std::string &collName)
Methods.
Analysis-level L1 trigger condition class.
Analysis-level HLTrigger path class.
static const unsigned int NumberPhysTriggersExtended
edm::InputTag tagL1GlobalTriggerObjectMapRecord_
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
const std::vector< std::string > & labels() const
trigger::HLTPrescaleTable hltPrescaleTableLumi_
ProcessHistory const & processHistory() const
static const unsigned int NumberPhysTriggers
void retrieveL1EventSetup(const edm::EventSetup &)
retrieve all the relevant L1 trigger event setup records and cache them to improve the speed ...
void setLogicalExpression(const std::string &expression)
Set L1 algorithm logical expression.
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
virtual void beginRun(edm::Run &iRun, const edm::EventSetup &iSetup)
std::vector< TriggerFilter > TriggerFilterCollection
Collection of TriggerFilter.
edm::InputTag tagL1ExtraMu_
void setCategory(L1GtConditionCategory category)
Set the condition category.
int prescaleSet(const edm::Event &iEvent, const edm::EventSetup &iSetup) const
std::vector< size_type > Keys
void addObjectKey(unsigned objectKey)
Add a new trigger object collection index.
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
bool autoProcessNameL1ExtraForJet_
const std::vector< std::string > & prescaleLabels() const
low-level data member access
void addConditionKey(unsigned conditionKey)
Add a new trigger condition collection index.
void setType(const std::string &type)
Set the filter module type.
edm::InputTag tagL1ExtraTauJet_
static const std::string category("Muon|RecoMuon|L3MuonCandidateProducerFromMuons")
std::vector< TriggerObject > TriggerObjectCollection
Collection of TriggerObject.
unsigned int prescaleSize() const
trigger::HLTPrescaleTable hltPrescaleTableRun_
std::vector< TriggerCondition > TriggerConditionCollection
Collection of TriggerCondition.
bool autoProcessNameL1ExtraETM_
std::vector< std::string > exludeCollections_
void addPathName(const std::string &pathName, bool pathLastFilterAccepted=true)
Adds a new HLT path name.
bool autoProcessNameL1ExtraNoIsoEG_
std::vector< L1Seed > L1SeedCollection
Collection of L1Seed.
void addTriggerObjectType(trigger::TriggerObjectType triggerObjectType)
Add a new trigger object type identifier.
std::vector< SingleCombInCond > CombinationsInCond
all the object combinations evaluated to true in the condition
std::vector< TriggerPath > TriggerPathCollection
Collection of TriggerPath.
edm::InputTag tagL1ExtraNoIsoEG_
void setType(L1GtConditionType type)
Set the condition type.
edm::InputTag tagL1ExtraCenJet_
Analysis-level trigger object class (stand-alone)
edm::InputTag tagL1ExtraHTM_
std::string labelHltPrescaleTable_