1 #ifndef Candidate_Candidate_h
2 #define Candidate_Candidate_h
16 #include "boost/iterator/filter_iterator.hpp"
62 virtual int charge()
const = 0;
79 virtual double p()
const = 0;
81 virtual double energy()
const = 0;
83 virtual double et()
const = 0;
85 virtual float mass()
const = 0;
87 virtual float massSqr()
const = 0;
89 virtual double mt()
const = 0;
91 virtual double mtSqr()
const = 0;
93 virtual double px()
const = 0;
95 virtual double py()
const = 0;
97 virtual double pz()
const = 0;
99 virtual float pt()
const = 0;
101 virtual float phi()
const = 0;
103 virtual double theta()
const = 0;
105 virtual float eta()
const = 0;
107 virtual double rapidity()
const = 0;
109 virtual double y()
const = 0;
115 virtual void setMass(
double m ) = 0;
116 virtual void setPz(
double pz ) = 0;
120 virtual double vx()
const = 0;
122 virtual double vy()
const = 0;
124 virtual double vz()
const = 0;
128 virtual int pdgId()
const = 0;
132 virtual int status()
const = 0;
215 template<
typename Ref>
219 template<
typename T>
T get()
const {
221 else return reco::get<T>( * this );
224 template<
typename T,
typename Tag>
T get()
const {
226 else return reco::get<T, Tag>( * this );
231 else return reco::get<T>( *
this,
i );
236 else return reco::get<T, Tag>( *
this,
i );
241 else return reco::numberOf<T>( * this );
246 else return reco::numberOf<T, Tag>( * this );
251 typedef boost::filter_iterator<S, const_iterator>
type;
256 return boost::make_filter_iterator(s,
begin(),
end());
260 return boost::make_filter_iterator(s,
end(),
end());
266 virtual bool isMuon()
const = 0;
273 virtual bool isJet()
const = 0;
278 template<
typename,
typename,
typename>
friend struct component;
279 friend class ::OverlapChecker;
value_type const * get() const
int Charge
electric charge type
daughter_iterator< S >::type endFilter(const S &s) const
virtual double energy() const =0
energy
virtual const Candidate * daughter(size_type i) const =0
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
edm::Ref< Container > Ref
virtual bool isJet() const =0
virtual float mass() const =0
mass
math::XYZVector Vector
point in the space
virtual void setSourceCandidatePtr(const CandidatePtr &ptr)
Set the ptr to the source Candidate.
virtual void fillVertexCovariance(CovarianceMatrix &v) const =0
virtual const Candidate * mother(size_type i=0) const =0
return pointer to mother
virtual bool isConvertedPhoton() const =0
virtual void setP4(const LorentzVector &p4)=0
set 4-momentum
virtual const Track * bestTrack() const
virtual double et() const =0
transverse energy
candidate::const_iterator const_iterator
virtual float eta() const =0
momentum pseudorapidity
virtual CandidatePtr sourceCandidatePtr(size_type i) const
virtual int threeCharge() const =0
electric charge
virtual int status() const =0
status word
virtual size_type numberOfMothers() const =0
number of mothers (zero or one in most of but not all the cases)
virtual double pz() const =0
z coordinate of momentum vector
virtual void setMassConstraint()=0
set mass constraint flag
virtual bool massConstraint() const =0
do mass constraint?
virtual double vx() const =0
x coordinate of vertex position
virtual const CandidatePtr & masterClonePtr() const =0
virtual float phi() const =0
momentum azimuthal angle
virtual double y() const =0
rapidity
virtual double rapidity() const =0
rapidity
virtual const PolarLorentzVector & polarP4() const =0
four-momentum Lorentz vector
virtual void setPdgId(int pdgId)=0
virtual double vy() const =0
y coordinate of vertex position
virtual bool isPhoton() const =0
PtEtaPhiMLorentzVectorD PtEtaPhiMLorentzVector
Lorentz vector with cartesian internal representation.
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
virtual size_type numberOfDaughters() const =0
number of daughters
virtual double p() const =0
magnitude of momentum vector
virtual bool hasMasterClone() const =0
virtual bool isCaloMuon() const =0
virtual Vector momentum() const =0
spatial momentum vector
virtual float pt() const =0
transverse momentum
Ref masterRef() const
cast master clone reference to a concrete type
virtual double mt() const =0
transverse mass
virtual const_iterator end() const =0
last daughter const_iterator
virtual double theta() const =0
momentum polar angle
virtual double vertexChi2() const =0
chi-squares
virtual bool isStandAloneMuon() const =0
virtual void setVertex(const Point &vertex)=0
set vertex
virtual const Point & vertex() const =0
vertex position
virtual int charge() const =0
electric charge
virtual void setPz(double pz)=0
size_type numberOf() const
number of components
virtual double py() const =0
y coordinate of momentum vector
virtual void setStatus(int status)=0
set status word
size_type numberOf() const
number of components
virtual double vertexNormalizedChi2() const =0
chi-squared divided by n.d.o.f.
virtual void setThreeCharge(Charge qx3)=0
set electric charge
virtual void setLongLived()=0
set long lived flag
virtual double px() const =0
x coordinate of momentum vector
boost::filter_iterator< S, const_iterator > type
virtual bool hasMasterClonePtr() const =0
virtual int pdgId() const =0
PDG identifier.
virtual Candidate * clone() const =0
returns a clone of the Candidate object
candidate::iterator iterator
unsigned int index
index type
edm::Ptr< Candidate > CandidatePtr
persistent reference to an object in a collection of Candidate objects
virtual bool isMuon() const =0
virtual ~Candidate()
destructor
Candidate()
default constructor
XYZVectorD XYZVector
spatial vector with cartesian internal representation
XYZPointD XYZPoint
point in space with cartesian internal representation
virtual CovarianceMatrix vertexCovariance() const
fill SMatrix
virtual double mtSqr() const =0
transverse mass squared
math::XYZTLorentzVector LorentzVector
Lorentz vector.
virtual float massSqr() const =0
mass squared
virtual double vz() const =0
z coordinate of vertex position
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< float > > LorentzVector
virtual const_iterator begin() const =0
first daughter const_iterator
math::XYZPoint Point
point in the space
virtual bool longLived() const =0
is long lived?
virtual bool overlap(const Candidate &) const =0
check overlap with another Candidate
virtual bool isElectron() const =0
virtual bool isTrackerMuon() const =0
math::Error< dimension >::type CovarianceMatrix
covariance error matrix (3x3)
virtual void setCharge(Charge q)=0
set electric charge
virtual size_t numberOfSourceCandidatePtrs() const =0
virtual Vector boostToCM() const =0
virtual void setMass(double m)=0
set particle mass
daughter_iterator< S >::type beginFilter(const S &s) const
virtual double vertexNdof() const =0
virtual const LorentzVector & p4() const =0
four-momentum Lorentz vector
virtual bool isGlobalMuon() const =0
virtual const CandidateBaseRef & masterClone() const =0
math::PtEtaPhiMLorentzVector PolarLorentzVector
Lorentz vector.