CMS 3D CMS Logo

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

#include <HLTL1TSeed.h>

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

Public Member Functions

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

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 parameter description More...
 
- Static Public Member Functions inherited from HLTStreamFilter
static void makeHLTFilterDescription (edm::ParameterSetDescription &desc)
 
- Static Public Member Functions inherited from edm::stream::EDFilterBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

void dumpTriggerFilterObjectWithRefs (trigger::TriggerFilterObjectWithRefs &) const
 detailed print of filter content More...
 
bool seedsL1TriggerObjectMaps (edm::Event &, trigger::TriggerFilterObjectWithRefs &)
 seeding is done via L1 trigger object maps, considering the objects which fired in L1 More...
 
void updateAlgoLogicParser (const L1GtTriggerMenu *, const AlgorithmMap &)
 
void updateAlgoLogicParser (const std::vector< bool > &gtWord, const std::vector< unsigned int > &triggerMask, const int physicsDaqPartition)
 

Private Attributes

bool m_isDebugEnabled
 cache edm::isDebugEnabled() More...
 
L1GtLogicParser m_l1AlgoLogicParser
 logic parser for m_l1SeedsLogicalExpression More...
 
std::vector
< L1GtLogicParser::OperandToken
m_l1AlgoSeeds
 list of required algorithms for seeding More...
 
std::vector< std::vector
< const std::vector
< L1GtObject > * > > 
m_l1AlgoSeedsObjType
 vector of object-type vectors for each condition in the required algorithms for seeding More...
 
std::vector< const std::vector
< L1GtLogicParser::TokenRPN > * > 
m_l1AlgoSeedsRpn
 vector of Rpn vectors for the required algorithms for seeding More...
 
edm::InputTag m_l1EGammaCollectionsTag
 Meta InputTag for L1 Egamma collection. More...
 
edm::InputTag m_l1EGammaTag
 
edm::EDGetTokenT
< l1t::EGammaBxCollection
m_l1EGammaToken
 
edm::InputTag m_l1EtSumCollectionsTag
 Meta InputTag for L1 Egamma collection. More...
 
edm::InputTag m_l1EtSumTag
 
edm::EDGetTokenT
< l1t::EtSumBxCollection
m_l1EtSumToken
 
edm::InputTag m_l1GlobalTag
 InputTag for L1 Global Trigger. More...
 
edm::EDGetTokenT
< GlobalAlgBlkBxCollection
m_l1GlobalToken
 
edm::InputTag m_l1GtObjectMapTag
 InputTag for L1 Global Trigger object maps. This is done per menu. Should be part of Run. More...
 
edm::EDGetTokenT
< L1GlobalTriggerObjectMapRecord
m_l1GtObjectMapToken
 
edm::InputTag m_l1JetCollectionsTag
 Meta InputTag for L1 Egamma collection. More...
 
edm::InputTag m_l1JetTag
 
edm::EDGetTokenT
< l1t::JetBxCollection
m_l1JetToken
 
edm::InputTag m_l1MuonCollectionsTag
 Meta InputTag for L1 Muon collection. More...
 
edm::InputTag m_l1MuonTag
 
edm::EDGetTokenT
< l1t::MuonBxCollection
m_l1MuonToken
 
int m_l1NrBxInEvent
 
std::string m_l1SeedsLogicalExpression
 
edm::InputTag m_l1TauCollectionsTag
 Meta InputTag for L1 Egamma collection. More...
 
edm::InputTag m_l1TauTag
 
edm::EDGetTokenT
< l1t::TauBxCollection
m_l1TauToken
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDFilter<>
typedef CacheContexts< T...> CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T...> HasAbility
 
typedef
CacheTypes::LuminosityBlockCache 
LuminosityBlockCache
 
typedef
LuminosityBlockContextT
< LuminosityBlockCache,
RunCache, GlobalCache
LuminosityBlockContext
 
typedef
CacheTypes::LuminosityBlockSummaryCache 
LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache,
GlobalCache
RunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDFilterBase
typedef EDFilterAdaptorBase ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Description: filter L1 bits and extract seed objects from L1 GT for HLT algorithms.

Implementation: This class is an HLTStreamFilter (-> stream::EDFilter). It implements:

Definition at line 44 of file HLTL1TSeed.h.

Constructor & Destructor Documentation

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

constructor

Definition at line 32 of file HLTL1TSeed.cc.

References L1GtLogicParser::expressionSeedsOperandList(), m_l1AlgoLogicParser, m_l1AlgoSeeds, m_l1AlgoSeedsObjType, m_l1AlgoSeedsRpn, m_l1SeedsLogicalExpression, L1GtLogicParser::operandTokenVector(), and findQualityFiles::size.

32  :
33  HLTStreamFilter(parSet),
34  //useObjectMaps_(parSet.getParameter<bool>("L1UseL1TriggerObjectMaps")),
35  m_l1SeedsLogicalExpression(parSet.getParameter<string>("L1SeedsLogicalExpression")),
36  m_l1GtObjectMapTag(parSet.getParameter<edm::InputTag> ("L1ObjectMapInputTag")),
37  m_l1GtObjectMapToken(consumes<L1GlobalTriggerObjectMapRecord>(m_l1GtObjectMapTag)),
38  m_l1GlobalTag(parSet.getParameter<edm::InputTag> ("L1GlobalInputTag")),
39  m_l1GlobalToken(consumes<GlobalAlgBlkBxCollection>(m_l1GlobalTag)),
40  m_l1MuonCollectionsTag(parSet.getParameter<edm::InputTag>("L1MuonInputTag")), // FIX WHEN UNPACKERS ADDED
42  m_l1MuonToken(consumes<l1t::MuonBxCollection>(m_l1MuonTag)),
43  m_l1EGammaCollectionsTag(parSet.getParameter<edm::InputTag>("L1EGammaInputTag")), // FIX WHEN UNPACKERS ADDED
45  m_l1EGammaToken(consumes<l1t::EGammaBxCollection>(m_l1EGammaTag)),
46  m_l1JetCollectionsTag(parSet.getParameter<edm::InputTag>("L1JetInputTag")), // FIX WHEN UNPACKERS ADDED
48  m_l1JetToken(consumes<l1t::JetBxCollection>(m_l1JetTag)),
49  m_l1TauCollectionsTag(parSet.getParameter<edm::InputTag>("L1TauInputTag")), // FIX WHEN UNPACKERS ADDED
51  m_l1TauToken(consumes<l1t::TauBxCollection>(m_l1TauTag)),
52  m_l1EtSumCollectionsTag(parSet.getParameter<edm::InputTag>("L1EtSumInputTag")), // FIX WHEN UNPACKERS ADDED
54  m_l1EtSumToken(consumes<l1t::EtSumBxCollection>(m_l1EtSumTag)),
56 {
57 
58  // check also the logical expression - add/remove spaces if needed
60 
61  // list of required algorithms for seeding
62  // dummy values for tokenNumber and tokenResult
65  size_t l1AlgoSeedsSize = m_l1AlgoSeeds.size();
66 
67  m_l1AlgoSeedsRpn.reserve(l1AlgoSeedsSize);
68  m_l1AlgoSeedsObjType.reserve(l1AlgoSeedsSize);
69 
70 }
std::vector< L1GtLogicParser::OperandToken > expressionSeedsOperandList()
std::string m_l1SeedsLogicalExpression
Definition: HLTL1TSeed.h:102
T getParameter(std::string const &) const
bool isDebugEnabled()
edm::EDGetTokenT< L1GlobalTriggerObjectMapRecord > m_l1GtObjectMapToken
Definition: HLTL1TSeed.h:106
edm::EDGetTokenT< l1t::EtSumBxCollection > m_l1EtSumToken
Definition: HLTL1TSeed.h:136
std::vector< const std::vector< L1GtLogicParser::TokenRPN > * > m_l1AlgoSeedsRpn
vector of Rpn vectors for the required algorithms for seeding
Definition: HLTL1TSeed.h:88
edm::InputTag m_l1MuonTag
Definition: HLTL1TSeed.h:115
edm::InputTag m_l1EGammaCollectionsTag
Meta InputTag for L1 Egamma collection.
Definition: HLTL1TSeed.h:119
edm::InputTag m_l1JetCollectionsTag
Meta InputTag for L1 Egamma collection.
Definition: HLTL1TSeed.h:124
std::vector< std::vector< const std::vector< L1GtObject > * > > m_l1AlgoSeedsObjType
vector of object-type vectors for each condition in the required algorithms for seeding ...
Definition: HLTL1TSeed.h:91
edm::InputTag m_l1JetTag
Definition: HLTL1TSeed.h:125
edm::InputTag m_l1GtObjectMapTag
InputTag for L1 Global Trigger object maps. This is done per menu. Should be part of Run...
Definition: HLTL1TSeed.h:105
std::vector< OperandToken > & operandTokenVector()
return the vector of operand tokens
edm::EDGetTokenT< l1t::JetBxCollection > m_l1JetToken
Definition: HLTL1TSeed.h:126
HLTStreamFilter(const edm::ParameterSet &config)
edm::EDGetTokenT< l1t::EGammaBxCollection > m_l1EGammaToken
Definition: HLTL1TSeed.h:121
edm::InputTag m_l1EtSumTag
Definition: HLTL1TSeed.h:135
edm::InputTag m_l1TauTag
Definition: HLTL1TSeed.h:130
std::vector< L1GtLogicParser::OperandToken > m_l1AlgoSeeds
list of required algorithms for seeding
Definition: HLTL1TSeed.h:85
edm::InputTag m_l1EtSumCollectionsTag
Meta InputTag for L1 Egamma collection.
Definition: HLTL1TSeed.h:134
L1GtLogicParser m_l1AlgoLogicParser
logic parser for m_l1SeedsLogicalExpression
Definition: HLTL1TSeed.h:82
edm::InputTag m_l1TauCollectionsTag
Meta InputTag for L1 Egamma collection.
Definition: HLTL1TSeed.h:129
bool m_isDebugEnabled
cache edm::isDebugEnabled()
Definition: HLTL1TSeed.h:139
edm::InputTag m_l1EGammaTag
Definition: HLTL1TSeed.h:120
edm::InputTag m_l1GlobalTag
InputTag for L1 Global Trigger.
Definition: HLTL1TSeed.h:109
edm::EDGetTokenT< GlobalAlgBlkBxCollection > m_l1GlobalToken
Definition: HLTL1TSeed.h:110
edm::InputTag m_l1MuonCollectionsTag
Meta InputTag for L1 Muon collection.
Definition: HLTL1TSeed.h:114
edm::EDGetTokenT< l1t::MuonBxCollection > m_l1MuonToken
Definition: HLTL1TSeed.h:116
tuple size
Write out results.
edm::EDGetTokenT< l1t::TauBxCollection > m_l1TauToken
Definition: HLTL1TSeed.h:131
HLTL1TSeed::~HLTL1TSeed ( )
virtual

destructor

Definition at line 73 of file HLTL1TSeed.cc.

73  {
74  // empty now
75 }

Member Function Documentation

void HLTL1TSeed::dumpTriggerFilterObjectWithRefs ( trigger::TriggerFilterObjectWithRefs filterproduct) const
private

detailed print of filter content

Definition at line 137 of file HLTL1TSeed.cc.

References trigger::TriggerRefsCollections::getObjects(), i, LogTrace, m_l1SeedsLogicalExpression, getGTfromDQMFile::obj, trigger::TriggerL1EG, trigger::TriggerL1ETM, trigger::TriggerL1ETT, trigger::TriggerL1HTM, trigger::TriggerL1HTT, trigger::TriggerL1Jet, trigger::TriggerL1Mu, and trigger::TriggerL1Tau.

Referenced by hltFilter().

138 {
139 
140  LogTrace("HLTL1TSeed")
141  << "\nHLTL1TSeed::hltFilter "
142  << "\n Dump TriggerFilterObjectWithRefs\n" << endl;
143 
144  vector<l1t::MuonRef> seedsL1Mu;
145  filterproduct.getObjects(trigger::TriggerL1Mu, seedsL1Mu);
146  const size_t sizeSeedsL1Mu = seedsL1Mu.size();
147 
148  LogTrace("HLTL1TSeed")
149  << "\n HLTL1TSeed: seed logical expression = " << m_l1SeedsLogicalExpression << endl;
150 
151  LogTrace("HLTL1TSeed")
152  << "\n L1Mu seeds: " << sizeSeedsL1Mu << endl << endl;
153 
154  for (size_t i = 0; i != sizeSeedsL1Mu; i++) {
155 
156 
157  l1t::MuonRef obj = l1t::MuonRef( seedsL1Mu[i]);
158 
159  LogTrace("HLTL1TSeed")
160  << "\tL1Mu " << "\t" << "q = " << obj->hwCharge() // TEMP get hwCharge insead of charge which is not yet set NEED FIX.
161  << "\t" << "pt = " << obj->pt() << "\t" << "eta = " << obj->eta()
162  << "\t" << "phi = " << obj->phi(); //<< "\t" << "BX = " << obj->bx();
163  }
164 
165  vector<l1t::EGammaRef> seedsL1EG;
166  filterproduct.getObjects(trigger::TriggerL1EG, seedsL1EG);
167  const size_t sizeSeedsL1EG = seedsL1EG.size();
168 
169  LogTrace("HLTL1TSeed")
170  << "\n L1EG seeds: " << sizeSeedsL1EG << endl << endl;
171 
172  for (size_t i = 0; i != sizeSeedsL1EG; i++) {
173 
174 
175  l1t::EGammaRef obj = l1t::EGammaRef( seedsL1EG[i]);
176 
177  LogTrace("HLTL1TSeed")
178  << "\tL1EG " << "\t" << "pt = "
179  << obj->pt() << "\t" << "eta = " << obj->eta()
180  << "\t" << "phi = " << obj->phi(); //<< "\t" << "BX = " << obj->bx();
181  }
182 
183  vector<l1t::JetRef> seedsL1Jet;
184  filterproduct.getObjects(trigger::TriggerL1Jet, seedsL1Jet);
185  const size_t sizeSeedsL1Jet = seedsL1Jet.size();
186 
187  LogTrace("HLTL1TSeed")
188  << "\n L1Jet seeds: " << sizeSeedsL1Jet << endl << endl;
189 
190  for (size_t i = 0; i != sizeSeedsL1Jet; i++) {
191 
192 
193  l1t::JetRef obj = l1t::JetRef( seedsL1Jet[i]);
194 
195  LogTrace("HLTL1TSeed") << "\tL1Jet " << "\t" << "pt = "
196  << obj->pt() << "\t" << "eta = " << obj->eta()
197  << "\t" << "phi = " << obj->phi(); //<< "\t" << "BX = " << obj->bx();
198  }
199 
200  vector<l1t::TauRef> seedsL1Tau;
201  filterproduct.getObjects(trigger::TriggerL1Tau, seedsL1Tau);
202  const size_t sizeSeedsL1Tau = seedsL1Tau.size();
203 
204  LogTrace("HLTL1TSeed")
205  << "\n L1Tau seeds: " << sizeSeedsL1Tau << endl << endl;
206 
207  for (size_t i = 0; i != sizeSeedsL1Tau; i++) {
208 
209 
210  l1t::TauRef obj = l1t::TauRef( seedsL1Tau[i]);
211 
212  LogTrace("HLTL1TSeed")
213  << "\tL1Tau " << "\t" << "pt = "
214  << obj->pt() << "\t" << "eta = " << obj->eta()
215  << "\t" << "phi = " << obj->phi(); //<< "\t" << "BX = " << obj->bx();
216  }
217 
218  vector<l1t::EtSumRef> seedsL1EtSumETT;
219  filterproduct.getObjects(trigger::TriggerL1ETT, seedsL1EtSumETT);
220  const size_t sizeSeedsL1EtSumETT = seedsL1EtSumETT.size();
221  LogTrace("HLTL1TSeed")
222  << "\n L1EtSum ETT seeds: " << sizeSeedsL1EtSumETT << endl << endl;
223 
224  for (size_t i = 0; i != sizeSeedsL1EtSumETT; i++) {
225  l1t::EtSumRef obj = l1t::EtSumRef( seedsL1EtSumETT[i]);
226 
227  LogTrace("HLTL1TSeed")
228  << "\tL1EtSum ETT" << "\t" << "pt = "
229  << obj->pt() << "\t" << "eta = " << obj->eta()
230  << "\t" << "phi = " << obj->phi(); //<< "\t" << "BX = " << obj->bx();
231  }
232 
233  vector<l1t::EtSumRef> seedsL1EtSumHTT;
234  filterproduct.getObjects(trigger::TriggerL1HTT, seedsL1EtSumHTT);
235  const size_t sizeSeedsL1EtSumHTT = seedsL1EtSumHTT.size();
236  LogTrace("HLTL1TSeed")
237  << "\n L1EtSum HTT seeds: " << sizeSeedsL1EtSumHTT << endl << endl;
238 
239  for (size_t i = 0; i != sizeSeedsL1EtSumHTT; i++) {
240  l1t::EtSumRef obj = l1t::EtSumRef( seedsL1EtSumHTT[i]);
241 
242  LogTrace("HLTL1TSeed")
243  << "\tL1EtSum HTT" << "\t" << "pt = "
244  << obj->pt() << "\t" << "eta = " << obj->eta()
245  << "\t" << "phi = " << obj->phi(); //<< "\t" << "BX = " << obj->bx();
246  }
247 
248  vector<l1t::EtSumRef> seedsL1EtSumETM;
249  filterproduct.getObjects(trigger::TriggerL1ETM, seedsL1EtSumETM);
250  const size_t sizeSeedsL1EtSumETM = seedsL1EtSumETM.size();
251  LogTrace("HLTL1TSeed")
252  << "\n L1EtSum ETM seeds: " << sizeSeedsL1EtSumETM << endl << endl;
253 
254  for (size_t i = 0; i != sizeSeedsL1EtSumETM; i++) {
255  l1t::EtSumRef obj = l1t::EtSumRef( seedsL1EtSumETM[i]);
256 
257  LogTrace("HLTL1TSeed")
258  << "\tL1EtSum ETM" << "\t" << "pt = "
259  << obj->pt() << "\t" << "eta = " << obj->eta()
260  << "\t" << "phi = " << obj->phi(); //<< "\t" << "BX = " << obj->bx();
261  }
262 
263  vector<l1t::EtSumRef> seedsL1EtSumHTM;
264  filterproduct.getObjects(trigger::TriggerL1HTM, seedsL1EtSumHTM);
265  const size_t sizeSeedsL1EtSumHTM = seedsL1EtSumHTM.size();
266  LogTrace("HLTL1TSeed")
267  << "\n L1EtSum HTM seeds: " << sizeSeedsL1EtSumHTM << endl << endl;
268 
269  for (size_t i = 0; i != sizeSeedsL1EtSumHTM; i++) {
270  l1t::EtSumRef obj = l1t::EtSumRef( seedsL1EtSumHTM[i]);
271 
272  LogTrace("HLTL1TSeed")
273  << "\tL1EtSum HTM" << "\t" << "pt = "
274  << obj->pt() << "\t" << "eta = " << obj->eta()
275  << "\t" << "phi = " << obj->phi(); //<< "\t" << "BX = " << obj->bx();
276  }
277 
278  LogTrace("HLTL1TSeed") << " \n\n" << endl;
279 
280 }
std::string m_l1SeedsLogicalExpression
Definition: HLTL1TSeed.h:102
int i
Definition: DBlmapReader.cc:9
void getObjects(Vids &ids, VRphoton &refs) const
various physics-level getters:
edm::Ref< TauBxCollection > TauRef
Definition: Tau.h:12
edm::Ref< EGammaBxCollection > EGammaRef
Definition: EGamma.h:13
enum start value shifted to 81 so as to avoid clashes with PDG codes
edm::Ref< MuonBxCollection > MuonRef
Definition: Muon.h:12
edm::Ref< JetBxCollection > JetRef
Definition: Jet.h:12
#define LogTrace(id)
edm::Ref< EtSumBxCollection > EtSumRef
Definition: EtSum.h:12
void HLTL1TSeed::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

parameter description

Definition at line 80 of file HLTL1TSeed.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), HLT_FULL_cff::InputTag, and HLTStreamFilter::makeHLTFilterDescription().

80  {
83 
84 
85  // # logical expression for the required L1 algorithms;
86  // # the algorithms are specified by name
87  // # allowed operators: "AND", "OR", "NOT", "(", ")"
88  // #
89  // # by convention, "L1GlobalDecision" logical expression means global decision
90  desc.add<string>("L1SeedsLogicalExpression","");
91  desc.add<edm::InputTag>("L1ObjectMapInputTag",edm::InputTag("hltGtStage2ObjectMap"));
92  desc.add<edm::InputTag>("L1GlobalInputTag",edm::InputTag("hltGtStage2Digis"));
93  desc.add<edm::InputTag>("L1MuonInputTag",edm::InputTag("hltGmtStage2Digis:Muon"));
94  desc.add<edm::InputTag>("L1EGammaInputTag",edm::InputTag("hltCaloStage2Digis:EGamma"));
95  desc.add<edm::InputTag>("L1JetInputTag",edm::InputTag("hltCaloStage2Digis:Jet"));
96  desc.add<edm::InputTag>("L1TauInputTag",edm::InputTag("hltCaloStage2Digis:Tau"));
97  desc.add<edm::InputTag>("L1EtSumInputTag",edm::InputTag("hltCaloStage2Digis:EtSum"));
98  descriptions.add("hltL1TSeed", desc);
99 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
bool HLTL1TSeed::hltFilter ( edm::Event iEvent,
const edm::EventSetup evSetup,
trigger::TriggerFilterObjectWithRefs filterproduct 
)
overridevirtual

filter the event

Implements HLTStreamFilter.

Definition at line 101 of file HLTL1TSeed.cc.

References trigger::TriggerFilterObjectWithRefs::addCollectionTag(), dumpTriggerFilterObjectWithRefs(), m_isDebugEnabled, m_l1EGammaTag, m_l1EtSumTag, m_l1JetTag, m_l1MuonTag, m_l1TauTag, HLTStreamFilter::saveTags(), and seedsL1TriggerObjectMaps().

101  {
102 
103  bool rc = false;
104 
105  // the filter object
106  if (saveTags()) {
107 
108  // muons
109  filterproduct.addCollectionTag(m_l1MuonTag);
110 
111  // egamma
112  filterproduct.addCollectionTag(m_l1EGammaTag);
113 
114  // jet
115  filterproduct.addCollectionTag(m_l1JetTag);
116 
117  // tau
118  filterproduct.addCollectionTag(m_l1TauTag);
119 
120  // etsum
121  filterproduct.addCollectionTag(m_l1EtSumTag);
122  }
123 
124  // Get all the seeding from iEvent (i.e. L1TriggerObjectMapRecord)
125  //
126  rc = seedsL1TriggerObjectMaps(iEvent, filterproduct);
127 
128  if (m_isDebugEnabled) {
129  dumpTriggerFilterObjectWithRefs(filterproduct);
130  }
131 
132  return rc;
133 
134 }
edm::InputTag m_l1MuonTag
Definition: HLTL1TSeed.h:115
bool seedsL1TriggerObjectMaps(edm::Event &, trigger::TriggerFilterObjectWithRefs &)
seeding is done via L1 trigger object maps, considering the objects which fired in L1 ...
Definition: HLTL1TSeed.cc:283
edm::InputTag m_l1JetTag
Definition: HLTL1TSeed.h:125
edm::InputTag m_l1EtSumTag
Definition: HLTL1TSeed.h:135
edm::InputTag m_l1TauTag
Definition: HLTL1TSeed.h:130
bool m_isDebugEnabled
cache edm::isDebugEnabled()
Definition: HLTL1TSeed.h:139
edm::InputTag m_l1EGammaTag
Definition: HLTL1TSeed.h:120
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
void dumpTriggerFilterObjectWithRefs(trigger::TriggerFilterObjectWithRefs &) const
detailed print of filter content
Definition: HLTL1TSeed.cc:137
bool saveTags() const
bool HLTL1TSeed::seedsL1TriggerObjectMaps ( edm::Event iEvent,
trigger::TriggerFilterObjectWithRefs filterproduct 
)
private

seeding is done via L1 trigger object maps, considering the objects which fired in L1

Loop over the list of required algorithms for seeding /////////////////////////////////////////////////////

Unpacked GT result of algorithm is false after masks and prescales - no seeds ////////////////////////////////////////////////////////////////////////////////

Emulated GT result of algorithm is false - no seeds - but still save the event

Definition at line 283 of file HLTL1TSeed.cc.

References trigger::TriggerRefsCollections::addObject(), L1GlobalTriggerObjectMap::algoBitNumber(), L1GlobalTriggerObjectMap::algoGtlResult(), L1GlobalTriggerObjectMap::algoName(), assert(), CenJet, L1GlobalTriggerObjectMap::combinationVector(), ETM, ETT, L1GtLogicParser::expressionResult(), ForJet, edm::Event::getByToken(), L1GlobalTriggerObjectMap::getCombinationsInCond(), HfRingEtSums, HTM, HTT, i, IsoEG, edm::HandleBase::isValid(), JetCounts, fwrapper::jets, l1t::EtSum::kMissingEt, l1t::EtSum::kMissingHt, l1t::EtSum::kTotalEt, l1t::EtSum::kTotalHt, LogTrace, m_isDebugEnabled, m_l1AlgoLogicParser, m_l1AlgoSeeds, m_l1EGammaTag, m_l1EGammaToken, m_l1EtSumTag, m_l1EtSumToken, m_l1GlobalTag, m_l1GlobalToken, m_l1GtObjectMapTag, m_l1GtObjectMapToken, m_l1JetTag, m_l1JetToken, m_l1MuonTag, m_l1MuonToken, m_l1SeedsLogicalExpression, m_l1TauTag, m_l1TauToken, Mu, patZpeak::muons, NoIsoEG, L1GlobalTriggerObjectMap::objectTypeVector(), L1GlobalTriggerObjectMap::operandTokenVector(), L1GtLogicParser::operandTokenVector(), AlCaHLTBitMon_QueryRunRegistry::string, TauJet, trigger::TriggerL1EG, trigger::TriggerL1ETM, trigger::TriggerL1ETT, trigger::TriggerL1HTM, trigger::TriggerL1HTT, trigger::TriggerL1Jet, trigger::TriggerL1Mu, and trigger::TriggerL1Tau.

Referenced by hltFilter().

285  {
286 
287  // Two GT objects are obtained from the Event: (1) the unpacked GT and (2) the emulated GT.
288  // Return value of the function is the score of seeding logical expression, evaluated using (1).
289  // Seeding is performed (per l1_algo) if ACCEPT both in (1) and (2). Seed objects are identified
290  // and only available from ObjectMaps created in (2).
291 
292 
293  // define index lists for all particle types
294 
295  std::list<int> listMuon;
296 
297  std::list<int> listEG;
298 
299  std::list<int> listJet;
300  std::list<int> listTau;
301 
302  std::list<int> listETM;
303  std::list<int> listETT;
304  std::list<int> listHTT;
305  std::list<int> listHTM;
306 
307  std::list<int> listJetCounts;
308 
309  // get handle to unpacked GT
311  iEvent.getByToken(m_l1GlobalToken, uGtAlgoBlocks);
312 
313  if (!uGtAlgoBlocks.isValid()) {
314 
315  edm::LogWarning("HLTL1TSeed")
316  << " Warning: GlobalAlgBlkBxCollection with input tag "
317  << m_l1GlobalTag
318  << " requested in configuration, but not found in the event." << std::endl;
319 
320  return false;
321  }
322 
323  // check size
324  if(uGtAlgoBlocks->size() == 0) {
325 
326  edm::LogWarning("HLTL1TSeed")
327  << " Warning: GlobalAlgBlkBxCollection with input tag "
328  << m_l1GlobalTag
329  << " is empty." << std::endl;
330 
331  return false;
332  }
333 
334  // get handle to object maps from emulator (one object map per algorithm)
336  iEvent.getByToken(m_l1GtObjectMapToken, gtObjectMapRecord);
337 
338  if (!gtObjectMapRecord.isValid()) {
339 
340  edm::LogWarning("HLTL1TSeed")
341  << " Warning: L1GlobalTriggerObjectMapRecord with input tag "
343  << " requested in configuration, but not found in the event." << std::endl;
344 
345  return false;
346  }
347 
348  if (m_isDebugEnabled) {
349 
350  const std::vector<L1GlobalTriggerObjectMap>& objMaps = gtObjectMapRecord->gtObjectMap();
351 
352  LogTrace("HLTL1TSeed")
353  << "\nHLTL1Seed"
354  << "\n---------------------------------------------------------------------------------------------------------------------";
355 
356  LogTrace("HLTL1TSeed")
357  << "\n\tAlgorithms in L1TriggerObjectMapRecord and GT results ( emulated | initial | prescaled | final ) " << endl;
358 
359  LogTrace("HLTL1TSeed")
360  << "\n\tmap" <<"\tAlgoBit" << std::setw(40) << "algoName" << "\t (emul|ini|pre|fin)" << endl;
361 
362  LogTrace("HLTL1TSeed")
363  << "---------------------------------------------------------------------------------------------------------------------";
364 
365  for (size_t imap =0; imap < objMaps.size(); imap++) {
366 
367  int bit = objMaps[imap].algoBitNumber(); // same as bit from L1T Menu
368 
369  int emulDecision = objMaps[imap].algoGtlResult();
370 
371  // For bx=0 , get 0th AlgoBlock, so in BXvector at(bx=0,i=0)
372  int initDecision = (uGtAlgoBlocks->at(0,0)).getAlgoDecisionInitial(bit);
373  int presDecision = (uGtAlgoBlocks->at(0,0)).getAlgoDecisionPreScaled(bit);
374  int finlDecision = (uGtAlgoBlocks->at(0,0)).getAlgoDecisionFinal(bit);
375 
376  if(emulDecision != initDecision) {
377 
378  LogTrace("HLTL1TSeed")
379  << "L1T decision (emulated vs. unpacked initial) is not the same:"
380  << "\n\tbit = " << std::setw(3) << bit
381  << std::setw(40) << objMaps[imap].algoName()
382  << "\t emulated decision = " << emulDecision << "\t unpacked initial decision = " << initDecision
383  << "\nThis should not happen. Include the L1TGtEmulCompare module in the sequence."<< endl;
384 
385  }
386 
387 
388  LogTrace("HLTL1TSeed")
389  << "\t" << std::setw(3) << imap
390  << "\tbit = " << std::setw(3) << bit
391  << std::setw(40) << objMaps[imap].algoName()
392  << "\t ( " << emulDecision << " | " << initDecision << " | " << presDecision << " | " << finlDecision << " ) ";
393 
394 
395  }
396  LogTrace("HLTL1TSeed") << endl;
397 
398  }
399 
400  // Update/Reset m_l1AlgoLogicParser by reseting token result
401  //
402  std::vector<L1GtLogicParser::OperandToken>& algOpTokenVector =
404 
405  for (size_t i = 0; i < algOpTokenVector.size(); ++i) {
406 
407  // rest token result
408  //
409  (algOpTokenVector[i]).tokenResult = false;
410 
411  }
412 
413  // Update m_l1AlgoLogicParser and store emulator results for algOpTokens
414  //
415  for (size_t i = 0; i < algOpTokenVector.size(); ++i) {
416 
417  std::string algoName = (algOpTokenVector[i]).tokenName;
418 
419  const L1GlobalTriggerObjectMap* objMap = gtObjectMapRecord->getObjectMap(algoName);
420 
421  if(objMap == 0) {
422 
423  edm::LogWarning("HLTL1TSeed")
424  << " Warning: seed with name " << algoName << " cannot be matched to a L1 algo name in any L1GlobalTriggerObjectMap" << std::endl;
425  return false;
426 
427  }
428  else {
429 
430  //(algOpTokenVector[i]).tokenResult = objMap->algoGtlResult();
431 
432  int bit = objMap->algoBitNumber();
433  bool finalAlgoDecision = (uGtAlgoBlocks->at(0,0)).getAlgoDecisionFinal(bit);
434  (algOpTokenVector[i]).tokenResult = finalAlgoDecision;
435 
436  }
437 
438  }
439 
440  // Filter decision
441  //
442  bool seedsResult = m_l1AlgoLogicParser.expressionResult();
443 
444  if (m_isDebugEnabled ) {
445 
446  LogTrace("HLTL1TSeed")
447  << "\nHLTL1TSeed: l1SeedsLogicalExpression (names) = '" << m_l1SeedsLogicalExpression << "'"
448  << "\n Result for logical expression after update of algOpTokens: " << seedsResult << "\n"
449  << std::endl;
450  }
451 
452 
453  // TODO check that the L1GlobalTriggerObjectMapRecord corresponds to the same menu as
454  // the menu run by HLTL1TSeed. True normally online (they are run in the same job)
455  // can be false offline, when re-running HLT without re-running the object map producer
456  //
457 
460 
461  for (std::vector<L1GtLogicParser::OperandToken>::const_iterator
462  itSeed = m_l1AlgoSeeds.begin(); itSeed != m_l1AlgoSeeds.end(); ++itSeed) {
463 
464  std::string algoSeedName = (*itSeed).tokenName;
465 
466  LogTrace("HLTL1TSeed")
467  << "\n ---------------- algo seed name = " << algoSeedName << endl;
468 
469  const L1GlobalTriggerObjectMap* objMap = gtObjectMapRecord->getObjectMap(algoSeedName);
470 
471  if(objMap == 0) {
472 
473  // Should not get here
474  //
475  edm::LogWarning("HLTL1TSeed")
476  << " Warning: seed with name " << algoSeedName << " cannot be matched to a L1 algo name in any L1GlobalTriggerObjectMap" << std::endl;
477  return false;
478 
479  }
480 
481  int algoSeedBitNumber = objMap->algoBitNumber();
482  bool algoSeedResult = objMap->algoGtlResult();
483 
484  // unpacked GT results: uGtAlgoBlock has decisions initial, prescaled, and final after masks
485  bool algoSeedResultMaskAndPresc = uGtAlgoBlocks->at(0,0).getAlgoDecisionFinal(algoSeedBitNumber);
486 
487  LogTrace("HLTL1TSeed")
488  << "\n\tAlgo seed " << algoSeedName << " result emulated | final = " << algoSeedResult << " | " << algoSeedResultMaskAndPresc << endl;
489 
492  if(!algoSeedResultMaskAndPresc) continue;
493 
495  // This should not happen if the emulated and unpacked GT are consistent
497  if(!algoSeedResult) continue;
498 
499  const std::vector<L1GtLogicParser::OperandToken>& opTokenVecObjMap = objMap->operandTokenVector();
500  const std::vector<ObjectTypeInCond>& condObjTypeVec = objMap->objectTypeVector();
501  const std::vector<CombinationsInCond>& condCombinations = objMap->combinationVector();
502 
503  LogTrace("HLTL1TSeed")
504  << "\n\talgoName =" << objMap->algoName()
505  << "\talgoBitNumber = " << algoSeedBitNumber
506  << "\talgoGtlResult = " << algoSeedResult << endl << endl;
507 
508 
509  if (opTokenVecObjMap.size() != condObjTypeVec.size() ) {
510  edm::LogWarning("HLTL1TSeed")
511  << "\nWarning: L1GlobalTriggerObjectMapRecord with input tag "
513  << "\nhas object map for bit number " << algoSeedBitNumber << " which contains different size vectors of operand tokens and of condition object types!" << std::endl;
514 
515  assert(opTokenVecObjMap.size() == condObjTypeVec.size());
516  }
517 
518  if (opTokenVecObjMap.size() != condCombinations.size()) {
519  edm::LogWarning("HLTL1TSeed")
520  << "\nWarning: L1GlobalTriggerObjectMapRecord with input tag "
522  << "\nhas object map for bit number " << algoSeedBitNumber << " which contains different size vectors of operand tokens and of condition object combinations!" << std::endl;
523 
524  assert(opTokenVecObjMap.size() == condCombinations.size());
525  }
526 
527  // operands are conditions of L1 algo
528  //
529  for (size_t condNumber = 0; condNumber < opTokenVecObjMap.size(); condNumber++) {
530 
531  std::vector<L1GtObject> condObjType = condObjTypeVec[condNumber];
532 
533  for (size_t jOb =0; jOb < condObjType.size(); jOb++) {
534 
535  LogTrace("HLTL1TSeed")
536  << setw(15) << "\tcondObjType = " << condObjType[jOb] << endl;
537 
538  }
539 
540  const std::string condName = opTokenVecObjMap[condNumber].tokenName;
541  bool condResult = opTokenVecObjMap[condNumber].tokenResult;
542 
543  // only procede for conditions that passed
544  //
545  if ( !condResult) {
546  continue;
547  }
548 
549  // loop over combinations for a given condition
550  //
551  const CombinationsInCond* condComb = objMap->getCombinationsInCond(condNumber);
552 
553  LogTrace("HLTL1TSeed")
554  << setw(15) << "\tcondCombinations = " << condComb->size() << endl;
555 
556  for (std::vector<SingleCombInCond>::const_iterator itComb = (*condComb).begin(); itComb != (*condComb).end(); itComb++) {
557 
558  // loop over objects in a combination for a given condition
559  //
560  for (SingleCombInCond::const_iterator itObject = (*itComb).begin(); itObject != (*itComb).end(); itObject++) {
561 
562  // loop over types for the object in a combination. This object might have more then one type (i.e. mu-eg)
563  //
564  for (size_t iType =0; iType < condObjType.size(); iType++) {
565 
566  // get object type and push indices on the list
567  //
568  const L1GtObject objTypeVal = condObjType.at(iType);
569 
570  LogTrace("HLTL1TSeed")
571  << "\tAdd object of type " << objTypeVal << " and index " << (*itObject) << " to the seed list."
572  << std::endl;
573 
574  switch (objTypeVal) {
575  case Mu: {
576  listMuon.push_back(*itObject);
577  }
578 
579  break;
580  case NoIsoEG: {
581  listEG.push_back(*itObject);
582  }
583 
584  break;
585  case IsoEG: {
586  listEG.push_back(*itObject);
587  }
588 
589  break;
590  case CenJet: {
591  listJet.push_back(*itObject);
592  }
593 
594  break;
595  case ForJet: {
596  listJet.push_back(*itObject);
597  }
598 
599  break;
600  case TauJet: {
601  listTau.push_back(*itObject);
602  }
603 
604  break;
605  case HfRingEtSums: {
606  // Special treatment needed to match HFRingEtSums index (Ind) with corresponding l1extra item
607  // Same ranking (Et) is assumed for both HFRingEtSums indexes and items in l1extra IsoTau collection
608  // Each HFRingEtSums_IndN corresponds with one object (with (*itObject)=0);
609  // its index (hfInd) encodded by parsing algorithm name
610  int hfInd = (*itObject);
611  if(condName.find("Ind0")!=std::string::npos)
612  hfInd = 0;
613  else if(condName.find("Ind1")!=std::string::npos)
614  hfInd = 1;
615  else if(condName.find("Ind2")!=std::string::npos)
616  hfInd = 2;
617  else if(condName.find("Ind3")!=std::string::npos)
618  hfInd = 3;
619  listTau.push_back(hfInd);
620  }
621 
622  break;
623  case ETM: {
624  listETM.push_back(*itObject);
625 
626  }
627 
628  break;
629  case ETT: {
630  listETT.push_back(*itObject);
631 
632  }
633 
634  break;
635  case HTT: {
636  listHTT.push_back(*itObject);
637 
638  }
639 
640  break;
641  case HTM: {
642  listHTM.push_back(*itObject);
643 
644  }
645 
646  break;
647  case JetCounts: {
648  listJetCounts.push_back(*itObject);
649  }
650 
651  break;
652  default: {
653  // should not arrive here
654 
655  LogTrace("HLTL1TSeed")
656  << "\n HLTL1TSeed::hltFilter "
657  << "\n Unknown object of type " << objTypeVal
658  << " and index " << (*itObject) << " in the seed list."
659  << std::endl;
660  }
661  break;
662 
663  } // end switch objTypeVal
664 
665  } // end for iType
666 
667  } // end for itObj
668 
669  } // end for itComb
670 
671  } // end for condition
672 
673  } // end for itSeed
674 
675 
676  // eliminate duplicates
677 
678  listMuon.sort();
679  listMuon.unique();
680 
681  listEG.sort();
682  listEG.unique();
683 
684  listJet.sort();
685  listJet.unique();
686 
687  listTau.sort();
688  listTau.unique();
689 
690  listETM.sort();
691  listETM.unique();
692 
693  listETT.sort();
694  listETT.unique();
695 
696  listHTT.sort();
697  listHTT.unique();
698 
699  listHTM.sort();
700  listHTM.unique();
701 
702  listJetCounts.sort();
703  listJetCounts.unique();
704 
705 
706  // record the L1 physics objects in the HLT filterproduct
707  // //////////////////////////////////////////////////////
708 
709  // Muon
710  if (!listMuon.empty()) {
711 
713  iEvent.getByToken(m_l1MuonToken, muons);
714 
715  if (!muons.isValid()){
716  edm::LogWarning("HLTL1TSeed")
717  << "\nWarning: L1MuonBxCollection with input tag "
718  << m_l1MuonTag
719  << "\nrequested in configuration, but not found in the event."
720  << "\nNo muons added to filterproduct."
721  << endl;
722  }
723  else {
724 
725  for (std::list<int>::const_iterator itObj = listMuon.begin(); itObj != listMuon.end(); ++itObj) {
726 
727  l1t::MuonRef myref(muons, *itObj);
728  filterproduct.addObject(trigger::TriggerL1Mu, myref);
729 
730  }
731 
732  }
733 
734  }
735 
736  // EG (isolated)
737  if (!listEG.empty()) {
738 
740  iEvent.getByToken(m_l1EGammaToken, egammas);
741  if (!egammas.isValid()){
742  edm::LogWarning("HLTL1TSeed")
743  << "\nWarning: L1EGammaBxCollection with input tag " << m_l1EGammaTag
744  << "\nrequested in configuration, but not found in the event."
745  << "\nNo egammas added to filterproduct."
746  << endl;
747  }
748  else {
749 
750  for (std::list<int>::const_iterator itObj = listEG.begin(); itObj != listEG.end(); ++itObj) {
751 
752  l1t::EGammaRef myref(egammas, *itObj);
753  filterproduct.addObject(trigger::TriggerL1EG, myref);
754 
755  }
756 
757  }
758 
759  }
760 
761  // Jet
762  if (!listJet.empty()) {
763 
765  iEvent.getByToken(m_l1JetToken, jets);
766 
767  if (!jets.isValid()){
768  edm::LogWarning("HLTL1TSeed")
769  << "\nWarning: L1JetBxCollection with input tag " << m_l1JetTag
770  << "\nrequested in configuration, but not found in the event."
771  << "\nNo jets added to filterproduct."
772  << endl;
773  }
774  else {
775 
776  for (std::list<int>::const_iterator itObj = listJet.begin(); itObj != listJet.end(); ++itObj) {
777  l1t::JetRef myref(jets, *itObj);
778  filterproduct.addObject(trigger::TriggerL1Jet, myref);
779  }
780 
781  }
782 
783  }
784 
785  // Tau
786  if (!listTau.empty()) {
787 
789  iEvent.getByToken(m_l1TauToken, taus);
790 
791  if (!taus.isValid()){
792  edm::LogWarning("HLTL1TSeed")
793  << "\nWarning: L1TauBxCollection with input tag " << m_l1TauTag
794  << "\nrequested in configuration, but not found in the event."
795  << "\nNo taus added to filterproduct."
796  << endl;
797  }
798  else {
799 
800  for (std::list<int>::const_iterator itObj = listTau.begin(); itObj != listTau.end(); ++itObj) {
801  l1t::TauRef myref(taus, *itObj);
802  filterproduct.addObject(trigger::TriggerL1Tau, myref);
803  }
804 
805  }
806 
807  }
808 
809  // ETT, HTT, ETM, HTM
811  iEvent.getByToken(m_l1EtSumToken, etsums);
812  if (!etsums.isValid()){
813  edm::LogWarning("HLTL1TSeed")
814  << "\nWarning: L1EtSumBxCollection with input tag "
815  << m_l1EtSumTag
816  << "\nrequested in configuration, but not found in the event."
817  << "\nNo etsums added to filterproduct."
818  << endl;
819  } else {
820 
822 
823  for (iter = etsums->begin(0); iter != etsums->end(0); ++iter){
824 
825  l1t::EtSumRef myref(etsums, etsums->key(iter));
826 
827  switch(iter->getType()) {
828 
829  case l1t::EtSum::kTotalEt :
830  if(!listETT.empty())
831  filterproduct.addObject(trigger::TriggerL1ETT, myref);
832  break;
833  case l1t::EtSum::kTotalHt :
834  if(!listHTT.empty())
835  filterproduct.addObject(trigger::TriggerL1HTT, myref);
836  break;
838  if(!listETM.empty())
839  filterproduct.addObject(trigger::TriggerL1ETM, myref);
840  break;
842  if(!listHTM.empty())
843  filterproduct.addObject(trigger::TriggerL1HTM, myref);
844  break;
845  default:
846  LogTrace("HLTL1TSeed") << " L1EtSum seed of currently unsuported HLT TriggerType. l1t::EtSum type: " << iter->getType() << "\n";
847 
848  } // end switch
849 
850  } // end for
851 
852  } // end else
853 
854 
855  // TODO FIXME uncomment if block when JetCounts implemented
856 
857  // // jet counts
858  // if (!listJetCounts.empty()) {
859  // edm::Handle<l1extra::L1JetCounts> l1JetCounts;
860  // iEvent.getByToken(m_l1CollectionsToken.label(), l1JetCounts);
861  //
862  // for (std::list<int>::const_iterator itObj = listJetCounts.begin();
863  // itObj != listJetCounts.end(); ++itObj) {
864  //
865  // filterproduct.addObject(trigger::TriggerL1JetCounts,l1extra::L1JetCountsRefProd(l1JetCounts));
866  // // FIXME: RefProd!
867  //
868  // }
869  //
870  // }
871 
872 
873  LogTrace("HLTL1TSeed")
874  << "\nHLTL1Seed:seedsL1TriggerObjectMaps returning " << seedsResult << endl << endl;
875 
876  return seedsResult;
877 
878 }
std::string m_l1SeedsLogicalExpression
Definition: HLTL1TSeed.h:102
int i
Definition: DBlmapReader.cc:9
edm::EDGetTokenT< L1GlobalTriggerObjectMapRecord > m_l1GtObjectMapToken
Definition: HLTL1TSeed.h:106
const std::vector< CombinationsInCond > & combinationVector() const
edm::EDGetTokenT< l1t::EtSumBxCollection > m_l1EtSumToken
Definition: HLTL1TSeed.h:136
Definition: L1GtObject.h:39
edm::InputTag m_l1MuonTag
Definition: HLTL1TSeed.h:115
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:462
enum start value shifted to 81 so as to avoid clashes with PDG codes
Definition: L1GtObject.h:36
const std::vector< L1GtLogicParser::OperandToken > & operandTokenVector() const
assert(m_qm.get())
const std::vector< ObjectTypeInCond > & objectTypeVector() const
Definition: L1GtObject.h:38
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref&lt;C&gt;)
const std::string & algoName() const
get / set name for algorithm in the object map
edm::InputTag m_l1JetTag
Definition: HLTL1TSeed.h:125
edm::InputTag m_l1GtObjectMapTag
InputTag for L1 Global Trigger object maps. This is done per menu. Should be part of Run...
Definition: HLTL1TSeed.h:105
std::vector< OperandToken > & operandTokenVector()
return the vector of operand tokens
const CombinationsInCond * getCombinationsInCond(const std::string &condNameVal) const
return all the combinations passing the requirements imposed in condition condNameVal ...
vector< PseudoJet > jets
edm::EDGetTokenT< l1t::JetBxCollection > m_l1JetToken
Definition: HLTL1TSeed.h:126
edm::EDGetTokenT< l1t::EGammaBxCollection > m_l1EGammaToken
Definition: HLTL1TSeed.h:121
edm::InputTag m_l1EtSumTag
Definition: HLTL1TSeed.h:135
edm::InputTag m_l1TauTag
Definition: HLTL1TSeed.h:130
std::vector< L1GtLogicParser::OperandToken > m_l1AlgoSeeds
list of required algorithms for seeding
Definition: HLTL1TSeed.h:85
L1GtLogicParser m_l1AlgoLogicParser
logic parser for m_l1SeedsLogicalExpression
Definition: HLTL1TSeed.h:82
bool isValid() const
Definition: HandleBase.h:75
#define LogTrace(id)
bool m_isDebugEnabled
cache edm::isDebugEnabled()
Definition: HLTL1TSeed.h:139
Definition: L1GtObject.h:30
edm::InputTag m_l1EGammaTag
Definition: HLTL1TSeed.h:120
edm::InputTag m_l1GlobalTag
InputTag for L1 Global Trigger.
Definition: HLTL1TSeed.h:109
edm::EDGetTokenT< GlobalAlgBlkBxCollection > m_l1GlobalToken
Definition: HLTL1TSeed.h:110
Definition: L1GtObject.h:37
tuple muons
Definition: patZpeak.py:38
int algoBitNumber() const
get / set bit number for algorithm in the object map
std::vector< SingleCombInCond > CombinationsInCond
all the object combinations evaluated to true in the condition
edm::EDGetTokenT< l1t::MuonBxCollection > m_l1MuonToken
Definition: HLTL1TSeed.h:116
std::vector< EtSum >::const_iterator const_iterator
Definition: BXVector.h:20
edm::EDGetTokenT< l1t::TauBxCollection > m_l1TauToken
Definition: HLTL1TSeed.h:131
virtual const bool expressionResult() const
void HLTL1TSeed::updateAlgoLogicParser ( const L1GtTriggerMenu ,
const AlgorithmMap  
)
inlineprivate

update the tokenNumber (holding the bit numbers) from m_l1AlgoLogicParser for a new L1 Trigger menu

Definition at line 65 of file HLTL1TSeed.h.

65 { };
void HLTL1TSeed::updateAlgoLogicParser ( const std::vector< bool > &  gtWord,
const std::vector< unsigned int > &  triggerMask,
const int  physicsDaqPartition 
)
inlineprivate

update the tokenResult members from m_l1AlgoLogicParser for a new event

Definition at line 69 of file HLTL1TSeed.h.

70  { };

Member Data Documentation

bool HLTL1TSeed::m_isDebugEnabled
private

cache edm::isDebugEnabled()

Definition at line 139 of file HLTL1TSeed.h.

Referenced by hltFilter(), and seedsL1TriggerObjectMaps().

L1GtLogicParser HLTL1TSeed::m_l1AlgoLogicParser
private

logic parser for m_l1SeedsLogicalExpression

Definition at line 82 of file HLTL1TSeed.h.

Referenced by HLTL1TSeed(), and seedsL1TriggerObjectMaps().

std::vector<L1GtLogicParser::OperandToken> HLTL1TSeed::m_l1AlgoSeeds
private

list of required algorithms for seeding

Definition at line 85 of file HLTL1TSeed.h.

Referenced by HLTL1TSeed(), and seedsL1TriggerObjectMaps().

std::vector< std::vector< const std::vector<L1GtObject>* > > HLTL1TSeed::m_l1AlgoSeedsObjType
private

vector of object-type vectors for each condition in the required algorithms for seeding

Definition at line 91 of file HLTL1TSeed.h.

Referenced by HLTL1TSeed().

std::vector< const std::vector<L1GtLogicParser::TokenRPN>* > HLTL1TSeed::m_l1AlgoSeedsRpn
private

vector of Rpn vectors for the required algorithms for seeding

Definition at line 88 of file HLTL1TSeed.h.

Referenced by HLTL1TSeed().

edm::InputTag HLTL1TSeed::m_l1EGammaCollectionsTag
private

Meta InputTag for L1 Egamma collection.

Definition at line 119 of file HLTL1TSeed.h.

edm::InputTag HLTL1TSeed::m_l1EGammaTag
private

Definition at line 120 of file HLTL1TSeed.h.

Referenced by hltFilter(), and seedsL1TriggerObjectMaps().

edm::EDGetTokenT<l1t::EGammaBxCollection> HLTL1TSeed::m_l1EGammaToken
private

Definition at line 121 of file HLTL1TSeed.h.

Referenced by seedsL1TriggerObjectMaps().

edm::InputTag HLTL1TSeed::m_l1EtSumCollectionsTag
private

Meta InputTag for L1 Egamma collection.

Definition at line 134 of file HLTL1TSeed.h.

edm::InputTag HLTL1TSeed::m_l1EtSumTag
private

Definition at line 135 of file HLTL1TSeed.h.

Referenced by hltFilter(), and seedsL1TriggerObjectMaps().

edm::EDGetTokenT<l1t::EtSumBxCollection> HLTL1TSeed::m_l1EtSumToken
private

Definition at line 136 of file HLTL1TSeed.h.

Referenced by seedsL1TriggerObjectMaps().

edm::InputTag HLTL1TSeed::m_l1GlobalTag
private

InputTag for L1 Global Trigger.

Definition at line 109 of file HLTL1TSeed.h.

Referenced by seedsL1TriggerObjectMaps().

edm::EDGetTokenT<GlobalAlgBlkBxCollection> HLTL1TSeed::m_l1GlobalToken
private

Definition at line 110 of file HLTL1TSeed.h.

Referenced by seedsL1TriggerObjectMaps().

edm::InputTag HLTL1TSeed::m_l1GtObjectMapTag
private

InputTag for L1 Global Trigger object maps. This is done per menu. Should be part of Run.

Definition at line 105 of file HLTL1TSeed.h.

Referenced by seedsL1TriggerObjectMaps().

edm::EDGetTokenT<L1GlobalTriggerObjectMapRecord> HLTL1TSeed::m_l1GtObjectMapToken
private

Definition at line 106 of file HLTL1TSeed.h.

Referenced by seedsL1TriggerObjectMaps().

edm::InputTag HLTL1TSeed::m_l1JetCollectionsTag
private

Meta InputTag for L1 Egamma collection.

Definition at line 124 of file HLTL1TSeed.h.

edm::InputTag HLTL1TSeed::m_l1JetTag
private

Definition at line 125 of file HLTL1TSeed.h.

Referenced by hltFilter(), and seedsL1TriggerObjectMaps().

edm::EDGetTokenT<l1t::JetBxCollection> HLTL1TSeed::m_l1JetToken
private

Definition at line 126 of file HLTL1TSeed.h.

Referenced by seedsL1TriggerObjectMaps().

edm::InputTag HLTL1TSeed::m_l1MuonCollectionsTag
private

Meta InputTag for L1 Muon collection.

Definition at line 114 of file HLTL1TSeed.h.

edm::InputTag HLTL1TSeed::m_l1MuonTag
private

Definition at line 115 of file HLTL1TSeed.h.

Referenced by hltFilter(), and seedsL1TriggerObjectMaps().

edm::EDGetTokenT<l1t::MuonBxCollection> HLTL1TSeed::m_l1MuonToken
private

Definition at line 116 of file HLTL1TSeed.h.

Referenced by seedsL1TriggerObjectMaps().

int HLTL1TSeed::m_l1NrBxInEvent
private

option used forL1UseL1TriggerObjectMaps = False only number of BxInEvent: 1: L1A=0; 3: -1, L1A=0, 1; 5: -2, -1, L1A=0, 1, 2

Definition at line 98 of file HLTL1TSeed.h.

std::string HLTL1TSeed::m_l1SeedsLogicalExpression
private

logical expression for the required L1 algorithms the algorithms are specified by name

Definition at line 102 of file HLTL1TSeed.h.

Referenced by dumpTriggerFilterObjectWithRefs(), HLTL1TSeed(), and seedsL1TriggerObjectMaps().

edm::InputTag HLTL1TSeed::m_l1TauCollectionsTag
private

Meta InputTag for L1 Egamma collection.

Definition at line 129 of file HLTL1TSeed.h.

edm::InputTag HLTL1TSeed::m_l1TauTag
private

Definition at line 130 of file HLTL1TSeed.h.

Referenced by hltFilter(), and seedsL1TriggerObjectMaps().

edm::EDGetTokenT<l1t::TauBxCollection> HLTL1TSeed::m_l1TauToken
private

Definition at line 131 of file HLTL1TSeed.h.

Referenced by seedsL1TriggerObjectMaps().