CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
TriggerResultsFilterFromDB Class Reference

#include <TriggerResultsFilterFromDB.h>

Inheritance diagram for TriggerResultsFilterFromDB:
edm::stream::EDFilter<> edm::stream::EDFilterBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

bool filter (edm::Event &, const edm::EventSetup &) override
 
 TriggerResultsFilterFromDB (const edm::ParameterSet &)
 
 ~TriggerResultsFilterFromDB ()
 
- Public Member Functions inherited from edm::stream::EDFilter<>
 EDFilter ()=default
 
- Public Member Functions inherited from edm::stream::EDFilterBase
 EDFilterBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDFilterBase ()
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::stream::EDFilterBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

void parse (const std::string &expression)
 parse the logical expression into functionals More...
 
void parse (const std::vector< std::string > &expressions)
 
void pathsFromSetup (const edm::Event &, const edm::EventSetup &setup)
 read the triggerConditions from the database More...
 

Private Attributes

triggerExpression::Data m_eventCache
 cache some data from the Event for faster access by the m_expression More...
 
std::string m_eventSetupPathsKey
 read the triggerConditions from the database More...
 
edm::ESWatcher
< AlCaRecoTriggerBitsRcd
m_eventSetupWatcher
 
triggerExpression::Evaluatorm_expression
 evaluator for the trigger condition More...
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDFilter<>
typedef CacheContexts< T...> CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T...> HasAbility
 
typedef
CacheTypes::LuminosityBlockCache 
LuminosityBlockCache
 
typedef
LuminosityBlockContextT
< LuminosityBlockCache,
RunCache, GlobalCache
LuminosityBlockContext
 
typedef
CacheTypes::LuminosityBlockSummaryCache 
LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache,
GlobalCache
RunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDFilterBase
typedef EDFilterAdaptorBase ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
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 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)
 

Detailed Description

This class is an EDFilter implementing filtering on arbitrary logical combinations of L1 and HLT results.

It is a modifed version of TriggerResultsFilter that reads the trigger expression from the database.

Authors: Martin Grunewald, Andrea Bocci

See header file for documentation

Authors: Martin Grunewald, Andrea Bocci

Definition at line 38 of file TriggerResultsFilterFromDB.h.

Constructor & Destructor Documentation

TriggerResultsFilterFromDB::TriggerResultsFilterFromDB ( const edm::ParameterSet config)
explicit

Definition at line 33 of file TriggerResultsFilterFromDB.cc.

33  :
34  m_eventSetupPathsKey(config.getParameter<std::string>("eventSetupPathsKey")),
36  m_expression(0),
38 {
39 }
T getParameter(std::string const &) const
std::string m_eventSetupPathsKey
read the triggerConditions from the database
edm::ESWatcher< AlCaRecoTriggerBitsRcd > m_eventSetupWatcher
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
triggerExpression::Evaluator * m_expression
evaluator for the trigger condition
triggerExpression::Data m_eventCache
cache some data from the Event for faster access by the m_expression
TriggerResultsFilterFromDB::~TriggerResultsFilterFromDB ( )

Definition at line 41 of file TriggerResultsFilterFromDB.cc.

References m_expression.

42 {
43  delete m_expression;
44 }
triggerExpression::Evaluator * m_expression
evaluator for the trigger condition

Member Function Documentation

void TriggerResultsFilterFromDB::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 47 of file TriggerResultsFilterFromDB.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), HLT_25ns14e33_v1_cff::InputTag, and AlCaHLTBitMon_QueryRunRegistry::string.

47  {
49  // # HLT results - set to empty to ignore HLT
50  desc.add<edm::InputTag>("hltResults",edm::InputTag("TriggerResults"));
51  // # L1 GT results - set to empty to ignore L1T
52  desc.add<edm::InputTag>("l1tResults",edm::InputTag("hltGtDigis"));
53  // # use L1 mask
54  desc.add<bool>("l1tIgnoreMask",false);
55  // # read L1 technical bits from PSB#9, bypassing the prescales
56  desc.add<bool>("l1techIgnorePrescales",false);
57  // # used by the definition of the L1 mask
58  desc.add<unsigned int>("daqPartitions",0x01);
59  // # throw exception on unknown trigger names
60  desc.add<bool>("throw",true);
61  // # read paths from AlCaRecoTriggerBitsRcd via this key
62  desc.add<std::string>("eventSetupPathsKey","");
63  descriptions.add("triggerResultsFilterFromDB", desc);
64 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
bool TriggerResultsFilterFromDB::filter ( edm::Event event,
const edm::EventSetup setup 
)
overridevirtual

Implements edm::stream::EDFilterBase.

Definition at line 110 of file TriggerResultsFilterFromDB.cc.

References edm::ESWatcher< T >::check(), triggerExpression::Data::configurationUpdated(), m_eventCache, m_eventSetupWatcher, m_expression, pathsFromSetup(), and triggerExpression::Data::setEvent().

111 {
112  // if the IOV has changed, re-read the triggerConditions from the database
113  if (m_eventSetupWatcher.check(setup))
114  pathsFromSetup(event, setup);
115 
116  if (not m_expression)
117  // no valid expression has been parsed
118  return false;
119 
120  if (not m_eventCache.setEvent(event, setup))
121  // couldn't properly access all information from the Event
122  return false;
123 
124  // if the L1 or HLT configurations have changed, (re)initialize the filters (including during the first event)
126  m_expression->init(m_eventCache);
127 
128  // log the expanded configuration
129  edm::LogInfo("Configuration") << "TriggerResultsFilterFromDB configuration updated: " << *m_expression;
130  }
131 
132  // run the trigger results filter
133  return (*m_expression)(m_eventCache);
134 }
edm::ESWatcher< AlCaRecoTriggerBitsRcd > m_eventSetupWatcher
triggerExpression::Evaluator * m_expression
evaluator for the trigger condition
triggerExpression::Data m_eventCache
cache some data from the Event for faster access by the m_expression
bool setEvent(const edm::Event &event, const edm::EventSetup &setup)
void pathsFromSetup(const edm::Event &, const edm::EventSetup &setup)
read the triggerConditions from the database
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:57
void TriggerResultsFilterFromDB::parse ( const std::string &  expression)
private

parse the logical expression into functionals

Definition at line 81 of file TriggerResultsFilterFromDB.cc.

References m_expression, and triggerExpression::parse().

Referenced by parse(), and pathsFromSetup().

81  {
82  // parse the logical expressions into functionals
83  m_expression = triggerExpression::parse( expression );
84 
85  // check if the expressions were parsed correctly
86  if (not m_expression)
87  edm::LogWarning("Configuration") << "Couldn't parse trigger results expression \"" << expression << "\"";
88 }
Evaluator * parse(const T &text)
triggerExpression::Evaluator * m_expression
evaluator for the trigger condition
void TriggerResultsFilterFromDB::parse ( const std::vector< std::string > &  expressions)
private

Definition at line 66 of file TriggerResultsFilterFromDB.cc.

References i, and parse().

66  {
67  // parse the logical expressions into functionals
68  if (expressions.size() == 0) {
69  edm::LogWarning("Configuration") << "Empty trigger results expression";
70  } else if (expressions.size() == 1) {
71  parse( expressions[0] );
72  } else {
73  std::stringstream expression;
74  expression << "(" << expressions[0] << ")";
75  for (unsigned int i = 1; i < expressions.size(); ++i)
76  expression << " OR (" << expressions[i] << ")";
77  parse( expression.str() );
78  }
79 }
int i
Definition: DBlmapReader.cc:9
void parse(const std::string &expression)
parse the logical expression into functionals
void TriggerResultsFilterFromDB::pathsFromSetup ( const edm::Event event,
const edm::EventSetup setup 
)
private

read the triggerConditions from the database

Definition at line 91 of file TriggerResultsFilterFromDB.cc.

References Exception, edm::EventSetup::get(), m_eventSetupPathsKey, edm::stream::EDFilterBase::moduleDescription(), edm::ModuleDescription::moduleLabel(), and parse().

Referenced by filter().

92 {
93  // Get map of strings to concatenated list of names of HLT paths from EventSetup:
95  setup.get<AlCaRecoTriggerBitsRcd>().get(triggerBits);
96  typedef std::map<std::string, std::string> TriggerMap;
97  const TriggerMap & triggerMap = triggerBits->m_alcarecoToTrig;
98 
99  TriggerMap::const_iterator listIter = triggerMap.find(m_eventSetupPathsKey);
100  if (listIter == triggerMap.end()) {
101  throw cms::Exception("Configuration") << "TriggerResultsFilterFromDB [instance: " << moduleDescription().moduleLabel()
102  << "]: No triggerList with key " << m_eventSetupPathsKey << " in AlCaRecoTriggerBitsRcd";
103  }
104 
105  // avoid a map<string,vector<string> > in DB for performance reason,
106  // the paths are mapped into one string that we have to decompose:
107  parse( triggerBits->decompose(listIter->second) );
108 }
std::string m_eventSetupPathsKey
read the triggerConditions from the database
ModuleDescription const & moduleDescription() const
Definition: EDFilterBase.h:58
std::string const & moduleLabel() const
void parse(const std::string &expression)
parse the logical expression into functionals
const T & get() const
Definition: EventSetup.h:56

Member Data Documentation

triggerExpression::Data TriggerResultsFilterFromDB::m_eventCache
private

cache some data from the Event for faster access by the m_expression

Definition at line 62 of file TriggerResultsFilterFromDB.h.

Referenced by filter().

std::string TriggerResultsFilterFromDB::m_eventSetupPathsKey
private

read the triggerConditions from the database

Definition at line 55 of file TriggerResultsFilterFromDB.h.

Referenced by pathsFromSetup().

edm::ESWatcher<AlCaRecoTriggerBitsRcd> TriggerResultsFilterFromDB::m_eventSetupWatcher
private

Definition at line 56 of file TriggerResultsFilterFromDB.h.

Referenced by filter().

triggerExpression::Evaluator* TriggerResultsFilterFromDB::m_expression
private

evaluator for the trigger condition

Definition at line 59 of file TriggerResultsFilterFromDB.h.

Referenced by filter(), parse(), and ~TriggerResultsFilterFromDB().