34 template <
typename T1>
72 template <
typename T1>
74 : pfClusterProducerHCAL_(
76 rhoProducer_(consumes<double>(config.getParameter<edm::
InputTag>(
"rhoProducer"))),
77 pfClusterProducerHFEM_(
79 pfClusterProducerHFHAD_(
81 useHF_(config.getParameter<bool>(
"useHF")),
82 drMax_(config.getParameter<double>(
"drMax")),
83 drVetoBarrel_(config.getParameter<double>(
"drVetoBarrel")),
84 drVetoEndcap_(config.getParameter<double>(
"drVetoEndcap")),
85 etaStripBarrel_(config.getParameter<double>(
"etaStripBarrel")),
86 etaStripEndcap_(config.getParameter<double>(
"etaStripEndcap")),
87 energyBarrel_(config.getParameter<double>(
"energyBarrel")),
88 energyEndcap_(config.getParameter<double>(
"energyEndcap")),
89 useEt_(config.getParameter<bool>(
"useEt")),
90 doRhoCorrection_(config.getParameter<bool>(
"doRhoCorrection")),
91 rhoMax_(config.getParameter<double>(
"rhoMax")),
92 rhoScale_(config.getParameter<double>(
"rhoScale")),
93 effectiveAreas_(config.getParameter<std::
vector<double>>(
"effectiveAreas")),
94 absEtaLowEdges_(config.getParameter<std::
vector<double>>(
"absEtaLowEdges")) {
97 throw cms::Exception(
"IncompatibleVects") <<
"absEtaLowEdges and effectiveAreas should be of the same size. \n";
100 throw cms::Exception(
"IncompleteCoverage") <<
"absEtaLowEdges should start from 0. \n";
104 throw cms::Exception(
"ImproperBinning") <<
"absEtaLowEdges entries should be in increasing order. \n";
108 std::string recoCandidateProducerName =
"recoCandidateProducer";
111 recoCandidateProducerName =
"recoEcalCandidateProducer";
114 produces<T1IsolationMap>();
117 template <
typename T1>
120 template <
typename T1>
122 std::string recoCandidateProducerName =
"recoCandidateProducer";
125 recoCandidateProducerName =
"recoEcalCandidateProducer";
133 "pfClusterProducerHFEM",
edm::InputTag(
"hltParticleFlowClusterHFEM"),
true) and
135 "pfClusterProducerHFHAD",
edm::InputTag(
"hltParticleFlowClusterHFHAD"),
true))
or
139 desc.
add<
bool>(
"doRhoCorrection",
false);
140 desc.
add<
double>(
"rhoMax", 9.9999999E7);
141 desc.
add<
double>(
"rhoScale", 1.0);
142 desc.
add<
double>(
"drMax", 0.3);
143 desc.
add<
double>(
"drVetoBarrel", 0.0);
144 desc.
add<
double>(
"drVetoEndcap", 0.0);
145 desc.
add<
double>(
"etaStripBarrel", 0.0);
146 desc.
add<
double>(
"etaStripEndcap", 0.0);
147 desc.
add<
double>(
"energyBarrel", 0.0);
148 desc.
add<
double>(
"energyEndcap", 0.0);
149 desc.
add<
bool>(
"useEt",
true);
150 desc.
add<std::vector<double>>(
"effectiveAreas", {0.2, 0.25});
151 desc.
add<std::vector<double>>(
"absEtaLowEdges", {0.0, 1.479});
155 template <
typename T1>
161 if (doRhoCorrection_) {
169 rho = rho * rhoScale_;
173 std::vector<edm::Handle<reco::PFClusterCollection>> clusterHandles;
178 iEvent.
getByToken(recoCandidateProducer_, recoCandHandle);
179 iEvent.
getByToken(pfClusterProducerHCAL_, clusterHcalHandle);
181 clusterHandles.push_back(clusterHcalHandle);
184 iEvent.
getByToken(pfClusterProducerHFEM_, clusterHfemHandle);
185 clusterHandles.push_back(clusterHfemHandle);
186 iEvent.
getByToken(pfClusterProducerHFHAD_, clusterHfhadHandle);
187 clusterHandles.push_back(clusterHfhadHandle);
192 drMax_, drVetoBarrel_, drVetoEndcap_, etaStripBarrel_, etaStripEndcap_, energyBarrel_, energyEndcap_, useEt_);
194 for (
unsigned int iReco = 0; iReco < recoCandHandle->size(); iReco++) {
195 T1Ref candRef(recoCandHandle, iReco);
197 float sum = isoAlgo.
getSum(candRef, clusterHandles);
199 if (doRhoCorrection_) {
201 auto cEta =
std::abs(candRef->eta());
202 for (
int bIt = absEtaLowEdges_.size() - 1; bIt > -1; bIt--) {
203 if (cEta > absEtaLowEdges_.at(bIt)) {
209 sum = sum - rho * effectiveAreas_.at(iEA);
212 recoCandMap.
insert(candRef, sum);
215 iEvent.
put(std::make_unique<T1IsolationMap>(recoCandMap));
ParameterDescriptionNode * ifValue(ParameterDescription< T > const &switchParameter, std::unique_ptr< ParameterDescriptionCases< T >> cases)
const double drVetoEndcap_
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
bool getByToken(EDGetToken token, Handle< PROD > &result) const
void produce(edm::StreamID sid, edm::Event &, const edm::EventSetup &) const override
#define DEFINE_FWK_MODULE(type)
const double drVetoBarrel_
edm::AssociationMap< edm::OneToValue< std::vector< T1 >, float > > T1IsolationMap
std::string defaultModuleLabel()
const edm::EDGetTokenT< double > rhoProducer_
const std::vector< double > effectiveAreas_
const edm::EDGetTokenT< reco::PFClusterCollection > pfClusterProducerHFHAD_
const bool doRhoCorrection_
const edm::EDGetTokenT< reco::PFClusterCollection > pfClusterProducerHCAL_
std::vector< T1 > T1Collection
Abs< T >::type abs(const T &t)
HLTHcalPFClusterIsolationProducer< reco::RecoEcalCandidate > EgammaHLTHcalPFClusterIsolationProducer
ParameterDescriptionBase * add(U const &iLabel, T const &value)
double getSum(const T1Ref candRef, const std::vector< edm::Handle< reco::PFClusterCollection >> &clusterHandles)
std::vector< l1t::PFCluster > PFClusterCollection
edm::EDGetTokenT< T1Collection > recoCandidateProducer_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
T const * product() const
void insert(const key_type &k, const data_type &v)
insert an association
edm::Ref< T1Collection > T1Ref
T getParameter(std::string const &) const
void add(std::string const &label, ParameterSetDescription const &psetDescription)
const std::vector< double > absEtaLowEdges_
tuple config
parse the configuration file
const double energyEndcap_
const double etaStripEndcap_
const edm::EDGetTokenT< reco::PFClusterCollection > pfClusterProducerHFEM_
~HLTHcalPFClusterIsolationProducer() override
HLTHcalPFClusterIsolationProducer(const edm::ParameterSet &)
const double etaStripBarrel_
const double energyBarrel_
HLTHcalPFClusterIsolationProducer< reco::RecoChargedCandidate > MuonHLTHcalPFClusterIsolationProducer