23 rhoProducer_ ( consumes<double>(config.getParameter<edm::
InputTag>(
"rhoProducer"))),
26 useHF_ ( config.getParameter<bool>(
"useHF")),
27 drMax_ ( config.getParameter<double>(
"drMax")),
28 drVetoBarrel_ ( config.getParameter<double>(
"drVetoBarrel")),
29 drVetoEndcap_ ( config.getParameter<double>(
"drVetoEndcap")),
30 etaStripBarrel_ ( config.getParameter<double>(
"etaStripBarrel")),
31 etaStripEndcap_ ( config.getParameter<double>(
"etaStripEndcap")),
32 energyBarrel_ ( config.getParameter<double>(
"energyBarrel")),
33 energyEndcap_ ( config.getParameter<double>(
"energyEndcap")),
34 doRhoCorrection_ ( config.getParameter<bool>(
"doRhoCorrection")),
35 rhoMax_ ( config.getParameter<double>(
"rhoMax")),
36 rhoScale_ ( config.getParameter<double>(
"rhoScale")),
37 effectiveAreaBarrel_ ( config.getParameter<double>(
"effectiveAreaBarrel")),
38 effectiveAreaEndcap_ ( config.getParameter<double>(
"effectiveAreaEndcap")),
39 useEt_ ( config.getParameter<bool>(
"useEt")) {
41 std::string recoCandidateProducerName =
"recoCandidateProducer";
45 produces <T1IsolationMap >();
55 std::string recoCandidateProducerName =
"recoCandidateProducer";
67 desc.
add<
bool>(
"doRhoCorrection",
false);
68 desc.
add<
double>(
"rhoMax", 9.9999999E7);
69 desc.
add<
double>(
"rhoScale", 1.0);
70 desc.
add<
double>(
"effectiveAreaBarrel", 0.101);
71 desc.
add<
double>(
"effectiveAreaEndcap", 0.046);
72 desc.
add<
double>(
"drMax", 0.3);
73 desc.
add<
double>(
"drVetoBarrel", 0.0);
74 desc.
add<
double>(
"drVetoEndcap", 0.0);
75 desc.
add<
double>(
"etaStripBarrel", 0.0);
76 desc.
add<
double>(
"etaStripEndcap", 0.0);
77 desc.
add<
double>(
"energyBarrel", 0.0);
78 desc.
add<
double>(
"energyEndcap", 0.0);
79 desc.
add<
bool>(
"useEt",
true);
88 if (doRhoCorrection_) {
100 std::vector<edm::Handle<reco::PFClusterCollection>> clusterHandles;
105 iEvent.
getByToken(recoCandidateProducer_,recoCandHandle);
106 iEvent.
getByToken(pfClusterProducerHCAL_, clusterHcalHandle);
108 clusterHandles.push_back(clusterHcalHandle);
111 iEvent.
getByToken(pfClusterProducerHFEM_, clusterHfemHandle);
112 clusterHandles.push_back(clusterHfemHandle);
113 iEvent.
getByToken(pfClusterProducerHFHAD_, clusterHfhadHandle);
114 clusterHandles.push_back(clusterHfhadHandle);
118 HcalPFClusterIsolation<T1> isoAlgo(drMax_, drVetoBarrel_, drVetoEndcap_, etaStripBarrel_, etaStripEndcap_, energyBarrel_, energyEndcap_, useEt_);
120 for (
unsigned int iReco = 0; iReco < recoCandHandle->size(); iReco++) {
121 T1Ref candRef(recoCandHandle, iReco);
123 float sum = isoAlgo.
getSum(candRef, clusterHandles);
125 if (doRhoCorrection_) {
126 if (fabs(candRef->eta()) < 1.479)
127 sum = sum - rho*effectiveAreaBarrel_;
129 sum = sum - rho*effectiveAreaEndcap_;
132 recoCandMap.
insert(candRef, sum);
135 std::auto_ptr<T1IsolationMap> mapForEvent(
new T1IsolationMap(recoCandMap));
136 iEvent.
put(mapForEvent);
T getParameter(std::string const &) const
std::string defaultModuleLabel()
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)
~HLTHcalPFClusterIsolationProducer()
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
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)
edm::EDGetTokenT< T1Collection > recoCandidateProducer_
ParameterDescriptionNode * ifValue(ParameterDescription< T > const &switchParameter, std::auto_ptr< ParameterDescriptionCases< T > > cases)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
T const * product() const
void insert(const key_type &k, const data_type &v)
insert an association
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::vector< PFCluster > PFClusterCollection
collection of PFCluster objects
HLTHcalPFClusterIsolationProducer(const edm::ParameterSet &)
HLTHcalPFClusterIsolationProducer< reco::RecoChargedCandidate > MuonHLTHcalPFClusterIsolationProducer