1 #ifndef EgammaCandidates_Photon_h 2 #define EgammaCandidates_Photon_h 92 bool isPhoton()
const override {
return true; }
220 if (
ss.pre7DepthHcal) {
222 return ss.hcalDepth1OverEcal +
ss.hcalDepth2OverEcal;
224 return ss.hcalDepth1OverEcal;
226 return ss.hcalDepth2OverEcal;
230 const auto& hovere =
ss.hcalOverEcal;
231 return (!(
depth > 0 and
depth < 8)) ? std::accumulate(std::begin(hovere), std::end(hovere), 0.
f)
240 if (
ss.pre7DepthHcal) {
242 return ss.hcalDepth1OverEcalBc +
ss.hcalDepth2OverEcalBc;
244 return ss.hcalDepth1OverEcalBc;
246 return ss.hcalDepth2OverEcalBc;
250 const auto& hovere =
ss.hcalOverEcalBc;
251 return (!(
depth > 0 and
depth < 8)) ? std::accumulate(std::begin(hovere), std::end(hovere), 0.
f)
460 if (
iv.pre7DepthHcal) {
462 return iv.hcalTowerSumEt;
464 return iv.hcalDepth1TowerSumEt;
466 return iv.hcalDepth2TowerSumEt;
470 const auto& hcaliso =
iv.hcalRecHitSumEt;
471 return (!(
depth > 0 and
depth < 8)) ? std::accumulate(std::begin(hcaliso), std::end(hcaliso), 0.
f)
472 : hcaliso[
depth - 1];
478 if (
iv.pre7DepthHcal) {
480 return iv.hcalTowerSumEtBc;
482 return iv.hcalDepth1TowerSumEtBc;
484 return iv.hcalDepth2TowerSumEtBc;
488 const auto& hcaliso =
iv.hcalRecHitSumEtBc;
489 return (!(
depth > 0 and
depth < 8)) ? std::accumulate(std::begin(hcaliso), std::end(hcaliso), 0.
f)
490 : 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
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