12 caloPosition_( caloPos ),
20 caloPosition_(rhs.caloPosition_),
21 photonCore_ ( rhs.photonCore_),
22 pixelSeed_ ( rhs.pixelSeed_ ),
23 fiducialFlagBlock_ ( rhs.fiducialFlagBlock_ ),
24 isolationR04_ ( rhs.isolationR04_),
25 isolationR03_ ( rhs.isolationR03_),
26 showerShapeBlock_ ( rhs.showerShapeBlock_),
27 eCorrections_(rhs.eCorrections_),
28 mipVariableBlock_ (rhs.mipVariableBlock_),
29 pfIsolation_ ( rhs.pfIsolation_ )
38 return new Photon( *
this );
69 bool isEg=
false, isPf=
false;
71 for (
unsigned iConv=0; iConv<conv2leg.
size(); iConv++){
72 std::vector<edm::RefToBase<reco::Track> > convtracks = conv2leg[iConv]->tracks();
73 for (
unsigned itk=0; itk<convtracks.size(); itk++){
74 if (convTrack==convtracks[itk]) isEg=
true;
78 for (
unsigned iConv=0; iConv<conv1leg.
size(); iConv++){
79 std::vector<edm::RefToBase<reco::Track> > convtracks = conv1leg[iConv]->tracks();
80 for (
unsigned itk=0; itk<convtracks.size(); itk++){
81 if (convTrack==convtracks[itk]) isPf=
true;
86 if (isPf) origin=
pflow;
87 if (isEg && isPf) origin=
both;
96 newP4 *= newEnergy/newP4.e() ;
117 setP4(type, newP4, delta_e, setToRecoCandidate);
139 throw cms::Exception(
"reco::Photon")<<
"unexpected p4 type " << type <<
" cannot return the energy value: " ;
159 throw cms::Exception(
"reco::Photon")<<
"unexpected p4 type " << type <<
" cannot return the uncertainty on the energy: " ;
188 if (setToRecoCandidate)
205 default:
throw cms::Exception(
"reco::Photon")<<
"unexpected p4 type: "<< type <<
" cannot return p4 ";
bool checkOverlap(const R &r1, const R &r2) const
check if two components overlap
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double > > XYZTLorentzVectorD
Lorentz vector with cylindrical internal representation using pseudorapidity.
virtual const Point & vertex() const
vertex position
virtual Photon * clone() const
returns a clone of the candidate
virtual Vector momentum() const
spatial momentum vector
reco::SuperClusterRef superCluster() const
Ref to SuperCluster.
float regression2EnergyError
Point vertex_
vertex position
Photon()
default constructor
float getCorrectedEnergy(P4type type) const
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
LorentzVector regression2P4
reco::PhotonCoreRef photonCore() const
returns a reference to the core photon object
virtual double energy() const
energy
virtual bool overlap(const Candidate &) const
check overlap with another candidate
EnergyCorrections eCorrections_
void setCorrectedEnergy(P4type type, float E, float dE, bool toCand=true)
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< float > > XYZVectorF
spatial vector with cartesian internal representation
float getCorrectedEnergyError(P4type type) const
math::XYZPointF caloPosition() const
position in ECAL: this is th SC position if r9<0.93. If r8>0.93 is position of seed BasicCluster taki...
void setP4(P4type type, const LorentzVector &p4, float p4Error, bool setToRecoCandidate)
LorentzVector regression1P4
float regression1EnergyError
math::XYZTLorentzVector LorentzVector
Lorentz vector.
virtual ~Photon()
destructor
size_type size() const
Size of the RefVector.
math::XYZPoint Point
point in the space
virtual const LorentzVector & p4() const
four-momentum Lorentz vector
virtual reco::SuperClusterRef superCluster() const
reference to a SuperCluster
void setVertex(const Point &vertex)
set primary event vertex used to define photon direction
int conversionTrackProvenance(const edm::RefToBase< reco::Track > &convTrack) const