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" 77 std::unique_ptr<fftjet::AbsFrequencyKernel>
kernel2d;
78 std::unique_ptr<fftjet::AbsFrequencyKernel1d>
etaKernel;
79 std::unique_ptr<fftjet::AbsFrequencyKernel1d>
phiKernel;
82 std::unique_ptr<fftjet::AbsConvolverBase<Real> >
convolver;
96 scalePower(ps.getParameter<double>(
"scalePower")),
103 convolvedFlow = std::make_unique<fftjet::Grid2d<fftjetcms::Real> >(*energyFlow);
126 throw cms::Exception(
"FFTJetBadConfig") <<
"invalid number of eta-dependent scale factors" << std::endl;
132 throw cms::Exception(
"FFTJetBadConfig") <<
"invalid kernel scale" << std::endl;
153 kernel2d = std::unique_ptr<fftjet::AbsFrequencyKernel>(
157 convolver = std::unique_ptr<fftjet::AbsConvolverBase<Real> >(
new fftjet::FrequencyKernelConvolver<Real, Complex>(
172 convolver = std::unique_ptr<fftjet::AbsConvolverBase<Real> >(
173 new fftjet::FrequencySequentialConvolver<Real, Complex>(
engine.get(),
194 const double*
scales = &(*iniScales)[0];
196 const unsigned nEta =
g.nEta();
197 const unsigned nPhi =
g.nPhi();
198 const double bin0edge =
g.phiBin0Edge();
201 auto pTable = std::make_unique<TH3F>(
"FFTJetEFlowSmoother",
202 "FFTJetEFlowSmoother",
211 bin0edge + 2.0 *
M_PI);
212 TH3F*
h = pTable.get();
213 h->SetDirectory(
nullptr);
214 h->GetXaxis()->SetTitle(
"Scale");
215 h->GetYaxis()->SetTitle(
"Eta");
216 h->GetZaxis()->SetTitle(
"Phi");
226 for (
unsigned iscale = 0; iscale <
nScales; ++iscale) {
std::unique_ptr< MyFFTEngine > engine
std::unique_ptr< fftjet::AbsFrequencyKernel1d > etaKernel
T getParameter(std::string const &) const
Basic3DVector & operator=(const Basic3DVector &)=default
Assignment operator.
std::unique_ptr< fftjet::AbsConvolverBase< Real > > convolver
double getEventScale() const
void loadInputCollection(const edm::Event &)
std::unique_ptr< MyFFTEngine > anotherEngine
FFTJetEFlowSmoother()=delete
void checkConfig(const Ptr &ptr, const char *message)
std::unique_ptr< fftjet::Grid2d< Real > > fftjet_Grid2d_parser(const edm::ParameterSet &ps)
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 g
double etConversionFactor
std::unique_ptr< std::vector< double > > iniScales
std::unique_ptr< fftjet::Grid2d< fftjetcms::Real > > convolvedFlow
std::unique_ptr< fftjet::Grid2d< fftjetcms::Real > > energyFlow
#define DEFINE_FWK_MODULE(type)
void produce(edm::Event &, const edm::EventSetup &) override
std::unique_ptr< fftjet::AbsFrequencyKernel > kernel2d
~FFTJetEFlowSmoother() override
void discretizeEnergyFlow()
void buildKernelConvolver(const edm::ParameterSet &)
std::unique_ptr< fftjet::AbsFrequencyKernel1d > phiKernel
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
std::unique_ptr< std::vector< double > > fftjet_ScaleSet_parser(const edm::ParameterSet &ps)
const std::string outputLabel
Power< A, B >::type pow(const A &a, const B &b)