CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
OverlapChecker.cc
Go to the documentation of this file.
3 using namespace reco;
4 
5 bool OverlapChecker::operator()(const Candidate& c1, const Candidate& c2) const {
6  typedef Candidate::const_iterator iterator;
7  if (c1.numberOfDaughters() == 0) {
8  if (c2.numberOfDaughters() == 0) {
9  if (c2.hasMasterClone())
10  return c1.overlap(*(c2.masterClone()));
11  else
12  return c1.overlap(c2);
13  }
14  iterator b2 = c2.begin(), e2 = c2.end();
15  for (iterator i2 = b2; i2 != e2; ++i2) {
16  if (operator()(c1, *i2)) {
17  return true;
18  }
19  }
20  return false;
21  }
22  iterator b1 = c1.begin(), e1 = c1.end();
23  for (iterator i1 = b1; i1 != e1; ++i1) {
24  if (operator()(*i1, c2)) {
25  return true;
26  }
27  }
28  return false;
29 }
virtual size_type numberOfDaughters() const =0
number of daughters
virtual bool hasMasterClone() const =0
const_iterator end() const
last daughter const_iterator
Definition: Candidate.h:145
const_iterator begin() const
first daughter const_iterator
Definition: Candidate.h:143
static constexpr float b2
virtual bool overlap(const Candidate &) const =0
check overlap with another Candidate
static constexpr float b1
bool operator()(const reco::Candidate &, const reco::Candidate &) const
return true if two candidates overlap
virtual const CandidateBaseRef & masterClone() const =0