CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TriggerSummaryProducerAOD.cc
Go to the documentation of this file.
1 
10 #include <algorithm>
11 #include <memory>
12 #include <typeinfo>
13 
16 
23 
36 
42 
45 
48 
49 //
50 // constructors and destructor
51 //
53  pn_(ps.getParameter<std::string>("processName")),
54  filterTagsEvent_(pn_!="*"),
55  filterTagsStream_(pn_!="*"),
56  collectionTagsEvent_(pn_!="*"),
57  collectionTagsStream_(pn_!="*"),
58  toc_(),
59  tags_(),
60  offset_(),
61  keys_(),
62  ids_(),
63  maskFilters_()
64 {
65  if (pn_=="@") {
67  if (tns.isAvailable()) {
68  pn_ = tns->getProcessName();
69  } else {
70  edm::LogError("TriggerSummaryProducerAOD") << "HLT Error: TriggerNamesService not available!";
71  pn_="*";
72  }
73 
78  }
79  LogDebug("TriggerSummaryProducerAOD") << "Using process name: '" << pn_ <<"'";
80 
81  filterTagsStream_.clear();
82  collectionTagsStream_.clear();
83 
84  produces<trigger::TriggerEvent>();
85 
103 
111  getMETCollection_(bd);
122  });
123 }
124 
126 {
127 }
128 
129 //
130 // member functions
131 //
132 
133 namespace {
134  inline void
136 
137  using std::string;
138 
139  const char token(':');
140  const string empty;
141 
142  label=tag;
143  const string::size_type i1(label.find(token));
144  if (i1==string::npos) {
145  instance=empty;
146  process=empty;
147  } else {
148  instance=label.substr(i1+1);
149  label.resize(i1);
150  const string::size_type i2(instance.find(token));
151  if (i2==string::npos) {
152  process=empty;
153  } else {
154  process=instance.substr(i2+1);
155  instance.resize(i2);
156  }
157  }
158  }
159 }
160 
163  desc.add<std::string>("processName","@");
164  descriptions.add("triggerSummaryProducerAOD", desc);
165 }
166 
167 // ------------ method called to produce the data ------------
168 void
170 {
171  using namespace std;
172  using namespace edm;
173  using namespace reco;
174  using namespace l1extra;
175  using namespace trigger;
176 
177  std::vector<edm::Handle<trigger::TriggerFilterObjectWithRefs> > fobs;
179 
180  const unsigned int nfob(fobs.size());
181  LogTrace("TriggerSummaryProducerAOD") << "Number of filter objects found: " << nfob;
182 
183  string tagLabel,tagInstance,tagProcess;
184 
190  maskFilters_.clear();
191  maskFilters_.resize(nfob);
192  filterTagsEvent_.clear();
193  collectionTagsEvent_.clear();
194  unsigned int nf(0);
195  for (unsigned int ifob=0; ifob!=nfob; ++ifob) {
196  maskFilters_[ifob]=false;
197  const vector<string>& collectionTags_(fobs[ifob]->getCollectionTagsAsStrings());
198  const unsigned int ncol(collectionTags_.size());
199  if (ncol>0) {
200  nf++;
201  maskFilters_[ifob]=true;
202  const string& label (fobs[ifob].provenance()->moduleLabel());
203  const string& instance (fobs[ifob].provenance()->productInstanceName());
204  const string& process (fobs[ifob].provenance()->processName());
205  filterTagsEvent_.insert(InputTag(label,instance,process));
206  for (unsigned int icol=0; icol!=ncol; ++icol) {
207  // overwrite process name (usually not set)
208  tokenizeTag(collectionTags_[icol],tagLabel,tagInstance,tagProcess);
209  collectionTagsEvent_.insert(InputTag(tagLabel,tagInstance,pn_));
210  }
211  }
212  }
214  if (filterTagsEvent_.size()!=nf) {
215  LogError("TriggerSummaryProducerAOD")
216  << "Mismatch in number of filter tags: "
217  << filterTagsEvent_.size() << "!=" << nf ;
218  }
219 
223 
225  if (isDebugEnabled()) {
226 
228  const unsigned int nc(collectionTagsEvent_.size());
229  LogTrace("TriggerSummaryProducerAOD") << "Number of unique collections requested " << nc;
230  const InputTagSet::const_iterator cb(collectionTagsEvent_.begin());
231  const InputTagSet::const_iterator ce(collectionTagsEvent_.end());
232  for ( InputTagSet::const_iterator ci=cb; ci!=ce; ++ci) {
233  LogTrace("TriggerSummaryProducerAOD") << distance(cb,ci) << " " << ci->encode();
234  }
235  const unsigned int nf(filterTagsEvent_.size());
236  LogTrace("TriggerSummaryProducerAOD") << "Number of unique filters requested " << nf;
237  const InputTagSet::const_iterator fb(filterTagsEvent_.begin());
238  const InputTagSet::const_iterator fe(filterTagsEvent_.end());
239  for ( InputTagSet::const_iterator fi=fb; fi!=fe; ++fi) {
240  LogTrace("TriggerSummaryProducerAOD") << distance(fb,fi) << " " << fi->encode();
241  }
242 
243  }
244 
250  toc_.clear();
251  tags_.clear();
252  keys_.clear();
253  offset_.clear();
254  fillTriggerObjectCollections< RecoEcalCandidateCollection>(iEvent, getRecoEcalCandidateCollection_);
255  fillTriggerObjectCollections< ElectronCollection>(iEvent, getElectronCollection_);
256  fillTriggerObjectCollections< RecoChargedCandidateCollection>(iEvent, getRecoChargedCandidateCollection_);
257  fillTriggerObjectCollections< CaloJetCollection>(iEvent, getCaloJetCollection_);
258  fillTriggerObjectCollections< CompositeCandidateCollection>(iEvent, getCompositeCandidateCollection_);
259  fillTriggerObjectCollections< METCollection>(iEvent, getMETCollection_);
260  fillTriggerObjectCollections< CaloMETCollection>(iEvent, getCaloMETCollection_);
261  fillTriggerObjectCollections<IsolatedPixelTrackCandidateCollection>(iEvent, getIsolatedPixelTrackCandidateCollection_);
263  fillTriggerObjectCollections< L1EmParticleCollection>(iEvent, getL1EmParticleCollection_);
264  fillTriggerObjectCollections< L1MuonParticleCollection>(iEvent, getL1MuonParticleCollection_);
265  fillTriggerObjectCollections< L1JetParticleCollection>(iEvent, getL1JetParticleCollection_);
266  fillTriggerObjectCollections< L1EtMissParticleCollection>(iEvent, getL1EtMissParticleCollection_);
267  fillTriggerObjectCollections< L1HFRingsCollection>(iEvent, getL1HFRingsCollection_);
269  fillTriggerObjectCollections< PFJetCollection>(iEvent, getPFJetCollection_);
270  fillTriggerObjectCollections< PFTauCollection>(iEvent, getPFTauCollection_);
271  fillTriggerObjectCollections< PFMETCollection>(iEvent, getPFMETCollection_);
273  const unsigned int nk(tags_.size());
274  LogDebug("TriggerSummaryProducerAOD") << "Number of collections found: " << nk;
275  const unsigned int no(toc_.size());
276  LogDebug("TriggerSummaryProducerAOD") << "Number of physics objects found: " << no;
277 
280  auto_ptr<TriggerEvent> product(new TriggerEvent(pn_,nk,no,nf));
281 
283  product->addCollections(tags_,keys_);
284  product->addObjects(toc_);
285 
287  for (unsigned int ifob=0; ifob!=nfob; ++ifob) {
288  if (maskFilters_[ifob]) {
289  const string& label (fobs[ifob].provenance()->moduleLabel());
290  const string& instance (fobs[ifob].provenance()->productInstanceName());
291  const string& process (fobs[ifob].provenance()->processName());
292  const edm::InputTag filterTag(label,instance,process);
293  ids_.clear();
294  keys_.clear();
295  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->photonIds() ,fobs[ifob]->photonRefs());
296  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->electronIds() ,fobs[ifob]->electronRefs());
297  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->muonIds() ,fobs[ifob]->muonRefs());
298  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->jetIds() ,fobs[ifob]->jetRefs());
299  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->compositeIds(),fobs[ifob]->compositeRefs());
300  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->basemetIds() ,fobs[ifob]->basemetRefs());
301  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->calometIds() ,fobs[ifob]->calometRefs());
302  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->pixtrackIds() ,fobs[ifob]->pixtrackRefs());
303  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->l1emIds() ,fobs[ifob]->l1emRefs());
304  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->l1muonIds() ,fobs[ifob]->l1muonRefs());
305  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->l1jetIds() ,fobs[ifob]->l1jetRefs());
306  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->l1etmissIds() ,fobs[ifob]->l1etmissRefs());
307  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->l1hfringsIds(),fobs[ifob]->l1hfringsRefs());
308  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->pfjetIds() ,fobs[ifob]->pfjetRefs());
309  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->pftauIds() ,fobs[ifob]->pftauRefs());
310  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->pfmetIds() ,fobs[ifob]->pfmetRefs());
311  product->addFilter(filterTag,ids_,keys_);
312  }
313  }
314 
315  OrphanHandle<TriggerEvent> ref = iEvent.put(product);
316  LogTrace("TriggerSummaryProducerAOD") << "Number of physics objects packed: " << ref->sizeObjects();
317  LogTrace("TriggerSummaryProducerAOD") << "Number of filter objects packed: " << ref->sizeFilters();
318 
319 }
320 
321 template <typename C>
323 
327 
328  using namespace std;
329  using namespace edm;
330  using namespace reco;
331  using namespace l1extra;
332  using namespace trigger;
333 
334  vector<Handle<C> > collections;
335  getter.fillHandles(iEvent, collections);
336  const unsigned int nc(collections.size());
337 
338  for (unsigned int ic=0; ic!=nc; ++ic) {
339  const Provenance& provenance(*(collections[ic].provenance()));
340  const string& label (provenance.moduleLabel());
341  const string& instance (provenance.productInstanceName());
342  const string& process (provenance.processName());
343  const InputTag collectionTag(label,instance,process);
344 
345  if (collectionTagsEvent_.find(collectionTag)!=collectionTagsEvent_.end()) {
346  const ProductID pid(collections[ic].provenance()->productID());
347  if (offset_.find(pid)!=offset_.end()) {
348  LogError("TriggerSummaryProducerAOD") << "Duplicate pid!";
349  }
350  offset_[pid]=toc_.size();
351  const unsigned int n(collections[ic]->size());
352  for (unsigned int i=0; i!=n; ++i) {
353  fillTriggerObject( (*collections[ic])[i] );
354  }
355  tags_.push_back(collectionTag.encode());
356  keys_.push_back(toc_.size());
357  }
358 
359  }
360 }
361 
362 template <typename T>
364 
365  using namespace trigger;
366  toc_.push_back( TriggerObject(object) );
367 
368  return;
369 }
370 
372 
373  using namespace l1extra;
374  using namespace trigger;
375 
377  object.hfEtSum(L1HFRings::kRing1PosEta),
378  object.hfEtSum(L1HFRings::kRing1NegEta),
379  object.hfEtSum(L1HFRings::kRing2PosEta),
380  object.hfEtSum(L1HFRings::kRing2NegEta) ) );
382  object.hfBitCount(L1HFRings::kRing1PosEta),
383  object.hfBitCount(L1HFRings::kRing1NegEta),
384  object.hfBitCount(L1HFRings::kRing2PosEta),
385  object.hfBitCount(L1HFRings::kRing2NegEta) ) );
386 
387  return;
388 }
389 
391 
392  using namespace l1extra;
393  using namespace trigger;
394 
395  toc_.push_back( TriggerObject(object) );
396  if (object.type()==L1EtMissParticle::kMET) {
397  toc_.push_back(TriggerObject(TriggerL1ETT,object.etTotal(),0.0,0.0,0.0));
398  } else if (object.type()==L1EtMissParticle::kMHT) {
399  toc_.push_back(TriggerObject(TriggerL1HTT,object.etTotal(),0.0,0.0,0.0));
400  } else {
401  toc_.push_back(TriggerObject(0, object.etTotal(),0.0,0.0,0.0));
402  }
403 
404  return;
405 }
406 
408 
409  using namespace reco;
410  using namespace trigger;
411 
412  toc_.push_back( TriggerObject(object) );
413  toc_.push_back(TriggerObject(TriggerTET ,object.sumEt() ,0.0,0.0,0.0));
414  toc_.push_back(TriggerObject(TriggerMETSig ,object.mEtSig() ,0.0,0.0,0.0));
415  toc_.push_back(TriggerObject(TriggerELongit,object.e_longitudinal(),0.0,0.0,0.0));
416 
417  return;
418 }
419 
421 
422  using namespace reco;
423  using namespace trigger;
424 
425  toc_.push_back( TriggerObject(object) );
426  toc_.push_back(TriggerObject(TriggerTET ,object.sumEt() ,0.0,0.0,0.0));
427  toc_.push_back(TriggerObject(TriggerMETSig ,object.mEtSig() ,0.0,0.0,0.0));
428  toc_.push_back(TriggerObject(TriggerELongit,object.e_longitudinal(),0.0,0.0,0.0));
429 
430  return;
431 }
432 
434 
435  using namespace reco;
436  using namespace trigger;
437 
438  toc_.push_back( TriggerObject(object) );
439  toc_.push_back(TriggerObject(TriggerTHT ,object.sumEt() ,0.0,0.0,0.0));
440  toc_.push_back(TriggerObject(TriggerMHTSig ,object.mEtSig() ,0.0,0.0,0.0));
441  toc_.push_back(TriggerObject(TriggerHLongit,object.e_longitudinal(),0.0,0.0,0.0));
442 
443  return;
444 }
445 
446 template <typename C>
447 void TriggerSummaryProducerAOD::fillFilterObjectMembers(const edm::Event& iEvent, const edm::InputTag& tag, const trigger::Vids& ids, const std::vector<edm::Ref<C> >& refs) {
448 
452 
453  using namespace std;
454  using namespace edm;
455  using namespace reco;
456  using namespace l1extra;
457  using namespace trigger;
458 
459  if (ids.size()!=refs.size()) {
460  LogError("TriggerSummaryProducerAOD") << "Vector length is different: "
461  << ids.size() << " " << refs.size();
462  }
463 
464  const unsigned int n(min(ids.size(),refs.size()));
465  for (unsigned int i=0; i!=n; ++i) {
466  const ProductID pid(refs[i].id());
467  if (!(pid.isValid())) {
468  LogError("TriggerSummaryProducerAOD")
469  << "Iinvalid pid: " << pid
470  << " FilterTag / Key: " << tag.encode()
471  << " / " << i << "of" << n
472  << " CollectionTag / Key: "
473  << " <Unrecoverable>"
474  << " / " << refs[i].key()
475  << " CollectionType: " << typeid(C).name();
476  } else if (offset_.find(pid)==offset_.end()) {
477  const string& label(iEvent.getProvenance(pid).moduleLabel());
478  const string& instance(iEvent.getProvenance(pid).productInstanceName());
479  const string& process(iEvent.getProvenance(pid).processName());
480  LogError("TriggerSummaryProducerAOD")
481  << "Uunknown pid: " << pid
482  << " FilterTag / Key: " << tag.encode()
483  << " / " << i << "of" << n
484  << " CollectionTag / Key: "
485  << InputTag(label,instance,process).encode()
486  << " / " << refs[i].key()
487  << " CollectionType: " << typeid(C).name();
488  } else {
489  fillFilterObjectMember(offset_[pid],ids[i],refs[i]);
490  }
491  }
492  return;
493 
494 }
495 
496 template <typename C>
497 void TriggerSummaryProducerAOD::fillFilterObjectMember(const int& offset, const int& id, const edm::Ref<C> & ref) {
498 
499  keys_.push_back(offset+ref.key());
500  ids_.push_back(id);
501 
502  return;
503 }
504 
506 
507  using namespace trigger;
508 
509  if (id==TriggerL1HfBitCounts) {
510  keys_.push_back(offset+2*ref.key()+1);
511  } else { // if (ids[i]==TriggerL1HfRingEtSums) {
512  keys_.push_back(offset+2*ref.key()+0);
513  }
514  ids_.push_back(id);
515 
516  return;
517 }
518 
520 
521  using namespace trigger;
522 
523  if ( (id==TriggerL1ETT) || (id==TriggerL1HTT) ) {
524  keys_.push_back(offset+2*ref.key()+1);
525  } else {
526  keys_.push_back(offset+2*ref.key()+0);
527  }
528  ids_.push_back(id);
529 
530  return;
531 }
532 
534 
535  using namespace trigger;
536 
537  if ( (id==TriggerTHT) || (id==TriggerTET) ) {
538  keys_.push_back(offset+4*ref.key()+1);
539  } else if ( (id==TriggerMETSig) || (id==TriggerMHTSig) ) {
540  keys_.push_back(offset+4*ref.key()+2);
541  } else if ( (id==TriggerELongit) || (id==TriggerHLongit) ) {
542  keys_.push_back(offset+4*ref.key()+3);
543  } else {
544  keys_.push_back(offset+4*ref.key()+0);
545  }
546  ids_.push_back(id);
547 
548  return;
549 }
550 
552 
553  using namespace trigger;
554 
555  if ( (id==TriggerTHT) || (id==TriggerTET) ) {
556  keys_.push_back(offset+4*ref.key()+1);
557  } else if ( (id==TriggerMETSig) || (id==TriggerMHTSig) ) {
558  keys_.push_back(offset+4*ref.key()+2);
559  } else if ( (id==TriggerELongit) || (id==TriggerHLongit) ) {
560  keys_.push_back(offset+4*ref.key()+3);
561  } else {
562  keys_.push_back(offset+4*ref.key()+0);
563  }
564  ids_.push_back(id);
565 
566  return;
567 }
568 
570 
571  using namespace trigger;
572 
573  if ( (id==TriggerTHT) || (id==TriggerTET) ) {
574  keys_.push_back(offset+4*ref.key()+1);
575  } else if ( (id==TriggerMETSig) || (id==TriggerMHTSig) ) {
576  keys_.push_back(offset+4*ref.key()+2);
577  } else if ( (id==TriggerELongit) || (id==TriggerHLongit) ) {
578  keys_.push_back(offset+4*ref.key()+3);
579  } else {
580  keys_.push_back(offset+4*ref.key()+0);
581  }
582  ids_.push_back(id);
583 
584  return;
585 }
586 
588  globalCache()->collectionTagsGlobal_.insert(collectionTagsStream_.begin(),collectionTagsStream_.end());
589  globalCache()->filterTagsGlobal_.insert(filterTagsStream_.begin(),filterTagsStream_.end());
590  return;
591 }
592 
594 
595  using namespace std;
596  using namespace edm;
597  using namespace trigger;
598 
599  LogVerbatim("TriggerSummaryProducerAOD") << endl;
600  LogVerbatim("TriggerSummaryProducerAOD") << "TriggerSummaryProducerAOD::globalEndJob - accumulated tags:" << endl;
601 
602  InputTagSet filterTags(false);
603  InputTagSet collectionTags(false);
604 
605  filterTags.insert(globalInputTags->filterTagsGlobal_.begin(),globalInputTags->filterTagsGlobal_.end());
606  collectionTags.insert(globalInputTags->collectionTagsGlobal_.begin(),globalInputTags->collectionTagsGlobal_.end());
607 
608  const unsigned int nc(collectionTags.size());
609  const unsigned int nf(filterTags.size());
610  LogVerbatim("TriggerSummaryProducerAOD") << " Overall number of Collections/Filters: "
611  << nc << "/" << nf << endl;
612 
613  LogVerbatim("TriggerSummaryProducerAOD") << " The collections: " << nc << endl;
614  const InputTagSet::const_iterator cb(collectionTags.begin());
615  const InputTagSet::const_iterator ce(collectionTags.end());
616  for ( InputTagSet::const_iterator ci=cb; ci!=ce; ++ci) {
617  LogVerbatim("TriggerSummaryProducerAOD") << " " << distance(cb,ci) << " " << ci->encode() << endl;
618  }
619 
620  LogVerbatim("TriggerSummaryProducerAOD") << " The filters:" << nf << endl;
621  const InputTagSet::const_iterator fb(filterTags.begin());
622  const InputTagSet::const_iterator fe(filterTags.end());
623  for ( InputTagSet::const_iterator fi=fb; fi!=fe; ++fi) {
624  LogVerbatim("TriggerSummaryProducerAOD") << " " << distance(fb,fi) << " " << fi->encode() << endl;
625  }
626 
627  LogVerbatim("TriggerSummaryProducerAOD") << "TriggerSummaryProducerAOD::endJob." << endl;
628  LogVerbatim("TriggerSummaryProducerAOD") << endl;
629 
630  return;
631 
632 }
#define LogDebug(id)
virtual void produce(edm::Event &, const edm::EventSetup &) override
type
Definition: HCALResponse.h:21
void callWhenNewProductsRegistered(std::function< void(BranchDescription const &)> const &func)
Definition: ProducerBase.h:50
bool isDebugEnabled()
int i
Definition: DBlmapReader.cc:9
edm::GetterOfProducts< l1extra::L1JetParticleCollection > getL1JetParticleCollection_
edm::GetterOfProducts< reco::IsolatedPixelTrackCandidateCollection > getIsolatedPixelTrackCandidateCollection_
edm::GetterOfProducts< reco::RecoEcalCandidateCollection > getRecoEcalCandidateCollection_
std::string const & getProcessName() const
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
edm::GetterOfProducts< l1extra::L1MuonParticleCollection > getL1MuonParticleCollection_
The single EDProduct to be saved for each event (AOD case)
Definition: TriggerEvent.h:25
trigger::TriggerObjectCollection toc_
trigger object collection
edm::GetterOfProducts< reco::PFTauCollection > getPFTauCollection_
static PFTauRenderPlugin instance
std::vector< bool > maskFilters_
packing decision
edm::GetterOfProducts< reco::METCollection > getMETCollection_
std::set< edm::InputTag, OrderInputTag > InputTagSet
edm::GetterOfProducts< reco::CaloJetCollection > getCaloJetCollection_
void fillFilterObjectMember(const int &, const int &, const edm::Ref< C > &)
edm::GetterOfProducts< l1extra::L1EtMissParticleCollection > getL1EtMissParticleCollection_
key_type key() const
Accessor for product key.
Definition: Ref.h:264
std::vector< std::string > tags_
std::string const & processName() const
Definition: Provenance.h:61
uint16_t size_type
std::string encode() const
Definition: InputTag.cc:164
edm::GetterOfProducts< reco::PFJetCollection > getPFJetCollection_
Single trigger physics object (e.g., an isolated muon)
Definition: TriggerObject.h:22
int iEvent
Definition: GenABIO.cc:230
edm::GetterOfProducts< reco::RecoChargedCandidateCollection > getRecoChargedCandidateCollection_
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:120
Definition: MET.h:42
edm::GetterOfProducts< l1extra::L1HFRingsCollection > getL1HFRingsCollection_
bool isAvailable() const
Definition: Service.h:46
std::map< edm::ProductID, unsigned int > offset_
global map for indices into toc_: offset per input L3 collection
T min(T a, T b)
Definition: MathUtil.h:58
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void fillFilterObjectMembers(const edm::Event &, const edm::InputTag &tag, const trigger::Vids &, const std::vector< edm::Ref< C > > &)
#define LogTrace(id)
tbb::concurrent_unordered_set< edm::InputTag, InputTagHash > filterTagsGlobal_
tuple pid
Definition: sysUtil.py:22
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::string const & moduleLabel() const
Definition: Provenance.h:60
edm::GetterOfProducts< reco::CaloMETCollection > getCaloMETCollection_
edm::GetterOfProducts< reco::ElectronCollection > getElectronCollection_
InputTagSet collectionTagsEvent_
list of L3 collection tags
void fillHandles(edm::Event const &event, std::vector< edm::Handle< T > > &handles) const
edm::GetterOfProducts< reco::CompositeCandidateCollection > getCompositeCandidateCollection_
edm::GetterOfProducts< trigger::TriggerFilterObjectWithRefs > getTriggerFilterObjectWithRefs_
edm::GetterOfProducts< reco::PFMETCollection > getPFMETCollection_
void fillTriggerObjectCollections(const edm::Event &, edm::GetterOfProducts< C > &)
InputTagSet filterTagsEvent_
list of L3 filter tags
TriggerSummaryProducerAOD(const edm::ParameterSet &, const GlobalInputTags *)
bool isValid() const
Definition: ProductID.h:35
static void globalEndJob(const GlobalInputTags *)
std::string const & productInstanceName() const
Definition: Provenance.h:62
tuple process
Definition: LaserDQM_cfg.py:3
Provenance getProvenance(BranchID const &theID) const
Definition: Event.cc:85
long double T
tbb::concurrent_unordered_set< edm::InputTag, InputTagHash > collectionTagsGlobal_
tuple size
Write out results.
std::vector< int > Vids
edm::GetterOfProducts< l1extra::L1EmParticleCollection > getL1EmParticleCollection_