81 jetPtThreshold_(iConfig.getParameter<double>(
"jetPtThreshold")),
82 jetEtaThreshold_(iConfig.getParameter<double>(
"jetEtaThreshold")),
83 hfTowerEtaWidth_(iConfig.getParameter<double>(
"hfTowerEtaWidth")),
84 hfTowerPhiWidth_(iConfig.getParameter<double>(
"hfTowerPhiWidth")),
85 vertexRecoEffcy_(iConfig.getParameter<double>(
"vertexRecoEffcy")),
86 offsetPerPU_(iConfig.getParameter<double>(
"offsetPerPU")),
87 jetReferenceRadius_(iConfig.getParameter<double>(
"jetReferenceRadius")),
88 stripPtThreshold_(iConfig.getParameter<double>(
"stripPtThreshold")),
89 widthPtThreshold_(iConfig.getParameter<double>(
"widthPtThreshold")) {
90 produces<edm::ValueMap<float>>(
"sigmaEtaEta");
91 produces<edm::ValueMap<float>>(
"sigmaPhiPhi");
92 produces<edm::ValueMap<int>>(
"centralEtaStripSize");
93 produces<edm::ValueMap<int>>(
"adjacentEtaStripsSize");
111 std::vector<float> v_sigmaEtaEta, v_sigmaPhiPhi;
112 v_sigmaEtaEta.reserve(theJets->size());
113 v_sigmaPhiPhi.reserve(theJets->size());
114 std::vector<int> v_size_CentralEtaStrip, v_size_AdjacentEtaStrips;
115 v_size_CentralEtaStrip.reserve(theJets->size());
116 v_size_AdjacentEtaStrips.reserve(theJets->size());
122 for (
auto const&
jet : *theJets) {
123 double pt_jet =
jet.pt();
124 double eta_jet =
jet.eta();
128 v_sigmaEtaEta.push_back(-1.);
129 v_sigmaPhiPhi.push_back(-1.);
130 v_size_CentralEtaStrip.push_back(0);
131 v_size_AdjacentEtaStrips.push_back(0);
134 double sumptPFcands = 0.;
136 for (
unsigned i = 0;
i <
jet.numberOfSourceCandidatePtrs(); ++
i) {
141 double pt_PUsub = icand->
pt() - puoffset;
144 sumptPFcands += pt_PUsub;
148 int size_CentralEtaStrip(0.), size_AdjacentEtaStrips(0.);
149 double sigmaEtaEtaSq(0.), sigmaPhiPhiSq(0.);
150 double sumweightsPFcands = 0;
151 for (
unsigned i = 0;
i <
jet.numberOfSourceCandidatePtrs(); ++
i) {
159 double pt_PUsub = icand->
pt() - puoffset;
164 size_CentralEtaStrip++;
166 size_AdjacentEtaStrips++;
171 double weight = pt_PUsub / sumptPFcands;
172 sigmaEtaEtaSq += deta * deta *
weight;
173 sigmaPhiPhiSq += dphi * dphi *
weight;
174 sumweightsPFcands +=
weight;
178 v_size_CentralEtaStrip.push_back(size_CentralEtaStrip);
179 v_size_AdjacentEtaStrips.push_back(size_AdjacentEtaStrips);
181 if (sumweightsPFcands > 0 && sigmaEtaEtaSq > 0 && sigmaPhiPhiSq > 0) {
182 v_sigmaEtaEta.push_back(
sqrt(sigmaEtaEtaSq / sumweightsPFcands));
183 v_sigmaPhiPhi.push_back(
sqrt(sigmaPhiPhiSq / sumweightsPFcands));
185 v_sigmaEtaEta.push_back(-1.);
186 v_sigmaPhiPhi.push_back(-1.);
195 putInEvent(
"adjacentEtaStripsSize", theJets, v_size_AdjacentEtaStrips,
iEvent);
199 template <
typename T>
202 std::vector<T> product,
204 auto out = std::make_unique<edm::ValueMap<T>>();
206 filler.insert(
jets, product.begin(), product.end());
216 desc.add<
double>(
"jetPtThreshold", 25.);
217 desc.add<
double>(
"jetEtaThreshold", 2.9);
218 desc.add<
double>(
"hfTowerEtaWidth", 0.175);
219 desc.add<
double>(
"hfTowerPhiWidth", 0.175);
220 desc.add<
double>(
"vertexRecoEffcy", 0.7);
221 desc.add<
double>(
"offsetPerPU", 0.4);
222 desc.add<
double>(
"jetReferenceRadius", 0.4);
223 desc.add<
double>(
"stripPtThreshold", 10.);
224 desc.add<
double>(
"widthPtThreshold", 3.);
225 descriptions.
add(
"hfJetShowerShape",
desc);