1 #ifndef EgammaCandidates_Photon_h 2 #define EgammaCandidates_Photon_h 95 bool isPhoton()
const override {
return true; }
223 if (
ss.pre7DepthHcal) {
225 return ss.hcalDepth1OverEcal +
ss.hcalDepth2OverEcal;
227 return ss.hcalDepth1OverEcal;
229 return ss.hcalDepth2OverEcal;
233 const auto& hovere =
ss.hcalOverEcal;
234 return (!(
depth > 0 and
depth < 8)) ? std::accumulate(std::begin(hovere), std::end(hovere), 0.
f)
243 if (
ss.pre7DepthHcal) {
245 return ss.hcalDepth1OverEcalBc +
ss.hcalDepth2OverEcalBc;
247 return ss.hcalDepth1OverEcalBc;
249 return ss.hcalDepth2OverEcalBc;
253 const auto& hovere =
ss.hcalOverEcalBc;
254 return (!(
depth > 0 and
depth < 8)) ? std::accumulate(std::begin(hovere), std::end(hovere), 0.
f)
463 if (
iv.pre7DepthHcal) {
465 return iv.hcalTowerSumEt;
467 return iv.hcalDepth1TowerSumEt;
469 return iv.hcalDepth2TowerSumEt;
473 const auto& hcaliso =
iv.hcalRecHitSumEt;
474 return (!(
depth > 0 and
depth < 8)) ? std::accumulate(std::begin(hcaliso), std::end(hcaliso), 0.
f)
475 : hcaliso[
depth - 1];
481 if (
iv.pre7DepthHcal) {
483 return iv.hcalTowerSumEtBc;
485 return iv.hcalDepth1TowerSumEtBc;
487 return iv.hcalDepth2TowerSumEtBc;
491 const auto& hcaliso =
iv.hcalRecHitSumEtBc;
492 return (!(
depth > 0 and
depth < 8)) ? std::accumulate(std::begin(hcaliso), std::end(hcaliso), 0.
f)
493 : hcaliso[
depth - 1];
float hcalOverEcalBc(const ShowerShape &ss, int depth) const
the ratio of total energy of hcal rechits behind the SC and the SC energy
bool hasPixelSeed() const
Bool flagging photons having a non-zero size vector of Ref to electornPixel seeds.
MIPVariables mipVariableBlock_
void setPflowIsolationVariables(const PflowIsolationVariables &pfisol)
Set Particle Flow Isolation variables.
float full5x5_hadTowOverEm(int depth=0) const
float hcalDepth1TowerSumEtBc
float trkSumPtSolidConeDR03() const
SaturationInfo saturationInfo_
Photon * clone() const override
returns a clone of the candidate
float hcalDepth1TowerSumEt
void setMIPVariables(const MIPVariables &mipVar)
set mip Variables
float hcalOverEcal(const ShowerShape &ss, int depth) const
the total hadronic over electromagnetic fraction
float getCorrectedEnergy(P4type type) const
reco::ConversionRefVector conversionsOneLeg() const
vector of references to one leg Conversion's
ShowerShape full5x5_showerShapeBlock_
std::array< float, 7 > hcalRecHitSumEtBc
PflowIsolationVariables pfIsolation_
float full5x5_hadronicOverEm(int depth=0) const
float hcalPFClusterIso() const
float sigmaEtaEta() const
std::vector< CaloTowerDetId > hcalTowersBehindClusters
float hcalTowerSumEtConeDR03(int depth=0) const
Hcal isolation sum for each depth excluding the region containing the rechits used for hcalOverEcal()...
void setCandidateP4type(const P4type type)
reco::ConversionRefVector conversions() const
vector of references to Conversion's
void setCorrectedEnergy(P4type type, float E, float dE, bool toCand=true)
const ShowerShape & full5x5_showerShapeVariables() const
const ShowerShape & showerShapeVariables() const
float chargedHadronWorstVtxGeomVetoIso() const
float full5x5_maxEnergyXtal() const
float ecalRecHitSumEtConeDR04() const
reco::SuperClusterRef parentSuperCluster() const
Ref to PFlow SuperCluster.
float hcalDepth2OverEcalBc
float full5x5_r2x5() const
float hcalTowerSumEtBcConeDR03(int depth=0) const
Hcal isolation sum for each depth excluding the region containing the rechits used for hcalOverEcalBc...
const std::vector< CaloTowerDetId > & hcalTowersBehindClusters() const
int conversionTrackProvenance(const edm::RefToBase< reco::Track > &convTrack) const
float chargedHadronWorstVtxGeomVetoIso
float e1x5() const
Shower shape variables.
float full5x5_r1x5() const
bool overlap(const Candidate &) const override
check overlap with another candidate
float maxEnergyXtal() const
float chargedHadronWorstVtxIso() const
void setSaturationInfo(const SaturationInfo &s)
const Point & vertex() const override
vertex position (overwritten by PF...)
float chargedHadronWorstVtxIso
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float > > XYZPointF
point in space with cartesian internal representation
std::array< float, 7 > hcalOverEcalBc
float regression2EnergyError
float hcalDepth2TowerSumEt
void setHaloTaggerMVAVal(float x)
set the haloTaggerMVAVal here
int nTrkHollowConeDR03() const
IsolationVariables isolationR03_
const LorentzVector & p4() const final
four-momentum Lorentz vector
Photon()
default constructor
void setVertex(const Point &vertex) override
set primary event vertex used to define photon direction
float nSaturatedXtals() const
bool isPFlowPhoton() const
Retrieve photonCore attributes.
math::XYZPointF caloPosition_
position of seed BasicCluster for shower depth of unconverted photon
Photon & operator=(const Photon &)=default
assignment operator
P4type getCandidateP4type() const
bool isPhoton() const override
Implement Candidate method for particle species.
float trkSumPtSolidConeDR04() const
LorentzVector regression2P4
IsolationVariables isolationR04_
bool hadTowOverEmValid() const
void setPhotonCore(const reco::PhotonCoreRef &photonCore)
float hcalTowerSumEtBc(const IsolationVariables &iv, int depth) const
Hcal isolation sum for each depth excluding the region containing the rechits used for hcalOverEcalBc...
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
float hcalTowerSumEtConeDR04(int depth=0) const
float sigmaIetaIeta() const
PflowIsolationVariables()
void setEnergyCorrections(const EnergyCorrections &e)
float hcalOverEcal(int depth=0) const
const SaturationInfo & saturationInfo() const
float chargedHadronIso() const
Accessors for Particle Flow Isolation variables.
void setPflowIDVariables(const PflowIDVariables &pfid)
float mipChi2() const
MIP variables.
EnergyCorrections eCorrections_
float full5x5_sigmaIetaIeta() const
reco::ElectronSeedRefVector electronPixelSeeds() const
reference to electron Pixel seed
float getCorrectedEnergyError(P4type type) const
float mipTotEnergy() const
float hcalTowerSumEtBcConeDR04(int depth=0) const
void hcalToRun2EffDepth()
float haloTaggerMVAVal() const
MVA based beam halo tagger - trained for EE and for pT > 200 GeV.
math::XYZTLorentzVector LorentzVector
void setShowerShapeVariables(const ShowerShape &a)
float ecalRecHitSumEtConeDR03() const
Isolation variables in cone dR=0.3.
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...
bool isEEGap() const
true if photon is in EE, and inside the boundaries in supercrystal/D
float hcalTowerSumEt(const IsolationVariables &iv, int depth) const
Hcal isolation sum for each depth excluding the region containing the rechits used for hcalOverEcal()...
float trkSumPtHollowConeDR03() const
float full5x5_hcalOverEcalBc(int depth=0) const
the ratio of total energy of hcal rechits behind the SC and the SC energy
~Photon() override
destructor
float full5x5_sigmaEtaEta() const
FiducialFlags fiducialFlagBlock_
float hadTowOverEm(int depth=0) const
bool hadronicOverEmValid() const
returns false if H/E is not reliably estimated (e.g. because hcal was off or masked) ...
float hcalDepth2TowerSumEtBc
reco::PhotonCoreRef photonCore() const
returns a reference to the core photon object
int nTrkSolidConeDR04() const
float trkSumPtHollowConeDR04() const
LorentzVector regression1P4
float hadronicOverEm(int depth=0) const
float regression1EnergyError
float hcalDepth1OverEcalBc
float full5x5_e2x5() const
float ecalPFClusterIso() const
std::array< float, 7 > hcalOverEcal
int nTrkSolidConeDR03() const
float full5x5_hcalOverEcal(int depth=0) const
the total hadronic over electromagnetic fraction
bool hasConversionTracks() const
Bool flagging photons with a vector of refereces to conversions with size >0.
void setFiducialVolumeFlags(const FiducialFlags &a)
set flags for photons in the ECAL fiducial volume
bool isStandardPhoton() const
std::array< float, 7 > hcalRecHitSumEt
math::XYZTLorentzVector LorentzVector
Lorentz vector.
bool isEBGap() const
true if photon is in EB, and inside the boundaries in super crystals/modules
float chargedHadronPFPVIso
void full5x5_setShowerShapeVariables(const ShowerShape &a)
float etOutsideMustache() const
Structure Point Contains parameters of Gaussian fits to DMRs.
float chargedHadronPFPVIso() const
const EnergyCorrections & energyCorrections() const
float isSeedSaturated() const
int nClusterOutsideMustache() const
float mipIntercept() const
int nTrkHollowConeDR04() const
ShowerShape showerShapeBlock_
const PflowIsolationVariables & getPflowIsolationVariables() const
Get Particle Flow Isolation variables block.
reco::PhotonCoreRef photonCore_
reference to the PhotonCore
float full5x5_e1x5() const
full5x5 Shower shape variables
float neutralHadronIso() const
void setP4(const LorentzVector &p4) final
set 4-momentum
float hcalOverEcalBc(int depth=0) const
int nClusterOutsideMustache
bool isEBEEGap() const
true if photon is in boundary between EB and EE
void setIsolationVariables(const IsolationVariables &isolInDr04, const IsolationVariables &isolInDr03)
set relevant isolation variables
void setP4(P4type type, const LorentzVector &p4, float p4Error, bool setToRecoCandidate)
static constexpr float mvaPlaceholder
math::XYZPoint Point
point in the space
float full5x5_e5x5() const
float full5x5_e3x3() const