CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
L1GtUtils::LogicalExpressionL1Results Class Reference

#include <L1GtUtils.h>

Public Member Functions

const std::vector< std::pair< std::string, bool > > & decisionsAfterMask ()
 
const std::vector< std::pair< std::string, bool > > & decisionsBeforeMask ()
 
const std::vector< std::pair< std::string, int > > & errorCodes (const edm::Event &)
 
const std::vector< L1GtLogicParser::OperandToken > & expL1Triggers ()
 list of triggers in the logical expression, trigger decisions, prescale factors and masks, error codes More...
 
bool isValid ()
 return true if the logical expression is syntactically correct More...
 
 LogicalExpressionL1Results (const std::string &, L1GtUtils &)
 constructor(s) More...
 
const int logicalExpressionRunUpdate (const edm::Run &, const edm::EventSetup &, const std::string &)
 
const int logicalExpressionRunUpdate (const edm::Run &, const edm::EventSetup &)
 keep the logical expression given in the previous run More...
 
const std::vector< std::pair< std::string, int > > & prescaleFactors ()
 
const std::vector< std::pair< std::string, int > > & triggerMasks ()
 
 ~LogicalExpressionL1Results ()
 destructor More...
 

Private Member Functions

bool initialize ()
 
void l1Results (const edm::Event &iEvent)
 
void reset (const std::vector< std::pair< std::string, bool > > &) const
 reset for each L1 trigger the value from pair.second More...
 
void reset (const std::vector< std::pair< std::string, int > > &) const
 

Private Attributes

std::vector< std::pair< std::string, bool > > m_decisionsAfterMask
 
std::vector< std::pair< std::string, bool > > m_decisionsBeforeMask
 
std::vector< std::pair< std::string, int > > m_errorCodes
 
bool m_expBitsTechTrigger
 flag true, if the logical expression is built from technical trigger bits More...
 
std::vector< L1GtLogicParser::OperandTokenm_expL1Triggers
 
size_t m_expL1TriggersSize
 
std::vector< L1GtUtils::TriggerCategorym_expTriggerCategory
 trigger category for each L1 trigger in the logical expression More...
 
std::vector< bool > m_expTriggerInMenu
 
int m_l1ConfCode
 code for L1 trigger configuration More...
 
L1GtUtilsm_l1GtUtils
 
bool m_l1ResultsAlreadyCalled
 set to true if the method l1Results was called once More...
 
std::string m_logicalExpression
 private members as input parameters More...
 
std::vector< std::pair< std::string, int > > m_prescaleFactors
 
std::vector< std::pair< std::string, int > > m_triggerMasks
 
bool m_validL1Configuration
 true if valid L1 configuration - if not, reset all quantities and return More...
 
bool m_validLogicalExpression
 true if the logical expression uses accepted L1GtLogicParser operators More...
 

Detailed Description

Definition at line 157 of file L1GtUtils.h.

Constructor & Destructor Documentation

◆ LogicalExpressionL1Results()

L1GtUtils::LogicalExpressionL1Results::LogicalExpressionL1Results ( const std::string &  expression,
L1GtUtils l1GtUtils 
)
explicit

constructor(s)

trigger decisions, prescale factors and masks from GT record(s)

Definition at line 1785 of file L1GtUtils.cc.

References initialize().

1786  :
1787 
1789 
1790  m_l1GtUtils(l1GtUtils),
1791 
1792  m_l1ConfCode(-1),
1793 
1794  m_validL1Configuration(false),
1795 
1796  m_validLogicalExpression(false),
1797 
1798  m_l1ResultsAlreadyCalled(false),
1799 
1801 
1802  m_expBitsTechTrigger(false) {
1803  initialize();
1804 }
bool m_validLogicalExpression
true if the logical expression uses accepted L1GtLogicParser operators
Definition: L1GtUtils.h:217
int m_l1ConfCode
code for L1 trigger configuration
Definition: L1GtUtils.h:211
std::string m_logicalExpression
private members as input parameters
Definition: L1GtUtils.h:203
bool m_l1ResultsAlreadyCalled
set to true if the method l1Results was called once
Definition: L1GtUtils.h:220
bool m_expBitsTechTrigger
flag true, if the logical expression is built from technical trigger bits
Definition: L1GtUtils.h:229
bool m_validL1Configuration
true if valid L1 configuration - if not, reset all quantities and return
Definition: L1GtUtils.h:214

◆ ~LogicalExpressionL1Results()

L1GtUtils::LogicalExpressionL1Results::~LogicalExpressionL1Results ( )

destructor

Definition at line 1807 of file L1GtUtils.cc.

1807  {
1808  // empty
1809 }

Member Function Documentation

◆ decisionsAfterMask()

const std::vector< std::pair< std::string, bool > > & L1GtUtils::LogicalExpressionL1Results::decisionsAfterMask ( )

Definition at line 2011 of file L1GtUtils.cc.

References Exception.

Referenced by L1GtAnalyzer::analyzeL1GtUtilsCore().

2011  {
2012  // throw an exception if the result is not computed once per event - user usage error
2013  if (!m_l1ResultsAlreadyCalled) {
2014  throw cms::Exception("FailModule")
2015  << "\nUsage error: "
2016  << "\n Method 'errorCodes' must be called in the event loop before attempting to use this method.\n"
2017  << std::endl;
2018  }
2019 
2020  return m_decisionsAfterMask;
2021 }
bool m_l1ResultsAlreadyCalled
set to true if the method l1Results was called once
Definition: L1GtUtils.h:220
std::vector< std::pair< std::string, bool > > m_decisionsAfterMask
Definition: L1GtUtils.h:237

◆ decisionsBeforeMask()

const std::vector< std::pair< std::string, bool > > & L1GtUtils::LogicalExpressionL1Results::decisionsBeforeMask ( )

Definition at line 1999 of file L1GtUtils.cc.

References Exception.

Referenced by L1GtAnalyzer::analyzeL1GtUtilsCore().

1999  {
2000  // throw an exception if the result is not computed once per event - user usage error
2001  if (!m_l1ResultsAlreadyCalled) {
2002  throw cms::Exception("FailModule")
2003  << "\nUsage error: "
2004  << "\n Method 'errorCodes' must be called in the event loop before attempting to use this method.\n"
2005  << std::endl;
2006  }
2007 
2008  return m_decisionsBeforeMask;
2009 }
std::vector< std::pair< std::string, bool > > m_decisionsBeforeMask
Definition: L1GtUtils.h:236
bool m_l1ResultsAlreadyCalled
set to true if the method l1Results was called once
Definition: L1GtUtils.h:220

◆ errorCodes()

const std::vector< std::pair< std::string, int > > & L1GtUtils::LogicalExpressionL1Results::errorCodes ( const edm::Event iEvent)

Definition at line 2047 of file L1GtUtils.cc.

References iEvent, L1GtUtils::l1Results(), and reset().

Referenced by L1GtAnalyzer::analyzeL1GtUtilsCore(), and HLTPrescaleProvider::getL1PrescaleValueInDetail().

2048  {
2049  m_l1ResultsAlreadyCalled = false;
2050 
2051  // if not a valid L1 configuration, reset all quantities and return
2052  if (!m_validL1Configuration) {
2058 
2059  m_l1ResultsAlreadyCalled = true;
2060  return m_errorCodes;
2061  }
2062 
2063  l1Results(iEvent);
2064 
2065  m_l1ResultsAlreadyCalled = true;
2066 
2067  return m_errorCodes;
2068 }
void l1Results(const edm::Event &iEvent)
Definition: L1GtUtils.cc:2084
std::vector< std::pair< std::string, bool > > m_decisionsBeforeMask
Definition: L1GtUtils.h:236
std::vector< std::pair< std::string, int > > m_errorCodes
Definition: L1GtUtils.h:240
std::vector< std::pair< std::string, int > > m_triggerMasks
Definition: L1GtUtils.h:239
std::vector< std::pair< std::string, int > > m_prescaleFactors
Definition: L1GtUtils.h:238
int iEvent
Definition: GenABIO.cc:224
void reset(const std::vector< std::pair< std::string, bool > > &) const
reset for each L1 trigger the value from pair.second
Definition: L1GtUtils.cc:2070
bool m_l1ResultsAlreadyCalled
set to true if the method l1Results was called once
Definition: L1GtUtils.h:220
bool m_validL1Configuration
true if valid L1 configuration - if not, reset all quantities and return
Definition: L1GtUtils.h:214
std::vector< std::pair< std::string, bool > > m_decisionsAfterMask
Definition: L1GtUtils.h:237

◆ expL1Triggers()

const std::vector<L1GtLogicParser::OperandToken>& L1GtUtils::LogicalExpressionL1Results::expL1Triggers ( )
inline

list of triggers in the logical expression, trigger decisions, prescale factors and masks, error codes

Definition at line 180 of file L1GtUtils.h.

References m_expL1Triggers.

Referenced by L1GtAnalyzer::analyzeL1GtUtilsCore().

180 { return m_expL1Triggers; }
std::vector< L1GtLogicParser::OperandToken > m_expL1Triggers
Definition: L1GtUtils.h:222

◆ initialize()

bool L1GtUtils::LogicalExpressionL1Results::initialize ( void  )
private

parse the logical expression, initialize the private members to required size such that one can just reset them

Definition at line 1811 of file L1GtUtils.cc.

References L1GtUtils::AlgorithmTrigger, cms::Exception::explainSelf(), dqmdumpme::first, LogDebug, LogTrace, L1GtLogicParser::operandTokenVector(), edm::second(), AlCaHLTBitMon_QueryRunRegistry::string, and cms::Exception::what().

Referenced by LogicalExpressionL1Results().

1811  {
1812  // get the vector of triggers corresponding to the logical expression
1813  // check also the logical expression - add/remove spaces if needed
1814 
1815  try {
1816  L1GtLogicParser m_l1AlgoLogicParser = L1GtLogicParser(m_logicalExpression);
1817 
1818  // list of L1 triggers from the logical expression
1819  m_expL1Triggers = m_l1AlgoLogicParser.operandTokenVector();
1821 
1822  m_validLogicalExpression = true;
1823 
1824  } catch (cms::Exception& ex) {
1825  m_validLogicalExpression = false;
1826 
1827  edm::LogWarning("L1GtUtils") << ex;
1828  edm::LogWarning("L1GtUtils") << ex.what();
1829  edm::LogWarning("L1GtUtils") << ex.explainSelf();
1830  }
1831 
1832  // try to convert the string representing each L1 trigger to bit number,
1833  // to check if the logical expression is constructed from bit numbers
1834  // trade-off: cache it here, irrespective of the expression
1835  // when the conversion fails (normally for the first seed,
1836  // if not expression of technical trigger bits), stop and
1837  // set m_expBitsTechTrigger to false
1838 
1839  m_expBitsTechTrigger = true;
1840 
1841  for (size_t iTrig = 0; iTrig < m_expL1TriggersSize; ++iTrig) {
1842  const std::string& bitString = (m_expL1Triggers[iTrig]).tokenName;
1843  std::istringstream bitStream(bitString);
1844  int bitInt;
1845 
1846  if ((bitStream >> bitInt).fail()) {
1847  m_expBitsTechTrigger = false;
1848 
1849  break;
1850  }
1851 
1852  (m_expL1Triggers[iTrig]).tokenNumber = bitInt;
1853  }
1854 
1855  // resize and fill
1863 
1864  LogDebug("L1GtUtils") << std::endl;
1865  LogTrace("L1GtUtils") << "\nLogical expression\n " << m_logicalExpression << "\n has " << m_expL1TriggersSize
1866  << " L1 triggers" << std::endl;
1867  for (size_t iTrig = 0; iTrig < m_expL1TriggersSize; ++iTrig) {
1868  const std::string& trigNameOrAlias = (m_expL1Triggers[iTrig]).tokenName;
1869  LogTrace("L1GtUtils") << " " << trigNameOrAlias << std::endl;
1870 
1871  (m_decisionsBeforeMask[iTrig]).first = trigNameOrAlias;
1872  (m_decisionsBeforeMask[iTrig]).second = false;
1873 
1874  (m_decisionsAfterMask[iTrig]).first = trigNameOrAlias;
1875  (m_decisionsAfterMask[iTrig]).second = false;
1876 
1877  (m_prescaleFactors[iTrig]).first = trigNameOrAlias;
1878  (m_prescaleFactors[iTrig]).second = -1;
1879 
1880  (m_triggerMasks[iTrig]).first = trigNameOrAlias;
1881  (m_triggerMasks[iTrig]).second = -1;
1882 
1883  (m_errorCodes[iTrig]).first = trigNameOrAlias;
1884  (m_errorCodes[iTrig]).second = -1;
1885 
1887 
1888  m_expTriggerInMenu[iTrig] = false;
1889  }
1890  LogTrace("L1GtUtils") << std::endl;
1891 
1892  return true;
1893 }
bool m_validLogicalExpression
true if the logical expression uses accepted L1GtLogicParser operators
Definition: L1GtUtils.h:217
std::vector< std::pair< std::string, bool > > m_decisionsBeforeMask
Definition: L1GtUtils.h:236
virtual std::string explainSelf() const
Definition: Exception.cc:112
std::vector< L1GtLogicParser::OperandToken > m_expL1Triggers
Definition: L1GtUtils.h:222
#define LogTrace(id)
U second(std::pair< T, U > const &p)
std::vector< std::pair< std::string, int > > m_errorCodes
Definition: L1GtUtils.h:240
std::vector< std::pair< std::string, int > > m_triggerMasks
Definition: L1GtUtils.h:239
std::vector< std::pair< std::string, int > > m_prescaleFactors
Definition: L1GtUtils.h:238
std::vector< OperandToken > & operandTokenVector()
return the vector of operand tokens
std::string m_logicalExpression
private members as input parameters
Definition: L1GtUtils.h:203
std::vector< bool > m_expTriggerInMenu
Definition: L1GtUtils.h:233
bool m_expBitsTechTrigger
flag true, if the logical expression is built from technical trigger bits
Definition: L1GtUtils.h:229
std::vector< L1GtUtils::TriggerCategory > m_expTriggerCategory
trigger category for each L1 trigger in the logical expression
Definition: L1GtUtils.h:226
std::vector< std::pair< std::string, bool > > m_decisionsAfterMask
Definition: L1GtUtils.h:237
Log< level::Warning, false > LogWarning
char const * what() const noexcept override
Definition: Exception.cc:107
#define LogDebug(id)

◆ isValid()

bool L1GtUtils::LogicalExpressionL1Results::isValid ( void  )
inline

return true if the logical expression is syntactically correct

Definition at line 169 of file L1GtUtils.h.

References m_validLogicalExpression.

Referenced by ntupleDataFormat._Object::_checkIsValid(), L1GtAnalyzer::beginRun(), HLTPrescaleProvider::getL1PrescaleValueInDetail(), and core.AutoHandle.AutoHandle::ReallyLoad().

169 { return m_validLogicalExpression; }
bool m_validLogicalExpression
true if the logical expression uses accepted L1GtLogicParser operators
Definition: L1GtUtils.h:217

◆ l1Results()

void L1GtUtils::LogicalExpressionL1Results::l1Results ( const edm::Event iEvent)
private

Definition at line 2084 of file L1GtUtils.cc.

References iEvent, LogDebug, LogTrace, reset(), edm::second(), and AlCaHLTBitMon_QueryRunRegistry::string.

2084  {
2085  // reset the vectors before filling them
2091 
2092  // initialization of actual values for each trigger
2093  bool decisionBeforeMaskValue = false;
2094  bool decisionAfterMaskValue = false;
2095  int prescaleFactorValue = -1;
2096  int triggerMaskValue = -1;
2097  int errorCode = -1;
2098 
2099  LogDebug("L1GtUtils") << std::endl;
2100  LogTrace("L1GtUtils") << "\nLogical expression\n " << m_logicalExpression << std::endl;
2101 
2102  // for each trigger, if it is in the L1 menu, get the prescale factor and trigger mask
2103 
2104  for (size_t iTrig = 0; iTrig < m_expL1TriggersSize; ++iTrig) {
2105  const std::string& trigNameOrAlias = (m_expL1Triggers[iTrig]).tokenName;
2106 
2107  if (m_expTriggerInMenu[iTrig]) {
2108  errorCode = m_l1GtUtils.l1Results(iEvent,
2109  trigNameOrAlias,
2110  decisionBeforeMaskValue,
2111  decisionAfterMaskValue,
2112  prescaleFactorValue,
2113  triggerMaskValue);
2114 
2115  if (errorCode != 0) {
2116  // error while retrieving the results
2117  // for this trigger: set prescale factor to -1, trigger mask to -1
2118 
2119  decisionBeforeMaskValue = false;
2120  decisionAfterMaskValue = false;
2121  prescaleFactorValue = -1;
2122  triggerMaskValue = -1;
2123  }
2124 
2125  } else {
2126  // no trigger name or trigger alias in the menu, no bits:
2127  // for this trigger: set prescale factor to -1, set the error code
2128 
2129  decisionBeforeMaskValue = false;
2130  decisionAfterMaskValue = false;
2131  prescaleFactorValue = -1;
2132  triggerMaskValue = -1;
2133  errorCode = m_l1ConfCode + 1;
2134  }
2135 
2136  LogTrace("L1GtUtils") << "\n" << trigNameOrAlias << ":" << std::endl;
2137 
2138  (m_decisionsBeforeMask[iTrig]).second = decisionBeforeMaskValue;
2139  LogTrace("L1GtUtils") << " decision before mask = " << decisionBeforeMaskValue << std::endl;
2140 
2141  (m_decisionsAfterMask[iTrig]).second = decisionAfterMaskValue;
2142  LogTrace("L1GtUtils") << " decision after mask = " << decisionAfterMaskValue << std::endl;
2143 
2144  (m_prescaleFactors[iTrig]).second = prescaleFactorValue;
2145  LogTrace("L1GtUtils") << " prescale factor = " << prescaleFactorValue << std::endl;
2146 
2147  (m_triggerMasks[iTrig]).second = triggerMaskValue;
2148  LogTrace("L1GtUtils") << " trigger mask = " << triggerMaskValue << std::endl;
2149 
2150  (m_errorCodes[iTrig]).second = errorCode;
2151  LogTrace("L1GtUtils") << " error code = " << errorCode << std::endl;
2152  }
2153 
2154  LogDebug("L1GtUtils") << std::endl;
2155 }
std::vector< std::pair< std::string, bool > > m_decisionsBeforeMask
Definition: L1GtUtils.h:236
std::vector< L1GtLogicParser::OperandToken > m_expL1Triggers
Definition: L1GtUtils.h:222
int m_l1ConfCode
code for L1 trigger configuration
Definition: L1GtUtils.h:211
#define LogTrace(id)
U second(std::pair< T, U > const &p)
const int l1Results(const edm::Event &iEvent, const std::string &nameAlgoTechTrig, bool &decisionBeforeMask, bool &decisionAfterMask, int &prescaleFactor, int &triggerMask) const
Definition: L1GtUtils.cc:666
std::vector< std::pair< std::string, int > > m_errorCodes
Definition: L1GtUtils.h:240
std::vector< std::pair< std::string, int > > m_triggerMasks
Definition: L1GtUtils.h:239
std::vector< std::pair< std::string, int > > m_prescaleFactors
Definition: L1GtUtils.h:238
int iEvent
Definition: GenABIO.cc:224
std::string m_logicalExpression
private members as input parameters
Definition: L1GtUtils.h:203
void reset(const std::vector< std::pair< std::string, bool > > &) const
reset for each L1 trigger the value from pair.second
Definition: L1GtUtils.cc:2070
std::vector< bool > m_expTriggerInMenu
Definition: L1GtUtils.h:233
std::vector< std::pair< std::string, bool > > m_decisionsAfterMask
Definition: L1GtUtils.h:237
#define LogDebug(id)

◆ logicalExpressionRunUpdate() [1/2]

const int L1GtUtils::LogicalExpressionL1Results::logicalExpressionRunUpdate ( const edm::Run iRun,
const edm::EventSetup evSetup,
const std::string &  logicExpression 
)

update quantities related to the logical expression at the beginning of the run new logical expression, replacing the logical expression given the in previous run

Definition at line 1895 of file L1GtUtils.cc.

References initialize().

Referenced by L1GtAnalyzer::beginRun(), and HLTPrescaleProvider::getL1PrescaleValueInDetail().

1897  {
1898  // initialize error code
1899  int errorCode = 0;
1900 
1901  // logical expression has changed - one must re-initialize all quantities related to the logical expression
1902  // and clear the vectors
1903 
1904  m_logicalExpression = logicExpression;
1905  m_validLogicalExpression = false;
1906 
1907  m_l1ResultsAlreadyCalled = false;
1908 
1909  m_expL1TriggersSize = 0;
1910  m_expBitsTechTrigger = false;
1911 
1912  //
1913  m_decisionsBeforeMask.clear();
1914  m_decisionsAfterMask.clear();
1915  m_prescaleFactors.clear();
1916  m_triggerMasks.clear();
1917  m_errorCodes.clear();
1918  m_expTriggerCategory.clear();
1919  m_expTriggerInMenu.clear();
1920 
1921  initialize();
1922 
1923  //
1924  errorCode = logicalExpressionRunUpdate(iRun, evSetup);
1925 
1926  return errorCode;
1927 }
bool m_validLogicalExpression
true if the logical expression uses accepted L1GtLogicParser operators
Definition: L1GtUtils.h:217
std::vector< std::pair< std::string, bool > > m_decisionsBeforeMask
Definition: L1GtUtils.h:236
const int logicalExpressionRunUpdate(const edm::Run &, const edm::EventSetup &, const std::string &)
Definition: L1GtUtils.cc:1895
std::vector< std::pair< std::string, int > > m_errorCodes
Definition: L1GtUtils.h:240
std::vector< std::pair< std::string, int > > m_triggerMasks
Definition: L1GtUtils.h:239
std::vector< std::pair< std::string, int > > m_prescaleFactors
Definition: L1GtUtils.h:238
std::string m_logicalExpression
private members as input parameters
Definition: L1GtUtils.h:203
std::vector< bool > m_expTriggerInMenu
Definition: L1GtUtils.h:233
bool m_l1ResultsAlreadyCalled
set to true if the method l1Results was called once
Definition: L1GtUtils.h:220
bool m_expBitsTechTrigger
flag true, if the logical expression is built from technical trigger bits
Definition: L1GtUtils.h:229
std::vector< L1GtUtils::TriggerCategory > m_expTriggerCategory
trigger category for each L1 trigger in the logical expression
Definition: L1GtUtils.h:226
std::vector< std::pair< std::string, bool > > m_decisionsAfterMask
Definition: L1GtUtils.h:237

◆ logicalExpressionRunUpdate() [2/2]

const int L1GtUtils::LogicalExpressionL1Results::logicalExpressionRunUpdate ( const edm::Run iRun,
const edm::EventSetup evSetup 
)

keep the logical expression given in the previous run

Definition at line 1929 of file L1GtUtils.cc.

References L1GtUtils::AlgorithmTrigger, L1TBPTX_cfi::bitNumber, dqmdumpme::first, AlCaHLTBitMon_QueryRunRegistry::string, and L1GtUtils::TechnicalTrigger.

1930  {
1931  // check first that a valid L1 configuration was retrieved,
1932  // to prevent also calls before the L1 configuration retrieval
1933 
1934  // initialize error code and L1 configuration code
1935  int errorCode = 0;
1936  int l1ConfCode = 0;
1937 
1938  if (!(m_l1GtUtils.availableL1Configuration(errorCode, l1ConfCode))) {
1939  m_validL1Configuration = false;
1940  return errorCode;
1941  } else {
1942  m_validL1Configuration = true;
1943  m_l1ConfCode = l1ConfCode;
1944  }
1945 
1946  // check if the trigger (name of alias) from the logical expression are in the menu,
1947  // if names are used, set tokenNumber to the corresponding bit number
1948  // if technical trigger bits, set tokenName to the corresponding technical trigger name, if
1949  // a technical trigger exists on that bit
1950  // for each trigger, set also the trigger category
1951 
1952  // initialization
1954  int bitNumber = -1;
1955 
1956  for (size_t iTrig = 0; iTrig < m_expL1TriggersSize; ++iTrig) {
1957  trigCategory = L1GtUtils::AlgorithmTrigger;
1958  bitNumber = -1;
1959  const std::string& trigNameOrAlias = (m_expL1Triggers[iTrig]).tokenName;
1960 
1961  if (!m_expBitsTechTrigger) {
1962  const bool triggerInMenu = m_l1GtUtils.l1AlgoTechTrigBitNumber(trigNameOrAlias, trigCategory, bitNumber);
1963 
1964  (m_expL1Triggers[iTrig]).tokenNumber = bitNumber;
1965  m_expTriggerCategory[iTrig] = trigCategory;
1966  m_expTriggerInMenu[iTrig] = triggerInMenu;
1967 
1968  } else {
1969  std::string aliasL1Trigger;
1970  std::string nameL1Trigger;
1971 
1972  trigCategory = L1GtUtils::TechnicalTrigger;
1973  bitNumber = (m_expL1Triggers[iTrig]).tokenNumber;
1974 
1975  const bool triggerInMenu =
1976  m_l1GtUtils.l1TriggerNameFromBit(bitNumber, trigCategory, aliasL1Trigger, nameL1Trigger);
1977 
1978  if (!triggerInMenu) {
1979  aliasL1Trigger = "Technical_trigger_bit_" + (m_expL1Triggers[iTrig]).tokenName + "_empty";
1980  }
1981 
1982  (m_expL1Triggers[iTrig]).tokenName = aliasL1Trigger;
1983  m_expTriggerCategory[iTrig] = trigCategory;
1984  m_expTriggerInMenu[iTrig] = triggerInMenu;
1985 
1986  // put the names of the technical triggers in the returned quantities
1987 
1988  (m_decisionsBeforeMask[iTrig]).first = aliasL1Trigger;
1989  (m_decisionsAfterMask[iTrig]).first = aliasL1Trigger;
1990  (m_prescaleFactors[iTrig]).first = aliasL1Trigger;
1991  (m_triggerMasks[iTrig]).first = aliasL1Trigger;
1992  (m_errorCodes[iTrig]).first = aliasL1Trigger;
1993  }
1994  }
1995 
1996  return errorCode;
1997 }
std::vector< std::pair< std::string, bool > > m_decisionsBeforeMask
Definition: L1GtUtils.h:236
std::vector< L1GtLogicParser::OperandToken > m_expL1Triggers
Definition: L1GtUtils.h:222
int m_l1ConfCode
code for L1 trigger configuration
Definition: L1GtUtils.h:211
const bool l1AlgoTechTrigBitNumber(const std::string &nameAlgoTechTrig, TriggerCategory &trigCategory, int &bitNumber) const
Definition: L1GtUtils.cc:371
std::vector< std::pair< std::string, int > > m_errorCodes
Definition: L1GtUtils.h:240
std::vector< std::pair< std::string, int > > m_triggerMasks
Definition: L1GtUtils.h:239
std::vector< std::pair< std::string, int > > m_prescaleFactors
Definition: L1GtUtils.h:238
const bool l1TriggerNameFromBit(const int &bitNumber, const TriggerCategory &trigCategory, std::string &aliasL1Trigger, std::string &nameL1Trigger) const
Definition: L1GtUtils.cc:483
const bool availableL1Configuration(int &errorCode, int &l1ConfCode) const
Definition: L1GtUtils.cc:1679
std::vector< bool > m_expTriggerInMenu
Definition: L1GtUtils.h:233
bool m_expBitsTechTrigger
flag true, if the logical expression is built from technical trigger bits
Definition: L1GtUtils.h:229
std::vector< L1GtUtils::TriggerCategory > m_expTriggerCategory
trigger category for each L1 trigger in the logical expression
Definition: L1GtUtils.h:226
bool m_validL1Configuration
true if valid L1 configuration - if not, reset all quantities and return
Definition: L1GtUtils.h:214
std::vector< std::pair< std::string, bool > > m_decisionsAfterMask
Definition: L1GtUtils.h:237

◆ prescaleFactors()

const std::vector< std::pair< std::string, int > > & L1GtUtils::LogicalExpressionL1Results::prescaleFactors ( )

Definition at line 2023 of file L1GtUtils.cc.

References Exception.

Referenced by L1GtAnalyzer::analyzeL1GtUtilsCore(), and HLTPrescaleProvider::getL1PrescaleValueInDetail().

2023  {
2024  // throw an exception if the result is not computed once per event - user usage error
2025  if (!m_l1ResultsAlreadyCalled) {
2026  throw cms::Exception("FailModule")
2027  << "\nUsage error: "
2028  << "\n Method 'errorCodes' must be called in the event loop before attempting to use this method.\n"
2029  << std::endl;
2030  }
2031 
2032  return m_prescaleFactors;
2033 }
std::vector< std::pair< std::string, int > > m_prescaleFactors
Definition: L1GtUtils.h:238
bool m_l1ResultsAlreadyCalled
set to true if the method l1Results was called once
Definition: L1GtUtils.h:220

◆ reset() [1/2]

void L1GtUtils::LogicalExpressionL1Results::reset ( const std::vector< std::pair< std::string, bool > > &  _pairVector) const
private

reset for each L1 trigger the value from pair.second

Definition at line 2070 of file L1GtUtils.cc.

References edm::second().

2070  {
2071  std::vector<std::pair<std::string, bool> > pairVector = _pairVector;
2072  for (size_t iTrig = 0; iTrig < m_expL1TriggersSize; ++iTrig) {
2073  (pairVector[iTrig]).second = false;
2074  }
2075 }
U second(std::pair< T, U > const &p)

◆ reset() [2/2]

void L1GtUtils::LogicalExpressionL1Results::reset ( const std::vector< std::pair< std::string, int > > &  _pairVector) const
private

Definition at line 2077 of file L1GtUtils.cc.

References edm::second().

2077  {
2078  std::vector<std::pair<std::string, int> > pairVector = _pairVector;
2079  for (size_t iTrig = 0; iTrig < m_expL1TriggersSize; ++iTrig) {
2080  (pairVector[iTrig]).second = -1;
2081  }
2082 }
U second(std::pair< T, U > const &p)

◆ triggerMasks()

const std::vector< std::pair< std::string, int > > & L1GtUtils::LogicalExpressionL1Results::triggerMasks ( )

Definition at line 2035 of file L1GtUtils.cc.

References Exception.

Referenced by L1GtAnalyzer::analyzeL1GtUtilsCore().

2035  {
2036  // throw an exception if the result is not computed once per event - user usage error
2037  if (!m_l1ResultsAlreadyCalled) {
2038  throw cms::Exception("FailModule")
2039  << "\nUsage error: "
2040  << "\n Method 'errorCodes' must be called in the event loop before attempting to use this method.\n"
2041  << std::endl;
2042  }
2043 
2044  return m_triggerMasks;
2045 }
std::vector< std::pair< std::string, int > > m_triggerMasks
Definition: L1GtUtils.h:239
bool m_l1ResultsAlreadyCalled
set to true if the method l1Results was called once
Definition: L1GtUtils.h:220

Member Data Documentation

◆ m_decisionsAfterMask

std::vector<std::pair<std::string, bool> > L1GtUtils::LogicalExpressionL1Results::m_decisionsAfterMask
private

Definition at line 237 of file L1GtUtils.h.

◆ m_decisionsBeforeMask

std::vector<std::pair<std::string, bool> > L1GtUtils::LogicalExpressionL1Results::m_decisionsBeforeMask
private

Definition at line 236 of file L1GtUtils.h.

◆ m_errorCodes

std::vector<std::pair<std::string, int> > L1GtUtils::LogicalExpressionL1Results::m_errorCodes
private

Definition at line 240 of file L1GtUtils.h.

◆ m_expBitsTechTrigger

bool L1GtUtils::LogicalExpressionL1Results::m_expBitsTechTrigger
private

flag true, if the logical expression is built from technical trigger bits

Definition at line 229 of file L1GtUtils.h.

◆ m_expL1Triggers

std::vector<L1GtLogicParser::OperandToken> L1GtUtils::LogicalExpressionL1Results::m_expL1Triggers
private

Definition at line 222 of file L1GtUtils.h.

Referenced by expL1Triggers().

◆ m_expL1TriggersSize

size_t L1GtUtils::LogicalExpressionL1Results::m_expL1TriggersSize
private

Definition at line 223 of file L1GtUtils.h.

◆ m_expTriggerCategory

std::vector<L1GtUtils::TriggerCategory> L1GtUtils::LogicalExpressionL1Results::m_expTriggerCategory
private

trigger category for each L1 trigger in the logical expression

Definition at line 226 of file L1GtUtils.h.

◆ m_expTriggerInMenu

std::vector<bool> L1GtUtils::LogicalExpressionL1Results::m_expTriggerInMenu
private

for each L1 trigger in the logical expression, true if the trigger is found in the current L1 menu

Definition at line 233 of file L1GtUtils.h.

◆ m_l1ConfCode

int L1GtUtils::LogicalExpressionL1Results::m_l1ConfCode
private

code for L1 trigger configuration

Definition at line 211 of file L1GtUtils.h.

◆ m_l1GtUtils

L1GtUtils& L1GtUtils::LogicalExpressionL1Results::m_l1GtUtils
private

Definition at line 205 of file L1GtUtils.h.

◆ m_l1ResultsAlreadyCalled

bool L1GtUtils::LogicalExpressionL1Results::m_l1ResultsAlreadyCalled
private

set to true if the method l1Results was called once

Definition at line 220 of file L1GtUtils.h.

◆ m_logicalExpression

std::string L1GtUtils::LogicalExpressionL1Results::m_logicalExpression
private

private members as input parameters

logical expression

Definition at line 203 of file L1GtUtils.h.

◆ m_prescaleFactors

std::vector<std::pair<std::string, int> > L1GtUtils::LogicalExpressionL1Results::m_prescaleFactors
private

Definition at line 238 of file L1GtUtils.h.

◆ m_triggerMasks

std::vector<std::pair<std::string, int> > L1GtUtils::LogicalExpressionL1Results::m_triggerMasks
private

Definition at line 239 of file L1GtUtils.h.

◆ m_validL1Configuration

bool L1GtUtils::LogicalExpressionL1Results::m_validL1Configuration
private

true if valid L1 configuration - if not, reset all quantities and return

Definition at line 214 of file L1GtUtils.h.

◆ m_validLogicalExpression

bool L1GtUtils::LogicalExpressionL1Results::m_validLogicalExpression
private

true if the logical expression uses accepted L1GtLogicParser operators

Definition at line 217 of file L1GtUtils.h.

Referenced by isValid().