82 : doEtSum_(
config.getParameter<
bool>(
"doEtSum")),
87 innerCone_(
config.getParameter<double>(
"innerCone")),
88 outerCone_(
config.getParameter<double>(
"outerCone")),
89 depth_(
config.getParameter<
int>(
"depth")),
90 maxSeverityHB_(
config.getParameter<
int>(
"maxSeverityHB")),
91 maxSeverityHE_(
config.getParameter<
int>(
"maxSeverityHE")),
92 useSingleTower_(
config.getParameter<
bool>(
"useSingleTower")),
93 doRhoCorrection_(
config.getParameter<
bool>(
"doRhoCorrection")),
94 rhoScale_(
config.getParameter<double>(
"rhoScale")),
95 rhoMax_(
config.getParameter<double>(
"rhoMax")),
96 effectiveAreas_(
config.getParameter<
std::
vector<double> >(
"effectiveAreas")),
97 absEtaLowEdges_(
config.getParameter<
std::
vector<double> >(
"absEtaLowEdges")),
98 recoEcalCandidateProducer_(consumes(
config.getParameter<
edm::
InputTag>(
"recoEcalCandidateProducer"))),
100 rhoProducer_(doRhoCorrection_ ? consumes<double>(
config.getParameter<
edm::
InputTag>(
"rhoProducer"))
101 :
edm::EDGetTokenT<double>()),
107 putToken_{produces<reco::RecoEcalCandidateIsolationMap>()},
109 config.getParameter<
bool>(
"usePFThresholdsFromDB")) {
110 if (doRhoCorrection_) {
111 if (absEtaLowEdges_.size() != effectiveAreas_.size()) {
112 throw cms::Exception(
"IncompatibleVects") <<
"absEtaLowEdges and effectiveAreas should be of the same size. \n";
115 if (absEtaLowEdges_.at(0) != 0.0) {
116 throw cms::Exception(
"IncompleteCoverage") <<
"absEtaLowEdges should start from 0. \n";
119 for (
unsigned int aIt = 0; aIt < absEtaLowEdges_.size() - 1; aIt++) {
120 if (!(absEtaLowEdges_.at(aIt) < absEtaLowEdges_.at(aIt + 1))) {
121 throw cms::Exception(
"ImproperBinning") <<
"absEtaLowEdges entries should be in increasing order. \n";
127 hcalCutsToken_ = esConsumes<HcalPFCuts, HcalPFCutsRcd, edm::Transition::BeginRun>(
edm::ESInputTag(
"",
"withTopo"));
137 desc.add<
bool>(
"doRhoCorrection",
false);
138 desc.add<
double>(
"rhoMax", 999999.);
139 desc.add<
double>((
"rhoScale"), 1.0);
141 desc.add<std::vector<double> >(
"eThresHB", {0.1, 0.2, 0.3, 0.3});
142 desc.add<std::vector<double> >(
"etThresHB", {0, 0, 0, 0});
143 desc.add<std::vector<double> >(
"eThresHE", {0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2});
144 desc.add<std::vector<double> >(
"etThresHE", {0, 0, 0, 0, 0, 0, 0});
145 desc.add<
bool>(
"usePFThresholdsFromDB",
true);
146 desc.add<
double>(
"innerCone", 0);
147 desc.add<
double>(
"outerCone", 0.14);
148 desc.add<
int>(
"depth", 0);
149 desc.add<
int>(
"maxSeverityHB", 9);
150 desc.add<
int>(
"maxSeverityHE", 9);
151 desc.add<
bool>(
"doEtSum",
false);
152 desc.add<
bool>(
"useSingleTower",
false);
153 desc.add<std::vector<double> >(
"effectiveAreas", {0.079, 0.25});
154 desc.add<std::vector<double> >(
"absEtaLowEdges", {0.0, 1.479});
155 descriptions.
add(
"hltEgammaHLTHcalVarProducerFromRecHit",
desc);
181 for (
unsigned int iRecoEcalCand = 0; iRecoEcalCand < recoEcalCandHandle->size(); iRecoEcalCand++) {
234 auto scEta =
std::abs(recoEcalCandRef->superCluster()->eta());
244 isoMap.
insert(recoEcalCandRef, isol);
const edm::ESGetToken< HcalSeverityLevelComputer, HcalSeverityLevelComputerRcd > hcalSevLvlComputerToken_
const bool doRhoCorrection_
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
void beginRun(edm::Run const &, edm::EventSetup const &)
const edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeometryToken_
double getHcalESumBc(const reco::Candidate *c, int depth, const HcalPFCuts *hcalCuts) const
const edm::EDGetTokenT< double > rhoProducer_
HcalPFCuts const * hcalCuts
const bool useSingleTower_
double getHcalEtSumBc(const reco::Candidate *c, int depth, const HcalPFCuts *hcalCuts) const
EgammaHLTHcalVarProducerFromRecHit(const edm::ParameterSet &)
void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const final
const edm::ESGetToken< CaloTowerConstituentsMap, CaloGeometryRecord > caloTowerConstituentsMapToken_
const edm::ESGetToken< HcalChannelQuality, HcalChannelQualityRcd > hcalChannelQualityToken_
Abs< T >::type abs(const T &t)
#define DEFINE_FWK_MODULE(type)
const EgammaHcalIsolation::arrayHB eThresHB_
double getHcalESum(const reco::Candidate *c, int depth, const HcalPFCuts *hcalCuts) const
const EgammaHcalIsolation::arrayHE etThresHE_
const std::vector< double > effectiveAreas_
const EgammaHcalIsolation::arrayHB etThresHB_
const std::vector< double > absEtaLowEdges_
const edm::EDGetTokenT< HBHERecHitCollection > hbheRecHitsTag_
const edm::EDGetTokenT< reco::RecoEcalCandidateCollection > recoEcalCandidateProducer_
void insert(const key_type &k, const data_type &v)
insert an association
void add(std::string const &label, ParameterSetDescription const &psetDescription)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
edm::ESGetToken< HcalPFCuts, HcalPFCutsRcd > hcalCutsToken_
double getHcalEtSum(const reco::Candidate *c, int depth, const HcalPFCuts *hcalCuts) const
T const * get() const
Returns C++ pointer to the item.
const EgammaHcalIsolation::arrayHE eThresHE_
std::array< double, 4 > arrayHB
const edm::ESGetToken< HcalTopology, HcalRecNumberingRecord > hcalTopologyToken_
const edm::EDPutTokenT< reco::RecoEcalCandidateIsolationMap > putToken_
std::array< double, 7 > arrayHE