11 caloPosition_( caloPos ),
19 caloPosition_(rhs.caloPosition_),
20 photonCore_ ( rhs.photonCore_),
21 pixelSeed_ ( rhs.pixelSeed_ ),
22 fiducialFlagBlock_ ( rhs.fiducialFlagBlock_ ),
23 isolationR04_ ( rhs.isolationR04_),
24 isolationR03_ ( rhs.isolationR03_),
25 showerShapeBlock_ ( rhs.showerShapeBlock_),
26 eCorrections_(rhs.eCorrections_),
27 mipVariableBlock_ (rhs.mipVariableBlock_),
28 pfIsolation_ ( rhs.pfIsolation_ )
37 return new Photon( *
this );
68 bool isEg=
false, isPf=
false;
70 for (
unsigned iConv=0; iConv<conv2leg.
size(); iConv++){
71 std::vector<edm::RefToBase<reco::Track> > convtracks = conv2leg[iConv]->tracks();
72 for (
unsigned itk=0; itk<convtracks.size(); itk++){
73 if (convTrack==convtracks[itk]) isEg=
true;
77 for (
unsigned iConv=0; iConv<conv1leg.
size(); iConv++){
78 std::vector<edm::RefToBase<reco::Track> > convtracks = conv1leg[iConv]->tracks();
79 for (
unsigned itk=0; itk<convtracks.size(); itk++){
80 if (convTrack==convtracks[itk]) isPf=
true;
85 if (isPf) origin=
pflow;
86 if (isEg && isPf) origin=
both;
95 newP4 *= newEnergy/newP4.e() ;
116 setP4(type, newP4, delta_e, setToRecoCandidate);
138 throw cms::Exception(
"reco::Photon")<<
"unexpected p4 type " << type <<
" cannot return the energy value: " ;
158 throw cms::Exception(
"reco::Photon")<<
"unexpected p4 type " << type <<
" cannot return the uncertainty on the energy: " ;
187 if (setToRecoCandidate)
204 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 (overwritten by PF...)
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
volatile std::atomic< bool > shutdown_flag false
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