1 #ifndef __FASTJET_TOOLS_PRUNER_HH__
2 #define __FASTJET_TOOLS_PRUNER_HH__
34 #include "fastjet/ClusterSequence.hh"
35 #include "fastjet/WrappedStructure.hh"
36 #include "fastjet/tools/Transformer.hh"
40 FASTJET_BEGIN_NAMESPACE
44 class PrunerStructure;
45 class PruningRecombiner;
51 #define FASTJET_PRUNER_STRUCTURE_STORES_RCUT
120 _zcut(zcut), _Rcut_factor(Rcut_factor),
121 _zcut_dyn(0), _Rcut_dyn(0), _get_recombiner_from_jet(true) {}
133 _zcut(zcut), _Rcut_factor(Rcut_factor),
134 _zcut_dyn(0), _Rcut_dyn(0), _get_recombiner_from_jet(false) {}
151 virtual std::string description()
const;
159 bool _check_explicit_ghosts(
const PseudoJet &jet)
const;
167 bool _check_common_recombiner(
const PseudoJet &jet,
169 bool assigned=
false)
const;
176 bool _get_recombiner_from_jet;
197 virtual std::string
description()
const{
return "Pruned PseudoJet";}
201 return validated_cs()->childless_pseudojets();
207 std::vector<PseudoJet> extra_jets()
const;
210 double Rcut()
const {
return _Rcut;}
213 double zcut()
const {
return _zcut;}
248 PruningRecombiner(
double zcut,
double Rcut,
250 : _zcut2(zcut*zcut), _Rcut2(Rcut*Rcut),
251 _recombiner(recombiner){}
255 virtual void recombine(
const PseudoJet &pa,
257 PseudoJet &pab)
const;
263 const std::vector<unsigned int> & rejected()
const{
return _rejected;}
270 void clear_rejected(){ _rejected.clear();}
275 const JetDefinition::Recombiner *_recombiner;
276 mutable std::vector<unsigned int> _rejected;
295 class PruningPlugin :
public JetDefinition::Plugin{
302 PruningPlugin(
const JetDefinition &jet_def,
double zcut,
double Rcut)
303 : _jet_def(jet_def), _zcut(zcut), _Rcut(Rcut){}
306 virtual void run_clustering(ClusterSequence &input_cs)
const;
309 virtual std::string description()
const;
312 virtual double R()
const {
return _jet_def.R();}
315 JetDefinition _jet_def;
322 FASTJET_END_NAMESPACE
324 #endif // __FASTJET_TOOLS_PRUNER_HH__
Pruner(const JetDefinition &jet_def, double zcut, double Rcut_factor)
alternative ctor in which the full reclustering jet definition can be specified.
double Rcut() const
return the value of Rcut that was used for this specific pruning.
virtual void recombine(const PseudoJet &pa, const PseudoJet &pb, PseudoJet &pab) const =0
recombine pa and pb and put result into pab
This wraps a (shared) pointer to an underlying structure.
std::vector< PseudoJet > rejected() const
return the constituents that have been rejected
Transformer that prunes a jet.
PrunerStructure(const PseudoJet &result_jet)
default ctor
The structure associated with a PseudoJet thas has gone through a Pruner transformer.
virtual std::string description() const
description
Pruner(const JetAlgorithm jet_alg, double zcut, double Rcut_factor)
minimal constructor, which takes a jet algorithm, sets the radius to JetDefinition::max_allowable_R (...
virtual std::string description() const =0
return a textual description of the recombination scheme implemented here
An abstract base class that will provide the recombination scheme facilities and/or allow a user to e...
JetAlgorithm
the various families of jet-clustering algorithm
Class to contain pseudojets, including minimal information of use to jet-clustering routines...
class that is intended to hold a full definition of the jet clusterer
double zcut() const
return the value of Rcut that was used for this specific pruning.