23 #include "fftjet/FrequencyKernelConvolver.hh"
24 #include "fftjet/DiscreteGauss2d.hh"
25 #include "fftjet/EquidistantSequence.hh"
26 #include "fftjet/interpolate.hh"
27 #include "fftjet/FrequencyKernelConvolver.hh"
28 #include "fftjet/FrequencySequentialConvolver.hh"
29 #include "fftjet/DiscreteGauss1d.hh"
30 #include "fftjet/DiscreteGauss2d.hh"
60 void endJob()
override;
80 std::unique_ptr<fftjet::AbsFrequencyKernel>
kernel2d;
81 std::unique_ptr<fftjet::AbsFrequencyKernel1d>
etaKernel;
82 std::unique_ptr<fftjet::AbsFrequencyKernel1d>
phiKernel;
85 std::unique_ptr<fftjet::AbsConvolverBase<Real> >
convolver;
99 scalePower(ps.getParameter<double>(
"scalePower")),
106 convolvedFlow = std::make_unique<fftjet::Grid2d<fftjetcms::Real> >(*energyFlow);
129 throw cms::Exception(
"FFTJetBadConfig") <<
"invalid number of eta-dependent scale factors" << std::endl;
135 throw cms::Exception(
"FFTJetBadConfig") <<
"invalid kernel scale" << std::endl;
156 kernel2d = std::unique_ptr<fftjet::AbsFrequencyKernel>(
160 convolver = std::unique_ptr<fftjet::AbsConvolverBase<Real> >(
new fftjet::FrequencyKernelConvolver<Real, Complex>(
175 convolver = std::unique_ptr<fftjet::AbsConvolverBase<Real> >(
176 new fftjet::FrequencySequentialConvolver<Real, Complex>(
engine.get(),
197 const double* scales = &(*iniScales)[0];
199 const unsigned nEta =
g.nEta();
200 const unsigned nPhi =
g.nPhi();
201 const double bin0edge =
g.phiBin0Edge();
204 auto pTable = std::make_unique<TH3F>(
"FFTJetEFlowSmoother",
205 "FFTJetEFlowSmoother",
214 bin0edge + 2.0 *
M_PI);
215 TH3F*
h = pTable.get();
216 h->SetDirectory(
nullptr);
217 h->GetXaxis()->SetTitle(
"Scale");
218 h->GetYaxis()->SetTitle(
"Eta");
219 h->GetZaxis()->SetTitle(
"Phi");
229 for (
unsigned iscale = 0; iscale <
nScales; ++iscale) {