test
CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions
OverlapChecker Class Reference

#include <OverlapChecker.h>

Public Member Functions

bool operator() (const reco::Candidate &, const reco::Candidate &) const
 return true if two candidates overlap More...
 

Detailed Description

Functor that checks the overlap of two Candidate objects

Author
Luca Lista, INFN

Definition at line 17 of file OverlapChecker.h.

Member Function Documentation

bool OverlapChecker::operator() ( const reco::Candidate c1,
const reco::Candidate c2 
) const

return true if two candidates overlap

Definition at line 5 of file OverlapChecker.cc.

References reco::Candidate::begin(), reco::Candidate::end(), reco::Candidate::hasMasterClone(), reco::Candidate::masterClone(), reco::Candidate::numberOfDaughters(), and reco::Candidate::overlap().

5  {
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:146
const_iterator begin() const
first daughter const_iterator
Definition: Candidate.h:144
virtual bool overlap(const Candidate &) const =0
check overlap with another Candidate
virtual const CandidateBaseRef & masterClone() const =0