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 full5x5_showerShapeBlock_ ( rhs.full5x5_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 ";
virtual Photon * clone() const
returns a clone of the candidate
bool checkOverlap(const R &r1, const R &r2) const
check if two components overlap
void setVertex(const Point &vertex)
set primary event vertex used to define photon direction
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double > > XYZTLorentzVectorD
Lorentz vector with cylindrical internal representation using pseudorapidity.
reco::SuperClusterRef superCluster() const
Ref to SuperCluster.
void setCorrectedEnergy(P4type type, float E, float dE, bool toCand=true)
virtual ~Photon()
destructor
virtual const Point & vertex() const
vertex position (overwritten by PF...)
virtual Vector momentum() const
spatial momentum vector
float regression2EnergyError
int conversionTrackProvenance(const edm::RefToBase< reco::Track > &convTrack) const
Photon()
default constructor
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
virtual bool overlap(const Candidate &) const
check overlap with another candidate
LorentzVector regression2P4
reco::PhotonCoreRef photonCore() const
returns a reference to the core photon object
virtual double energy() const
energy
EnergyCorrections eCorrections_
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< float > > XYZVectorF
spatial vector with cartesian internal representation
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...
virtual void setVertex(const Point &vertex)
set vertex
float getCorrectedEnergyError(P4type type) const
LorentzVector regression1P4
float regression1EnergyError
math::XYZTLorentzVector LorentzVector
Lorentz vector.
float getCorrectedEnergy(P4type type) const
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< float > > LorentzVector
size_type size() const
Size of the RefVector.
volatile std::atomic< bool > shutdown_flag false
virtual const LorentzVector & p4() const
four-momentum Lorentz vector
void setP4(P4type type, const LorentzVector &p4, float p4Error, bool setToRecoCandidate)
virtual reco::SuperClusterRef superCluster() const
reference to a SuperCluster