CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Attributes
pat::helper::BasicOverlapTest Class Reference

#include <OverlapTest.h>

Inheritance diagram for pat::helper::BasicOverlapTest:
pat::helper::OverlapTest

Public Member Functions

 BasicOverlapTest (const std::string &name, const edm::ParameterSet &iConfig, edm::ConsumesCollector &&iC)
 
bool fillOverlapsForItem (const reco::Candidate &item, reco::CandidatePtrVector &overlapsToFill) const override
 Check for overlaps. More...
 
void readInput (const edm::Event &iEvent, const edm::EventSetup &iSetup) override
 Read input, apply preselection cut. More...
 
- Public Member Functions inherited from pat::helper::OverlapTest
virtual void done ()
 end of event method. does nothing More...
 
const std::string & name () const
 
 OverlapTest (const std::string &name, const edm::ParameterSet &iConfig, edm::ConsumesCollector &iC)
 constructor: reads 'src' and 'requireNoOverlaps' parameters More...
 
bool requireNoOverlaps () const
 
virtual ~OverlapTest ()
 destructor, does nothing More...
 

Protected Attributes

edm::Handle< reco::CandidateViewcandidates_
 The collection to check overlaps against. More...
 
bool checkRecoComponents_
 Check the overlapping by RECO components. More...
 
double deltaR_
 Delta R for the match. More...
 
std::vector< bool > isPreselected_
 Flag saying if each element has passed the preselection or not. More...
 
StringCutObjectSelector< pat::DiObjectProxypairCut_
 Cut on the pair of objects together. More...
 
PATStringCutObjectSelector presel_
 A generic preselection cut that can work on any Candidate, but has access also to methods of PAT specific objects. More...
 
- Protected Attributes inherited from pat::helper::OverlapTest
std::string name_
 
bool requireNoOverlaps_
 
edm::EDGetTokenT< reco::CandidateViewsrcToken_
 

Detailed Description

Definition at line 44 of file OverlapTest.h.

Constructor & Destructor Documentation

pat::helper::BasicOverlapTest::BasicOverlapTest ( const std::string &  name,
const edm::ParameterSet iConfig,
edm::ConsumesCollector &&  iC 
)
inline

Definition at line 46 of file OverlapTest.h.

References pat::helper::OverlapTest::fillOverlapsForItem(), iEvent, and pat::helper::OverlapTest::readInput().

46  :
47  OverlapTest(name, iConfig, iC),
48  presel_(iConfig.getParameter<std::string>("preselection")),
49  deltaR_(iConfig.getParameter<double>("deltaR")),
50  checkRecoComponents_(iConfig.getParameter<bool>("checkRecoComponents")),
51  pairCut_(iConfig.getParameter<std::string>("pairCut")) {}
T getParameter(std::string const &) const
PATStringCutObjectSelector presel_
A generic preselection cut that can work on any Candidate, but has access also to methods of PAT spec...
Definition: OverlapTest.h:60
double deltaR_
Delta R for the match.
Definition: OverlapTest.h:62
const std::string & name() const
Definition: OverlapTest.h:36
bool checkRecoComponents_
Check the overlapping by RECO components.
Definition: OverlapTest.h:64
StringCutObjectSelector< pat::DiObjectProxy > pairCut_
Cut on the pair of objects together.
Definition: OverlapTest.h:66
OverlapTest(const std::string &name, const edm::ParameterSet &iConfig, edm::ConsumesCollector &iC)
constructor: reads &#39;src&#39; and &#39;requireNoOverlaps&#39; parameters
Definition: OverlapTest.h:21

Member Function Documentation

bool BasicOverlapTest::fillOverlapsForItem ( const reco::Candidate item,
reco::CandidatePtrVector overlapsToFill 
) const
overridevirtual

Check for overlaps.

Implements pat::helper::OverlapTest.

Definition at line 23 of file OverlapTest.cc.

References edm::View< T >::begin(), candidates_, checkRecoComponents_, reco::deltaR(), deltaR_, runTauDisplay::dr, edm::View< T >::end(), training_settings::idx, isPreselected_, patRefSel_triggerMatching_cfi::matches, analyzePatCleaning_cfg::overlaps, pairCut_, edm::View< T >::ptrAt(), edm::PtrVector< T >::push_back(), and jetUpdater_cfi::sort.

24 {
25  size_t idx = 0;
26  std::vector<std::pair<float,size_t> > matches;
27  for (reco::CandidateView::const_iterator it = candidates_->begin(); it != candidates_->end(); ++it, ++idx) {
28  if (!isPreselected_[idx]) continue;
29  double dr = reco::deltaR(item, *it);
30  if (dr < deltaR_) {
33  if (!overlaps(item, *it)) continue;
34  }
35  if (!pairCut_(pat::DiObjectProxy(item,*it))) continue;
36  matches.push_back(std::make_pair(dr, idx));
37  }
38  }
39  // see if we matched anything
40  if (matches.empty()) return false;
41 
42  // sort matches
43  std::sort(matches.begin(), matches.end());
44  // fill ptr vector
45  for (std::vector<std::pair<float,size_t> >::const_iterator it = matches.begin(); it != matches.end(); ++it) {
46  overlapsToFill.push_back(candidates_->ptrAt(it->second));
47  }
48  return true;
49 }
Ptr< value_type > ptrAt(size_type i) const
void push_back(Ptr< T > const &iPtr)
Definition: PtrVector.h:140
const_iterator begin() const
edm::Handle< reco::CandidateView > candidates_
The collection to check overlaps against.
Definition: OverlapTest.h:69
std::vector< bool > isPreselected_
Flag saying if each element has passed the preselection or not.
Definition: OverlapTest.h:71
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:28
double deltaR_
Delta R for the match.
Definition: OverlapTest.h:62
bool checkRecoComponents_
Check the overlapping by RECO components.
Definition: OverlapTest.h:64
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
const_iterator end() const
StringCutObjectSelector< pat::DiObjectProxy > pairCut_
Cut on the pair of objects together.
Definition: OverlapTest.h:66
void BasicOverlapTest::readInput ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overridevirtual

Read input, apply preselection cut.

Implements pat::helper::OverlapTest.

Definition at line 10 of file OverlapTest.cc.

References edm::View< T >::begin(), candidates_, edm::View< T >::end(), edm::Event::getByToken(), training_settings::idx, isPreselected_, presel_, edm::View< T >::size(), and pat::helper::OverlapTest::srcToken_.

Referenced by parserPerfsuiteMetadata.parserPerfsuiteMetadata::readCmsScimarkTest().

11 {
13  isPreselected_.resize(candidates_->size());
14  size_t idx = 0;
15  for (reco::CandidateView::const_iterator it = candidates_->begin(); it != candidates_->end(); ++it, ++idx) {
16  isPreselected_[idx] = presel_(*it);
17  }
18  // Yes, I could use std::transform. But would people like it?
19  // http://www.sgi.com/tech/stl/transform.html
20 }
edm::EDGetTokenT< reco::CandidateView > srcToken_
Definition: OverlapTest.h:39
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
size_type size() const
PATStringCutObjectSelector presel_
A generic preselection cut that can work on any Candidate, but has access also to methods of PAT spec...
Definition: OverlapTest.h:60
const_iterator begin() const
edm::Handle< reco::CandidateView > candidates_
The collection to check overlaps against.
Definition: OverlapTest.h:69
std::vector< bool > isPreselected_
Flag saying if each element has passed the preselection or not.
Definition: OverlapTest.h:71
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
const_iterator end() const

Member Data Documentation

edm::Handle<reco::CandidateView> pat::helper::BasicOverlapTest::candidates_
protected

The collection to check overlaps against.

Definition at line 69 of file OverlapTest.h.

Referenced by fillOverlapsForItem(), and readInput().

bool pat::helper::BasicOverlapTest::checkRecoComponents_
protected

Check the overlapping by RECO components.

Definition at line 64 of file OverlapTest.h.

Referenced by fillOverlapsForItem().

double pat::helper::BasicOverlapTest::deltaR_
protected

Delta R for the match.

Definition at line 62 of file OverlapTest.h.

Referenced by fillOverlapsForItem().

std::vector<bool> pat::helper::BasicOverlapTest::isPreselected_
protected

Flag saying if each element has passed the preselection or not.

Definition at line 71 of file OverlapTest.h.

Referenced by fillOverlapsForItem(), and readInput().

StringCutObjectSelector<pat::DiObjectProxy> pat::helper::BasicOverlapTest::pairCut_
protected

Cut on the pair of objects together.

Definition at line 66 of file OverlapTest.h.

Referenced by fillOverlapsForItem().

PATStringCutObjectSelector pat::helper::BasicOverlapTest::presel_
protected

A generic preselection cut that can work on any Candidate, but has access also to methods of PAT specific objects.

Definition at line 60 of file OverlapTest.h.

Referenced by readInput().