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__