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__