29 #include "fftjet/VectorRecombinationAlgFactory.hh"
30 #include "fftjet/RecombinationAlgFactory.hh"
65 #define make_param(type, varname) const \
66 type & varname (ps.getParameter< type >( #varname ))
68 #define init_param(type, varname) varname (ps.getParameter< type >( #varname ))
77 #define jet_type_switch(method, arg1, arg2) do {\
81 method <reco::CaloJet> ( arg1 , arg2 );\
84 method <reco::PFJet> ( arg1 , arg2 );\
87 method <reco::GenJet> ( arg1 , arg2 );\
90 method <reco::TrackJet> ( arg1 , arg2 );\
93 method <reco::BasicJet> ( arg1 , arg2 );\
96 assert(!"ERROR in FFTJetProducer : invalid jet type."\
97 " This is a bug. Please report.");\
105 inline bool operator()(
const Jet&
l,
const Jet&
r)
const
106 {
return l.pt() > r.pt();}
110 using namespace fftjetcms;
115 if (!name.compare(
"fixed"))
117 else if (!name.compare(
"maximallyStable"))
118 return MAXIMALLY_STABLE;
119 else if (!name.compare(
"globallyAdaptive"))
120 return GLOBALLY_ADAPTIVE;
121 else if (!name.compare(
"locallyAdaptive"))
122 return LOCALLY_ADAPTIVE;
123 else if (!name.compare(
"fromGenJets"))
127 <<
"Invalid resolution specification \""
128 << name <<
"\"" << std::endl;
132 template <
typename T>
136 produces<std::vector<reco::FFTAnyJet<T> > >(
tag).setBranchAlias(alias);
149 init_param(unsigned, nJetsRequiredToConverge),
180 iterationsPerformed(1U),
186 <<
"Can't resum constituents if they are not assigned"
189 produces<reco::FFTJetProducerSummary>(
outputLabel);
225 if (!input->isSparse())
227 <<
"The stored clustering tree is not sparse" << std::endl;
238 const fftjet::Functor1<bool,fftjet::Peak>& peakSelect,
239 std::vector<fftjet::Peak>* preclusters)
247 const unsigned sz = input->size();
248 preclusters->reserve(sz);
249 for (
unsigned i=0;
i<sz; ++
i)
252 fftjet::Peak
p(jet.precluster());
253 const double scale(
p.scale());
254 p.setEtaPhi(jet.vec().Eta(), jet.vec().Phi());
258 preclusters->push_back(
p);
265 const fftjet::Functor1<bool,fftjet::Peak>& peakSelect,
266 std::vector<fftjet::Peak>* preclusters)
272 const unsigned nNodes =
nodes.size();
273 const SparseTree::NodeId* pnodes = nNodes ? &
nodes[0] : 0;
274 preclusters->reserve(nNodes);
275 for (
unsigned i=0;
i<nNodes; ++
i)
276 preclusters->push_back(
281 fftjet::Peak* clusters = nNodes ? &(*preclusters)[0] : 0;
282 for (
unsigned i=0; i<nNodes; ++
i)
284 clusters[
i].setCode(pnodes[i]);
292 const fftjet::Functor1<bool,fftjet::Peak>& peakSelect,
293 std::vector<SparseTree::NodeId>* mynodes)
304 tree.getPassingNodes(
usedLevel, peakSelect, mynodes);
315 if (tree.stableClusterCount(
317 minStartingLevel, maxStartingLevel))
320 tree.getPassingNodes(
usedLevel, peakSelect, mynodes);
327 const bool stable = tree.clusterCountLevels(
334 const int maxlev = tree.maxStoredLevel();
335 bool levelFound =
false;
337 for (
int ifac=1; ifac>-2 && !levelFound; ifac-=2)
340 if (level > 0 && level <= maxlev)
358 const unsigned maxlev = tree.maxStoredLevel();
370 const unsigned d = nClustersRequested > n ?
381 tree.getPassingNodes(
usedLevel, peakSelect, mynodes);
394 assert(!
"ERROR in FFTJetProducer::selectTreeNodes : "
395 "should never get here! This is a bug. Please report.");
406 fftjet::Functor1<double,fftjet::Peak>&
408 fftjet::Functor1<double,fftjet::Peak>&
410 fftjet::Functor1<double,fftjet::Peak>&
413 for (
unsigned i=0;
i<nClus; ++
i)
415 clus[
i].setRecoScale(scaleCalc(clus[
i]));
416 clus[
i].setRecoScaleRatio(ratioCalc(clus[i]));
417 clus[
i].setMembershipFactor(factorCalc(clus[i]));
432 fftjet::DefaultRecombinationAlgFactory<
436 <<
"Invalid grid recombination algorithm \""
438 gridAlg = std::auto_ptr<GridAlg>(
449 std::auto_ptr<fftjet::Grid2d<fftjetcms::Real> >& flow)
455 bool rebuildGrid = flow.get() ==
NULL;
458 !(flow->nEta() == input->nEtaBins() &&
459 flow->nPhi() == input->nPhiBins() &&
460 flow->etaMin() == input->etaMin() &&
461 flow->etaMax() == input->etaMax() &&
462 flow->phiBin0Edge() == input->phiBin0Edge());
466 flow = std::auto_ptr<fftjet::Grid2d<Real> >(
467 new fftjet::Grid2d<Real>(
468 input->nEtaBins(), input->etaMin(), input->etaMax(),
469 input->nPhiBins(), input->phiBin0Edge(), input->title()));
471 flow->blockSet(input->data(), input->nEtaBins(), input->nPhiBins());
477 std::vector<RecoFFTJet>& nextSet)
479 fftjet::Functor2<double,RecoFFTJet,RecoFFTJet>&
482 const unsigned nJets = previous.size();
483 if (nJets != nextSet.size())
490 bool converged =
true;
491 for (
unsigned i=0;
i<nJets; ++
i)
493 const double d = distanceCalc(prev[
i], next[i]);
494 next[
i].setConvergenceDistance(d);
510 unsigned iterNum = 1U;
511 bool converged =
false;
518 for (
unsigned i=0;
i<nJets; ++
i)
521 fftjet::Peak
p(jet.precluster());
522 p.setEtaPhi(jet.vec().Eta(), jet.vec().Phi());
523 p.setRecoScale(scaleCalc(jet));
524 p.setRecoScaleRatio(ratioCalc(jet));
525 p.setMembershipFactor(factorCalc(jet));
540 <<
"FFTJet algorithm failed" << std::endl;
563 for (
unsigned i=0;
i<nJets; ++
i)
566 jets[
i].setPeakEtaPhi(oldp.eta(), oldp.phi());
582 const unsigned nJets =
recoJets.size();
583 const unsigned* clusterMask =
gridAlg->getClusterMask();
584 const int nEta =
gridAlg->getLastNEta();
585 const int nPhi =
gridAlg->getLastNPhi();
588 const unsigned nInputs =
eventData.size();
591 for (
unsigned i=0;
i<nInputs; ++
i)
594 const int iPhi = g.getPhiBin(item.Phi());
595 const int iEta = g.getEtaBin(item.Eta());
596 const unsigned mask = iEta >= 0 && iEta < nEta ?
597 clusterMask[iEta*nPhi + iPhi] : 0;
598 assert(mask <= nJets);
606 const unsigned nJets =
recoJets.size();
607 const unsigned* clusterMask =
recoAlg->getClusterMask();
608 const unsigned maskLength =
recoAlg->getLastNData();
612 for (
unsigned i=0;
i<maskLength; ++
i)
618 const unsigned mask = clusterMask[
i];
619 assert(mask <= nJets);
627 template <
typename T>
631 using namespace reco;
649 const unsigned nJets =
recoJets.size();
650 jets->reserve(nJets);
653 double previousPt = DBL_MAX;
654 for (
unsigned ijet=0; ijet<nJets; ++ijet)
665 for (
unsigned i=0;
i<nCon; ++
i)
690 double ncells = myjet.ncells();
696 jet.setJetArea(cellArea*ncells);
706 jets->push_back(OutputJet(jet, fj));
709 const double pt = jet.pt();
717 std::sort(jets->begin(), jets->end(), LocalSortByPt());
725 const unsigned nPreclustersFound)
737 for (
unsigned i=0;
i<nCon; ++
i)
747 std::auto_ptr<reco::FFTJetProducerSummary>
summary(
751 minScale, maxScale, scaleUsed,
765 loadSparseTreeData<float>(
iEvent);
767 loadSparseTreeData<double>(
iEvent);
810 unsigned nPreclustersFound = 0U;
812 for (
unsigned i=0;
i<npre; ++
i)
827 <<
"FFTJet algorithm failed (first iteration)" << std::endl;
837 const unsigned nJets =
recoJets.size();
850 const unsigned nJets =
recoJets.size();
855 for (
unsigned i=0;
i<=nJets; ++
i)
881 std::auto_ptr<fftjet::Functor1<bool,fftjet::Peak> >
890 std::auto_ptr<fftjet::ScaleSpaceKernel>
899 std::auto_ptr<AbsBgFunctor>
908 std::auto_ptr<fftjet::Functor1<double,fftjet::Peak> >
917 std::auto_ptr<fftjetcms::AbsPileupCalculator>
926 std::auto_ptr<fftjet::Functor1<double,fftjet::Peak> >
935 std::auto_ptr<fftjet::Functor1<double,fftjet::Peak> >
943 std::auto_ptr<fftjet::Functor1<double,FFTJetProducer::RecoFFTJet> >
951 std::auto_ptr<fftjet::Functor1<double,FFTJetProducer::RecoFFTJet> >
959 std::auto_ptr<fftjet::Functor1<double,FFTJetProducer::RecoFFTJet> >
967 std::auto_ptr<fftjet::Functor2<
999 fftjet::DefaultVectorRecombinationAlgFactory<
1003 <<
"Invalid vector recombination algorithm \""
1005 recoAlg = std::auto_ptr<RecoAlg>(
1037 "reconstruction scale calculator from peaks");
1042 "reconstruction scale ratio calculator from peaks");
1047 "membership function factor calculator from peaks");
1054 "reconstruction scale calculator from jets");
1058 "reconstruction scale ratio calculator from jets");
1062 "membership function factor calculator from jets");
1066 "jet distance calculator");
1080 std::vector<int> matchTable;
1086 assert(nmatched ==
recoJets.size());
1091 for (
unsigned i=0;
i<nmatched; ++
i)
1098 const int mask,
const bool value)
1100 int status = jet->status();
1105 jet->setStatus(status);
1111 std::auto_ptr<fftjet::Grid2d<fftjetcms::Real> >& density)
1120 fftjet::Grid2d<Real>&
g(*density);
1121 const unsigned nEta = g.nEta();
1122 const unsigned nPhi = g.nPhi();
1124 for (
unsigned ieta=0; ieta<nEta; ++ieta)
1126 const double eta(g.etaBinCenter(ieta));
1130 for (
unsigned iphi=0; iphi<nPhi; ++iphi)
1132 const double phi(g.phiBinCenter(iphi));
1133 g.uncheckedSetBin(ieta, iphi, calc(
eta,
phi, s));
1138 const double pil = calc(
eta, 0.0, s);
1139 for (
unsigned iphi=0; iphi<nPhi; ++iphi)
1140 g.uncheckedSetBin(ieta, iphi, pil);
1149 std::auto_ptr<fftjet::Grid2d<fftjetcms::Real> >& density)
1154 boost::shared_ptr<npstat::StorableMultivariateFunctor>
f =
1160 const float rho = summary->pileupRho();
1161 const bool phiDependent = f->minDim() == 3U;
1163 fftjet::Grid2d<Real>&
g(*density);
1164 const unsigned nEta = g.nEta();
1165 const unsigned nPhi = g.nPhi();
1167 double functorArg[3] = {0.0, 0.0, 0.0};
1169 functorArg[2] =
rho;
1171 functorArg[1] =
rho;
1173 for (
unsigned ieta=0; ieta<nEta; ++ieta)
1175 const double eta(g.etaBinCenter(ieta));
1176 functorArg[0] =
eta;
1180 for (
unsigned iphi=0; iphi<nPhi; ++iphi)
1182 functorArg[1] = g.phiBinCenter(iphi);
1183 g.uncheckedSetBin(ieta, iphi, (*f)(functorArg, 3U));
1188 const double pil = (*f)(functorArg, 2U);
1189 for (
unsigned iphi=0; iphi<nPhi; ++iphi)
1190 g.uncheckedSetBin(ieta, iphi, pil);
1200 assert(!
"Pile-up subtraction for fuzzy clustering "
1201 "is not implemented yet");
1204 const unsigned nJets =
recoJets.size();
1209 for (
unsigned i=0;
i<nJets; ++
i)
1214 const unsigned nEta = g.nEta();
1215 const unsigned nPhi = g.nPhi();
1216 const double cellArea = g.etaBinWidth() * g.phiBinWidth();
1227 doubleBuf.resize(nJets*4U + nJets*nPhi);
1229 double* recoScaleRatios = recoScales + nJets;
1230 double* memFactors = recoScaleRatios + nJets;
1231 double* dEta = memFactors + nJets;
1232 double* dPhiBuf = dEta + nJets;
1238 for (
unsigned ijet=0; ijet<nJets; ++ijet)
1241 const fftjet::Peak& peak(jet.precluster());
1245 fftjet::AbsMembershipFunction* m3d =
1246 dynamic_cast<fftjet::AbsMembershipFunction*
>(
1247 peak.membershipFunction());
1249 m3d =
dynamic_cast<fftjet::AbsMembershipFunction*
>(
1253 assert(!
"Pile-up subtraction for 3-d membership functions "
1254 "is not implemented yet");
1258 fftjet::AbsKernel2d* m2d =
1259 dynamic_cast<fftjet::AbsKernel2d*
>(
1260 peak.membershipFunction());
1262 m2d =
dynamic_cast<fftjet::AbsKernel2d*
>(
1265 memFcns2d[ijet] = m2d;
1267 recoScales[ijet] = scaleCalc(jet);
1268 recoScaleRatios[ijet] = ratioCalc(jet);
1269 memFactors[ijet] = factorCalc(jet);
1270 cellCounts[ijet] = 0U;
1272 const double jetPhi = jet.vec().Phi();
1273 for (
unsigned iphi=0; iphi<nPhi; ++iphi)
1275 double dphi = g.phiBinCenter(iphi) -
jetPhi;
1278 while (dphi < -
M_PI)
1280 dPhiBuf[iphi*nJets+ijet] = dphi;
1287 for (
unsigned ieta=0; ieta<nEta; ++ieta)
1289 const double eta(g.etaBinCenter(ieta));
1290 const Real* databuf = g.data() + ieta*nPhi;
1293 for (
unsigned ijet=0; ijet<nJets; ++ijet)
1296 for (
unsigned iphi=0; iphi<nPhi; ++iphi)
1299 unsigned maxWJet(nJets);
1300 const double*
dPhi = dPhiBuf + iphi*nJets;
1302 for (
unsigned ijet=0; ijet<nJets; ++ijet)
1304 if (recoScaleRatios[ijet] > 0.0)
1305 memFcns2d[ijet]->setScaleRatio(recoScaleRatios[ijet]);
1306 const double f = memFactors[ijet]*
1307 (*memFcns2d[ijet])(dEta[ijet], dPhi[ijet],
1316 if (maxWJet < nJets)
1318 pileup[maxWJet] += vMaker(cellArea*databuf[iphi],
1319 eta, g.phiBinCenter(iphi));
1320 cellCounts[maxWJet]++;
std::vector< std::vector< reco::CandidatePtr > > constituents
virtual ~FFTJetProducer()
unsigned matchOneToOne(const std::vector< T1 > &v1, const std::vector< T2 > &v2, const DistanceCalculator &calc, std::vector< int > *matchFrom1To2, const double maxMatchingDistance=1.0e300)
T getParameter(std::string const &) const
std::auto_ptr< fftjet::Grid2d< fftjetcms::Real > > pileupEnergyFlow
T getUntrackedParameter(std::string const &, T const &) const
std::auto_ptr< fftjet::Grid2d< fftjetcms::Real > > energyFlow
std::auto_ptr< RecoAlg > recoAlg
std::auto_ptr< fftjet::Functor1< double, fftjet::Peak > > memberFactorCalcPeak
unsigned iterationsPerformed
std::vector< ProtoJet > OutputCollection
const bool useGriddedAlgorithm
std::vector< fftjetcms::VectorLike > pileup
edm::Handle< reco::CandidateView > inputCollection
static Resolution parse_resolution(const std::string &name)
const bool resumConstituents
void selectTreeNodes(const SparseTree &tree, const fftjet::Functor1< bool, fftjet::Peak > &peakSelect, std::vector< SparseTree::NodeId > *nodes)
Class for storing FFTJet sparse clustering trees.
const double gridScanMaxEta
void saveResults(edm::Event &iEvent, const edm::EventSetup &, unsigned nPreclustersFound)
std::auto_ptr< fftjet::Grid2d< Real > > fftjet_Grid2d_parser(const edm::ParameterSet &ps)
virtual std::auto_ptr< fftjet::Functor1< double, fftjet::Peak > > parse_recoScaleRatioCalcPeak(const edm::ParameterSet &)
std::auto_ptr< GridAlg > gridAlg
std::auto_ptr< fftjetcms::AbsPileupCalculator > pileupDensityCalc
virtual void assignMembershipFunctions(std::vector< fftjet::Peak > *preclusters)
const reco::Particle::Point & vertexUsed() const
#define DEFINE_FWK_MODULE(type)
void loadInputCollection(const edm::Event &)
virtual std::auto_ptr< fftjet::Functor1< bool, fftjet::Peak > > parse_peakSelector(const edm::ParameterSet &)
virtual std::auto_ptr< fftjetcms::AbsPileupCalculator > parse_pileupDensityCalc(const edm::ParameterSet &ps)
std::vector< InputItem > InputCollection
virtual void determinePileupDensityFromDB(const edm::Event &iEvent, const edm::EventSetup &iSetup, const edm::InputTag &label, std::auto_ptr< fftjet::Grid2d< fftjetcms::Real > > &density)
const std::string recombinationAlgorithm
Data processing summary generated by FFTJetProducer.
virtual std::auto_ptr< fftjetcms::AbsBgFunctor > parse_bgMembershipFunction(const edm::ParameterSet &)
const bool subtractPileupAs4Vec
fftjet::RecombinedJet< VectorLike > jetFromStorable(const reco::FFTJet< Real > &jet)
std::auto_ptr< fftjet::ScaleSpaceKernel > fftjet_MembershipFunction_parser(const edm::ParameterSet &ps)
void checkConfig(const Ptr &ptr, const char *message)
const double unlikelyBgWeight
void makeProduces(const std::string &alias, const std::string &tag)
const bool subtractPileup
std::auto_ptr< AbsPileupCalculator > fftjet_PileupCalculator_parser(const edm::ParameterSet &ps)
std::vector< double > doubleBuf
std::auto_ptr< fftjet::Functor1< double, fftjet::Peak > > recoScaleCalcPeak
std::vector< fftjet::AbsKernel2d * > memFcns2dVec
std::vector< RecoFFTJet > recoJets
const double recombinationDataCutoff
Summary info for pile-up determined by Gaussian filtering.
std::vector< unsigned > occupancy
const double minStableScale
const double maxStableScale
#define init_param(type, varname)
std::vector< fftjet::Peak > preclusters
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
void determineVectorConstituents()
virtual std::auto_ptr< fftjet::Functor1< double, fftjet::Peak > > parse_memberFactorCalcPeak(const edm::ParameterSet &)
void loadSparseTreeData(const edm::Event &)
std::auto_ptr< fftjetcms::AbsBgFunctor > bgMembershipFunction
const bool reuseExistingGrid
std::auto_ptr< fftjet::Functor1< bool, fftjet::Peak > > fftjet_PeakSelector_parser(const edm::ParameterSet &ps)
double getEventScale() const
const unsigned nClustersRequested
virtual void produce(edm::Event &, const edm::EventSetup &)
std::vector< unsigned > candidateIndex
std::auto_ptr< fftjet::Functor2< double, fftjet::RecombinedJet< VectorLike >, fftjet::RecombinedJet< VectorLike > > > fftjet_JetDistance_parser(const edm::ParameterSet &ps)
double dPhi(double phi1, double phi2)
std::auto_ptr< std::vector< double > > iniScales
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
math::XYZTLorentzVector VectorLike
virtual void determinePileupDensityFromConfig(const edm::Event &iEvent, const edm::InputTag &label, std::auto_ptr< fftjet::Grid2d< fftjetcms::Real > > &density)
std::auto_ptr< fftjet::Functor1< double, RecoFFTJet > > memberFactorCalcJet
void clear(CLHEP::HepGenMatrix &m)
Helper function: Reset all elements of a matrix to 0.
virtual std::auto_ptr< fftjet::Functor1< double, RecoFFTJet > > parse_recoScaleCalcJet(const edm::ParameterSet &)
Implements inheritance relationships for FFTJet jets.
static void setJetStatusBit(RecoFFTJet *jet, int mask, bool value)
std::vector< RecoFFTJet > iterJets
fftjet::SparseClusteringTree< fftjet::Peak, long > SparseTree
std::vector< unsigned > cellCountsVec
std::string pileupTableRecord
std::string pileupTableName
std::vector< double > thresholds
virtual std::auto_ptr< fftjet::Functor2< double, RecoFFTJet, RecoFFTJet > > parse_jetDistanceCalc(const edm::ParameterSet &)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
unsigned iterateJetReconstruction()
void setNCells(const double nc)
const bool calculatePileup
const bool assignConstituents
bool storeInSinglePrecision() const
void setPileup(const math::XYZTLorentzVector &p)
std::auto_ptr< fftjet::Functor1< double, fftjet::Peak > > fftjet_PeakFunctor_parser(const edm::ParameterSet &ps)
bool checkConvergence(const std::vector< RecoFFTJet > &previousIterResult, std::vector< RecoFFTJet > &thisIterResult)
const edm::InputTag treeLabel
virtual void selectPreclusters(const SparseTree &tree, const fftjet::Functor1< bool, fftjet::Peak > &peakSelector, std::vector< fftjet::Peak > *preclusters)
void sparsePeakTreeFromStorable(const reco::PattRecoTree< Real, reco::PattRecoPeak< Real > > &in, const std::vector< double > *scaleSetIfNotAdaptive, double completeEventScale, fftjet::SparseClusteringTree< fftjet::Peak, long > *out)
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
const edm::InputTag genJetsLabel
const edm::ParameterSet myConfiguration
fftjet::RecombinedJet< fftjetcms::VectorLike > RecoFFTJet
const double stabilityAlpha
std::auto_ptr< fftjet::Functor1< double, fftjet::Peak > > recoScaleRatioCalcPeak
virtual std::auto_ptr< fftjet::Functor1< double, RecoFFTJet > > parse_memberFactorCalcJet(const edm::ParameterSet &)
void discretizeEnergyFlow()
const unsigned maxInitialPreclusters
std::string pileupTableCategory
virtual std::auto_ptr< fftjet::Functor1< double, fftjet::Peak > > parse_recoScaleCalcPeak(const edm::ParameterSet &)
void setFourVec(const math::XYZTLorentzVector &p)
std::vector< SparseTree::NodeId > nodes
void determineGriddedConstituents()
const double convergenceDistance
void writeJets(edm::Event &iEvent, const edm::EventSetup &)
virtual std::auto_ptr< fftjet::ScaleSpaceKernel > parse_jetMembershipFunction(const edm::ParameterSet &)
virtual std::auto_ptr< fftjet::Functor1< double, RecoFFTJet > > parse_recoScaleRatioCalcJet(const edm::ParameterSet &)
std::auto_ptr< fftjet::Functor1< double, RecoFFTJet > > recoScaleRatioCalcJet
const edm::InputTag pileupLabel
#define jet_type_switch(method, arg1, arg2)
virtual void genJetPreclusters(const SparseTree &tree, edm::Event &, const edm::EventSetup &, const fftjet::Functor1< bool, fftjet::Peak > &peakSelector, std::vector< fftjet::Peak > *preclusters)
static bool loadEnergyFlow(const edm::Event &iEvent, const edm::InputTag &label, std::auto_ptr< fftjet::Grid2d< fftjetcms::Real > > &flow)
virtual bool isPhiDependent() const =0
std::auto_ptr< AbsBgFunctor > fftjet_BgFunctor_parser(const edm::ParameterSet &ps)
static const Mapper & instance()
std::vector< fftjetcms::VectorLike > eventData
const std::string outputLabel
math::XYZTLorentzVector adjustForPileup(const math::XYZTLorentzVector &jet, const math::XYZTLorentzVector &pileup, bool subtractPileupAs4Vec)
fftjetcms::VectorLike unclustered
std::auto_ptr< fftjet::Functor1< bool, fftjet::Peak > > peakSelector
std::vector< fftjet::Peak > iterPreclusters
std::auto_ptr< std::vector< double > > fftjet_ScaleSet_parser(const edm::ParameterSet &ps)
std::auto_ptr< fftjet::Functor2< double, RecoFFTJet, RecoFFTJet > > jetDistanceCalc
std::auto_ptr< fftjet::ScaleSpaceKernel > jetMembershipFunction
std::auto_ptr< fftjet::Functor1< double, fftjet::RecombinedJet< VectorLike > > > fftjet_JetFunctor_parser(const edm::ParameterSet &ps)
void writeSpecific(reco::CaloJet &jet, reco::Particle::LorentzVector const &p4, reco::Particle::Point const &point, std::vector< reco::CandidatePtr > const &constituents, edm::EventSetup const &c)
void removeFakePreclusters()
const unsigned maxIterations
std::auto_ptr< fftjet::Functor1< double, RecoFFTJet > > recoScaleCalcJet
void prepareRecombinationScales()