27 #ifndef RecoJets_FFTJetProducers_FFTJetProducer_h 28 #define RecoJets_FFTJetProducers_FFTJetProducer_h 33 #include "fftjet/AbsRecombinationAlg.hh" 34 #include "fftjet/AbsVectorRecombinationAlg.hh" 35 #include "fftjet/SparseClusteringTree.hh" 38 #include "fftjet/VectorRecombinationAlgFactory.hh" 39 #include "fftjet/RecombinationAlgFactory.hh" 81 typedef fftjet::RecombinedJet<fftjetcms::VectorLike>
RecoFFTJet;
82 typedef fftjet::SparseClusteringTree<fftjet::Peak,long>
SparseTree;
90 CONSTITUENTS_RESUMMED = 0x100,
91 PILEUP_CALCULATED = 0x200,
92 PILEUP_SUBTRACTED_4VEC = 0x400,
93 PILEUP_SUBTRACTED_PT = 0x800
115 void endJob()
override;
122 virtual void selectPreclusters(
123 const SparseTree&
tree,
124 const fftjet::Functor1<bool,fftjet::Peak>& peakSelector,
125 std::vector<fftjet::Peak>* preclusters);
128 virtual void genJetPreclusters(
129 const SparseTree&
tree,
131 const fftjet::Functor1<bool,fftjet::Peak>& peakSelector,
132 std::vector<fftjet::Peak>* preclusters);
138 virtual void assignMembershipFunctions(
139 std::vector<fftjet::Peak>* preclusters);
142 virtual std::unique_ptr<fftjet::Functor1<bool,fftjet::Peak> >
146 virtual std::unique_ptr<fftjet::ScaleSpaceKernel>
150 virtual std::unique_ptr<fftjetcms::AbsBgFunctor>
154 virtual std::unique_ptr<fftjet::Functor1<double,fftjet::Peak> >
158 virtual std::unique_ptr<fftjet::Functor1<double,fftjet::Peak> >
162 virtual std::unique_ptr<fftjet::Functor1<double,fftjet::Peak> >
166 virtual std::unique_ptr<fftjet::Functor1<double,RecoFFTJet> >
169 virtual std::unique_ptr<fftjet::Functor1<double,RecoFFTJet> >
172 virtual std::unique_ptr<fftjet::Functor1<double,RecoFFTJet> >
177 virtual std::unique_ptr<fftjet::Functor2<double,RecoFFTJet,RecoFFTJet> >
181 virtual std::unique_ptr<fftjetcms::AbsPileupCalculator>
187 void selectTreeNodes(
const SparseTree&
tree,
188 const fftjet::Functor1<bool,fftjet::Peak>& peakSelect,
189 std::vector<SparseTree::NodeId>*
nodes);
191 typedef fftjet::AbsVectorRecombinationAlg<
193 typedef fftjet::AbsRecombinationAlg<
205 void removeFakePreclusters();
211 std::unique_ptr<fftjet::Grid2d<fftjetcms::Real> >&
flow);
213 void prepareRecombinationScales();
214 bool checkConvergence(
const std::vector<RecoFFTJet>& previousIterResult,
215 std::vector<RecoFFTJet>& thisIterResult);
216 void determineGriddedConstituents();
217 void determineVectorConstituents();
219 unsigned nPreclustersFound);
221 template <
typename Jet>
224 template <
typename Jet>
230 virtual void determinePileupDensityFromConfig(
232 std::unique_ptr<fftjet::Grid2d<fftjetcms::Real> >& density);
235 virtual void determinePileupDensityFromDB(
237 std::unique_ptr<fftjet::Grid2d<fftjetcms::Real> >& density);
241 void determinePileup();
249 unsigned iterateJetReconstruction();
252 static void setJetStatusBit(RecoFFTJet*
jet,
int mask,
bool value);
362 std::unique_ptr<fftjet::Functor1<double,fftjet::Peak> >
375 std::unique_ptr<fftjet::Functor2<double,RecoFFTJet,RecoFFTJet> >
379 std::vector<SparseTree::NodeId>
nodes;
410 std::vector<fftjetcms::VectorLike>
pileup;
432 #endif // RecoJets_FFTJetProducers_FFTJetProducer_h
std::vector< std::vector< reco::CandidatePtr > > constituents
unsigned iterationsPerformed
const bool useGriddedAlgorithm
std::vector< fftjetcms::VectorLike > pileup
const bool resumConstituents
const double gridScanMaxEta
const std::string recombinationAlgorithm
const bool subtractPileupAs4Vec
const double unlikelyBgWeight
std::unique_ptr< fftjet::Functor1< bool, fftjet::Peak > > peakSelector
const bool subtractPileup
const unsigned nJetsRequiredToConverge
edm::EDGetTokenT< reco::PattRecoTree< fftjetcms::Real, reco::PattRecoPeak< fftjetcms::Real > > > input_recotree_token_
std::vector< double > doubleBuf
std::vector< fftjet::AbsKernel2d * > memFcns2dVec
std::vector< RecoFFTJet > recoJets
std::unique_ptr< GridAlg > gridAlg
const double recombinationDataCutoff
std::unique_ptr< fftjet::Functor1< double, fftjet::Peak > > recoScaleCalcPeak
std::vector< unsigned > occupancy
const double minStableScale
const double maxStableScale
std::vector< fftjet::Peak > preclusters
const bool reuseExistingGrid
const unsigned nClustersRequested
std::unique_ptr< std::vector< double > > iniScales
std::unique_ptr< fftjet::Functor1< double, RecoFFTJet > > recoScaleCalcJet
std::unique_ptr< fftjet::Functor1< double, RecoFFTJet > > memberFactorCalcJet
std::unique_ptr< fftjetcms::AbsBgFunctor > bgMembershipFunction
fftjet::AbsVectorRecombinationAlg< fftjetcms::VectorLike, fftjetcms::BgData > RecoAlg
std::unique_ptr< fftjet::Functor2< double, RecoFFTJet, RecoFFTJet > > jetDistanceCalc
math::XYZTLorentzVector VectorLike
std::vector< RecoFFTJet > iterJets
fftjet::SparseClusteringTree< fftjet::Peak, long > SparseTree
std::vector< unsigned > cellCountsVec
std::unique_ptr< fftjet::ScaleSpaceKernel > jetMembershipFunction
std::string pileupTableRecord
std::string pileupTableName
std::vector< double > thresholds
fftjet::AbsRecombinationAlg< fftjetcms::Real, fftjetcms::VectorLike, fftjetcms::BgData > GridAlg
const bool calculatePileup
const bool assignConstituents
A grid filled with discretized energy flow.
const edm::InputTag treeLabel
const edm::InputTag genJetsLabel
const edm::ParameterSet myConfiguration
edm::EDGetTokenT< reco::DiscretizedEnergyFlow > input_energyflow_token_
fftjet::RecombinedJet< fftjetcms::VectorLike > RecoFFTJet
edm::EDGetTokenT< reco::FFTJetPileupSummary > input_pusummary_token_
const double stabilityAlpha
const unsigned maxInitialPreclusters
std::string pileupTableCategory
std::unique_ptr< fftjetcms::AbsPileupCalculator > pileupDensityCalc
std::vector< SparseTree::NodeId > nodes
const double convergenceDistance
edm::EDGetTokenT< std::vector< reco::FFTAnyJet< reco::GenJet > > > input_genjet_token_
std::unique_ptr< fftjet::Functor1< double, fftjet::Peak > > recoScaleRatioCalcPeak
const edm::InputTag pileupLabel
std::unique_ptr< fftjet::Grid2d< fftjetcms::Real > > pileupEnergyFlow
std::unique_ptr< fftjet::Functor1< double, RecoFFTJet > > recoScaleRatioCalcJet
std::unique_ptr< RecoAlg > recoAlg
fftjetcms::VectorLike unclustered
std::vector< fftjet::Peak > iterPreclusters
std::unique_ptr< fftjet::Functor1< double, fftjet::Peak > > memberFactorCalcPeak
const unsigned maxIterations