CMS 3D CMS Logo

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

#include <L1GtAnalyzer.h>

Inheritance diagram for L1GtAnalyzer:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

 L1GtAnalyzer (const edm::ParameterSet &)
 
 ~L1GtAnalyzer ()
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 
- Public Member Functions inherited from edm::EDConsumerBase
 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
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
 analyze each event: event loop over various code snippets More...
 
void analyzeConditionsInEventBlock (const edm::Event &, const edm::EventSetup &)
 to be used in analyze/produce/filter More...
 
void analyzeConditionsInLumiBlock (const edm::LuminosityBlock &, const edm::EventSetup &)
 to be used in beginLuminosityBlock More...
 
void analyzeConditionsInRunBlock (const edm::Run &, const edm::EventSetup &)
 
virtual void analyzeDecisionReadoutRecord (const edm::Event &, const edm::EventSetup &)
 
void analyzeL1GtTriggerMenuLite (const edm::Event &, const edm::EventSetup &)
 analyze: usage of L1GtTriggerMenuLite More...
 
void analyzeL1GtUtils (const edm::Event &, const edm::EventSetup &)
 
void analyzeL1GtUtilsCore (const edm::Event &, const edm::EventSetup &)
 analyze: usage of L1GtUtils More...
 
void analyzeL1GtUtilsEventSetup (const edm::Event &, const edm::EventSetup &)
 
void analyzeL1GtUtilsMenuLite (const edm::Event &, const edm::EventSetup &)
 for tests, use only one of the following methods More...
 
virtual void analyzeObjectMap (const edm::Event &, const edm::EventSetup &)
 analyze: object map product More...
 
void analyzeTrigger (const edm::Event &, const edm::EventSetup &)
 full analysis of an algorithm or technical trigger More...
 
virtual void beginJob ()
 
virtual void beginLuminosityBlock (const edm::LuminosityBlock &, const edm::EventSetup &)
 
virtual void beginRun (const edm::Run &, const edm::EventSetup &)
 
virtual void endJob ()
 end of job More...
 
virtual void endLuminosityBlock (const edm::LuminosityBlock &, const edm::EventSetup &)
 end section More...
 
virtual void endRun (const edm::Run &, const edm::EventSetup &)
 
void printOutput (std::ostringstream &)
 print the output stream to the required output, given by m_printOutput More...
 

Private Attributes

bool m_analyzeConditionsInEventBlockEnable
 
bool m_analyzeConditionsInLumiBlockEnable
 
bool m_analyzeConditionsInRunBlockEnable
 
bool m_analyzeDecisionReadoutRecordEnable
 enable / disable various analysis methods More...
 
bool m_analyzeL1GtTriggerMenuLiteEnable
 
bool m_analyzeL1GtUtilsEnable
 
bool m_analyzeL1GtUtilsEventSetupEnable
 
bool m_analyzeL1GtUtilsMenuLiteEnable
 
bool m_analyzeObjectMapEnable
 
bool m_analyzeTriggerEnable
 
unsigned int m_bitNumber
 a bit number to retrieve the name and the alias More...
 
edm::InputTag m_condInEdmInputTag
 input tag for ConditionInEdm products More...
 
std::string m_condName
 a condition in the algorithm trigger to test the object maps More...
 
edm::InputTag m_l1GmtInputTag
 input tag for muon collection from GMT More...
 
edm::InputTag m_l1GtDaqReadoutRecordInputTag
 input tags for GT DAQ product More...
 
edm::InputTag m_l1GtObjectMapsInputTag
 input tags for GT object map collection L1GlobalTriggerObjectMaps More...
 
edm::InputTag m_l1GtObjectMapTag
 input tags for GT object map collection L1GlobalTriggerObjectMapRecord More...
 
edm::InputTag m_l1GtRecordInputTag
 input tags for GT lite product More...
 
bool m_l1GtRecordsInputTagProv
 
edm::InputTag m_l1GtTmLInputTag
 input tag for L1GtTriggerMenuLite More...
 
bool m_l1GtTmLInputTagProv
 
L1GtUtils m_l1GtUtils
 
unsigned int m_l1GtUtilsConfiguration
 L1 configuration code for L1GtUtils. More...
 
bool m_l1GtUtilsConfigureBeginRun
 if true, configure (partially) L1GtUtils in beginRun using getL1GtRunCache More...
 
std::string m_l1GtUtilsLogicalExpression
 
L1GtUtils::LogicalExpressionL1Results m_logicalExpressionL1Results
 
L1GtUtils::LogicalExpressionL1Results m_logicalExpressionL1ResultsProv
 
std::string m_nameAlgTechTrig
 an algorithm trigger (name or alias) or a technical trigger name More...
 
int m_printOutput
 print output More...
 
L1RetrieveL1Extra m_retrieveL1Extra
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- 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

Description: test analyzer to illustrate various methods for L1 GT trigger.

Implementation: <TODO: enter implementation details>

Author
: Vasile Mihai Ghete - HEPHY Vienna

Definition at line 39 of file L1GtAnalyzer.h.

Constructor & Destructor Documentation

L1GtAnalyzer::L1GtAnalyzer ( const edm::ParameterSet parSet)
explicit

Definition at line 52 of file L1GtAnalyzer.cc.

References LogDebug, m_bitNumber, m_condName, m_l1GmtInputTag, m_l1GtDaqReadoutRecordInputTag, m_l1GtObjectMapTag, m_l1GtRecordInputTag, m_l1GtRecordsInputTagProv, m_l1GtTmLInputTag, m_l1GtTmLInputTagProv, m_l1GtUtilsConfiguration, m_l1GtUtilsConfigureBeginRun, and m_nameAlgTechTrig.

52  :
53 
55  parSet.getParameter<edm::ParameterSet> ("L1ExtraInputTags"),consumesCollector()),
56 
57  m_printOutput(parSet.getUntrackedParameter<int>("PrintOutput", 3)),
58 
59  m_analyzeDecisionReadoutRecordEnable(parSet.getParameter<bool> ("analyzeDecisionReadoutRecordEnable")),
60  //
61  m_analyzeL1GtUtilsMenuLiteEnable(parSet.getParameter<bool> ("analyzeL1GtUtilsMenuLiteEnable")),
62  m_analyzeL1GtUtilsEventSetupEnable(parSet.getParameter<bool> ("analyzeL1GtUtilsEventSetupEnable")),
63  m_analyzeL1GtUtilsEnable(parSet.getParameter<bool> ("analyzeL1GtUtilsEnable")),
64  m_analyzeTriggerEnable(parSet.getParameter<bool> ("analyzeTriggerEnable")),
65  //
66  m_analyzeObjectMapEnable(parSet.getParameter<bool> ("analyzeObjectMapEnable")),
67  //
68  m_analyzeL1GtTriggerMenuLiteEnable(parSet.getParameter<bool> ("analyzeL1GtTriggerMenuLiteEnable")),
69  //
70  m_analyzeConditionsInRunBlockEnable(parSet.getParameter<bool> ("analyzeConditionsInRunBlockEnable")),
71  m_analyzeConditionsInLumiBlockEnable(parSet.getParameter<bool> ("analyzeConditionsInLumiBlockEnable")),
72  m_analyzeConditionsInEventBlockEnable(parSet.getParameter<bool> ("analyzeConditionsInEventBlockEnable")),
73 
74 
75  // input tag for GT DAQ product
77  "L1GtDaqReadoutRecordInputTag")),
78 
79  // input tag for L1GlobalTriggerRecord
81  "L1GtRecordInputTag")),
82 
83  // input tag for GT object map collection L1GlobalTriggerObjectMapRecord
85  "L1GtObjectMapTag")),
86 
87  // input tag for GT object map collection L1GlobalTriggerObjectMaps
89  "L1GtObjectMapsInputTag")),
90 
91  // input tag for muon collection from GMT
93  "L1GmtInputTag")),
94 
95  // input tag for L1GtTriggerMenuLite
97  "L1GtTmLInputTag")),
98 
99  // input tag for ConditionInEdm products
101  "CondInEdmInputTag")),
102 
103  // an algorithm and a condition in that algorithm to test the object maps
104  m_nameAlgTechTrig(parSet.getParameter<std::string> ("AlgorithmName")),
105  m_condName(parSet.getParameter<std::string> ("ConditionName")),
106  m_bitNumber(parSet.getParameter<unsigned int> ("BitNumber")),
107 
108  m_l1GtUtilsConfiguration(parSet.getParameter<unsigned int> ("L1GtUtilsConfiguration")),
109  m_l1GtTmLInputTagProv(parSet.getParameter<bool> ("L1GtTmLInputTagProv")),
110  m_l1GtRecordsInputTagProv(parSet.getParameter<bool> ("L1GtRecordsInputTagProv")),
111  m_l1GtUtilsConfigureBeginRun(parSet.getParameter<bool> ("L1GtUtilsConfigureBeginRun")),
112  m_l1GtUtilsLogicalExpression(parSet.getParameter<std::string>("L1GtUtilsLogicalExpression")),
115 
116 {
117 
118 
119  LogDebug("L1GtAnalyzer")
120  << "\n Input parameters for L1 GT test analyzer"
121  << "\n L1 GT DAQ product: "
123  << "\n L1GlobalTriggerRecord product: "
125  << "\n L1 GT object map collection: "
127  << "\n Muon collection from GMT: "
128  << m_l1GmtInputTag
129  << "\n L1 trigger menu lite product: "
131  << "\n Algorithm name or alias, technical trigger name: " << m_nameAlgTechTrig
132  << "\n Condition, if an algorithm trigger is requested: " << m_condName
133  << "\n Bit number for an algorithm or technical trigger: " << m_bitNumber
134  << "\n Requested L1 trigger configuration: " << m_l1GtUtilsConfiguration
135  << "\n Retrieve input tag from provenance for L1GtTriggerMenuLite in the L1GtUtils: "
137  << "\n Retrieve input tag from provenance for L1GlobalTriggerReadoutRecord "
138  << "\n and / or L1GlobalTriggerRecord in the L1GtUtils: "
140  << "\n Configure L1GtUtils in beginRun(...): "
142  << " \n" << std::endl;
143 
144 }
#define LogDebug(id)
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::InputTag m_l1GmtInputTag
input tag for muon collection from GMT
Definition: L1GtAnalyzer.h:135
edm::InputTag m_condInEdmInputTag
input tag for ConditionInEdm products
Definition: L1GtAnalyzer.h:141
edm::InputTag m_l1GtRecordInputTag
input tags for GT lite product
Definition: L1GtAnalyzer.h:126
bool m_analyzeObjectMapEnable
Definition: L1GtAnalyzer.h:112
bool m_analyzeConditionsInRunBlockEnable
Definition: L1GtAnalyzer.h:116
std::string m_l1GtUtilsLogicalExpression
Definition: L1GtAnalyzer.h:168
bool m_analyzeDecisionReadoutRecordEnable
enable / disable various analysis methods
Definition: L1GtAnalyzer.h:105
bool m_analyzeConditionsInEventBlockEnable
Definition: L1GtAnalyzer.h:118
std::string m_nameAlgTechTrig
an algorithm trigger (name or alias) or a technical trigger name
Definition: L1GtAnalyzer.h:144
std::string m_condName
a condition in the algorithm trigger to test the object maps
Definition: L1GtAnalyzer.h:147
edm::InputTag m_l1GtObjectMapTag
input tags for GT object map collection L1GlobalTriggerObjectMapRecord
Definition: L1GtAnalyzer.h:129
L1RetrieveL1Extra m_retrieveL1Extra
Definition: L1GtAnalyzer.h:98
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
bool m_analyzeTriggerEnable
Definition: L1GtAnalyzer.h:110
bool m_analyzeL1GtUtilsEventSetupEnable
Definition: L1GtAnalyzer.h:108
unsigned int m_bitNumber
a bit number to retrieve the name and the alias
Definition: L1GtAnalyzer.h:150
L1GtUtils m_l1GtUtils
Definition: L1GtAnalyzer.h:172
int m_printOutput
print output
Definition: L1GtAnalyzer.h:101
bool m_analyzeL1GtTriggerMenuLiteEnable
Definition: L1GtAnalyzer.h:114
unsigned int m_l1GtUtilsConfiguration
L1 configuration code for L1GtUtils.
Definition: L1GtAnalyzer.h:153
bool m_analyzeConditionsInLumiBlockEnable
Definition: L1GtAnalyzer.h:117
edm::InputTag m_l1GtDaqReadoutRecordInputTag
input tags for GT DAQ product
Definition: L1GtAnalyzer.h:123
L1GtUtils::LogicalExpressionL1Results m_logicalExpressionL1ResultsProv
Definition: L1GtAnalyzer.h:173
bool m_l1GtUtilsConfigureBeginRun
if true, configure (partially) L1GtUtils in beginRun using getL1GtRunCache
Definition: L1GtAnalyzer.h:164
edm::InputTag m_l1GtObjectMapsInputTag
input tags for GT object map collection L1GlobalTriggerObjectMaps
Definition: L1GtAnalyzer.h:132
bool m_l1GtTmLInputTagProv
Definition: L1GtAnalyzer.h:157
bool m_analyzeL1GtUtilsMenuLiteEnable
Definition: L1GtAnalyzer.h:107
bool m_analyzeL1GtUtilsEnable
Definition: L1GtAnalyzer.h:109
bool m_l1GtRecordsInputTagProv
Definition: L1GtAnalyzer.h:161
L1GtUtils::LogicalExpressionL1Results m_logicalExpressionL1Results
Definition: L1GtAnalyzer.h:174
edm::InputTag m_l1GtTmLInputTag
input tag for L1GtTriggerMenuLite
Definition: L1GtAnalyzer.h:138
L1GtAnalyzer::~L1GtAnalyzer ( )

Definition at line 147 of file L1GtAnalyzer.cc.

147  {
148 
149  // empty
150 
151 }

Member Function Documentation

void L1GtAnalyzer::analyze ( const edm::Event iEvent,
const edm::EventSetup evSetup 
)
privatevirtual

analyze each event: event loop over various code snippets

Implements edm::EDAnalyzer.

Definition at line 1794 of file L1GtAnalyzer.cc.

References analyzeConditionsInEventBlock(), analyzeDecisionReadoutRecord(), analyzeL1GtTriggerMenuLite(), analyzeL1GtUtils(), analyzeL1GtUtilsEventSetup(), analyzeL1GtUtilsMenuLite(), analyzeObjectMap(), analyzeTrigger(), m_analyzeConditionsInEventBlockEnable, m_analyzeDecisionReadoutRecordEnable, m_analyzeL1GtUtilsEnable, m_analyzeL1GtUtilsEventSetupEnable, m_analyzeL1GtUtilsMenuLiteEnable, m_analyzeObjectMapEnable, m_analyzeTriggerEnable, and m_l1GtUtilsConfiguration.

1795  {
1796 
1797  // analyze: decision and decision word
1798  // bunch cross in event BxInEvent = 0 - L1Accept event
1800  analyzeDecisionReadoutRecord(iEvent, evSetup);
1801  }
1802 
1803  // analyze: decision for a given algorithm using L1GtUtils functions
1804  // for tests, use only one of the following methods
1805 
1806  switch (m_l1GtUtilsConfiguration) {
1807  case 0: {
1809  analyzeL1GtUtilsMenuLite(iEvent, evSetup);
1810  }
1811 
1812  // full analysis of an algorithm or technical trigger
1813  if (m_analyzeTriggerEnable) {
1814  analyzeTrigger(iEvent, evSetup);
1815  }
1816 
1817  }
1818  break;
1819  case 100000: {
1821  analyzeL1GtUtils(iEvent, evSetup);
1822  }
1823 
1824  // full analysis of an algorithm or technical trigger
1825  if (m_analyzeTriggerEnable) {
1826  analyzeTrigger(iEvent, evSetup);
1827  }
1828 
1829  }
1830  break;
1831  case 200000: {
1833  analyzeL1GtUtilsEventSetup(iEvent, evSetup);
1834  }
1835 
1836  // full analysis of an algorithm or technical trigger
1837  if (m_analyzeTriggerEnable) {
1838  analyzeTrigger(iEvent, evSetup);
1839  }
1840 
1841  }
1842  break;
1843  default: {
1844  // do nothing
1845  }
1846  break;
1847  }
1848 
1849  // analyze: object map product
1851  analyzeObjectMap(iEvent, evSetup);
1852  }
1853 
1854  // analyze: L1GtTriggerMenuLite
1856  analyzeL1GtTriggerMenuLite(iEvent, evSetup);
1857  }
1858 
1859  // analyze: usage of ConditionsInEdm
1861  analyzeConditionsInEventBlock(iEvent, evSetup);
1862  }
1863 
1864 }
virtual void analyzeObjectMap(const edm::Event &, const edm::EventSetup &)
analyze: object map product
virtual void analyzeDecisionReadoutRecord(const edm::Event &, const edm::EventSetup &)
bool m_analyzeObjectMapEnable
Definition: L1GtAnalyzer.h:112
bool m_analyzeDecisionReadoutRecordEnable
enable / disable various analysis methods
Definition: L1GtAnalyzer.h:105
void analyzeConditionsInEventBlock(const edm::Event &, const edm::EventSetup &)
to be used in analyze/produce/filter
bool m_analyzeConditionsInEventBlockEnable
Definition: L1GtAnalyzer.h:118
void analyzeL1GtUtils(const edm::Event &, const edm::EventSetup &)
void analyzeL1GtTriggerMenuLite(const edm::Event &, const edm::EventSetup &)
analyze: usage of L1GtTriggerMenuLite
bool m_analyzeTriggerEnable
Definition: L1GtAnalyzer.h:110
bool m_analyzeL1GtUtilsEventSetupEnable
Definition: L1GtAnalyzer.h:108
unsigned int m_l1GtUtilsConfiguration
L1 configuration code for L1GtUtils.
Definition: L1GtAnalyzer.h:153
bool m_analyzeL1GtUtilsMenuLiteEnable
Definition: L1GtAnalyzer.h:107
bool m_analyzeL1GtUtilsEnable
Definition: L1GtAnalyzer.h:109
void analyzeL1GtUtilsEventSetup(const edm::Event &, const edm::EventSetup &)
void analyzeTrigger(const edm::Event &, const edm::EventSetup &)
full analysis of an algorithm or technical trigger
void analyzeL1GtUtilsMenuLite(const edm::Event &, const edm::EventSetup &)
for tests, use only one of the following methods
void L1GtAnalyzer::analyzeConditionsInEventBlock ( const edm::Event iEvent,
const edm::EventSetup evSetup 
)
private

to be used in analyze/produce/filter

Definition at line 1712 of file L1GtAnalyzer.cc.

References edm::EventID::event(), edm::Event::getByLabel(), edm::EventBase::id(), edm::HandleBase::isValid(), LogDebug, edm::EventBase::luminosityBlock(), m_condInEdmInputTag, printOutput(), and edm::Event::run().

Referenced by analyze().

1713  {
1714  // define an output stream to print into
1715  // it can then be directed to whatever log level is desired
1716  std::ostringstream myCoutStream;
1717 
1718  // get ConditionsInEventBlock
1720  iEvent.getByLabel(m_condInEdmInputTag, condInEventBlock);
1721 
1722  if (!condInEventBlock.isValid()) {
1723 
1724  LogDebug("L1GtAnalyzer") << "\nConditionsInEventBlock with \n "
1726  << "\nrequested in configuration, but not found in the event."
1727  << "\nExit the method.\n" << std::endl;
1728 
1729  return;
1730  }
1731 
1732  const boost::uint16_t bstMasterStatusVal =
1733  condInEventBlock->bstMasterStatus;
1734  const boost::uint32_t turnCountNumberVal =
1735  condInEventBlock->turnCountNumber;
1736 
1737  myCoutStream << "\nLHC quantities in event " << iEvent.id().event()
1738  << " from luminosity section " << iEvent.luminosityBlock()
1739  << " from run " << iEvent.run() << "\n BST Master Status = "
1740  << bstMasterStatusVal << "\n Turn count number = "
1741  << turnCountNumberVal << std::endl;
1742 
1743  printOutput(myCoutStream);
1744 
1745 }
#define LogDebug(id)
EventNumber_t event() const
Definition: EventID.h:41
edm::InputTag m_condInEdmInputTag
input tag for ConditionInEdm products
Definition: L1GtAnalyzer.h:141
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:59
void printOutput(std::ostringstream &)
print the output stream to the required output, given by m_printOutput
RunNumber_t run() const
Definition: Event.h:85
bool isValid() const
Definition: HandleBase.h:76
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:402
edm::EventID id() const
Definition: EventBase.h:56
void L1GtAnalyzer::analyzeConditionsInLumiBlock ( const edm::LuminosityBlock iLumi,
const edm::EventSetup evSetup 
)
private

to be used in beginLuminosityBlock

Definition at line 1671 of file L1GtAnalyzer.cc.

References edm::LuminosityBlock::getByLabel(), edm::HandleBase::isValid(), LogDebug, edm::LuminosityBlockBase::luminosityBlock(), m_condInEdmInputTag, printOutput(), and edm::LuminosityBlockBase::run().

Referenced by beginLuminosityBlock().

1672  {
1673  LogDebug("L1GtAnalyzer")
1674  << "\n**** L1GtAnalyzer::analyzeConditionsInLumiBlock ****\n"
1675  << std::endl;
1676 
1677  // define an output stream to print into
1678  // it can then be directed to whatever log level is desired
1679  std::ostringstream myCoutStream;
1680 
1681  // get ConditionsInLumiBlock
1683  iLumi.getByLabel(m_condInEdmInputTag, condInLumiBlock);
1684 
1685  if (!condInLumiBlock.isValid()) {
1686 
1687  LogDebug("L1GtAnalyzer") << "\nConditionsInLumiBlock with \n "
1689  << "\nrequested in configuration, but not found in the event."
1690  << "\nExit the method.\n" << std::endl;
1691 
1692  return;
1693  }
1694 
1695  const boost::uint32_t totalIntensityBeam1Val =
1696  condInLumiBlock->totalIntensityBeam1;
1697  const boost::uint32_t totalIntensityBeam2Val =
1698  condInLumiBlock->totalIntensityBeam2;
1699 
1700  myCoutStream << "\nLHC quantities in luminosity section "
1701 
1702  << iLumi.luminosityBlock() << " from run " << iLumi.run()
1703  << "\n Total Intensity Beam 1 (Integer × 10E10 charges) = "
1704  << totalIntensityBeam1Val
1705  << "\n Total Intensity Beam 2 (Integer × 10E10 charges) = "
1706  << totalIntensityBeam2Val << std::endl;
1707 
1708  printOutput(myCoutStream);
1709 
1710 }
#define LogDebug(id)
edm::InputTag m_condInEdmInputTag
input tag for ConditionInEdm products
Definition: L1GtAnalyzer.h:141
bool getByLabel(std::string const &label, Handle< PROD > &result) const
LuminosityBlockNumber_t luminosityBlock() const
void printOutput(std::ostringstream &)
print the output stream to the required output, given by m_printOutput
RunNumber_t run() const
bool isValid() const
Definition: HandleBase.h:76
void L1GtAnalyzer::analyzeConditionsInRunBlock ( const edm::Run iRun,
const edm::EventSetup evSetup 
)
private

analyze: usage of ConditionsInEdm

to be used in beginRun

Definition at line 1630 of file L1GtAnalyzer.cc.

References edm::Run::getByLabel(), edm::HandleBase::isValid(), LogDebug, m_condInEdmInputTag, printOutput(), and edm::RunBase::run().

Referenced by beginRun().

1631  {
1632 
1633  LogDebug("L1GtAnalyzer")
1634  << "\n**** L1GtAnalyzer::analyzeConditionsInRunBlock ****\n"
1635  << std::endl;
1636 
1637  // define an output stream to print into
1638  // it can then be directed to whatever log level is desired
1639  std::ostringstream myCoutStream;
1640 
1641  // get ConditionsInRunBlock
1643  iRun.getByLabel(m_condInEdmInputTag, condInRunBlock);
1644 
1645  if (!condInRunBlock.isValid()) {
1646 
1647  LogDebug("L1GtAnalyzer") << "\nConditionsInRunBlock with \n "
1649  << "\nrequested in configuration, but not found in the event."
1650  << "\nExit the method.\n" << std::endl;
1651 
1652  return;
1653  }
1654 
1655  const boost::uint16_t beamModeVal = condInRunBlock->beamMode;
1656  const boost::uint16_t beamMomentumVal = condInRunBlock->beamMomentum;
1657  const boost::uint32_t lhcFillNumberVal = condInRunBlock->lhcFillNumber;
1658 
1659  // print via supplied "print" function
1660  myCoutStream << "\nLHC quantities in run " << iRun.run()
1661  << "\n Beam Mode = " << beamModeVal
1662  << "\n Beam Momentum = " << beamMomentumVal << " GeV"
1663  << "\n LHC Fill Number = " << lhcFillNumberVal
1664  << std::endl;
1665 
1666  printOutput(myCoutStream);
1667 
1668 }
#define LogDebug(id)
bool getByLabel(std::string const &label, Handle< PROD > &result) const
Definition: Run.h:214
RunNumber_t run() const
Definition: RunBase.h:42
edm::InputTag m_condInEdmInputTag
input tag for ConditionInEdm products
Definition: L1GtAnalyzer.h:141
void printOutput(std::ostringstream &)
print the output stream to the required output, given by m_printOutput
bool isValid() const
Definition: HandleBase.h:76
void L1GtAnalyzer::analyzeDecisionReadoutRecord ( const edm::Event iEvent,
const edm::EventSetup evSetup 
)
privatevirtual

analyze: decision and decision word bunch cross in event BxInEvent = 0 - L1Accept event

Definition at line 260 of file L1GtAnalyzer.cc.

References edm::Event::getByLabel(), edm::HandleBase::isValid(), LogDebug, m_l1GtDaqReadoutRecordInputTag, and printOutput().

Referenced by analyze().

261 {
262 
263  LogDebug("L1GtAnalyzer")
264  << "\n**** L1GtAnalyzer::analyzeDecisionReadoutRecord ****\n"
265  << std::endl;
266 
267  // define an output stream to print into
268  // it can then be directed to whatever log level is desired
269  std::ostringstream myCoutStream;
270 
271  // get L1GlobalTriggerReadoutRecord
273  iEvent.getByLabel(m_l1GtDaqReadoutRecordInputTag, gtReadoutRecord);
274 
275  if (!gtReadoutRecord.isValid()) {
276 
277  LogDebug("L1GtAnalyzer") << "\nL1GlobalTriggerReadoutRecord with \n "
279  << "\nrequested in configuration, but not found in the event."
280  << "\nExit the method.\n" << std::endl;
281 
282  return;
283  }
284 
285  // get Global Trigger decision and the decision word
286  bool gtDecision = gtReadoutRecord->decision();
287  DecisionWord gtDecisionWord = gtReadoutRecord->decisionWord();
288 
289  // print Global Trigger decision and the decision word
290  edm::LogVerbatim("L1GtAnalyzer")
291  << "\n GlobalTrigger decision: " << gtDecision << std::endl;
292 
293  // print via supplied "print" function (
294  gtReadoutRecord->printGtDecision(myCoutStream);
295 
296  // print technical trigger word via supplied "print" function
297  gtReadoutRecord->printTechnicalTrigger(myCoutStream);
298 
299  printOutput(myCoutStream);
300 
301 }
#define LogDebug(id)
void printOutput(std::ostringstream &)
print the output stream to the required output, given by m_printOutput
std::vector< bool > DecisionWord
typedefs
bool isValid() const
Definition: HandleBase.h:76
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:402
edm::InputTag m_l1GtDaqReadoutRecordInputTag
input tags for GT DAQ product
Definition: L1GtAnalyzer.h:123
void L1GtAnalyzer::analyzeL1GtTriggerMenuLite ( const edm::Event iEvent,
const edm::EventSetup evSetup 
)
private

analyze: usage of L1GtTriggerMenuLite

Definition at line 1432 of file L1GtAnalyzer.cc.

References edm::Run::getByLabel(), edm::Event::getRun(), edm::HandleBase::isValid(), LogDebug, m_bitNumber, m_l1GtTmLInputTag, m_nameAlgTechTrig, printOutput(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by analyze().

1433  {
1434 
1435  LogDebug("L1GtAnalyzer")
1436  << "\n**** L1GtAnalyzer::analyzeL1GtTriggerMenuLite ****\n"
1437  << std::endl;
1438 
1439  // define an output stream to print into
1440  // it can then be directed to whatever log level is desired
1441  std::ostringstream myCoutStream;
1442 
1443  // get Run Data - the same code can be run in beginRun, with getByLabel from edm::Run
1444  const edm::Run& iRun = iEvent.getRun();
1445 
1446 
1447  // get L1GtTriggerMenuLite
1448  edm::Handle<L1GtTriggerMenuLite> triggerMenuLite;
1449  iRun.getByLabel(m_l1GtTmLInputTag, triggerMenuLite);
1450 
1451  if (!triggerMenuLite.isValid()) {
1452 
1453  LogDebug("L1GtAnalyzer") << "\nL1GtTriggerMenuLite with \n "
1455  << "\nrequested in configuration, but not found in the event."
1456  << "\nExit the method.\n" << std::endl;
1457 
1458  return;
1459  }
1460 
1461  // print via supplied "print" function
1462  myCoutStream << (*triggerMenuLite);
1463 
1464  // test the individual methods
1465 
1466  const std::string& triggerMenuInterface =
1467  triggerMenuLite->gtTriggerMenuInterface();
1468  const std::string& triggerMenuName = triggerMenuLite->gtTriggerMenuName();
1469  const std::string& triggerMenuImplementation =
1470  triggerMenuLite->gtTriggerMenuImplementation();
1471  const std::string& scaleDbKey = triggerMenuLite->gtScaleDbKey();
1472 
1473  const L1GtTriggerMenuLite::L1TriggerMap& algorithmMap = triggerMenuLite->gtAlgorithmMap();
1474  const L1GtTriggerMenuLite::L1TriggerMap& algorithmAliasMap =
1475  triggerMenuLite->gtAlgorithmAliasMap();
1476  const L1GtTriggerMenuLite::L1TriggerMap& technicalTriggerMap =
1477  triggerMenuLite->gtTechnicalTriggerMap();
1478 
1479  const std::vector<unsigned int>& triggerMaskAlgoTrig =
1480  triggerMenuLite->gtTriggerMaskAlgoTrig();
1481  const std::vector<unsigned int>& triggerMaskTechTrig =
1482  triggerMenuLite->gtTriggerMaskTechTrig();
1483 
1484  const std::vector<std::vector<int> >& prescaleFactorsAlgoTrig =
1485  triggerMenuLite->gtPrescaleFactorsAlgoTrig();
1486  const std::vector<std::vector<int> >& prescaleFactorsTechTrig =
1487  triggerMenuLite->gtPrescaleFactorsTechTrig();
1488 
1489  // print in the same format as in L1GtTriggerMenuLite definition
1490 
1491  size_t nrDefinedAlgo = algorithmMap.size();
1492  size_t nrDefinedTech = technicalTriggerMap.size();
1493 
1494  // header for printing algorithms
1495 
1496  myCoutStream << "\n ********** L1 Trigger Menu - printing ********** \n"
1497  << "\nL1 Trigger Menu Interface: " << triggerMenuInterface
1498  << "\nL1 Trigger Menu Name: " << triggerMenuName
1499  << "\nL1 Trigger Menu Implementation: " << triggerMenuImplementation
1500  << "\nAssociated Scale DB Key: " << scaleDbKey << "\n\n"
1501  << "\nL1 Physics Algorithms: " << nrDefinedAlgo << " algorithms defined." << "\n\n"
1502  << "Bit Number "
1503  << std::right << std::setw(35) << "Algorithm Name" << " "
1504  << std::right << std::setw(35) << "Algorithm Alias" << " "
1505  << std::right << std::setw(12) << "Trigger Mask";
1506  for (unsigned iSet = 0; iSet < prescaleFactorsAlgoTrig.size(); iSet++) {
1507  myCoutStream << std::right << std::setw(10) << "PF Set "
1508  << std::right << std::setw(2) << iSet;
1509  }
1510 
1511  myCoutStream << std::endl;
1512 
1513 
1514  for (L1GtTriggerMenuLite::CItL1Trig itTrig = algorithmMap.begin(); itTrig
1515  != algorithmMap.end(); itTrig++) {
1516 
1517  const unsigned int bitNumber = itTrig->first;
1518  const std::string& aName = itTrig->second;
1519 
1520  std::string aAlias;
1521  L1GtTriggerMenuLite::CItL1Trig itAlias = algorithmAliasMap.find(bitNumber);
1522  if (itAlias != algorithmAliasMap.end()) {
1523  aAlias = itAlias->second;
1524  }
1525 
1526  myCoutStream << std::setw(6) << bitNumber << " "
1527  << std::right << std::setw(35) << aName << " "
1528  << std::right << std::setw(35) << aAlias << " "
1529  << std::right << std::setw(12) << triggerMaskAlgoTrig[bitNumber];
1530  for (unsigned iSet = 0; iSet < prescaleFactorsAlgoTrig.size(); iSet++) {
1531  myCoutStream << std::right << std::setw(12) << prescaleFactorsAlgoTrig[iSet][bitNumber];
1532  }
1533 
1534  myCoutStream << std::endl;
1535  }
1536 
1537  myCoutStream << "\nL1 Technical Triggers: " << nrDefinedTech
1538  << " technical triggers defined." << "\n\n" << std::endl;
1539  if (nrDefinedTech) {
1540  myCoutStream
1541  << std::right << std::setw(6) << "Bit Number "
1542  << std::right << std::setw(45) << " Technical trigger name " << " "
1543  << std::right << std::setw(12) << "Trigger Mask";
1544  for (unsigned iSet = 0; iSet < prescaleFactorsTechTrig.size(); iSet++) {
1545  myCoutStream << std::right << std::setw(10) << "PF Set "
1546  << std::right << std::setw(2) << iSet;
1547  }
1548 
1549  myCoutStream << std::endl;
1550  }
1551 
1552  for (L1GtTriggerMenuLite::CItL1Trig itTrig = technicalTriggerMap.begin(); itTrig
1553  != technicalTriggerMap.end(); itTrig++) {
1554 
1555  unsigned int bitNumber = itTrig->first;
1556  std::string aName = itTrig->second;
1557 
1558  myCoutStream << std::setw(6) << bitNumber << " "
1559  << std::right << std::setw(45) << aName
1560  << std::right << std::setw(12) << triggerMaskTechTrig[bitNumber];
1561  for (unsigned iSet = 0; iSet < prescaleFactorsTechTrig.size(); iSet++) {
1562  myCoutStream << std::right << std::setw(12) << prescaleFactorsTechTrig[iSet][bitNumber];
1563  }
1564 
1565  myCoutStream << std::endl;
1566 
1567  }
1568 
1569  // individual methods
1570 
1571  int errorCode = -1;
1572  const std::string* algorithmAlias = triggerMenuLite->gtAlgorithmAlias(
1573  m_bitNumber, errorCode);
1574  if (errorCode) {
1575  myCoutStream
1576  << "\nError code retrieving alias for algorithm with bit number "
1577  << m_bitNumber << ": " << errorCode << std::endl;
1578  } else {
1579  myCoutStream << "\nAlias for algorithm with bit number " << m_bitNumber
1580  << ": " << (*algorithmAlias) << std::endl;
1581  }
1582 
1583  errorCode = -1;
1584  const std::string* algorithmName = triggerMenuLite->gtAlgorithmName(
1585  m_bitNumber, errorCode);
1586  if (errorCode) {
1587  myCoutStream
1588  << "\nError code retrieving name for algorithm with bit number "
1589  << m_bitNumber << ": " << errorCode << std::endl;
1590  } else {
1591  myCoutStream << "\nName for algorithm with bit number " << m_bitNumber
1592  << ": " << (*algorithmName) << std::endl;
1593  }
1594 
1595  errorCode = -1;
1596  const std::string* techTrigName = triggerMenuLite->gtTechTrigName(
1597  m_bitNumber, errorCode);
1598  if (errorCode) {
1599  myCoutStream
1600  << "\nError code retrieving name for technical trigger with bit number "
1601  << m_bitNumber << ": " << errorCode << std::endl;
1602  } else {
1603  myCoutStream << "\nName for technical trigger with bit number "
1604  << m_bitNumber << ": " << (*techTrigName) << std::endl;
1605  }
1606 
1607  errorCode = -1;
1608  const unsigned int bitNumber = triggerMenuLite->gtBitNumber(
1609  m_nameAlgTechTrig, errorCode);
1610  if (errorCode) {
1611  myCoutStream
1612  << "\nError code retrieving bit number for algorithm/technical trigger "
1613  << m_nameAlgTechTrig << ": " << errorCode << std::endl;
1614  } else {
1615  myCoutStream << "\nBit number for algorithm/technical trigger "
1616  << m_nameAlgTechTrig << ": " << bitNumber << std::endl;
1617  }
1618 
1619  // not tested
1620  //errorCode = -1;
1621  //const bool triggerMenuLite->gtTriggerResult( m_nameAlgTechTrig,
1622  // const std::vector<bool>& decWord, errorCode);
1623 
1624 
1625  printOutput(myCoutStream);
1626 
1627 }
#define LogDebug(id)
bool getByLabel(std::string const &label, Handle< PROD > &result) const
Definition: Run.h:214
Run const & getRun() const
Definition: Event.cc:58
std::map< unsigned int, std::string > L1TriggerMap
map containing the physics algorithms or the technical triggers
std::string m_nameAlgTechTrig
an algorithm trigger (name or alias) or a technical trigger name
Definition: L1GtAnalyzer.h:144
void printOutput(std::ostringstream &)
print the output stream to the required output, given by m_printOutput
unsigned int m_bitNumber
a bit number to retrieve the name and the alias
Definition: L1GtAnalyzer.h:150
bool isValid() const
Definition: HandleBase.h:76
L1TriggerMap::const_iterator CItL1Trig
iterators through map containing the physics algorithms or the technical triggers ...
Definition: Run.h:41
edm::InputTag m_l1GtTmLInputTag
input tag for L1GtTriggerMenuLite
Definition: L1GtAnalyzer.h:138
void L1GtAnalyzer::analyzeL1GtUtils ( const edm::Event iEvent,
const edm::EventSetup evSetup 
)
private

Definition at line 1055 of file L1GtAnalyzer.cc.

References analyzeL1GtUtilsCore(), L1GtUtils::getL1GtRunCache(), LogDebug, m_l1GtTmLInputTag, m_l1GtTmLInputTagProv, m_l1GtUtils, useL1EventSetup(), and useL1GtTriggerMenuLite().

Referenced by analyze().

1056  {
1057 
1058  LogDebug("L1GtAnalyzer")
1059  << "\n**** L1GtAnalyzer::analyzeL1GtUtils: fall-through case ****\n"
1060  << std::endl;
1061 
1062  // before accessing any result from L1GtUtils, one must retrieve and cache
1063  // the L1 trigger event setup and the L1GtTriggerMenuLite product
1064  // add this call in the analyze / produce / filter method of your
1065  // analyzer / producer / filter
1066 
1067  bool useL1EventSetup = true;
1068  bool useL1GtTriggerMenuLite = true;
1069 
1070  if (m_l1GtTmLInputTagProv) {
1071 
1072  // input tag for L1GtTriggerMenuLite retrieved from provenance
1073  m_l1GtUtils.getL1GtRunCache(iEvent, evSetup, useL1EventSetup,
1074  useL1GtTriggerMenuLite);
1075 
1076  } else {
1077 
1078  // input tag for L1GtTriggerMenuLite explicitly given
1079  m_l1GtUtils.getL1GtRunCache(iEvent, evSetup, useL1EventSetup,
1080  useL1GtTriggerMenuLite, m_l1GtTmLInputTag);
1081 
1082  }
1083 
1084  analyzeL1GtUtilsCore(iEvent, evSetup);
1085 
1086 }
#define LogDebug(id)
static const bool useL1GtTriggerMenuLite(false)
static const bool useL1EventSetup(true)
L1GtUtils m_l1GtUtils
Definition: L1GtAnalyzer.h:172
void getL1GtRunCache(const edm::Run &, const edm::EventSetup &, const bool, const bool, const edm::InputTag &)
get all the run-constant quantities for L1 trigger and cache them
Definition: L1GtUtils.cc:311
bool m_l1GtTmLInputTagProv
Definition: L1GtAnalyzer.h:157
edm::InputTag m_l1GtTmLInputTag
input tag for L1GtTriggerMenuLite
Definition: L1GtAnalyzer.h:138
void analyzeL1GtUtilsCore(const edm::Event &, const edm::EventSetup &)
analyze: usage of L1GtUtils
void L1GtAnalyzer::analyzeL1GtUtilsCore ( const edm::Event iEvent,
const edm::EventSetup evSetup 
)
private

analyze: usage of L1GtUtils

Definition at line 304 of file L1GtAnalyzer.cc.

References L1GtUtils::AlgorithmTrigger, L1GtUtils::availableL1Configuration(), L1GtUtils::decision(), L1GtUtils::decisionAfterMask(), L1GtUtils::decisionBeforeMask(), L1GtUtils::LogicalExpressionL1Results::decisionsAfterMask(), L1GtUtils::LogicalExpressionL1Results::decisionsBeforeMask(), L1GtUtils::LogicalExpressionL1Results::errorCodes(), L1GtUtils::LogicalExpressionL1Results::expL1Triggers(), first, L1GtUtils::l1TriggerMenu(), L1GtUtils::l1TriggerMenuImplementation(), edm::EventBase::luminosityBlock(), m_l1GtDaqReadoutRecordInputTag, m_l1GtRecordInputTag, m_l1GtUtils, m_l1GtUtilsLogicalExpression, m_logicalExpressionL1Results, m_logicalExpressionL1ResultsProv, m_nameAlgTechTrig, L1GtUtils::prescaleFactor(), L1GtUtils::LogicalExpressionL1Results::prescaleFactors(), L1GtUtils::prescaleFactorSet(), L1GtUtils::prescaleFactorSetIndex(), printOutput(), edm::Event::run(), edm::second(), L1GtUtils::TechnicalTrigger, L1GtUtils::triggerMask(), L1GtUtils::LogicalExpressionL1Results::triggerMasks(), and L1GtUtils::triggerMaskSet().

Referenced by analyzeL1GtUtils(), analyzeL1GtUtilsEventSetup(), and analyzeL1GtUtilsMenuLite().

305  {
306 
307 
308  // define an output stream to print into
309  // it can then be directed to whatever log level is desired
310  std::ostringstream myCoutStream;
311 
312 
313  // example to access L1 trigger results using public methods from L1GtUtils
314  // methods must be called after retrieving the L1 configuration
315 
316  // testing which environment is used
317 
318  int iErrorCode = -1;
319  int l1ConfCode = -1;
320 
321  const bool l1Conf = m_l1GtUtils.availableL1Configuration(iErrorCode, l1ConfCode);
322 
323  myCoutStream << "\nL1 configuration code: \n"
324  << "\n Legend: "
325  << "\n 0 - Retrieve L1 trigger configuration from L1GtTriggerMenuLite only"
326  << "\n 10000 L1GtTriggerMenuLite product is valid"
327  << "\n 99999 L1GtTriggerMenuLite product not valid. Error."
328  << "\n"
329  << "\n 100000 - Fall through: try first L1GtTriggerMenuLite; if not valid,try event setup."
330  << "\n 110000 L1GtTriggerMenuLite product is valid"
331  << "\n 120000 L1GtTriggerMenuLite product not valid, event setup valid."
332  << "\n 199999 L1GtTriggerMenuLite product not valid, event setup not valid. Error."
333  << "\n"
334  << "\n 200000 - Retrieve L1 trigger configuration from event setup only."
335  << "\n 210000 Event setup valid."
336  << "\n 299999 Event setup not valid. Error."
337  << "\n"
338  << "\n 300000 - No L1 trigger configuration requested to be retrieved. Error"
339  << "\n Must call before using L1GtUtils methods: "
340  << "\n getL1GtRunCache(const edm::Event& iEvent, const edm::EventSetup& evSetup,"
341  << "\n const bool useL1EventSetup, const bool useL1GtTriggerMenuLite)"
342  << "\n"
343  << std::endl;
344 
345 
346  if (l1Conf) {
347  myCoutStream << "\nL1 configuration code:" << l1ConfCode
348  << "\nValid L1 trigger configuration." << std::endl;
349 
350  myCoutStream << "\nL1 trigger menu name and implementation:" << "\n"
351  << m_l1GtUtils.l1TriggerMenu() << "\n"
352  << m_l1GtUtils.l1TriggerMenuImplementation() << std::endl;
353 
354  } else {
355  myCoutStream << "\nL1 configuration code:" << l1ConfCode
356  << "\nNo valid L1 trigger configuration available."
357  << "\nSee text above for error code interpretation"
358  << "\nNo return here, in order to test each method, protected against configuration error."
359  << std::endl;
360  }
361 
362 
363 
364  myCoutStream
365  << "\n******** Results found with input tags retrieved from provenance ******** \n"
366  << std::endl;
367 
368  //
369  // no input tags; for the appropriate EDM product, it will be found
370  // from provenance
371 
372  // the following methods share the same error code, therefore one can check only once
373  // the validity of the result
374 
375  iErrorCode = -1;
376 
377  bool decisionBeforeMaskAlgTechTrig = m_l1GtUtils.decisionBeforeMask(iEvent,
378  m_nameAlgTechTrig, iErrorCode);
379 
380  bool decisionAfterMaskAlgTechTrig = m_l1GtUtils.decisionAfterMask(iEvent,
381  m_nameAlgTechTrig, iErrorCode);
382 
383  bool decisionAlgTechTrig = m_l1GtUtils.decision(iEvent, m_nameAlgTechTrig,
384  iErrorCode);
385 
386  int prescaleFactorAlgTechTrig = m_l1GtUtils.prescaleFactor(iEvent,
387  m_nameAlgTechTrig, iErrorCode);
388 
389  int triggerMaskAlgTechTrig = m_l1GtUtils.triggerMask(iEvent,
390  m_nameAlgTechTrig, iErrorCode);
391 
392  myCoutStream << "\n\nMethods:"
393  << "\n decisionBeforeMask(iEvent, m_nameAlgTechTrig, iErrorCode)"
394  << "\n decisionAfterMask(iEvent, m_nameAlgTechTrig, iErrorCode)"
395  << "\n decision(iEvent, m_nameAlgTechTrig, iErrorCode)"
396  << "\n prescaleFactor(iEvent, m_nameAlgTechTrig, iErrorCode)"
397  << "\n triggerMask(iEvent, m_nameAlgTechTrig, iErrorCode)"
398  << "\n triggerMask(m_nameAlgTechTrig,iErrorCode)"
399  << "\n\n" << std::endl;
400 
401 
402  if (iErrorCode == 0) {
403  myCoutStream << "\nDecision before trigger mask for "
404  << m_nameAlgTechTrig << ": " << decisionBeforeMaskAlgTechTrig
405  << std::endl;
406  myCoutStream << "Decision after trigger mask for " << m_nameAlgTechTrig
407  << ": " << decisionAfterMaskAlgTechTrig << std::endl;
408  myCoutStream << "Decision (after trigger mask) for "
409  << m_nameAlgTechTrig << ": " << decisionAlgTechTrig
410  << std::endl;
411 
412  myCoutStream << "Prescale factor for " << m_nameAlgTechTrig
413  << ": " << prescaleFactorAlgTechTrig
414  << std::endl;
415 
416  myCoutStream << "Trigger mask for " << m_nameAlgTechTrig
417  << ": " << triggerMaskAlgTechTrig
418  << std::endl;
419 
420  } else if (iErrorCode == 1) {
421  myCoutStream << "\n" << m_nameAlgTechTrig
422  << " does not exist in the L1 menu "
423  << m_l1GtUtils.l1TriggerMenu() << "\n" << std::endl;
424 
425  } else {
426  myCoutStream << "\nError: "
427  << "\n An error was encountered when retrieving decision, mask and prescale factor for "
428  << m_nameAlgTechTrig << "\n L1 Menu: "
429  << m_l1GtUtils.l1TriggerMenu() << "\n Error code: "
430  << iErrorCode << std::endl;
431 
432  }
433 
434  // another method to get the trigger mask (no common errorCode)
435 
436  iErrorCode = -1;
437  triggerMaskAlgTechTrig = m_l1GtUtils.triggerMask(m_nameAlgTechTrig,
438  iErrorCode);
439 
440  if (iErrorCode == 0) {
441  myCoutStream << "\nTrigger mask for " << m_nameAlgTechTrig
442  << "(faster method): " << triggerMaskAlgTechTrig
443  << std::endl;
444 
445  } else if (iErrorCode == 1) {
446  myCoutStream << "\n" << m_nameAlgTechTrig
447  << " does not exist in the L1 menu "
448  << m_l1GtUtils.l1TriggerMenu() << "\n" << std::endl;
449 
450  } else {
451  myCoutStream << "\nError: "
452  << "\n An error was encountered when fast retrieving trigger mask for "
453  << m_nameAlgTechTrig << "\n L1 Menu: "
454  << m_l1GtUtils.l1TriggerMenu() << "\n Error code: "
455  << iErrorCode << std::endl;
456 
457  }
458 
459  // index of the actual prescale factor set, and the actual prescale
460  // factor set for algorithm triggers
461 
462 
463 
465 
466  myCoutStream << "\nMethods:"
467  << "\n prescaleFactorSetIndex(iEvent, trigCategory, iErrorCode)"
468  << "\n prescaleFactorSet(iEvent, trigCategory,iErrorCode)\n"
469  << std::endl;
470 
471  iErrorCode = -1;
472  const int pfSetIndexAlgorithmTrigger = m_l1GtUtils.prescaleFactorSetIndex(
473  iEvent, trigCategory, iErrorCode);
474 
475  if (iErrorCode == 0) {
476  myCoutStream
477  << "\nAlgorithm triggers: index for prescale factor set = "
478  << pfSetIndexAlgorithmTrigger << "\nfor run " << iEvent.run()
479  << ", luminosity block " << iEvent.luminosityBlock()
480  << ", with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
481  << std::endl;
482 
483 
484  } else {
485  myCoutStream
486  << "\nError encountered when retrieving the prescale factor set index"
487  << "\n for algorithm triggers, for run " << iEvent.run()
488  << ", luminosity block " << iEvent.luminosityBlock()
489  << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
490  << "\n Error code: " << iErrorCode << "\n" << std::endl;
491  }
492 
493  iErrorCode = -1;
494  const std::vector<int>& pfSetAlgorithmTrigger =
495  m_l1GtUtils.prescaleFactorSet(iEvent, trigCategory, iErrorCode);
496 
497  if (iErrorCode == 0) {
498  myCoutStream << "\nAlgorithm triggers: prescale factor set index = "
499  << pfSetIndexAlgorithmTrigger << "\nfor run " << iEvent.run()
500  << ", luminosity block " << iEvent.luminosityBlock()
501  << ", with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
502  << std::endl;
503 
504  int iBit = -1;
505  for (std::vector<int>::const_iterator cItBit =
506  pfSetAlgorithmTrigger.begin(); cItBit
507  != pfSetAlgorithmTrigger.end(); ++cItBit) {
508 
509  iBit++;
510  myCoutStream << "Bit number " << std::right << std::setw(4) << iBit
511  << ": prescale factor = " << (*cItBit) << std::endl;
512 
513  }
514 
515  } else {
516  myCoutStream
517  << "\nError encountered when retrieving the prescale factor set "
518  << "\n for algorithm triggers, for run " << iEvent.run()
519  << ", luminosity block " << iEvent.luminosityBlock()
520  << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
521  << "\n Error code: " << iErrorCode << "\n" << std::endl;
522  }
523 
524  // the actual trigger mask set for algorithm triggers
525 
526  myCoutStream << "\nMethod:"
527  << "\n triggerMaskSet(trigCategory, iErrorCode)"
528  << std::endl;
529 
530  iErrorCode = -1;
531  const std::vector<unsigned int>& tmSetAlgorithmTrigger =
532  m_l1GtUtils.triggerMaskSet(trigCategory, iErrorCode);
533 
534  if (iErrorCode == 0) {
535  myCoutStream << "\nAlgorithm triggers: trigger mask set for run "
536  << iEvent.run() << ", luminosity block "
537  << iEvent.luminosityBlock() << ", with L1 menu \n "
538  << m_l1GtUtils.l1TriggerMenu() << "\n" << std::endl;
539 
540  int iBit = -1;
541  for (std::vector<unsigned int>::const_iterator cItBit =
542  tmSetAlgorithmTrigger.begin(); cItBit
543  != tmSetAlgorithmTrigger.end(); ++cItBit) {
544 
545  iBit++;
546  myCoutStream << "Bit number " << std::right << std::setw(4) << iBit
547  << ": trigger mask = " << (*cItBit) << std::endl;
548 
549  }
550 
551  } else {
552  myCoutStream
553  << "\nError encountered when retrieving the trigger mask set "
554  << "\n for algorithm triggers, for run " << iEvent.run()
555  << ", luminosity block " << iEvent.luminosityBlock()
556  << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
557  << "\n Error code: " << iErrorCode << "\n" << std::endl;
558  }
559 
560 
561 
562 
563  // index of the actual prescale factor set, and the actual prescale
564  // factor set for technical triggers
565 
566  trigCategory = L1GtUtils::TechnicalTrigger;
567 
568  myCoutStream << "\nMethods:"
569  << "\n prescaleFactorSetIndex(iEvent, trigCategory, iErrorCode)"
570  << "\n prescaleFactorSet(iEvent, trigCategory,iErrorCode)\n"
571  << std::endl;
572 
573  iErrorCode = -1;
574  const int pfSetIndexTechnicalTrigger = m_l1GtUtils.prescaleFactorSetIndex(
575  iEvent, trigCategory, iErrorCode);
576 
577  if (iErrorCode == 0) {
578  myCoutStream
579  << "\nTechnical triggers: index for prescale factor set = "
580  << pfSetIndexTechnicalTrigger << "\nfor run " << iEvent.run()
581  << ", luminosity block " << iEvent.luminosityBlock()
582  << ", with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
583  << "\nMethod: prescaleFactorSetIndex(iEvent, trigCategory, iErrorCode)\n"
584  << std::endl;
585 
586  } else {
587  myCoutStream
588  << "\nError encountered when retrieving the prescale factor set index"
589  << "\n for technical triggers, for run " << iEvent.run()
590  << ", luminosity block " << iEvent.luminosityBlock()
591  << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
592  << "\n Error code: " << iErrorCode << "\n" << std::endl;
593  }
594 
595  iErrorCode = -1;
596  const std::vector<int>& pfSetTechnicalTrigger =
597  m_l1GtUtils.prescaleFactorSet(iEvent, trigCategory, iErrorCode);
598 
599  if (iErrorCode == 0) {
600  myCoutStream << "\nTechnical triggers: prescale factor set index = "
601  << pfSetIndexTechnicalTrigger << "\nfor run " << iEvent.run()
602  << ", luminosity block " << iEvent.luminosityBlock()
603  << ", with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
604  << "\nMethod: prescaleFactorSet(iEvent, trigCategory,iErrorCode)\n"
605  << std::endl;
606 
607  int iBit = -1;
608  for (std::vector<int>::const_iterator cItBit =
609  pfSetTechnicalTrigger.begin(); cItBit
610  != pfSetTechnicalTrigger.end(); ++cItBit) {
611 
612  iBit++;
613  myCoutStream << "Bit number " << std::right << std::setw(4) << iBit
614  << ": prescale factor = " << (*cItBit) << std::endl;
615 
616  }
617 
618  } else {
619  myCoutStream
620  << "\nError encountered when retrieving the prescale factor set "
621  << "\n for technical triggers, for run " << iEvent.run()
622  << ", luminosity block " << iEvent.luminosityBlock()
623  << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
624  << "\n Error code: " << iErrorCode << "\n" << std::endl;
625  }
626 
627  // the actual trigger mask set for technical triggers
628 
629  myCoutStream << "\nMethod:"
630  << "\n triggerMaskSet(trigCategory, iErrorCode)"
631  << std::endl;
632 
633  iErrorCode = -1;
634  const std::vector<unsigned int>& tmSetTechnicalTrigger =
635  m_l1GtUtils.triggerMaskSet(trigCategory, iErrorCode);
636 
637  if (iErrorCode == 0) {
638  myCoutStream << "\nTechnical triggers: trigger mask set for run "
639  << iEvent.run() << ", luminosity block "
640  << iEvent.luminosityBlock() << ", with L1 menu \n "
641  << m_l1GtUtils.l1TriggerMenu() << "\n" << std::endl;
642 
643  int iBit = -1;
644  for (std::vector<unsigned int>::const_iterator cItBit =
645  tmSetTechnicalTrigger.begin(); cItBit
646  != tmSetTechnicalTrigger.end(); ++cItBit) {
647 
648  iBit++;
649  myCoutStream << "Bit number " << std::right << std::setw(4) << iBit
650  << ": trigger mask = " << (*cItBit) << std::endl;
651 
652  }
653 
654  } else {
655  myCoutStream
656  << "\nError encountered when retrieving the trigger mask set "
657  << "\n for technical triggers, for run " << iEvent.run()
658  << ", luminosity block " << iEvent.luminosityBlock()
659  << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
660  << "\n Error code: " << iErrorCode << "\n" << std::endl;
661  }
662 
663 
664  // results for logical expressions
665 
666  // errorCodes must be called before any other method is used
667  const std::vector<std::pair<std::string, int> >& errorCodesProv =
669 
670  const std::vector<L1GtLogicParser::OperandToken>& expL1TriggersProv =
672 
673  const std::vector<std::pair<std::string, bool> >& decisionsBeforeMaskProv =
675  const std::vector<std::pair<std::string, bool> >& decisionsAfterMaskProv =
677  const std::vector<std::pair<std::string, int> >& prescaleFactorsProv =
679  const std::vector<std::pair<std::string, int> >& triggerMasksProv =
681 
682  myCoutStream << std::endl;
683  myCoutStream << "\nLogical expression\n "
684  << m_l1GtUtilsLogicalExpression << std::endl;
685 
686  for (size_t iTrig = 0; iTrig < errorCodesProv.size(); ++iTrig) {
687  if ((errorCodesProv[iTrig]).second != 0) {
688  myCoutStream
689  << "\nError encountered when retrieving L1 results for trigger "
690  << (errorCodesProv[iTrig]).first << " (bit number "
691  << (expL1TriggersProv[iTrig]).tokenNumber << ")\n for run "
692  << iEvent.run() << ", luminosity block "
693  << iEvent.luminosityBlock() << " with L1 menu \n "
694  << m_l1GtUtils.l1TriggerMenu() << "\n Error code: "
695  << (errorCodesProv[iTrig]).second << "\n" << std::endl;
696 
697  } else {
698 
699  myCoutStream << "\n" << (errorCodesProv[iTrig]).first
700  << " - bit number " << (expL1TriggersProv[iTrig]).tokenNumber
701  << std::endl;
702 
703  myCoutStream << " decision before mask = "
704  << (decisionsBeforeMaskProv[iTrig]).second << std::endl;
705 
706  myCoutStream << " decision after mask = "
707  << (decisionsAfterMaskProv[iTrig]).second << std::endl;
708 
709  myCoutStream << " prescale factor = "
710  << (prescaleFactorsProv[iTrig]).second << std::endl;
711 
712  myCoutStream << " trigger mask = "
713  << (triggerMasksProv[iTrig]).second << std::endl;
714 
715  myCoutStream << " error code = "
716  << (errorCodesProv[iTrig]).second << std::endl;
717 
718  }
719  }
720 
721  //
722  // same methods as above, but with input tag given explicitly, allowing to select
723  // the EDM products used to get the results
724 
725 
726 
727  myCoutStream
728  << "\n******** Results found with input tags provided in the configuration file ******** \n"
729  << "\n L1GlobalTriggerRecord: " << m_l1GtRecordInputTag
730  << "\n L1GlobalTriggerReadoutRecord: "
731  << m_l1GtDaqReadoutRecordInputTag << std::endl;
732 
733 
734  // the following methods share the same error code, therefore one can check only once
735  // the validity of the result
736 
737  iErrorCode = -1;
738 
739  bool decisionBeforeMaskAlgTechTrigITag = m_l1GtUtils.decisionBeforeMask(iEvent,
741  m_nameAlgTechTrig, iErrorCode);
742 
743  bool decisionAfterMaskAlgTechTrigITag = m_l1GtUtils.decisionAfterMask(iEvent,
745  m_nameAlgTechTrig, iErrorCode);
746 
747  bool decisionAlgTechTrigITag = m_l1GtUtils.decision(iEvent,
749  m_nameAlgTechTrig, iErrorCode);
750 
751  int prescaleFactorAlgTechTrigITag = m_l1GtUtils.prescaleFactor(iEvent,
753  m_nameAlgTechTrig, iErrorCode);
754 
755  int triggerMaskAlgTechTrigITag = m_l1GtUtils.triggerMask(iEvent,
757  m_nameAlgTechTrig, iErrorCode);
758 
759  myCoutStream << "\n\nMethods:"
760  << "\n decisionBeforeMask(iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag, m_nameAlgTechTrig, iErrorCode)"
761  << "\n decisionAfterMask(iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag, m_nameAlgTechTrig, iErrorCode)"
762  << "\n decision(iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag, m_nameAlgTechTrig, iErrorCode)"
763  << "\n prescaleFactor(iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag, m_nameAlgTechTrig, iErrorCode)"
764  << "\n triggerMask(iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag, m_nameAlgTechTrig, iErrorCode)"
765  << "\n\n"
766  << std::endl;
767 
768 
769  if (iErrorCode == 0) {
770  myCoutStream << "\nDecision before trigger mask for "
771  << m_nameAlgTechTrig << ": " << decisionBeforeMaskAlgTechTrigITag
772  << std::endl;
773  myCoutStream << "Decision after trigger mask for " << m_nameAlgTechTrig
774  << ": " << decisionAfterMaskAlgTechTrigITag << std::endl;
775  myCoutStream << "Decision (after trigger mask) for "
776  << m_nameAlgTechTrig << ": " << decisionAlgTechTrigITag
777  << std::endl;
778 
779  myCoutStream << "Prescale factor for " << m_nameAlgTechTrig
780  << ": " << prescaleFactorAlgTechTrigITag
781  << std::endl;
782 
783  myCoutStream << "Trigger mask for " << m_nameAlgTechTrig
784  << ": " << triggerMaskAlgTechTrigITag
785  << std::endl;
786 
787  } else if (iErrorCode == 1) {
788  myCoutStream << "\n" << m_nameAlgTechTrig
789  << " does not exist in the L1 menu "
790  << m_l1GtUtils.l1TriggerMenu() << "\n" << std::endl;
791 
792  } else {
793  myCoutStream << "\nError: "
794  << "\n An error was encountered when retrieving decision, mask and prescale factor for "
795  << m_nameAlgTechTrig << "\n L1 Menu: "
796  << m_l1GtUtils.l1TriggerMenu() << "\n Error code: "
797  << iErrorCode << std::endl;
798 
799  }
800 
801 
802  // index of the actual prescale factor set, and the actual prescale
803  // factor set for algorithm triggers
804 
805 
806 
807  trigCategory = L1GtUtils::AlgorithmTrigger;
808 
809  myCoutStream << "\nMethods:"
810  << "\n prescaleFactorSetIndex(iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag, trigCategory, iErrorCode)"
811  << "\n prescaleFactorSet(iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag, trigCategory,iErrorCode)\n"
812  << std::endl;
813 
814  iErrorCode = -1;
815  const int pfSetIndexAlgorithmTriggerITag = m_l1GtUtils.prescaleFactorSetIndex(
817  trigCategory, iErrorCode);
818 
819  if (iErrorCode == 0) {
820  myCoutStream
821  << "\nAlgorithm triggers: index for prescale factor set = "
822  << pfSetIndexAlgorithmTriggerITag << "\nfor run " << iEvent.run()
823  << ", luminosity block " << iEvent.luminosityBlock()
824  << ", with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
825  << std::endl;
826 
827 
828  } else {
829  myCoutStream
830  << "\nError encountered when retrieving the prescale factor set index"
831  << "\n for algorithm triggers, for run " << iEvent.run()
832  << ", luminosity block " << iEvent.luminosityBlock()
833  << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
834  << "\n Error code: " << iErrorCode << "\n" << std::endl;
835  }
836 
837  iErrorCode = -1;
838  const std::vector<int>& pfSetAlgorithmTriggerITag =
840  m_l1GtDaqReadoutRecordInputTag, trigCategory, iErrorCode);
841 
842  if (iErrorCode == 0) {
843  myCoutStream << "\nAlgorithm triggers: prescale factor set index = "
844  << pfSetIndexAlgorithmTriggerITag << "\nfor run " << iEvent.run()
845  << ", luminosity block " << iEvent.luminosityBlock()
846  << ", with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
847  << std::endl;
848 
849  int iBit = -1;
850  for (std::vector<int>::const_iterator cItBit =
851  pfSetAlgorithmTriggerITag.begin(); cItBit
852  != pfSetAlgorithmTriggerITag.end(); ++cItBit) {
853 
854  iBit++;
855  myCoutStream << "Bit number " << std::right << std::setw(4) << iBit
856  << ": prescale factor = " << (*cItBit) << std::endl;
857 
858  }
859 
860  } else {
861  myCoutStream
862  << "\nError encountered when retrieving the prescale factor set "
863  << "\n for algorithm triggers, for run " << iEvent.run()
864  << ", luminosity block " << iEvent.luminosityBlock()
865  << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
866  << "\n Error code: " << iErrorCode << "\n" << std::endl;
867  }
868 
869 
870 
871 
872 
873 
874  // index of the actual prescale factor set, and the actual prescale
875  // factor set for technical triggers
876 
877  trigCategory = L1GtUtils::TechnicalTrigger;
878 
879  myCoutStream << "\nMethods:"
880  << "\n prescaleFactorSetIndex(iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag, trigCategory, iErrorCode)"
881  << "\n prescaleFactorSet(iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag, trigCategory,iErrorCode)\n"
882  << std::endl;
883 
884  iErrorCode = -1;
885  const int pfSetIndexTechnicalTriggerITag = m_l1GtUtils.prescaleFactorSetIndex(
887  trigCategory, iErrorCode);
888 
889  if (iErrorCode == 0) {
890  myCoutStream
891  << "\nTechnical triggers: index for prescale factor set = "
892  << pfSetIndexTechnicalTriggerITag << "\nfor run " << iEvent.run()
893  << ", luminosity block " << iEvent.luminosityBlock()
894  << ", with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
895  << std::endl;
896 
897  } else {
898  myCoutStream
899  << "\nError encountered when retrieving the prescale factor set index"
900  << "\n for technical triggers, for run " << iEvent.run()
901  << ", luminosity block " << iEvent.luminosityBlock()
902  << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
903  << "\n Error code: " << iErrorCode << "\n" << std::endl;
904  }
905 
906  iErrorCode = -1;
907  const std::vector<int>& pfSetTechnicalTriggerITag =
909  m_l1GtDaqReadoutRecordInputTag, trigCategory, iErrorCode);
910 
911  if (iErrorCode == 0) {
912  myCoutStream << "\nTechnical triggers: prescale factor set index = "
913  << pfSetIndexTechnicalTriggerITag << "\nfor run " << iEvent.run()
914  << ", luminosity block " << iEvent.luminosityBlock()
915  << ", with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
916  << std::endl;
917 
918  int iBit = -1;
919  for (std::vector<int>::const_iterator cItBit =
920  pfSetTechnicalTriggerITag.begin(); cItBit
921  != pfSetTechnicalTriggerITag.end(); ++cItBit) {
922 
923  iBit++;
924  myCoutStream << "Bit number " << std::right << std::setw(4) << iBit
925  << ": prescale factor = " << (*cItBit) << std::endl;
926 
927  }
928 
929  } else {
930  myCoutStream
931  << "\nError encountered when retrieving the prescale factor set "
932  << "\n for technical triggers, for run " << iEvent.run()
933  << ", luminosity block " << iEvent.luminosityBlock()
934  << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
935  << "\n Error code: " << iErrorCode << "\n" << std::endl;
936  }
937 
938 
939  // results for logical expressions
940 
941  // errorCodes must be called before any other method is used
942  const std::vector<std::pair<std::string, int> >& errorCodes =
944 
945  const std::vector<L1GtLogicParser::OperandToken>& expL1Triggers =
947 
948 
949  const std::vector<std::pair<std::string, bool> >& decisionsBeforeMask =
951  const std::vector<std::pair<std::string, bool> >& decisionsAfterMask =
953  const std::vector<std::pair<std::string, int> >& prescaleFactors =
955  const std::vector<std::pair<std::string, int> >& triggerMasks =
957 
958  myCoutStream << std::endl;
959  myCoutStream << "\nLogical expression\n "
960  << m_l1GtUtilsLogicalExpression << std::endl;
961 
962  for (size_t iTrig = 0; iTrig < errorCodes.size(); ++iTrig) {
963  if ((errorCodes[iTrig]).second != 0) {
964  myCoutStream
965  << "\nError encountered when retrieving L1 results for trigger "
966  << (errorCodes[iTrig]).first << " (bit number "
967  << (expL1Triggers[iTrig]).tokenNumber << ")\n for run "
968  << iEvent.run() << ", luminosity block "
969  << iEvent.luminosityBlock() << " with L1 menu \n "
970  << m_l1GtUtils.l1TriggerMenu() << "\n Error code: "
971  << (errorCodes[iTrig]).second << "\n" << std::endl;
972 
973  } else {
974 
975  myCoutStream << "\n" << (errorCodes[iTrig]).first
976  << " - bit number " << (expL1Triggers[iTrig]).tokenNumber
977  << std::endl;
978 
979  myCoutStream << " decision before mask = "
980  << (decisionsBeforeMask[iTrig]).second << std::endl;
981 
982  myCoutStream << " decision after mask = "
983  << (decisionsAfterMask[iTrig]).second << std::endl;
984 
985  myCoutStream << " prescale factor = "
986  << (prescaleFactors[iTrig]).second << std::endl;
987 
988  myCoutStream << " trigger mask = "
989  << (triggerMasks[iTrig]).second << std::endl;
990 
991  myCoutStream << " error code = "
992  << (errorCodes[iTrig]).second << std::endl;
993 
994  }
995  }
996 
997 
998  printOutput(myCoutStream);
999 }
const bool decisionAfterMask(const edm::Event &iEvent, const edm::InputTag &l1GtRecordInputTag, const edm::InputTag &l1GtReadoutRecordInputTag, const std::string &nameAlgoTechTrig, int &errorCode) const
return decision after trigger mask for a given algorithm or technical trigger
Definition: L1GtUtils.cc:1411
edm::InputTag m_l1GtRecordInputTag
input tags for GT lite product
Definition: L1GtAnalyzer.h:126
TriggerCategory
Definition: L1GtUtils.h:58
const bool availableL1Configuration(int &errorCode, int &l1ConfCode) const
Definition: L1GtUtils.cc:2293
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:59
const std::vector< std::pair< std::string, int > > & prescaleFactors()
Definition: L1GtUtils.cc:2721
std::string m_l1GtUtilsLogicalExpression
Definition: L1GtAnalyzer.h:168
const std::vector< unsigned int > & triggerMaskSet(const TriggerCategory &trigCategory, int &errorCode)
Definition: L1GtUtils.cc:2079
const std::vector< std::pair< std::string, int > > & triggerMasks()
Definition: L1GtUtils.cc:2734
const std::string & l1TriggerMenu() const
return the L1 trigger menu name
Definition: L1GtUtils.cc:2178
const bool decisionBeforeMask(const edm::Event &iEvent, const edm::InputTag &l1GtRecordInputTag, const edm::InputTag &l1GtReadoutRecordInputTag, const std::string &nameAlgoTechTrig, int &errorCode) const
return decision before trigger mask for a given algorithm or technical trigger
Definition: L1GtUtils.cc:1374
U second(std::pair< T, U > const &p)
const std::vector< std::pair< std::string, bool > > & decisionsAfterMask()
Definition: L1GtUtils.cc:2708
std::string m_nameAlgTechTrig
an algorithm trigger (name or alias) or a technical trigger name
Definition: L1GtAnalyzer.h:144
void printOutput(std::ostringstream &)
print the output stream to the required output, given by m_printOutput
const std::vector< std::pair< std::string, bool > > & decisionsBeforeMask()
Definition: L1GtUtils.cc:2695
const bool decision(const edm::Event &iEvent, const edm::InputTag &l1GtRecordInputTag, const edm::InputTag &l1GtReadoutRecordInputTag, const std::string &nameAlgoTechTrig, int &errorCode) const
Definition: L1GtUtils.cc:1448
const std::string & l1TriggerMenuImplementation() const
return the L1 trigger menu implementation
Definition: L1GtUtils.cc:2203
const std::vector< int > & prescaleFactorSet(const edm::Event &iEvent, const edm::InputTag &l1GtRecordInputTag, const edm::InputTag &l1GtReadoutRecordInputTag, const TriggerCategory &trigCategory, int &errorCode)
Definition: L1GtUtils.cc:1984
RunNumber_t run() const
Definition: Event.h:85
const std::vector< L1GtLogicParser::OperandToken > & expL1Triggers()
list of triggers in the logical expression, trigger decisions, prescale factors and masks...
Definition: L1GtUtils.h:112
bool first
Definition: L1TdeRCT.cc:75
L1GtUtils m_l1GtUtils
Definition: L1GtAnalyzer.h:172
edm::InputTag m_l1GtDaqReadoutRecordInputTag
input tags for GT DAQ product
Definition: L1GtAnalyzer.h:123
L1GtUtils::LogicalExpressionL1Results m_logicalExpressionL1ResultsProv
Definition: L1GtAnalyzer.h:173
const int prescaleFactorSetIndex(const edm::Event &iEvent, const edm::InputTag &l1GtRecordInputTag, const edm::InputTag &l1GtReadoutRecordInputTag, const TriggerCategory &trigCategory, int &errorCode) const
Definition: L1GtUtils.cc:1760
const int triggerMask(const edm::Event &iEvent, const edm::InputTag &l1GtRecordInputTag, const edm::InputTag &l1GtReadoutRecordInputTag, const std::string &nameAlgoTechTrig, int &errorCode) const
return trigger mask for a given algorithm or technical trigger
Definition: L1GtUtils.cc:1520
const int prescaleFactor(const edm::Event &iEvent, const edm::InputTag &l1GtRecordInputTag, const edm::InputTag &l1GtReadoutRecordInputTag, const std::string &nameAlgoTechTrig, int &errorCode) const
return prescale factor for a given algorithm or technical trigger
Definition: L1GtUtils.cc:1485
L1GtUtils::LogicalExpressionL1Results m_logicalExpressionL1Results
Definition: L1GtAnalyzer.h:174
const std::vector< std::pair< std::string, int > > & errorCodes(const edm::Event &)
Definition: L1GtUtils.cc:2747
void L1GtAnalyzer::analyzeL1GtUtilsEventSetup ( const edm::Event iEvent,
const edm::EventSetup evSetup 
)
private

Definition at line 1033 of file L1GtAnalyzer.cc.

References analyzeL1GtUtilsCore(), L1GtUtils::getL1GtRunCache(), LogDebug, m_l1GtUtils, useL1EventSetup(), and useL1GtTriggerMenuLite().

Referenced by analyze().

1034  {
1035 
1036  LogDebug("L1GtAnalyzer")
1037  << "\n**** L1GtAnalyzer::analyzeL1GtUtilsEventSetup ****\n"
1038  << std::endl;
1039 
1040  // before accessing any result from L1GtUtils, one must retrieve and cache
1041  // the L1 trigger event setup
1042  // add this call in the analyze / produce / filter method of your
1043  // analyzer / producer / filter
1044 
1045  bool useL1EventSetup = true;
1046  bool useL1GtTriggerMenuLite = false;
1047 
1048  m_l1GtUtils.getL1GtRunCache(iEvent, evSetup, useL1EventSetup,
1049  useL1GtTriggerMenuLite);
1050 
1051  analyzeL1GtUtilsCore(iEvent, evSetup);
1052 
1053 }
#define LogDebug(id)
static const bool useL1GtTriggerMenuLite(false)
static const bool useL1EventSetup(true)
L1GtUtils m_l1GtUtils
Definition: L1GtAnalyzer.h:172
void getL1GtRunCache(const edm::Run &, const edm::EventSetup &, const bool, const bool, const edm::InputTag &)
get all the run-constant quantities for L1 trigger and cache them
Definition: L1GtUtils.cc:311
void analyzeL1GtUtilsCore(const edm::Event &, const edm::EventSetup &)
analyze: usage of L1GtUtils
void L1GtAnalyzer::analyzeL1GtUtilsMenuLite ( const edm::Event iEvent,
const edm::EventSetup evSetup 
)
private

for tests, use only one of the following methods

Definition at line 1001 of file L1GtAnalyzer.cc.

References analyzeL1GtUtilsCore(), L1GtUtils::getL1GtRunCache(), LogDebug, m_l1GtTmLInputTag, m_l1GtTmLInputTagProv, m_l1GtUtils, useL1EventSetup(), and useL1GtTriggerMenuLite().

Referenced by analyze().

1002  {
1003 
1004  LogDebug("L1GtAnalyzer")
1005  << "\n**** L1GtAnalyzer::analyzeL1GtUtilsMenuLite ****\n"
1006  << std::endl;
1007 
1008  // before accessing any result from L1GtUtils, one must retrieve and cache
1009  // the L1GtTriggerMenuLite product
1010  // add this call in the analyze / produce / filter method of your
1011  // analyzer / producer / filter
1012 
1013  bool useL1EventSetup = false;
1014  bool useL1GtTriggerMenuLite = true;
1015 
1016  if (m_l1GtTmLInputTagProv) {
1017 
1018  // input tag for L1GtTriggerMenuLite retrieved from provenance
1019  m_l1GtUtils.getL1GtRunCache(iEvent, evSetup, useL1EventSetup,
1020  useL1GtTriggerMenuLite);
1021 
1022  } else {
1023 
1024  // input tag for L1GtTriggerMenuLite explicitly given
1025  m_l1GtUtils.getL1GtRunCache(iEvent, evSetup, useL1EventSetup,
1026  useL1GtTriggerMenuLite, m_l1GtTmLInputTag);
1027  }
1028 
1029  analyzeL1GtUtilsCore(iEvent, evSetup);
1030 
1031 }
#define LogDebug(id)
static const bool useL1GtTriggerMenuLite(false)
static const bool useL1EventSetup(true)
L1GtUtils m_l1GtUtils
Definition: L1GtAnalyzer.h:172
void getL1GtRunCache(const edm::Run &, const edm::EventSetup &, const bool, const bool, const edm::InputTag &)
get all the run-constant quantities for L1 trigger and cache them
Definition: L1GtUtils.cc:311
bool m_l1GtTmLInputTagProv
Definition: L1GtAnalyzer.h:157
edm::InputTag m_l1GtTmLInputTag
input tag for L1GtTriggerMenuLite
Definition: L1GtAnalyzer.h:138
void analyzeL1GtUtilsCore(const edm::Event &, const edm::EventSetup &)
analyze: usage of L1GtUtils
void L1GtAnalyzer::analyzeObjectMap ( const edm::Event iEvent,
const edm::EventSetup evSetup 
)
privatevirtual

analyze: object map product

Definition at line 1367 of file L1GtAnalyzer.cc.

References bookConverter::comb, edm::Event::getByLabel(), edm::HandleBase::isValid(), LogDebug, m_condName, m_l1GtObjectMapTag, m_nameAlgTechTrig, printOutput(), and query::result.

Referenced by analyze().

1368  {
1369 
1370  LogDebug("L1GtAnalyzer")
1371  << "\n**** L1GtAnalyzer::analyzeObjectMap object map product ****\n"
1372  << std::endl;
1373 
1374  // define an output stream to print into
1375  // it can then be directed to whatever log level is desired
1376  std::ostringstream myCoutStream;
1377 
1378  // get a handle to the object map product
1379  // the product can come only from emulator - no hardware ObjectMapRecord
1381  iEvent.getByLabel(m_l1GtObjectMapTag, gtObjectMapRecord);
1382 
1383  if (!gtObjectMapRecord.isValid()) {
1384  LogDebug("L1GtAnalyzer")
1385  << "\nWarning: L1GlobalTriggerObjectMapRecord with input tag "
1387  << "\nrequested in configuration, but not found in the event."
1388  << "\nExit the method.\n" << std::endl;
1389 
1390  return;
1391  }
1392 
1393  // get all object maps
1394  const std::vector<L1GlobalTriggerObjectMap>& objMapVec =
1395  gtObjectMapRecord->gtObjectMap();
1396 
1397  // print every object map via the implemented print
1398  for (std::vector<L1GlobalTriggerObjectMap>::const_iterator it =
1399  objMapVec.begin(); it != objMapVec.end(); ++it) {
1400 
1401  (*it).print(myCoutStream);
1402  }
1403 
1404  //
1405  const CombinationsInCond* comb = gtObjectMapRecord->getCombinationsInCond(
1407 
1408  // number of combinations
1409  if (comb != 0) {
1410  myCoutStream << "\n Number of combinations passing ("
1411  << m_nameAlgTechTrig << ", " << m_condName << "): "
1412  << comb->size() << std::endl;
1413  } else {
1414  myCoutStream << "\n No combination passes (" << m_nameAlgTechTrig
1415  << ", " << m_condName << ") " << std::endl;
1416 
1417  }
1418 
1419  // condition result
1420  const bool result = gtObjectMapRecord->getConditionResult(
1422 
1423  myCoutStream << "\n Result for condition " << m_condName
1424  << " in algorithm " << m_nameAlgTechTrig << ": " << result
1425  << std::endl;
1426 
1427  printOutput(myCoutStream);
1428 
1429 }
#define LogDebug(id)
std::string m_nameAlgTechTrig
an algorithm trigger (name or alias) or a technical trigger name
Definition: L1GtAnalyzer.h:144
void printOutput(std::ostringstream &)
print the output stream to the required output, given by m_printOutput
std::string m_condName
a condition in the algorithm trigger to test the object maps
Definition: L1GtAnalyzer.h:147
edm::InputTag m_l1GtObjectMapTag
input tags for GT object map collection L1GlobalTriggerObjectMapRecord
Definition: L1GtAnalyzer.h:129
dictionary comb
tuple result
Definition: query.py:137
bool isValid() const
Definition: HandleBase.h:76
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:402
std::vector< SingleCombInCond > CombinationsInCond
all the object combinations evaluated to true in the condition
void L1GtAnalyzer::analyzeTrigger ( const edm::Event iEvent,
const edm::EventSetup evSetup 
)
private

full analysis of an algorithm or technical trigger

Definition at line 1088 of file L1GtAnalyzer.cc.

References L1GtUtils::availableL1Configuration(), L1GtUtils::decision(), L1GtUtils::decisionAfterMask(), L1GtUtils::decisionBeforeMask(), edm::EventID::event(), edm::Event::getByLabel(), L1GtUtils::getL1GtRunCache(), edm::EventBase::id(), edm::HandleBase::isValid(), L1GtUtils::l1TriggerMenu(), L1GtUtils::l1TriggerMenuImplementation(), LogDebug, LogTrace, edm::EventBase::luminosityBlock(), m_l1GtDaqReadoutRecordInputTag, m_l1GtObjectMapsInputTag, m_l1GtObjectMapTag, m_l1GtRecordInputTag, m_l1GtRecordsInputTagProv, m_l1GtTmLInputTag, m_l1GtTmLInputTagProv, m_l1GtUtils, m_l1GtUtilsConfiguration, m_nameAlgTechTrig, m_retrieveL1Extra, L1GtUtils::prescaleFactor(), L1RetrieveL1Extra::printL1Extra(), printOutput(), L1RetrieveL1Extra::retrieveL1ExtraObjects(), edm::Event::run(), convertSQLiteXML::runNumber, L1GtUtils::triggerMask(), useL1EventSetup(), and useL1GtTriggerMenuLite().

Referenced by analyze().

1089  {
1090 
1091  LogDebug("L1GtAnalyzer") << "\n**** L1GtAnalyzer::analyzeTrigger ****\n"
1092  << std::endl;
1093 
1094  // define an output stream to print into
1095  // it can then be directed to whatever log level is desired
1096  std::ostringstream myCoutStream;
1097 
1098  // print all the stuff if at LogDebug level
1099  myCoutStream << "\n\nFull analysis of an algorithm or technical trigger"
1100  << "\nMethod: L1GtAnalyzer::analyzeTrigger" << "\nTrigger: "
1101  << m_nameAlgTechTrig << "\n" << std::endl;
1102 
1103  const unsigned int runNumber = iEvent.run();
1104  const unsigned int lsNumber = iEvent.luminosityBlock();
1105  const unsigned int eventNumber = iEvent.id().event();
1106 
1107  myCoutStream << "Run: " << runNumber << " LS: " << lsNumber << " Event: "
1108  << eventNumber << "\n\n" << std::endl;
1109 
1110 
1111  // before accessing any result from L1GtUtils, one must retrieve and cache
1112  // the L1 trigger event setup and the L1GtTriggerMenuLite product
1113  // add this call in the analyze / produce / filter method of your
1114  // analyzer / producer / filter
1115 
1116  bool useL1EventSetup = false;
1117  bool useL1GtTriggerMenuLite = false;
1118 
1119  switch (m_l1GtUtilsConfiguration) {
1120  case 0: {
1121  useL1EventSetup = false;
1122  useL1GtTriggerMenuLite = true;
1123 
1124  }
1125  break;
1126  case 100000: {
1127  useL1EventSetup = true;
1128  useL1GtTriggerMenuLite = true;
1129 
1130  }
1131  break;
1132  case 200000: {
1133  useL1EventSetup = true;
1134  useL1GtTriggerMenuLite = false;
1135 
1136  }
1137  break;
1138  default: {
1139  // do nothing
1140  }
1141  break;
1142  }
1143 
1144  if (m_l1GtTmLInputTagProv) {
1145 
1146  // input tag for L1GtTriggerMenuLite retrieved from provenance
1147  m_l1GtUtils.getL1GtRunCache(iEvent, evSetup, useL1EventSetup,
1148  useL1GtTriggerMenuLite);
1149 
1150  } else {
1151 
1152  // input tag for L1GtTriggerMenuLite explicitly given
1153  m_l1GtUtils.getL1GtRunCache(iEvent, evSetup, useL1EventSetup,
1154  useL1GtTriggerMenuLite, m_l1GtTmLInputTag);
1155 
1156  }
1157 
1158  // testing which environment is used
1159 
1160  int iErrorCode = -1;
1161  int l1ConfCode = -1;
1162 
1163  const bool l1Conf = m_l1GtUtils.availableL1Configuration(iErrorCode,
1164  l1ConfCode);
1165 
1166  if (l1Conf) {
1167  LogDebug("L1GtAnalyzer") << "\nL1 configuration code:" << l1ConfCode
1168  << "\nValid L1 trigger configuration.\n" << std::endl;
1169 
1170  LogTrace("L1GtAnalyzer") << "\nL1 trigger menu name and implementation:"
1171  << "\n" << m_l1GtUtils.l1TriggerMenu() << "\n"
1173  << std::endl;
1174 
1175  } else {
1176  myCoutStream << "\nL1 configuration code:" << l1ConfCode
1177  << "\nNo valid L1 trigger configuration available."
1178  << "\nCheck L1GtUtils wiki page for error code interpretation\n"
1179  << std::endl;
1180  return;
1181  }
1182 
1183  // the following methods share the same error code, therefore one can check only once
1184  // the validity of the result
1185 
1186  iErrorCode = -1;
1187 
1188  bool decisionBeforeMaskAlgTechTrig = false;
1189  bool decisionAfterMaskAlgTechTrig = false;
1190  bool decisionAlgTechTrig = false;
1191  int prescaleFactorAlgTechTrig = -1;
1192  int triggerMaskAlgTechTrig = -1;
1193 
1195  decisionBeforeMaskAlgTechTrig = m_l1GtUtils.decisionBeforeMask(iEvent,
1196  m_nameAlgTechTrig, iErrorCode);
1197 
1198  decisionAfterMaskAlgTechTrig = m_l1GtUtils.decisionAfterMask(iEvent,
1199  m_nameAlgTechTrig, iErrorCode);
1200 
1201  decisionAlgTechTrig = m_l1GtUtils.decision(iEvent, m_nameAlgTechTrig,
1202  iErrorCode);
1203 
1204  prescaleFactorAlgTechTrig = m_l1GtUtils.prescaleFactor(iEvent,
1205  m_nameAlgTechTrig, iErrorCode);
1206 
1207  triggerMaskAlgTechTrig = m_l1GtUtils.triggerMask(iEvent,
1208  m_nameAlgTechTrig, iErrorCode);
1209 
1210  } else {
1211  decisionBeforeMaskAlgTechTrig = m_l1GtUtils.decisionBeforeMask(iEvent,
1213  m_nameAlgTechTrig, iErrorCode);
1214 
1215  decisionAfterMaskAlgTechTrig = m_l1GtUtils.decisionAfterMask(iEvent,
1217  m_nameAlgTechTrig, iErrorCode);
1218 
1219  decisionAlgTechTrig = m_l1GtUtils.decision(iEvent,
1221  m_nameAlgTechTrig, iErrorCode);
1222 
1223  prescaleFactorAlgTechTrig = m_l1GtUtils.prescaleFactor(iEvent,
1225  m_nameAlgTechTrig, iErrorCode);
1226 
1227  triggerMaskAlgTechTrig = m_l1GtUtils.triggerMask(iEvent,
1229  m_nameAlgTechTrig, iErrorCode);
1230 
1231  }
1232 
1233  switch (iErrorCode) {
1234  case 0: {
1235  // do nothing here
1236  }
1237  break;
1238  case 1: {
1239  myCoutStream << "\n" << m_nameAlgTechTrig
1240  << " does not exist in the L1 menu "
1241  << m_l1GtUtils.l1TriggerMenu() << "\n" << std::endl;
1242  return;
1243  }
1244  break;
1245  default: {
1246  myCoutStream << "\nError: "
1247  << "\n An error was encountered when retrieving decision, mask and prescale factor for "
1248  << m_nameAlgTechTrig << "\n L1 Menu: "
1249  << m_l1GtUtils.l1TriggerMenu() << "\n Error code: "
1250  << iErrorCode
1251  << "\n Check L1GtUtils wiki page for error code interpretation"
1252  << std::endl;
1253  }
1254  break;
1255  }
1256 
1257  // retrieve L1Extra
1258  // for object maps, only BxInEvent = 0 (aka L1A bunch cross) is relevant
1259 
1260  m_retrieveL1Extra.retrieveL1ExtraObjects(iEvent, evSetup);
1261 
1262  // print all L1Extra collections from all BxInEvent
1263  myCoutStream << "\nL1Extra collections from all BxInEvent" << std::endl;
1264  m_retrieveL1Extra.printL1Extra(myCoutStream);
1265 
1266  int bxInEvent = 0;
1267  myCoutStream << "\nL1Extra collections from BxInEvent = 0 (BX for L1A)" << std::endl;
1268  m_retrieveL1Extra.printL1Extra(myCoutStream, bxInEvent);
1269 
1270  // retrieve L1GlobalTriggerObjectMapRecord and L1GlobalTriggerObjectMaps products
1271  // the module returns an error code only if both payloads are missing
1272 
1273  int iErrorRecord = 0;
1274 
1275  bool validRecord = false;
1276  bool gtObjectMapRecordValid = false;
1277 
1279  iEvent.getByLabel(m_l1GtObjectMapsInputTag, gtObjectMaps);
1280 
1281  if (gtObjectMaps.isValid()) {
1282 
1283  validRecord = true;
1284 
1285  } else {
1286 
1287  iErrorRecord = 10;
1288  LogDebug("L1GtAnalyzer") << "\nL1GlobalTriggerObjectMaps with \n "
1289  << m_l1GtObjectMapsInputTag << "\nnot found in the event."
1290  << std::endl;
1291  }
1292 
1294  iEvent.getByLabel(m_l1GtObjectMapTag, gtObjectMapRecord);
1295 
1296  if (gtObjectMapRecord.isValid()) {
1297 
1298  gtObjectMapRecordValid = true;
1299  validRecord = true;
1300 
1301  } else {
1302 
1303  iErrorRecord = iErrorRecord + 100;
1304  LogDebug("L1GtAnalyzer") << "\nL1GlobalTriggerObjectMapRecord with \n "
1305  << m_l1GtObjectMapTag << "\nnot found in the event."
1306  << std::endl;
1307 
1308  }
1309 
1310  //FIXME remove when validRecord and gtObjectMapRecordValid are used - avoid warning here :-)
1311  if (validRecord && gtObjectMapRecordValid) {
1312  // do nothing
1313  }
1314 
1315 
1316  // get the RPN vector
1317 
1318 
1319 // int pfIndexTechTrig = -1;
1320 // int pfIndexAlgoTrig = -1;
1321 //
1322 // if (validRecord) {
1323 // if (gtObjectMapRecordValid) {
1324 //
1325 // pfIndexTechTrig
1326 // = (gtObjectMapRecord->gtFdlWord()).gtPrescaleFactorIndexTech();
1327 // pfIndexAlgoTrig
1328 // = (gtObjectMapRecord->gtFdlWord()).gtPrescaleFactorIndexAlgo();
1329 //
1330 // } else {
1331 //
1332 // pfIndexTechTrig
1333 // = static_cast<int> (gtObjectMaps->gtPrescaleFactorIndexTech());
1334 // pfIndexAlgoTrig
1335 // = static_cast<int> (gtObjectMaps->gtPrescaleFactorIndexAlgo());
1336 //
1337 // }
1338 //
1339 // } else {
1340 //
1341 // LogDebug("L1GtAnalyzer") << "\nError: "
1342 // << "\nNo valid L1GlobalTriggerRecord with \n "
1343 // << l1GtRecordInputTag << "\nfound in the event."
1344 // << "\nNo valid L1GlobalTriggerReadoutRecord with \n "
1345 // << l1GtReadoutRecordInputTag << "\nfound in the event."
1346 // << std::endl;
1347 //
1348 // iError = l1ConfCode + iErrorRecord;
1349 // return;
1350 //
1351 // }
1352 
1353  //
1354  myCoutStream << "\nResults for trigger " << m_nameAlgTechTrig
1355  << "\n Trigger mask: " << triggerMaskAlgTechTrig
1356  << "\n Prescale factor: " << prescaleFactorAlgTechTrig
1357  << "\n Decision before mask: " << decisionBeforeMaskAlgTechTrig
1358  << "\n Decision after mask: " << decisionAfterMaskAlgTechTrig
1359  << "\n Decision (after mask): " << decisionAlgTechTrig << "\n"
1360  << std::endl;
1361 
1362 
1363  printOutput(myCoutStream);
1364 }
#define LogDebug(id)
EventNumber_t event() const
Definition: EventID.h:41
const bool decisionAfterMask(const edm::Event &iEvent, const edm::InputTag &l1GtRecordInputTag, const edm::InputTag &l1GtReadoutRecordInputTag, const std::string &nameAlgoTechTrig, int &errorCode) const
return decision after trigger mask for a given algorithm or technical trigger
Definition: L1GtUtils.cc:1411
static const bool useL1GtTriggerMenuLite(false)
edm::InputTag m_l1GtRecordInputTag
input tags for GT lite product
Definition: L1GtAnalyzer.h:126
const bool availableL1Configuration(int &errorCode, int &l1ConfCode) const
Definition: L1GtUtils.cc:2293
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:59
const std::string & l1TriggerMenu() const
return the L1 trigger menu name
Definition: L1GtUtils.cc:2178
const bool decisionBeforeMask(const edm::Event &iEvent, const edm::InputTag &l1GtRecordInputTag, const edm::InputTag &l1GtReadoutRecordInputTag, const std::string &nameAlgoTechTrig, int &errorCode) const
return decision before trigger mask for a given algorithm or technical trigger
Definition: L1GtUtils.cc:1374
void printL1Extra(std::ostream &oStr, const L1GtObject &gtObject, const bool checkBxInEvent, const int bxInEvent, const bool checkObjIndexInColl, const int objIndexInColl) const
std::string m_nameAlgTechTrig
an algorithm trigger (name or alias) or a technical trigger name
Definition: L1GtAnalyzer.h:144
void printOutput(std::ostringstream &)
print the output stream to the required output, given by m_printOutput
const bool decision(const edm::Event &iEvent, const edm::InputTag &l1GtRecordInputTag, const edm::InputTag &l1GtReadoutRecordInputTag, const std::string &nameAlgoTechTrig, int &errorCode) const
Definition: L1GtUtils.cc:1448
const std::string & l1TriggerMenuImplementation() const
return the L1 trigger menu implementation
Definition: L1GtUtils.cc:2203
edm::InputTag m_l1GtObjectMapTag
input tags for GT object map collection L1GlobalTriggerObjectMapRecord
Definition: L1GtAnalyzer.h:129
L1RetrieveL1Extra m_retrieveL1Extra
Definition: L1GtAnalyzer.h:98
RunNumber_t run() const
Definition: Event.h:85
static const bool useL1EventSetup(true)
bool isValid() const
Definition: HandleBase.h:76
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:402
#define LogTrace(id)
L1GtUtils m_l1GtUtils
Definition: L1GtAnalyzer.h:172
void getL1GtRunCache(const edm::Run &, const edm::EventSetup &, const bool, const bool, const edm::InputTag &)
get all the run-constant quantities for L1 trigger and cache them
Definition: L1GtUtils.cc:311
unsigned int m_l1GtUtilsConfiguration
L1 configuration code for L1GtUtils.
Definition: L1GtAnalyzer.h:153
edm::InputTag m_l1GtDaqReadoutRecordInputTag
input tags for GT DAQ product
Definition: L1GtAnalyzer.h:123
edm::InputTag m_l1GtObjectMapsInputTag
input tags for GT object map collection L1GlobalTriggerObjectMaps
Definition: L1GtAnalyzer.h:132
edm::EventID id() const
Definition: EventBase.h:56
const int triggerMask(const edm::Event &iEvent, const edm::InputTag &l1GtRecordInputTag, const edm::InputTag &l1GtReadoutRecordInputTag, const std::string &nameAlgoTechTrig, int &errorCode) const
return trigger mask for a given algorithm or technical trigger
Definition: L1GtUtils.cc:1520
bool m_l1GtTmLInputTagProv
Definition: L1GtAnalyzer.h:157
bool m_l1GtRecordsInputTagProv
Definition: L1GtAnalyzer.h:161
const int prescaleFactor(const edm::Event &iEvent, const edm::InputTag &l1GtRecordInputTag, const edm::InputTag &l1GtReadoutRecordInputTag, const std::string &nameAlgoTechTrig, int &errorCode) const
return prescale factor for a given algorithm or technical trigger
Definition: L1GtUtils.cc:1485
void retrieveL1ExtraObjects(const edm::Event &, const edm::EventSetup &)
edm::InputTag m_l1GtTmLInputTag
input tag for L1GtTriggerMenuLite
Definition: L1GtAnalyzer.h:138
void L1GtAnalyzer::beginJob ( void  )
privatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 154 of file L1GtAnalyzer.cc.

155 {
156 
157  // empty
158 
159 }
void L1GtAnalyzer::beginLuminosityBlock ( const edm::LuminosityBlock iLumi,
const edm::EventSetup evSetup 
)
privatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 246 of file L1GtAnalyzer.cc.

References analyzeConditionsInLumiBlock(), and m_analyzeConditionsInLumiBlockEnable.

247  {
248 
250  analyzeConditionsInLumiBlock(iLumi, evSetup);
251  }
252 
253 }
void analyzeConditionsInLumiBlock(const edm::LuminosityBlock &, const edm::EventSetup &)
to be used in beginLuminosityBlock
bool m_analyzeConditionsInLumiBlockEnable
Definition: L1GtAnalyzer.h:117
void L1GtAnalyzer::beginRun ( const edm::Run iRun,
const edm::EventSetup evSetup 
)
privatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 161 of file L1GtAnalyzer.cc.

References analyzeConditionsInRunBlock(), L1GtUtils::getL1GtRunCache(), L1GtUtils::LogicalExpressionL1Results::isValid(), L1GtUtils::LogicalExpressionL1Results::logicalExpressionRunUpdate(), m_analyzeConditionsInRunBlockEnable, m_l1GtTmLInputTag, m_l1GtTmLInputTagProv, m_l1GtUtils, m_l1GtUtilsConfiguration, m_l1GtUtilsConfigureBeginRun, m_l1GtUtilsLogicalExpression, m_logicalExpressionL1Results, m_logicalExpressionL1ResultsProv, useL1EventSetup(), and useL1GtTriggerMenuLite().

162  {
163 
165  analyzeConditionsInRunBlock(iRun, evSetup);
166  }
167 
168  // L1GtUtils
169 
171 
172  // for tests, use only one of the following methods for m_l1GtUtilsConfiguration
173 
174  bool useL1EventSetup = false;
175  bool useL1GtTriggerMenuLite = false;
176 
177  switch (m_l1GtUtilsConfiguration) {
178  case 0: {
179  useL1EventSetup = false;
180  useL1GtTriggerMenuLite = true;
181 
182  }
183  break;
184  case 100000: {
185  useL1EventSetup = true;
186  useL1GtTriggerMenuLite = true;
187 
188  }
189  break;
190  case 200000: {
191  useL1EventSetup = true;
192  useL1GtTriggerMenuLite = false;
193 
194  }
195  break;
196  default: {
197  // do nothing
198  }
199  break;
200  }
201 
202  if (m_l1GtTmLInputTagProv) {
203  // L1GtTriggerMenuLite input tag from provenance
204  m_l1GtUtils.getL1GtRunCache(iRun, evSetup, useL1EventSetup,
205  useL1GtTriggerMenuLite);
206 
207  } else {
208 
209  // L1GtTriggerMenuLite input tag given in configuration file
210  m_l1GtUtils.getL1GtRunCache(iRun, evSetup, useL1EventSetup,
211  useL1GtTriggerMenuLite, m_l1GtTmLInputTag);
212  }
213 
214  // check if the parsing of the logical expression was successful
215 
218  evSetup);
219  } else {
220  // do whatever is necessary if parsing fails - the size of all vectors with L1 results is zero in this case
221  // a LogWarning message is written in L1GtUtils
222  }
223 
224 // if (m_logicalExpressionL1Results.isValid()) {
225 // m_logicalExpressionL1Results.logicalExpressionRunUpdate(iRun,
226 // evSetup);
227 // } else {
228 // // do whatever is necessary if parsing fails - the size of all vectors with L1 results is zero in this case
229 // // a LogWarning message is written in L1GtUtils
230 // }
231 
232  // if the logical expression is changed, one has to check it's validity after the logicalExpressionRunUpdate call
233  // (...dirty testing with the same logical expression)
237  // do whatever is necessary if parsing fails - the size of all vectors with L1 results is zero in this case
238  // a LogWarning message is written in L1GtUtils
239  }
240 
241  }
242 
243 }
static const bool useL1GtTriggerMenuLite(false)
const int logicalExpressionRunUpdate(const edm::Run &, const edm::EventSetup &, const std::string &)
Definition: L1GtUtils.cc:2578
bool m_analyzeConditionsInRunBlockEnable
Definition: L1GtAnalyzer.h:116
std::string m_l1GtUtilsLogicalExpression
Definition: L1GtAnalyzer.h:168
void analyzeConditionsInRunBlock(const edm::Run &, const edm::EventSetup &)
static const bool useL1EventSetup(true)
L1GtUtils m_l1GtUtils
Definition: L1GtAnalyzer.h:172
void getL1GtRunCache(const edm::Run &, const edm::EventSetup &, const bool, const bool, const edm::InputTag &)
get all the run-constant quantities for L1 trigger and cache them
Definition: L1GtUtils.cc:311
unsigned int m_l1GtUtilsConfiguration
L1 configuration code for L1GtUtils.
Definition: L1GtAnalyzer.h:153
L1GtUtils::LogicalExpressionL1Results m_logicalExpressionL1ResultsProv
Definition: L1GtAnalyzer.h:173
bool m_l1GtUtilsConfigureBeginRun
if true, configure (partially) L1GtUtils in beginRun using getL1GtRunCache
Definition: L1GtAnalyzer.h:164
bool m_l1GtTmLInputTagProv
Definition: L1GtAnalyzer.h:157
bool isValid()
return true if the logical expression is syntactically correct
Definition: L1GtUtils.h:97
L1GtUtils::LogicalExpressionL1Results m_logicalExpressionL1Results
Definition: L1GtAnalyzer.h:174
edm::InputTag m_l1GtTmLInputTag
input tag for L1GtTriggerMenuLite
Definition: L1GtAnalyzer.h:138
void L1GtAnalyzer::endJob ( void  )
privatevirtual

end of job

Reimplemented from edm::EDAnalyzer.

Definition at line 1880 of file L1GtAnalyzer.cc.

1880  {
1881 
1882  // empty
1883 
1884 }
void L1GtAnalyzer::endLuminosityBlock ( const edm::LuminosityBlock iLumi,
const edm::EventSetup evSetup 
)
privatevirtual

end section

Reimplemented from edm::EDAnalyzer.

Definition at line 1867 of file L1GtAnalyzer.cc.

1868  {
1869 
1870  // empty
1871 
1872 }
void L1GtAnalyzer::endRun ( const edm::Run iRun,
const edm::EventSetup evSetup 
)
privatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 1873 of file L1GtAnalyzer.cc.

1873  {
1874 
1875  // empty
1876 
1877 }
void L1GtAnalyzer::printOutput ( std::ostringstream &  myCout)
private

print the output stream to the required output, given by m_printOutput

Definition at line 1747 of file L1GtAnalyzer.cc.

References gather_cfg::cout, LogTrace, and m_printOutput.

Referenced by analyzeConditionsInEventBlock(), analyzeConditionsInLumiBlock(), analyzeConditionsInRunBlock(), analyzeDecisionReadoutRecord(), analyzeL1GtTriggerMenuLite(), analyzeL1GtUtilsCore(), analyzeObjectMap(), and analyzeTrigger().

1747  {
1748 
1749  switch (m_printOutput) {
1750  case 0: {
1751 
1752  std::cout << myCout.str() << std::endl;
1753 
1754  }
1755 
1756  break;
1757  case 1: {
1758 
1759  LogTrace("L1GtAnalyzer") << myCout.str() << std::endl;
1760 
1761  }
1762  break;
1763 
1764  case 2: {
1765 
1766  edm::LogVerbatim("L1GtAnalyzer") << myCout.str() << std::endl;
1767 
1768  }
1769 
1770  break;
1771  case 3: {
1772 
1773  edm::LogInfo("L1GtAnalyzer") << myCout.str();
1774 
1775  }
1776 
1777  break;
1778  default: {
1779  std::cout << "\n\n L1GtAnalyzer: Error - no print output = "
1780  << m_printOutput
1781  << " defined! \n Check available values in the cfi file."
1782  << "\n" << std::endl;
1783 
1784  }
1785  break;
1786  }
1787 
1788  myCout.str("");
1789  myCout.clear();
1790 
1791 }
#define LogTrace(id)
int m_printOutput
print output
Definition: L1GtAnalyzer.h:101
tuple cout
Definition: gather_cfg.py:121

Member Data Documentation

bool L1GtAnalyzer::m_analyzeConditionsInEventBlockEnable
private

Definition at line 118 of file L1GtAnalyzer.h.

Referenced by analyze().

bool L1GtAnalyzer::m_analyzeConditionsInLumiBlockEnable
private

Definition at line 117 of file L1GtAnalyzer.h.

Referenced by beginLuminosityBlock().

bool L1GtAnalyzer::m_analyzeConditionsInRunBlockEnable
private

Definition at line 116 of file L1GtAnalyzer.h.

Referenced by beginRun().

bool L1GtAnalyzer::m_analyzeDecisionReadoutRecordEnable
private

enable / disable various analysis methods

Definition at line 105 of file L1GtAnalyzer.h.

Referenced by analyze().

bool L1GtAnalyzer::m_analyzeL1GtTriggerMenuLiteEnable
private

Definition at line 114 of file L1GtAnalyzer.h.

bool L1GtAnalyzer::m_analyzeL1GtUtilsEnable
private

Definition at line 109 of file L1GtAnalyzer.h.

Referenced by analyze().

bool L1GtAnalyzer::m_analyzeL1GtUtilsEventSetupEnable
private

Definition at line 108 of file L1GtAnalyzer.h.

Referenced by analyze().

bool L1GtAnalyzer::m_analyzeL1GtUtilsMenuLiteEnable
private

Definition at line 107 of file L1GtAnalyzer.h.

Referenced by analyze().

bool L1GtAnalyzer::m_analyzeObjectMapEnable
private

Definition at line 112 of file L1GtAnalyzer.h.

Referenced by analyze().

bool L1GtAnalyzer::m_analyzeTriggerEnable
private

Definition at line 110 of file L1GtAnalyzer.h.

Referenced by analyze().

unsigned int L1GtAnalyzer::m_bitNumber
private

a bit number to retrieve the name and the alias

Definition at line 150 of file L1GtAnalyzer.h.

Referenced by analyzeL1GtTriggerMenuLite(), and L1GtAnalyzer().

edm::InputTag L1GtAnalyzer::m_condInEdmInputTag
private

input tag for ConditionInEdm products

Definition at line 141 of file L1GtAnalyzer.h.

Referenced by analyzeConditionsInEventBlock(), analyzeConditionsInLumiBlock(), and analyzeConditionsInRunBlock().

std::string L1GtAnalyzer::m_condName
private

a condition in the algorithm trigger to test the object maps

Definition at line 147 of file L1GtAnalyzer.h.

Referenced by analyzeObjectMap(), and L1GtAnalyzer().

edm::InputTag L1GtAnalyzer::m_l1GmtInputTag
private

input tag for muon collection from GMT

Definition at line 135 of file L1GtAnalyzer.h.

Referenced by L1GtAnalyzer().

edm::InputTag L1GtAnalyzer::m_l1GtDaqReadoutRecordInputTag
private

input tags for GT DAQ product

Definition at line 123 of file L1GtAnalyzer.h.

Referenced by analyzeDecisionReadoutRecord(), analyzeL1GtUtilsCore(), analyzeTrigger(), and L1GtAnalyzer().

edm::InputTag L1GtAnalyzer::m_l1GtObjectMapsInputTag
private

input tags for GT object map collection L1GlobalTriggerObjectMaps

Definition at line 132 of file L1GtAnalyzer.h.

Referenced by analyzeTrigger().

edm::InputTag L1GtAnalyzer::m_l1GtObjectMapTag
private

input tags for GT object map collection L1GlobalTriggerObjectMapRecord

Definition at line 129 of file L1GtAnalyzer.h.

Referenced by analyzeObjectMap(), analyzeTrigger(), and L1GtAnalyzer().

edm::InputTag L1GtAnalyzer::m_l1GtRecordInputTag
private

input tags for GT lite product

Definition at line 126 of file L1GtAnalyzer.h.

Referenced by analyzeL1GtUtilsCore(), analyzeTrigger(), and L1GtAnalyzer().

bool L1GtAnalyzer::m_l1GtRecordsInputTagProv
private

if true, use methods in L1GtUtils with the given input tags for L1GlobalTriggerReadoutRecord and / or L1GlobalTriggerRecord from provenance

Definition at line 161 of file L1GtAnalyzer.h.

Referenced by analyzeTrigger(), and L1GtAnalyzer().

edm::InputTag L1GtAnalyzer::m_l1GtTmLInputTag
private
bool L1GtAnalyzer::m_l1GtTmLInputTagProv
private

if true, use methods in L1GtUtils with the input tag for L1GtTriggerMenuLite from provenance

Definition at line 157 of file L1GtAnalyzer.h.

Referenced by analyzeL1GtUtils(), analyzeL1GtUtilsMenuLite(), analyzeTrigger(), beginRun(), and L1GtAnalyzer().

L1GtUtils L1GtAnalyzer::m_l1GtUtils
private
unsigned int L1GtAnalyzer::m_l1GtUtilsConfiguration
private

L1 configuration code for L1GtUtils.

Definition at line 153 of file L1GtAnalyzer.h.

Referenced by analyze(), analyzeTrigger(), beginRun(), and L1GtAnalyzer().

bool L1GtAnalyzer::m_l1GtUtilsConfigureBeginRun
private

if true, configure (partially) L1GtUtils in beginRun using getL1GtRunCache

Definition at line 164 of file L1GtAnalyzer.h.

Referenced by beginRun(), and L1GtAnalyzer().

std::string L1GtAnalyzer::m_l1GtUtilsLogicalExpression
private

expression to test the L1GtUtils methods to retrieve L1 trigger decisions, prescale factors and masks for logical expressions

Definition at line 168 of file L1GtAnalyzer.h.

Referenced by analyzeL1GtUtilsCore(), and beginRun().

L1GtUtils::LogicalExpressionL1Results L1GtAnalyzer::m_logicalExpressionL1Results
private

Definition at line 174 of file L1GtAnalyzer.h.

Referenced by analyzeL1GtUtilsCore(), and beginRun().

L1GtUtils::LogicalExpressionL1Results L1GtAnalyzer::m_logicalExpressionL1ResultsProv
private

Definition at line 173 of file L1GtAnalyzer.h.

Referenced by analyzeL1GtUtilsCore(), and beginRun().

std::string L1GtAnalyzer::m_nameAlgTechTrig
private

an algorithm trigger (name or alias) or a technical trigger name

Definition at line 144 of file L1GtAnalyzer.h.

Referenced by analyzeL1GtTriggerMenuLite(), analyzeL1GtUtilsCore(), analyzeObjectMap(), analyzeTrigger(), and L1GtAnalyzer().

int L1GtAnalyzer::m_printOutput
private

print output

Definition at line 101 of file L1GtAnalyzer.h.

Referenced by printOutput().

L1RetrieveL1Extra L1GtAnalyzer::m_retrieveL1Extra
private

Definition at line 98 of file L1GtAnalyzer.h.

Referenced by analyzeTrigger().