30 std::vector<int>
const& flagsEB,
31 std::vector<int>
const& flagsEE,
32 std::vector<int>
const& severitiesEB,
33 std::vector<int>
const& severitiesEE,
43 if (not hbhetag.label().empty())
152 bool isEBPho =
false;
153 bool isEEPho =
false;
154 bool isEBEtaGap =
false;
155 bool isEBPhiGap =
false;
156 bool isEERingGap =
false;
157 bool isEEDeeGap =
false;
158 bool isEBEEGap =
false;
159 classify(pho, isEBPho, isEEPho, isEBEtaGap, isEBPhiGap, isEERingGap, isEEDeeGap, isEBEEGap);
160 phofid.
isEB = isEBPho;
161 phofid.
isEE = isEEPho;
183 double photonEcalRecHitConeInnerRadiusA_;
184 double photonEcalRecHitConeOuterRadiusA_;
185 double photonEcalRecHitEtaSliceA_;
186 double photonEcalRecHitThreshEA_;
187 double photonEcalRecHitThreshEtA_;
188 double trackConeOuterRadiusA_;
189 double trackConeInnerRadiusA_;
190 double isolationtrackThresholdA_;
191 double isolationtrackEtaSliceA_;
192 double trackLipRadiusA_;
193 double trackD0RadiusA_;
194 double photonEcalRecHitConeInnerRadiusB_;
195 double photonEcalRecHitConeOuterRadiusB_;
196 double photonEcalRecHitEtaSliceB_;
197 double photonEcalRecHitThreshEB_;
198 double photonEcalRecHitThreshEtB_;
199 double trackConeOuterRadiusB_;
200 double trackConeInnerRadiusB_;
201 double isolationtrackThresholdB_;
202 double isolationtrackEtaSliceB_;
203 double trackLipRadiusB_;
204 double trackD0RadiusB_;
269 isolationtrackThresholdA_,
270 trackConeOuterRadiusA_,
271 trackConeInnerRadiusA_,
272 isolationtrackEtaSliceA_,
283 isolationtrackThresholdA_,
284 trackConeOuterRadiusA_,
286 isolationtrackEtaSliceA_,
302 isolationtrackThresholdB_,
303 trackConeOuterRadiusB_,
304 trackConeInnerRadiusB_,
305 isolationtrackEtaSliceB_,
316 isolationtrackThresholdB_,
317 trackConeOuterRadiusB_,
319 isolationtrackEtaSliceB_,
334 photonEcalRecHitConeOuterRadiusA_,
335 photonEcalRecHitConeInnerRadiusA_,
336 photonEcalRecHitEtaSliceA_,
337 photonEcalRecHitThreshEA_,
338 photonEcalRecHitThreshEtA_,
346 photonEcalRecHitConeOuterRadiusB_,
347 photonEcalRecHitConeInnerRadiusB_,
348 photonEcalRecHitEtaSliceB_,
349 photonEcalRecHitThreshEB_,
350 photonEcalRecHitThreshEtB_,
361 &hcalTopo = *hcalTopology,
362 &hcalQual = *hcalChannelQuality,
363 &hcalSev = *hcalSevLvlComputer,
366 return calculateHcalRecHitIso<false>(
373 &hcalTopo = *hcalTopology,
374 &hcalQual = *hcalChannelQuality,
375 &hcalSev = *hcalSevLvlComputer,
378 return calculateHcalRecHitIso<true>(
416 double eta =
photon->superCluster()->position().eta();
422 if (fabs(
feta - 1.479) < .1)
434 if (fabs(
feta - 1.479) < .1)
468 vertexBeamSpot = *recoBeamSpotHandle;
480 ntrkCone =
res.first;
481 trkCone =
res.second;
492 bool vetoClusteredHits,
493 bool useNumXtals)
const {
508 RCone, RConeInner, etaSlice,
etMin,
eMin, geoHandle, *rechitsCollectionEB_, sevLevel,
DetId::Ecal);
517 RCone, RConeInner, etaSlice,
etMin,
eMin, geoHandle, *rechitsCollectionEE_, sevLevel,
DetId::Ecal);
526 double ecalIsol = ecalIsolEB + ecalIsolEE;
531 template <
bool isoBC>
545 if constexpr (isoBC) {
std::array< double, 7 > hcalIsoInnerRadBEB_
std::vector< int > flagsEE_
T getParameter(std::string const &) const
std::array< double, 6 > trkIsoBarrelRadiusA_
static bool isNextToEtaBoundary(EBDetId id)
const std::vector< std::pair< DetId, float > > & hitsAndFractions() const
std::array< float, 7 > hcalRecHitSumEtBc
double modulePhiBoundary_
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
EgammaHcalIsolation::arrayHE hcalIsoEThresHE_
edm::EDGetToken barrelecalCollection_
edm::EDGetToken endcapecalCollection_
T const * product() const
edm::ESGetToken< EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd > ecalSevLvlToken_
std::vector< Track > TrackCollection
collection of Tracks
double calculateHcalRecHitIso(const reco::Photon *photon, const CaloGeometry &geometry, const HcalTopology &hcalTopology, const HcalChannelQuality &hcalChStatus, const HcalSeverityLevelComputer &hcalSevLvlComputer, const CaloTowerConstituentsMap &towerMap, const HBHERecHitCollection &hbheRecHits, double RCone, double RConeInner, int depth) const
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeometryToken_
std::vector< int > severityExclEE_
void doFlagChecks(const std::vector< int > &v)
double x0() const
x coordinate
edm::EDGetTokenT< HBHERecHitCollection > hbheRecHitsTag_
void setUseNumCrystals(bool b=true)
std::vector< int > flagsEB_
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
std::pair< int, float > getIso(const reco::Candidate *) const
std::vector< int > severityExclEB_
std::array< double, 7 > hcalIsoOuterRadAEE_
void setup(const edm::ParameterSet &conf, std::vector< int > const &flagsEB_, std::vector< int > const &flagsEE_, std::vector< int > const &severitiesEB_, std::vector< int > const &severitiesEE_, edm::ConsumesCollector &&iC)
std::array< double, 7 > hcalIsoInnerRadAEE_
static bool isNextToPhiBoundary(EBDetId id)
std::array< double, 7 > hcalIsoOuterRadBEE_
double getEtSum(const reco::Candidate *emObject) const
static bool isNextToRingBoundary(EEDetId id)
std::array< double, 5 > ecalIsoEndcapRadiusB_
void calculateTrackIso(const reco::Photon *photon, const edm::Event &e, double &trkCone, int &ntrkCone, double pTThresh=0, double RCone=.4, double RinnerCone=.1, double etaSlice=0.015, double lip=0.2, double d0=0.1) const
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
double y0() const
y coordinate
std::array< double, 7 > hcalIsoOuterRadAEB_
static bool isNextToDBoundary(EEDetId id)
edm::EDGetToken trackInputTag_
std::array< double, 6 > trkIsoEndcapRadiusB_
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
void doSeverityChecks(const EcalRecHitCollection *const recHits, const std::vector< int > &v)
void calculate(const reco::Photon *, const edm::Event &, const edm::EventSetup &es, reco::Photon::FiducialFlags &phofid, reco::Photon::IsolationVariables &phoisolR03, reco::Photon::IsolationVariables &phoisolR04) const
EgammaHcalIsolation::arrayHB hcalIsoEThresHB_
cc *****************************************************cc the common blocks pinput and cwdidth are for input parameters cc these parameters needed to be interfaced to other program common pinput fbc
static constexpr float d0
edm::ESGetToken< HcalChannelQuality, HcalChannelQualityRcd > hcalChannelQualityToken_
std::array< double, 5 > ecalIsoBarrelRadiusB_
std::array< double, 5 > ecalIsoEndcapRadiusA_
edm::ESGetToken< CaloTowerConstituentsMap, CaloGeometryRecord > towerMapToken_
std::array< double, 6 > trkIsoBarrelRadiusB_
XYZPointD XYZPoint
point in space with cartesian internal representation
double calculateEcalRecHitIso(const reco::Photon *photon, const edm::Event &iEvent, const edm::EventSetup &iSetup, double RCone, double RConeInner, double etaSlice, double eMin, double etMin, bool vetoClusteredHits, bool useNumCrystals) const
std::array< float, 7 > hcalRecHitSumEt
std::array< double, 5 > ecalIsoBarrelRadiusA_
double z0() const
z coordinate
edm::ESGetToken< HcalTopology, HcalRecNumberingRecord > hcalTopologyToken_
std::vector< double > moduleEtaBoundary_
void setVetoClustered(bool b=true)
edm::ESGetToken< HcalSeverityLevelComputer, HcalSeverityLevelComputerRcd > hcalSevLvlComputerToken_
edm::EDGetToken beamSpotProducerTag_
std::array< double, 7 > hcalIsoInnerRadBEE_
std::array< double, 4 > arrayHB
static void classify(const reco::Photon *photon, bool &isEBPho, bool &isEEPho, bool &isEBEtaGap, bool &isEBPhiGap, bool &isEERingGap, bool &isEEDeeGap, bool &isEBEEGap)
std::array< double, 7 > hcalIsoOuterRadBEB_
std::array< double, 7 > hcalIsoInnerRadAEB_
std::array< double, 6 > trkIsoEndcapRadiusA_
bool vetoClusteredEcalHits_
std::array< double, 7 > arrayHE