CMS 3D CMS Logo

CandidateWithRef.h
Go to the documentation of this file.
1 #ifndef Candidate_CandidateWithRef_h
2 #define Candidate_CandidateWithRef_h
3 
14 
15 namespace reco {
16 
17  template <typename Ref>
19  public:
20  typedef Ref reference;
24  CandidateWithRef(const LorentzVector &p4, Charge q = 0, const Point &vtx = Point(0, 0, 0))
25  : LeafCandidate(q, p4, vtx) {}
27  ~CandidateWithRef() override;
29  CandidateWithRef *clone() const override;
31  void setRef(const Ref &r) { ref_ = r; }
33  reference ref() const { return ref_; }
34 
36 
37  private:
39  bool overlap(const Candidate &) const override;
42  };
43 
44  // the following has to be added for any single Ref type
45  // GET_DEFAULT_CANDIDATE_COMPONENT( CandidateWithRef<Ref>, CandidateWithRef<Ref>::reference, ref )
46 
47  template <typename Ref>
49 
50  template <typename Ref>
52  return new CandidateWithRef<Ref>(*this);
53  }
54 
55  template <typename Ref>
57  const CandidateWithRef *o = dynamic_cast<const CandidateWithRef *>(&c);
58  if (o == nullptr)
59  return false;
60  if (ref().isNull())
61  return false;
62  if (o->ref().isNull())
63  return false;
64  return (ref() != o->ref());
65  }
66 
67 } // namespace reco
68 
69 #endif
reco::LeafCandidate::Point
math::XYZPoint Point
point in the space
Definition: LeafCandidate.h:27
reco::Candidate::Charge
int Charge
electric charge type
Definition: Candidate.h:34
reco::CandidateWithRef::CandidateWithRef
CandidateWithRef()
default constructor
Definition: CandidateWithRef.h:22
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:46
reco::CandidateWithRef
Definition: CandidateWithRef.h:18
watchdog.const
const
Definition: watchdog.py:83
EcalTangentSkim_cfg.o
o
Definition: EcalTangentSkim_cfg.py:42
reco::CandidateWithRef::overlap
bool overlap(const Candidate &) const override
check overlap with another candidate
Definition: CandidateWithRef.h:56
reco::CandidateWithRef::reference
Ref reference
Definition: CandidateWithRef.h:20
LeafCandidate.h
reco::CandidateWithRef::~CandidateWithRef
~CandidateWithRef() override
destructor
Definition: CandidateWithRef.h:48
CMS_CLASS_VERSION
#define CMS_CLASS_VERSION(_version_)
Definition: CMS_CLASS_VERSION.h:30
RefToBase.h
reco::CandidateWithRef::setRef
void setRef(const Ref &r)
set reference
Definition: CandidateWithRef.h:31
Point
Structure Point Contains parameters of Gaussian fits to DMRs.
Definition: DMRtrends.cc:57
reco::CandidateWithRef::ref
reference ref() const
reference
Definition: CandidateWithRef.h:33
reco::LeafCandidate::p4
const LorentzVector & p4() const final
four-momentum Lorentz vector
Definition: LeafCandidate.h:114
submitPVResolutionJobs.q
q
Definition: submitPVResolutionJobs.py:84
svgfig.template
def template(fileName, svg, replaceme="REPLACEME")
Definition: svgfig.py:521
reco::CandidateWithRef::ref_
reference ref_
reference to a CaloRecHit
Definition: CandidateWithRef.h:41
reco::Candidate
Definition: Candidate.h:27
alignCSCRings.r
r
Definition: alignCSCRings.py:93
extraflags_cff.vtx
vtx
Definition: extraflags_cff.py:19
reco::JetExtendedAssociation::Ref
edm::Ref< Container > Ref
Definition: JetExtendedAssociation.h:32
reco::LeafCandidate
Definition: LeafCandidate.h:16
Candidate.h
reco::CandidateWithRef::clone
CandidateWithRef * clone() const override
returns a clone of the candidate
Definition: CandidateWithRef.h:51
reco::Candidate::LorentzVector
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:36
c
auto & c
Definition: CAHitNtupletGeneratorKernelsImpl.h:56
reco::CandidateWithRef::CandidateWithRef
CandidateWithRef(const LorentzVector &p4, Charge q=0, const Point &vtx=Point(0, 0, 0))
constructor from values
Definition: CandidateWithRef.h:24