|
| FFTJetEFlowSmoother (const edm::ParameterSet &) |
|
| ~FFTJetEFlowSmoother () |
|
virtual | ~FFTJetInterface () |
|
| EDProducer () |
|
ModuleDescription const & | moduleDescription () const |
|
virtual | ~EDProducer () |
|
void | callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func) |
|
std::vector< edm::ProductResolverIndex > const & | indiciesForPutProducts (BranchType iBranchType) const |
|
| ProducerBase () |
|
void | registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &) |
|
std::function< void(BranchDescription const &)> | registrationCallback () const |
| used by the fwk to register list of products More...
|
|
void | resolvePutIndicies (BranchType iBranchType, std::unordered_multimap< std::string, edm::ProductResolverIndex > const &iIndicies, std::string const &moduleLabel) |
|
virtual | ~ProducerBase () noexcept(false) |
|
std::vector< ConsumesInfo > | consumesInfo () const |
|
| EDConsumerBase () |
|
| EDConsumerBase (EDConsumerBase const &)=delete |
|
| EDConsumerBase (EDConsumerBase &&)=default |
|
ProductResolverIndexAndSkipBit | indexFrom (EDGetToken, BranchType, TypeID const &) const |
|
void | itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const |
|
void | itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const |
|
std::vector< ProductResolverIndexAndSkipBit > const & | itemsToGetFrom (BranchType iType) const |
|
void | labelsForToken (EDGetToken iToken, Labels &oLabels) const |
|
void | modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const |
|
EDConsumerBase const & | operator= (EDConsumerBase const &)=delete |
|
EDConsumerBase & | operator= (EDConsumerBase &&)=default |
|
bool | registeredToConsume (ProductResolverIndex, bool, BranchType) const |
|
bool | registeredToConsumeMany (TypeID const &, BranchType) const |
|
void | updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet) |
|
virtual | ~EDConsumerBase () noexcept(false) |
|
Description: Runs FFTJet filtering code for multiple scales and saves the results
Implementation: [Notes on implementation]
Definition at line 50 of file FFTJetEFlowSmoother.cc.
Definition at line 125 of file FFTJetEFlowSmoother.cc.
References anotherEngine, convolver, fftjeteflowsmoother_cfi::convolverMaxBin, fftjeteflowsmoother_cfi::convolverMinBin, fftjetcms::FFTJetInterface::energyFlow, engine, fftjeteflowsmoother_cfi::etaDependentScaleFactors, etaKernel, Exception, fftjeteflowsmoother_cfi::fixEfficiency, edm::ParameterSet::getParameter(), kernel2d, fftjeteflowsmoother_cfi::kernelEtaScale, fftjeteflowsmoother_cfi::kernelPhiScale, M_PI, and phiKernel.
Referenced by FFTJetEFlowSmoother().
130 ps.
getParameter<std::vector<double> >(
"etaDependentScaleFactors"));
137 <<
"invalid number of eta-dependent scale factors" 143 if (kernelEtaScale <= 0.0 || kernelPhiScale <= 0.0)
145 <<
"invalid kernel scale" << std::endl;
156 if (fixEfficiency || !use2dKernel)
158 convolverMinBin = ps.
getParameter<
unsigned>(
"convolverMinBin");
165 engine = std::auto_ptr<MyFFTEngine>(
169 kernel2d = std::auto_ptr<fftjet::AbsFrequencyKernel>(
170 new fftjet::DiscreteGauss2d(
171 kernelEtaScale, kernelPhiScale,
175 convolver = std::auto_ptr<fftjet::AbsConvolverBase<Real> >(
176 new fftjet::FrequencyKernelConvolver<Real,Complex>(
183 engine = std::auto_ptr<MyFFTEngine>(
189 etaKernel = std::auto_ptr<fftjet::AbsFrequencyKernel1d>(
190 new fftjet::DiscreteGauss1d(kernelEtaScale,
energyFlow->nEta()));
192 phiKernel = std::auto_ptr<fftjet::AbsFrequencyKernel1d>(
193 new fftjet::DiscreteGauss1d(kernelPhiScale,
energyFlow->nPhi()));
196 convolver = std::auto_ptr<fftjet::AbsConvolverBase<Real> >(
197 new fftjet::FrequencySequentialConvolver<Real,Complex>(
T getParameter(std::string const &) const
std::auto_ptr< fftjet::Grid2d< fftjetcms::Real > > energyFlow
std::auto_ptr< MyFFTEngine > anotherEngine
std::auto_ptr< fftjet::AbsFrequencyKernel1d > etaKernel
std::auto_ptr< fftjet::AbsFrequencyKernel1d > phiKernel
std::auto_ptr< MyFFTEngine > engine
std::auto_ptr< fftjet::AbsFrequencyKernel > kernel2d
fftjet::FFTWDoubleEngine MyFFTEngine
std::auto_ptr< fftjet::AbsConvolverBase< Real > > convolver
Definition at line 212 of file FFTJetEFlowSmoother.cc.
References convolvedFlow, convolver, fftjetcms::FFTJetInterface::discretizeEnergyFlow(), fftjetcms::FFTJetInterface::energyFlow, etConversionFactor, g, fftjetcms::FFTJetInterface::getEventScale(), iniScales, fftjetcms::FFTJetInterface::loadInputCollection(), M_PI, eostools::move(), DetIdAssociatorESProducer_cff::nEta, DetIdAssociatorESProducer_cff::nPhi, fftjetcommon_cfi::nScales, fftjetcms::FFTJetInterface::outputLabel, funct::pow(), edm::Event::put(), scalePower, and mitigatedMETSequence_cff::U.
221 const double* scales = &(*iniScales)[0];
223 const unsigned nEta =
g.nEta();
224 const unsigned nPhi =
g.nPhi();
225 const double bin0edge =
g.phiBin0Edge();
228 auto pTable = std::make_unique<TH3F>(
229 "FFTJetEFlowSmoother",
"FFTJetEFlowSmoother",
230 nScales+1
U, -1.5, nScales-0.5,
231 nEta,
g.etaMin(),
g.etaMax(),
233 TH3F*
h = pTable.get();
235 h->GetXaxis()->SetTitle(
"Scale");
236 h->GetYaxis()->SetTitle(
"Eta");
237 h->GetZaxis()->SetTitle(
"Phi");
241 for (
unsigned ieta=0; ieta<
nEta; ++ieta)
242 for (
unsigned iphi=0; iphi<
nPhi; ++iphi)
243 h->SetBinContent(1U, ieta+1U, iphi+1U,
244 factor*
g.binValue(ieta, iphi));
248 for (
unsigned iscale=0; iscale<
nScales; ++iscale)
254 scales[iscale], convData,
258 for (
unsigned ieta=0; ieta<
nEta; ++ieta)
260 const Real* etaData = convData + ieta*
nPhi;
261 for (
unsigned iphi=0; iphi<
nPhi; ++iphi)
262 h->SetBinContent(iscale+2U, ieta+1U, iphi+1U,
263 factor*etaData[iphi]);
std::auto_ptr< fftjet::Grid2d< fftjetcms::Real > > energyFlow
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
void loadInputCollection(const edm::Event &)
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
double getEventScale() const
std::auto_ptr< fftjet::Grid2d< fftjetcms::Real > > convolvedFlow
std::auto_ptr< std::vector< double > > iniScales
void discretizeEnergyFlow()
std::auto_ptr< fftjet::AbsConvolverBase< Real > > convolver
const std::string outputLabel
Power< A, B >::type pow(const A &a, const B &b)