|
| FFTJetEFlowSmoother (const edm::ParameterSet &) |
|
| ~FFTJetEFlowSmoother () override |
|
| ~FFTJetInterface () override |
|
| EDProducer () |
|
SerialTaskQueue * | globalLuminosityBlocksQueue () |
|
SerialTaskQueue * | globalRunsQueue () |
|
ModuleDescription const & | moduleDescription () const |
|
| ~EDProducer () override |
|
void | callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func) |
|
std::vector< edm::ProductResolverIndex > const & | indiciesForPutProducts (BranchType iBranchType) const |
|
| ProducerBase () |
|
std::vector< edm::ProductResolverIndex > const & | putTokenIndexToProductResolverIndex () const |
|
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, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel) |
|
| ~ProducerBase () noexcept(false) override |
|
std::vector< ConsumesInfo > | consumesInfo () const |
|
void | convertCurrentProcessAlias (std::string const &processName) |
| Convert "@currentProcess" in InputTag process names to the actual current process name. More...
|
|
| EDConsumerBase () |
|
| EDConsumerBase (EDConsumerBase const &)=delete |
|
| EDConsumerBase (EDConsumerBase &&)=default |
|
ESProxyIndex const * | esGetTokenIndices (edm::Transition iTrans) const |
|
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 |
|
ProductResolverIndexAndSkipBit | uncheckedIndexFrom (EDGetToken) const |
|
void | updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet) |
|
void | updateLookup (eventsetup::ESRecordsToProxyIndices const &) |
|
virtual | ~EDConsumerBase () noexcept(false) |
|
|
void | beginJob () override |
|
void | endJob () override |
|
void | produce (edm::Event &, const edm::EventSetup &) override |
|
template<class Ptr > |
void | checkConfig (const Ptr &ptr, const char *message) |
|
void | discretizeEnergyFlow () |
|
| FFTJetInterface (const edm::ParameterSet &) |
|
double | getEventScale () const |
|
void | loadInputCollection (const edm::Event &) |
|
bool | storeInSinglePrecision () const |
|
const reco::Particle::Point & | vertexUsed () const |
|
ProducesCollector | producesCollector () |
|
template<typename ProductType , BranchType B = InEvent> |
EDGetTokenT< ProductType > | consumes (edm::InputTag const &tag) |
|
EDGetToken | consumes (const TypeToGet &id, edm::InputTag const &tag) |
|
template<BranchType B> |
EDGetToken | consumes (TypeToGet const &id, edm::InputTag const &tag) |
|
ConsumesCollector | consumesCollector () |
| Use a ConsumesCollector to gather consumes information from helper functions. More...
|
|
template<typename ProductType , BranchType B = InEvent> |
void | consumesMany () |
|
void | consumesMany (const TypeToGet &id) |
|
template<BranchType B> |
void | consumesMany (const TypeToGet &id) |
|
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event> |
auto | esConsumes () |
|
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event> |
auto | esConsumes (ESInputTag const &tag) |
|
template<typename ProductType , BranchType B = InEvent> |
EDGetTokenT< ProductType > | mayConsume (edm::InputTag const &tag) |
|
EDGetToken | mayConsume (const TypeToGet &id, edm::InputTag const &tag) |
|
template<BranchType B> |
EDGetToken | mayConsume (const TypeToGet &id, edm::InputTag const &tag) |
|
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 119 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().
128 throw cms::Exception(
"FFTJetBadConfig") <<
"invalid number of eta-dependent scale factors" << std::endl;
133 if (kernelEtaScale <= 0.0 || kernelPhiScale <= 0.0)
134 throw cms::Exception(
"FFTJetBadConfig") <<
"invalid kernel scale" << std::endl;
145 if (fixEfficiency || !use2dKernel) {
146 convolverMinBin = ps.
getParameter<
unsigned>(
"convolverMinBin");
155 kernel2d = std::unique_ptr<fftjet::AbsFrequencyKernel>(
156 new fftjet::DiscreteGauss2d(kernelEtaScale, kernelPhiScale,
energyFlow->nEta(),
energyFlow->nPhi()));
159 convolver = std::unique_ptr<fftjet::AbsConvolverBase<Real> >(
new fftjet::FrequencyKernelConvolver<Real, Complex>(
168 std::unique_ptr<fftjet::AbsFrequencyKernel1d>(
new fftjet::DiscreteGauss1d(kernelEtaScale,
energyFlow->nEta()));
171 std::unique_ptr<fftjet::AbsFrequencyKernel1d>(
new fftjet::DiscreteGauss1d(kernelPhiScale,
energyFlow->nPhi()));
174 convolver = std::unique_ptr<fftjet::AbsConvolverBase<Real> >(
175 new fftjet::FrequencySequentialConvolver<Real, Complex>(
engine.get(),
std::unique_ptr< MyFFTEngine > engine
T getParameter(std::string const &) const
std::unique_ptr< fftjet::AbsFrequencyKernel1d > etaKernel
std::unique_ptr< fftjet::AbsConvolverBase< Real > > convolver
std::unique_ptr< MyFFTEngine > anotherEngine
std::unique_ptr< fftjet::Grid2d< fftjetcms::Real > > energyFlow
std::unique_ptr< fftjet::AbsFrequencyKernel > kernel2d
fftjet::FFTWDoubleEngine MyFFTEngine
std::unique_ptr< fftjet::AbsFrequencyKernel1d > phiKernel
Definition at line 189 of file FFTJetEFlowSmoother.cc.
References convolvedFlow, convolver, fftjetcms::FFTJetInterface::discretizeEnergyFlow(), fftjetcms::FFTJetInterface::energyFlow, etConversionFactor, DQMScaleToClient_cfi::factor, g, fftjetcms::FFTJetInterface::getEventScale(), h, LEDCalibrationChannels::ieta, iniScales, LEDCalibrationChannels::iphi, fftjetcms::FFTJetInterface::loadInputCollection(), M_PI, eostools::move(), HLT_2018_cff::nEta, HLT_2018_cff::nPhi, fftjetcommon_cfi::nScales, fftjetcms::FFTJetInterface::outputLabel, funct::pow(), edm::Event::put(), scalePower, and mitigatedMETSequence_cff::U.
196 const double* scales = &(*iniScales)[0];
198 const unsigned nEta =
g.nEta();
199 const unsigned nPhi =
g.nPhi();
200 const double bin0edge =
g.phiBin0Edge();
203 auto pTable = std::make_unique<TH3F>(
"FFTJetEFlowSmoother",
204 "FFTJetEFlowSmoother",
213 bin0edge + 2.0 *
M_PI);
214 TH3F*
h = pTable.get();
215 h->SetDirectory(
nullptr);
216 h->GetXaxis()->SetTitle(
"Scale");
217 h->GetYaxis()->SetTitle(
"Eta");
218 h->GetZaxis()->SetTitle(
"Phi");
228 for (
unsigned iscale = 0; iscale <
nScales; ++iscale) {
238 h->SetBinContent(iscale + 2U,
ieta + 1U,
iphi + 1U, factor * etaData[
iphi]);
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
std::unique_ptr< fftjet::AbsConvolverBase< Real > > convolver
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::unique_ptr< std::vector< double > > iniScales
std::unique_ptr< fftjet::Grid2d< fftjetcms::Real > > convolvedFlow
std::unique_ptr< fftjet::Grid2d< fftjetcms::Real > > energyFlow
void discretizeEnergyFlow()
const std::string outputLabel
Power< A, B >::type pow(const A &a, const B &b)