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 
48 
51 
54 
55 //
56 // constructors and destructor
57 //
59  pn_(ps.getParameter<std::string>("processName")),
60  filterTagsEvent_(pn_!="*"),
61  filterTagsStream_(pn_!="*"),
62  collectionTagsEvent_(pn_!="*"),
63  collectionTagsStream_(pn_!="*"),
64  toc_(),
65  tags_(),
66  offset_(),
67  keys_(),
68  ids_(),
69  maskFilters_()
70 {
71  if (pn_=="@") {
73  if (tns.isAvailable()) {
74  pn_ = tns->getProcessName();
75  } else {
76  edm::LogError("TriggerSummaryProducerAOD") << "HLT Error: TriggerNamesService not available!";
77  pn_="*";
78  }
79 
84  }
85  LogDebug("TriggerSummaryProducerAOD") << "Using process name: '" << pn_ <<"'";
86 
87  filterTagsStream_.clear();
88  collectionTagsStream_.clear();
89 
90  produces<trigger::TriggerEvent>();
91 
114 
122  getMETCollection_(bd);
138  });
139 }
140 
142 {
143 }
144 
145 //
146 // member functions
147 //
148 
149 namespace {
150  inline void
152 
153  using std::string;
154 
155  const char token(':');
156  const string empty;
157 
158  label=tag;
159  const string::size_type i1(label.find(token));
160  if (i1==string::npos) {
161  instance=empty;
162  process=empty;
163  } else {
164  instance=label.substr(i1+1);
165  label.resize(i1);
166  const string::size_type i2(instance.find(token));
167  if (i2==string::npos) {
168  process=empty;
169  } else {
170  process=instance.substr(i2+1);
171  instance.resize(i2);
172  }
173  }
174  }
175 }
176 
179  desc.add<std::string>("processName","@");
180  descriptions.add("triggerSummaryProducerAOD", desc);
181 }
182 
183 // ------------ method called to produce the data ------------
184 void
186 {
187  using namespace std;
188  using namespace edm;
189  using namespace reco;
190  using namespace l1extra;
191  using namespace trigger;
192  using namespace l1t;
193 
194  std::vector<edm::Handle<trigger::TriggerFilterObjectWithRefs> > fobs;
196 
197  const unsigned int nfob(fobs.size());
198  LogTrace("TriggerSummaryProducerAOD") << "Number of filter objects found: " << nfob;
199 
200  string tagLabel,tagInstance,tagProcess;
201 
207  maskFilters_.clear();
208  maskFilters_.resize(nfob);
209  filterTagsEvent_.clear();
210  collectionTagsEvent_.clear();
211  unsigned int nf(0);
212  for (unsigned int ifob=0; ifob!=nfob; ++ifob) {
213  maskFilters_[ifob]=false;
214  const vector<string>& collectionTags_(fobs[ifob]->getCollectionTagsAsStrings());
215  const unsigned int ncol(collectionTags_.size());
216  if (ncol>0) {
217  nf++;
218  maskFilters_[ifob]=true;
219  const string& label (fobs[ifob].provenance()->moduleLabel());
220  const string& instance (fobs[ifob].provenance()->productInstanceName());
221  const string& process (fobs[ifob].provenance()->processName());
222  filterTagsEvent_.insert(InputTag(label,instance,process));
223  for (unsigned int icol=0; icol!=ncol; ++icol) {
224  // overwrite process name (usually not set)
225  tokenizeTag(collectionTags_[icol],tagLabel,tagInstance,tagProcess);
226  collectionTagsEvent_.insert(InputTag(tagLabel,tagInstance,pn_));
227  }
228  }
229  }
231  if (filterTagsEvent_.size()!=nf) {
232  LogError("TriggerSummaryProducerAOD")
233  << "Mismatch in number of filter tags: "
234  << filterTagsEvent_.size() << "!=" << nf ;
235  }
236 
240 
242  if (isDebugEnabled()) {
243 
245  const unsigned int nc(collectionTagsEvent_.size());
246  LogTrace("TriggerSummaryProducerAOD") << "Number of unique collections requested " << nc;
247  const InputTagSet::const_iterator cb(collectionTagsEvent_.begin());
248  const InputTagSet::const_iterator ce(collectionTagsEvent_.end());
249  for ( InputTagSet::const_iterator ci=cb; ci!=ce; ++ci) {
250  LogTrace("TriggerSummaryProducerAOD") << distance(cb,ci) << " " << ci->encode();
251  }
252  const unsigned int nf(filterTagsEvent_.size());
253  LogTrace("TriggerSummaryProducerAOD") << "Number of unique filters requested " << nf;
254  const InputTagSet::const_iterator fb(filterTagsEvent_.begin());
255  const InputTagSet::const_iterator fe(filterTagsEvent_.end());
256  for ( InputTagSet::const_iterator fi=fb; fi!=fe; ++fi) {
257  LogTrace("TriggerSummaryProducerAOD") << distance(fb,fi) << " " << fi->encode();
258  }
259 
260  }
261 
267  toc_.clear();
268  tags_.clear();
269  keys_.clear();
270  offset_.clear();
271  fillTriggerObjectCollections< RecoEcalCandidateCollection>(iEvent, getRecoEcalCandidateCollection_);
272  fillTriggerObjectCollections< ElectronCollection>(iEvent, getElectronCollection_);
273  fillTriggerObjectCollections< RecoChargedCandidateCollection>(iEvent, getRecoChargedCandidateCollection_);
274  fillTriggerObjectCollections< CaloJetCollection>(iEvent, getCaloJetCollection_);
275  fillTriggerObjectCollections< CompositeCandidateCollection>(iEvent, getCompositeCandidateCollection_);
276  fillTriggerObjectCollections< METCollection>(iEvent, getMETCollection_);
277  fillTriggerObjectCollections< CaloMETCollection>(iEvent, getCaloMETCollection_);
278  fillTriggerObjectCollections<IsolatedPixelTrackCandidateCollection>(iEvent, getIsolatedPixelTrackCandidateCollection_);
280  fillTriggerObjectCollections< L1EmParticleCollection>(iEvent, getL1EmParticleCollection_);
281  fillTriggerObjectCollections< L1MuonParticleCollection>(iEvent, getL1MuonParticleCollection_);
282  fillTriggerObjectCollections< L1JetParticleCollection>(iEvent, getL1JetParticleCollection_);
283  fillTriggerObjectCollections< L1EtMissParticleCollection>(iEvent, getL1EtMissParticleCollection_);
284  fillTriggerObjectCollections< L1HFRingsCollection>(iEvent, getL1HFRingsCollection_);
285  fillTriggerObjectCollections< MuonBxCollection>(iEvent, getL1TMuonParticleCollection_);
286  fillTriggerObjectCollections< EGammaBxCollection>(iEvent, getL1TEGammaParticleCollection_);
287  fillTriggerObjectCollections< JetBxCollection>(iEvent, getL1TJetParticleCollection_);
288  fillTriggerObjectCollections< TauBxCollection>(iEvent, getL1TTauParticleCollection_);
289  fillTriggerObjectCollections< EtSumBxCollection>(iEvent, getL1TEtSumParticleCollection_);
291  fillTriggerObjectCollections< PFJetCollection>(iEvent, getPFJetCollection_);
292  fillTriggerObjectCollections< PFTauCollection>(iEvent, getPFTauCollection_);
293  fillTriggerObjectCollections< PFMETCollection>(iEvent, getPFMETCollection_);
295  const unsigned int nk(tags_.size());
296  LogDebug("TriggerSummaryProducerAOD") << "Number of collections found: " << nk;
297  const unsigned int no(toc_.size());
298  LogDebug("TriggerSummaryProducerAOD") << "Number of physics objects found: " << no;
299 
302  auto_ptr<TriggerEvent> product(new TriggerEvent(pn_,nk,no,nf));
303 
305  product->addCollections(tags_,keys_);
306  product->addObjects(toc_);
307 
309  for (unsigned int ifob=0; ifob!=nfob; ++ifob) {
310  if (maskFilters_[ifob]) {
311  const string& label (fobs[ifob].provenance()->moduleLabel());
312  const string& instance (fobs[ifob].provenance()->productInstanceName());
313  const string& process (fobs[ifob].provenance()->processName());
314  const edm::InputTag filterTag(label,instance,process);
315  ids_.clear();
316  keys_.clear();
317  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->photonIds() ,fobs[ifob]->photonRefs());
318  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->electronIds() ,fobs[ifob]->electronRefs());
319  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->muonIds() ,fobs[ifob]->muonRefs());
320  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->jetIds() ,fobs[ifob]->jetRefs());
321  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->compositeIds(),fobs[ifob]->compositeRefs());
322  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->basemetIds() ,fobs[ifob]->basemetRefs());
323  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->calometIds() ,fobs[ifob]->calometRefs());
324  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->pixtrackIds() ,fobs[ifob]->pixtrackRefs());
325  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->l1emIds() ,fobs[ifob]->l1emRefs());
326  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->l1muonIds() ,fobs[ifob]->l1muonRefs());
327  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->l1jetIds() ,fobs[ifob]->l1jetRefs());
328  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->l1etmissIds() ,fobs[ifob]->l1etmissRefs());
329  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->l1hfringsIds(),fobs[ifob]->l1hfringsRefs());
330  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->l1tmuonIds() ,fobs[ifob]->l1tmuonRefs());
331  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->l1tegammaIds(),fobs[ifob]->l1tegammaRefs());
332  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->l1tjetIds() ,fobs[ifob]->l1tjetRefs());
333  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->l1ttauIds() ,fobs[ifob]->l1ttauRefs());
334  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->l1tetsumIds() ,fobs[ifob]->l1tetsumRefs());
335  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->pfjetIds() ,fobs[ifob]->pfjetRefs());
336  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->pftauIds() ,fobs[ifob]->pftauRefs());
337  fillFilterObjectMembers(iEvent,filterTag,fobs[ifob]->pfmetIds() ,fobs[ifob]->pfmetRefs());
338  product->addFilter(filterTag,ids_,keys_);
339  }
340  }
341 
342  OrphanHandle<TriggerEvent> ref = iEvent.put(product);
343  LogTrace("TriggerSummaryProducerAOD") << "Number of physics objects packed: " << ref->sizeObjects();
344  LogTrace("TriggerSummaryProducerAOD") << "Number of filter objects packed: " << ref->sizeFilters();
345 
346 }
347 
348 template <typename C>
350 
354 
355  using namespace std;
356  using namespace edm;
357  using namespace reco;
358  using namespace l1extra;
359  using namespace trigger;
360  using namespace l1t;
361 
362  vector<Handle<C> > collections;
363  getter.fillHandles(iEvent, collections);
364  const unsigned int nc(collections.size());
365 
366  for (unsigned int ic=0; ic!=nc; ++ic) {
367  const Provenance& provenance(*(collections[ic].provenance()));
368  const string& label (provenance.moduleLabel());
369  const string& instance (provenance.productInstanceName());
370  const string& process (provenance.processName());
371  const InputTag collectionTag(label,instance,process);
372 
373  if (collectionTagsEvent_.find(collectionTag)!=collectionTagsEvent_.end()) {
374  const ProductID pid(collections[ic].provenance()->productID());
375  if (offset_.find(pid)!=offset_.end()) {
376  LogError("TriggerSummaryProducerAOD") << "Duplicate pid!";
377  }
378  offset_[pid]=toc_.size();
379  const unsigned int n(collections[ic]->size());
380  for (unsigned int i=0; i!=n; ++i) {
381  fillTriggerObject( (*collections[ic])[i] );
382  }
383  tags_.push_back(collectionTag.encode());
384  keys_.push_back(toc_.size());
385  }
386 
387  }
388 }
389 
390 template <typename T>
392 
393  using namespace trigger;
394  toc_.push_back( TriggerObject(object) );
395 
396  return;
397 }
398 
400 
401  using namespace l1extra;
402  using namespace trigger;
403 
405  object.hfEtSum(L1HFRings::kRing1PosEta),
406  object.hfEtSum(L1HFRings::kRing1NegEta),
407  object.hfEtSum(L1HFRings::kRing2PosEta),
408  object.hfEtSum(L1HFRings::kRing2NegEta) ) );
410  object.hfBitCount(L1HFRings::kRing1PosEta),
411  object.hfBitCount(L1HFRings::kRing1NegEta),
412  object.hfBitCount(L1HFRings::kRing2PosEta),
413  object.hfBitCount(L1HFRings::kRing2NegEta) ) );
414 
415  return;
416 }
417 
419 
420  using namespace l1extra;
421  using namespace trigger;
422 
423  toc_.push_back( TriggerObject(object) );
424  if (object.type()==L1EtMissParticle::kMET) {
425  toc_.push_back(TriggerObject(TriggerL1ETT,object.etTotal(),0.0,0.0,0.0));
426  } else if (object.type()==L1EtMissParticle::kMHT) {
427  toc_.push_back(TriggerObject(TriggerL1HTT,object.etTotal(),0.0,0.0,0.0));
428  } else {
429  toc_.push_back(TriggerObject(0, object.etTotal(),0.0,0.0,0.0));
430  }
431 
432  return;
433 }
434 
436 
437  using namespace reco;
438  using namespace trigger;
439 
440  toc_.push_back( TriggerObject(object) );
441  toc_.push_back(TriggerObject(TriggerTET ,object.sumEt() ,0.0,0.0,0.0));
442  toc_.push_back(TriggerObject(TriggerMETSig ,object.mEtSig() ,0.0,0.0,0.0));
443  toc_.push_back(TriggerObject(TriggerELongit,object.e_longitudinal(),0.0,0.0,0.0));
444 
445  return;
446 }
447 
449 
450  using namespace reco;
451  using namespace trigger;
452 
453  toc_.push_back( TriggerObject(object) );
454  toc_.push_back(TriggerObject(TriggerTET ,object.sumEt() ,0.0,0.0,0.0));
455  toc_.push_back(TriggerObject(TriggerMETSig ,object.mEtSig() ,0.0,0.0,0.0));
456  toc_.push_back(TriggerObject(TriggerELongit,object.e_longitudinal(),0.0,0.0,0.0));
457 
458  return;
459 }
460 
462 
463  using namespace reco;
464  using namespace trigger;
465 
466  toc_.push_back( TriggerObject(object) );
467  toc_.push_back(TriggerObject(TriggerTHT ,object.sumEt() ,0.0,0.0,0.0));
468  toc_.push_back(TriggerObject(TriggerMHTSig ,object.mEtSig() ,0.0,0.0,0.0));
469  toc_.push_back(TriggerObject(TriggerHLongit,object.e_longitudinal(),0.0,0.0,0.0));
470 
471  return;
472 }
473 
474 template <typename C>
475 void TriggerSummaryProducerAOD::fillFilterObjectMembers(const edm::Event& iEvent, const edm::InputTag& tag, const trigger::Vids& ids, const std::vector<edm::Ref<C> >& refs) {
476 
480 
481  using namespace std;
482  using namespace edm;
483  using namespace reco;
484  using namespace l1extra;
485  using namespace trigger;
486 
487  if (ids.size()!=refs.size()) {
488  LogError("TriggerSummaryProducerAOD") << "Vector length is different: "
489  << ids.size() << " " << refs.size();
490  }
491 
492  const unsigned int n(min(ids.size(),refs.size()));
493  for (unsigned int i=0; i!=n; ++i) {
494  const ProductID pid(refs[i].id());
495  if (!(pid.isValid())) {
496  LogError("TriggerSummaryProducerAOD")
497  << "Iinvalid pid: " << pid
498  << " FilterTag / Key: " << tag.encode()
499  << " / " << i << "of" << n
500  << " CollectionTag / Key: "
501  << " <Unrecoverable>"
502  << " / " << refs[i].key()
503  << " CollectionType: " << typeid(C).name();
504  } else if (offset_.find(pid)==offset_.end()) {
505  const string& label(iEvent.getProvenance(pid).moduleLabel());
506  const string& instance(iEvent.getProvenance(pid).productInstanceName());
507  const string& process(iEvent.getProvenance(pid).processName());
508  LogError("TriggerSummaryProducerAOD")
509  << "Uunknown pid: " << pid
510  << " FilterTag / Key: " << tag.encode()
511  << " / " << i << "of" << n
512  << " CollectionTag / Key: "
513  << InputTag(label,instance,process).encode()
514  << " / " << refs[i].key()
515  << " CollectionType: " << typeid(C).name();
516  } else {
517  fillFilterObjectMember(offset_[pid],ids[i],refs[i]);
518  }
519  }
520  return;
521 
522 }
523 
524 template <typename C>
525 void TriggerSummaryProducerAOD::fillFilterObjectMember(const int& offset, const int& id, const edm::Ref<C> & ref) {
526 
527  keys_.push_back(offset+ref.key());
528  ids_.push_back(id);
529 
530  return;
531 }
532 
534 
535  using namespace trigger;
536 
537  if (id==TriggerL1HfBitCounts) {
538  keys_.push_back(offset+2*ref.key()+1);
539  } else { // if (ids[i]==TriggerL1HfRingEtSums) {
540  keys_.push_back(offset+2*ref.key()+0);
541  }
542  ids_.push_back(id);
543 
544  return;
545 }
546 
548 
549  using namespace trigger;
550 
551  if ( (id==TriggerL1ETT) || (id==TriggerL1HTT) ) {
552  keys_.push_back(offset+2*ref.key()+1);
553  } else {
554  keys_.push_back(offset+2*ref.key()+0);
555  }
556  ids_.push_back(id);
557 
558  return;
559 }
560 
562 
563  using namespace trigger;
564 
565  if ( (id==TriggerTHT) || (id==TriggerTET) ) {
566  keys_.push_back(offset+4*ref.key()+1);
567  } else if ( (id==TriggerMETSig) || (id==TriggerMHTSig) ) {
568  keys_.push_back(offset+4*ref.key()+2);
569  } else if ( (id==TriggerELongit) || (id==TriggerHLongit) ) {
570  keys_.push_back(offset+4*ref.key()+3);
571  } else {
572  keys_.push_back(offset+4*ref.key()+0);
573  }
574  ids_.push_back(id);
575 
576  return;
577 }
578 
580 
581  using namespace trigger;
582 
583  if ( (id==TriggerTHT) || (id==TriggerTET) ) {
584  keys_.push_back(offset+4*ref.key()+1);
585  } else if ( (id==TriggerMETSig) || (id==TriggerMHTSig) ) {
586  keys_.push_back(offset+4*ref.key()+2);
587  } else if ( (id==TriggerELongit) || (id==TriggerHLongit) ) {
588  keys_.push_back(offset+4*ref.key()+3);
589  } else {
590  keys_.push_back(offset+4*ref.key()+0);
591  }
592  ids_.push_back(id);
593 
594  return;
595 }
596 
598 
599  using namespace trigger;
600 
601  if ( (id==TriggerTHT) || (id==TriggerTET) ) {
602  keys_.push_back(offset+4*ref.key()+1);
603  } else if ( (id==TriggerMETSig) || (id==TriggerMHTSig) ) {
604  keys_.push_back(offset+4*ref.key()+2);
605  } else if ( (id==TriggerELongit) || (id==TriggerHLongit) ) {
606  keys_.push_back(offset+4*ref.key()+3);
607  } else {
608  keys_.push_back(offset+4*ref.key()+0);
609  }
610  ids_.push_back(id);
611 
612  return;
613 }
614 
616  globalCache()->collectionTagsGlobal_.insert(collectionTagsStream_.begin(),collectionTagsStream_.end());
617  globalCache()->filterTagsGlobal_.insert(filterTagsStream_.begin(),filterTagsStream_.end());
618  return;
619 }
620 
622 
623  using namespace std;
624  using namespace edm;
625  using namespace trigger;
626 
627  LogVerbatim("TriggerSummaryProducerAOD") << endl;
628  LogVerbatim("TriggerSummaryProducerAOD") << "TriggerSummaryProducerAOD::globalEndJob - accumulated tags:" << endl;
629 
630  InputTagSet filterTags(false);
631  InputTagSet collectionTags(false);
632 
633  filterTags.insert(globalInputTags->filterTagsGlobal_.begin(),globalInputTags->filterTagsGlobal_.end());
634  collectionTags.insert(globalInputTags->collectionTagsGlobal_.begin(),globalInputTags->collectionTagsGlobal_.end());
635 
636  const unsigned int nc(collectionTags.size());
637  const unsigned int nf(filterTags.size());
638  LogVerbatim("TriggerSummaryProducerAOD") << " Overall number of Collections/Filters: "
639  << nc << "/" << nf << endl;
640 
641  LogVerbatim("TriggerSummaryProducerAOD") << " The collections: " << nc << endl;
642  const InputTagSet::const_iterator cb(collectionTags.begin());
643  const InputTagSet::const_iterator ce(collectionTags.end());
644  for ( InputTagSet::const_iterator ci=cb; ci!=ce; ++ci) {
645  LogVerbatim("TriggerSummaryProducerAOD") << " " << distance(cb,ci) << " " << ci->encode() << endl;
646  }
647 
648  LogVerbatim("TriggerSummaryProducerAOD") << " The filters:" << nf << endl;
649  const InputTagSet::const_iterator fb(filterTags.begin());
650  const InputTagSet::const_iterator fe(filterTags.end());
651  for ( InputTagSet::const_iterator fi=fb; fi!=fe; ++fi) {
652  LogVerbatim("TriggerSummaryProducerAOD") << " " << distance(fb,fi) << " " << fi->encode() << endl;
653  }
654 
655  LogVerbatim("TriggerSummaryProducerAOD") << "TriggerSummaryProducerAOD::endJob." << endl;
656  LogVerbatim("TriggerSummaryProducerAOD") << endl;
657 
658  return;
659 
660 }
#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()
edm::GetterOfProducts< l1t::TauBxCollection > getL1TTauParticleCollection_
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_
edm::GetterOfProducts< l1t::JetBxCollection > getL1TJetParticleCollection_
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:52
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:121
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 > > &)
edm::GetterOfProducts< l1t::MuonBxCollection > getL1TMuonParticleCollection_
#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:51
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:53
tuple process
Definition: LaserDQM_cfg.py:3
Provenance getProvenance(BranchID const &theID) const
Definition: Event.cc:80
long double T
tbb::concurrent_unordered_set< edm::InputTag, InputTagHash > collectionTagsGlobal_
edm::GetterOfProducts< l1t::EtSumBxCollection > getL1TEtSumParticleCollection_
tuple size
Write out results.
std::vector< int > Vids
edm::GetterOfProducts< l1extra::L1EmParticleCollection > getL1EmParticleCollection_
edm::GetterOfProducts< l1t::EGammaBxCollection > getL1TEGammaParticleCollection_