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
 
bool m_l1GlobalDecision
 flag to pass if L1TGlobal accept More...
 
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 Exception, L1GtLogicParser::expressionSeedsOperandList(), m_l1AlgoLogicParser, m_l1AlgoSeeds, m_l1AlgoSeedsObjType, m_l1AlgoSeedsRpn, m_l1GlobalDecision, 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)),
55  m_l1GlobalDecision(false),
57 {
58 
59  if (m_l1SeedsLogicalExpression == "") {
60 
61  throw cms::Exception("FailModule") << "\nTrying to seed with an empty L1SeedsLogicalExpression.\n" << std::endl;
62 
63  }
64  else if (m_l1SeedsLogicalExpression != "L1GlobalDecision") {
65 
66  // check also the logical expression - add/remove spaces if needed
68 
69  // list of required algorithms for seeding
70  // dummy values for tokenNumber and tokenResult
73  size_t l1AlgoSeedsSize = m_l1AlgoSeeds.size();
74 
75  m_l1AlgoSeedsRpn.reserve(l1AlgoSeedsSize);
76  m_l1AlgoSeedsObjType.reserve(l1AlgoSeedsSize);
77 
78  }
79  else {
80 
81  m_l1GlobalDecision = true;
82 
83  }
84 
85 }
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:142
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
bool m_l1GlobalDecision
flag to pass if L1TGlobal accept
Definition: HLTL1TSeed.h:139
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 88 of file HLTL1TSeed.cc.

88  {
89  // empty now
90 }

Member Function Documentation

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

detailed print of filter content

Definition at line 152 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().

153 {
154 
155  LogTrace("HLTL1TSeed")
156  << "\nHLTL1TSeed::hltFilter "
157  << "\n Dump TriggerFilterObjectWithRefs\n" << endl;
158 
159  vector<l1t::MuonRef> seedsL1Mu;
160  filterproduct.getObjects(trigger::TriggerL1Mu, seedsL1Mu);
161  const size_t sizeSeedsL1Mu = seedsL1Mu.size();
162 
163  LogTrace("HLTL1TSeed")
164  << "\n HLTL1TSeed: seed logical expression = " << m_l1SeedsLogicalExpression << endl;
165 
166  LogTrace("HLTL1TSeed")
167  << "\n L1Mu seeds: " << sizeSeedsL1Mu << endl << endl;
168 
169  for (size_t i = 0; i != sizeSeedsL1Mu; i++) {
170 
171 
172  l1t::MuonRef obj = l1t::MuonRef( seedsL1Mu[i]);
173 
174  LogTrace("HLTL1TSeed")
175  << "\tL1Mu " << "\t" << "q = " << obj->hwCharge() // TEMP get hwCharge insead of charge which is not yet set NEED FIX.
176  << "\t" << "pt = " << obj->pt() << "\t" << "eta = " << obj->eta()
177  << "\t" << "phi = " << obj->phi(); //<< "\t" << "BX = " << obj->bx();
178  }
179 
180  vector<l1t::EGammaRef> seedsL1EG;
181  filterproduct.getObjects(trigger::TriggerL1EG, seedsL1EG);
182  const size_t sizeSeedsL1EG = seedsL1EG.size();
183 
184  LogTrace("HLTL1TSeed")
185  << "\n L1EG seeds: " << sizeSeedsL1EG << endl << endl;
186 
187  for (size_t i = 0; i != sizeSeedsL1EG; i++) {
188 
189 
190  l1t::EGammaRef obj = l1t::EGammaRef( seedsL1EG[i]);
191 
192  LogTrace("HLTL1TSeed")
193  << "\tL1EG " << "\t" << "pt = "
194  << obj->pt() << "\t" << "eta = " << obj->eta()
195  << "\t" << "phi = " << obj->phi(); //<< "\t" << "BX = " << obj->bx();
196  }
197 
198  vector<l1t::JetRef> seedsL1Jet;
199  filterproduct.getObjects(trigger::TriggerL1Jet, seedsL1Jet);
200  const size_t sizeSeedsL1Jet = seedsL1Jet.size();
201 
202  LogTrace("HLTL1TSeed")
203  << "\n L1Jet seeds: " << sizeSeedsL1Jet << endl << endl;
204 
205  for (size_t i = 0; i != sizeSeedsL1Jet; i++) {
206 
207 
208  l1t::JetRef obj = l1t::JetRef( seedsL1Jet[i]);
209 
210  LogTrace("HLTL1TSeed") << "\tL1Jet " << "\t" << "pt = "
211  << obj->pt() << "\t" << "eta = " << obj->eta()
212  << "\t" << "phi = " << obj->phi(); //<< "\t" << "BX = " << obj->bx();
213  }
214 
215  vector<l1t::TauRef> seedsL1Tau;
216  filterproduct.getObjects(trigger::TriggerL1Tau, seedsL1Tau);
217  const size_t sizeSeedsL1Tau = seedsL1Tau.size();
218 
219  LogTrace("HLTL1TSeed")
220  << "\n L1Tau seeds: " << sizeSeedsL1Tau << endl << endl;
221 
222  for (size_t i = 0; i != sizeSeedsL1Tau; i++) {
223 
224 
225  l1t::TauRef obj = l1t::TauRef( seedsL1Tau[i]);
226 
227  LogTrace("HLTL1TSeed")
228  << "\tL1Tau " << "\t" << "pt = "
229  << obj->pt() << "\t" << "eta = " << obj->eta()
230  << "\t" << "phi = " << obj->phi(); //<< "\t" << "BX = " << obj->bx();
231  }
232 
233  vector<l1t::EtSumRef> seedsL1EtSumETT;
234  filterproduct.getObjects(trigger::TriggerL1ETT, seedsL1EtSumETT);
235  const size_t sizeSeedsL1EtSumETT = seedsL1EtSumETT.size();
236  LogTrace("HLTL1TSeed")
237  << "\n L1EtSum ETT seeds: " << sizeSeedsL1EtSumETT << endl << endl;
238 
239  for (size_t i = 0; i != sizeSeedsL1EtSumETT; i++) {
240  l1t::EtSumRef obj = l1t::EtSumRef( seedsL1EtSumETT[i]);
241 
242  LogTrace("HLTL1TSeed")
243  << "\tL1EtSum ETT" << "\t" << "pt = "
244  << obj->pt() << "\t" << "eta = " << obj->eta()
245  << "\t" << "phi = " << obj->phi(); //<< "\t" << "BX = " << obj->bx();
246  }
247 
248  vector<l1t::EtSumRef> seedsL1EtSumHTT;
249  filterproduct.getObjects(trigger::TriggerL1HTT, seedsL1EtSumHTT);
250  const size_t sizeSeedsL1EtSumHTT = seedsL1EtSumHTT.size();
251  LogTrace("HLTL1TSeed")
252  << "\n L1EtSum HTT seeds: " << sizeSeedsL1EtSumHTT << endl << endl;
253 
254  for (size_t i = 0; i != sizeSeedsL1EtSumHTT; i++) {
255  l1t::EtSumRef obj = l1t::EtSumRef( seedsL1EtSumHTT[i]);
256 
257  LogTrace("HLTL1TSeed")
258  << "\tL1EtSum HTT" << "\t" << "pt = "
259  << obj->pt() << "\t" << "eta = " << obj->eta()
260  << "\t" << "phi = " << obj->phi(); //<< "\t" << "BX = " << obj->bx();
261  }
262 
263  vector<l1t::EtSumRef> seedsL1EtSumETM;
264  filterproduct.getObjects(trigger::TriggerL1ETM, seedsL1EtSumETM);
265  const size_t sizeSeedsL1EtSumETM = seedsL1EtSumETM.size();
266  LogTrace("HLTL1TSeed")
267  << "\n L1EtSum ETM seeds: " << sizeSeedsL1EtSumETM << endl << endl;
268 
269  for (size_t i = 0; i != sizeSeedsL1EtSumETM; i++) {
270  l1t::EtSumRef obj = l1t::EtSumRef( seedsL1EtSumETM[i]);
271 
272  LogTrace("HLTL1TSeed")
273  << "\tL1EtSum ETM" << "\t" << "pt = "
274  << obj->pt() << "\t" << "eta = " << obj->eta()
275  << "\t" << "phi = " << obj->phi(); //<< "\t" << "BX = " << obj->bx();
276  }
277 
278  vector<l1t::EtSumRef> seedsL1EtSumHTM;
279  filterproduct.getObjects(trigger::TriggerL1HTM, seedsL1EtSumHTM);
280  const size_t sizeSeedsL1EtSumHTM = seedsL1EtSumHTM.size();
281  LogTrace("HLTL1TSeed")
282  << "\n L1EtSum HTM seeds: " << sizeSeedsL1EtSumHTM << endl << endl;
283 
284  for (size_t i = 0; i != sizeSeedsL1EtSumHTM; i++) {
285  l1t::EtSumRef obj = l1t::EtSumRef( seedsL1EtSumHTM[i]);
286 
287  LogTrace("HLTL1TSeed")
288  << "\tL1EtSum HTM" << "\t" << "pt = "
289  << obj->pt() << "\t" << "eta = " << obj->eta()
290  << "\t" << "phi = " << obj->phi(); //<< "\t" << "BX = " << obj->bx();
291  }
292 
293  LogTrace("HLTL1TSeed") << " \n\n" << endl;
294 
295 }
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 95 of file HLTL1TSeed.cc.

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

95  {
98 
99 
100  // # logical expression for the required L1 algorithms;
101  // # the algorithms are specified by name
102  // # allowed operators: "AND", "OR", "NOT", "(", ")"
103  // #
104  // # by convention, "L1GlobalDecision" logical expression means global decision
105  desc.add<string>("L1SeedsLogicalExpression","");
106  desc.add<edm::InputTag>("L1ObjectMapInputTag",edm::InputTag("hltGtStage2ObjectMap"));
107  desc.add<edm::InputTag>("L1GlobalInputTag",edm::InputTag("hltGtStage2Digis"));
108  desc.add<edm::InputTag>("L1MuonInputTag",edm::InputTag("hltGmtStage2Digis:Muon"));
109  desc.add<edm::InputTag>("L1EGammaInputTag",edm::InputTag("hltCaloStage2Digis:EGamma"));
110  desc.add<edm::InputTag>("L1JetInputTag",edm::InputTag("hltCaloStage2Digis:Jet"));
111  desc.add<edm::InputTag>("L1TauInputTag",edm::InputTag("hltCaloStage2Digis:Tau"));
112  desc.add<edm::InputTag>("L1EtSumInputTag",edm::InputTag("hltCaloStage2Digis:EtSum"));
113  descriptions.add("hltL1TSeed", desc);
114 }
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 116 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().

116  {
117 
118  bool rc = false;
119 
120  // the filter object
121  if (saveTags()) {
122 
123  // muons
124  filterproduct.addCollectionTag(m_l1MuonTag);
125 
126  // egamma
127  filterproduct.addCollectionTag(m_l1EGammaTag);
128 
129  // jet
130  filterproduct.addCollectionTag(m_l1JetTag);
131 
132  // tau
133  filterproduct.addCollectionTag(m_l1TauTag);
134 
135  // etsum
136  filterproduct.addCollectionTag(m_l1EtSumTag);
137  }
138 
139  // Get all the seeding from iEvent (i.e. L1TriggerObjectMapRecord)
140  //
141  rc = seedsL1TriggerObjectMaps(iEvent, filterproduct);
142 
143  if (m_isDebugEnabled) {
144  dumpTriggerFilterObjectWithRefs(filterproduct);
145  }
146 
147  return rc;
148 
149 }
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:298
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:142
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:152
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 298 of file HLTL1TSeed.cc.

References trigger::TriggerRefsCollections::addObject(), L1GlobalTriggerObjectMap::algoBitNumber(), L1GlobalTriggerObjectMap::algoGtlResult(), L1GlobalTriggerObjectMap::algoName(), assert(), CenJet, L1GlobalTriggerObjectMap::combinationVector(), ETM, ETT, Exception, 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_l1GlobalDecision, 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().

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

bool HLTL1TSeed::m_l1GlobalDecision
private

flag to pass if L1TGlobal accept

Definition at line 139 of file HLTL1TSeed.h.

Referenced by HLTL1TSeed(), and 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().