Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

SISConePlugin.hh

Go to the documentation of this file.
00001 #ifndef __SISCONEPLUGIN_HH__
00002 #define __SISCONEPLUGIN_HH__
00003 
00004 #include "fastjet/JetDefinition.hh"
00005 #include "fastjet/ClusterSequence.hh" // needed for the extras we define
00006 #include <vector>
00007 #include <memory>
00008 
00009 // put a forward declaration to the Csiscone class to avoid having to
00010 // include the siscone headers here
00011 namespace siscone {
00012   class Csiscone;
00013 }
00014 
00015 // questionable whether this should be in fastjet namespace or not...
00016 FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
00017 
00018 // another forward declaration to reduce includes
00019 class PseudoJet;
00020 
00021 //----------------------------------------------------------------------
00022 //
00074 //
00075 class SISConePlugin : public JetDefinition::Plugin {
00076 public:
00077 
00079   SISConePlugin (double cone_radius,
00080                  double overlap_threshold = 0.5,
00081                  int    n_pass_max = 1,
00082                  double protojet_ptmin = 0.0, 
00083                  bool   caching = false,
00084                  bool   split_merge_on_transverse_mass = true) :
00085     _cone_radius           (cone_radius       ),
00086     _overlap_threshold     (overlap_threshold ),
00087     _n_pass_max            (n_pass_max ), 
00088     _protojet_ptmin        (protojet_ptmin),
00089     _caching               (caching),             
00090     _split_merge_on_transverse_mass (split_merge_on_transverse_mass) {}
00091   
00094   SISConePlugin (double cone_radius,
00095                  double overlap_threshold,
00096                  int    n_pass_max,
00097                  bool   caching ) :
00098     _cone_radius           (cone_radius       ),
00099     _overlap_threshold     (overlap_threshold ),
00100     _n_pass_max            (n_pass_max ), 
00101     _protojet_ptmin        (0.0),
00102     _caching               (caching),
00103     _split_merge_on_transverse_mass(true)     {}
00104 
00106   SISConePlugin (const SISConePlugin & plugin) {
00107     *this = plugin;
00108   }
00109 
00111   double cone_radius        () const {return _cone_radius        ;}
00112 
00115   double overlap_threshold  () const {return _overlap_threshold  ;}
00116 
00119   int n_pass_max  () const {return _n_pass_max  ;}
00120 
00123   double protojet_ptmin  () const {return _protojet_ptmin  ;}
00124 
00126   bool split_merge_on_transverse_mass() const {return _split_merge_on_transverse_mass ;}
00127   void set_split_merge_on_transverse_mass(bool val) {
00128     _split_merge_on_transverse_mass = val;}
00129 
00131   bool caching() const {return _caching ;}
00132 
00133   // the things that are required by base class
00134   virtual std::string description () const;
00135   virtual void run_clustering(ClusterSequence &) const;
00136 
00137 private:
00138   double _cone_radius, _overlap_threshold;
00139   int    _n_pass_max;
00140   double _protojet_ptmin;
00141   bool   _caching, _split_merge_on_transverse_mass;
00142 
00143   // variables for caching the results and the input
00144   static std::auto_ptr<SISConePlugin          > stored_plugin;
00145   static std::auto_ptr<std::vector<PseudoJet> > stored_particles;
00146   static std::auto_ptr<siscone::Csiscone      > stored_siscone;
00147 
00148 };
00149 
00150 
00151 //======================================================================
00153 class SISConeExtras : public ClusterSequence::Extras {
00154 public:
00156   const std::vector<PseudoJet> & protocones() const {return _protocones;}
00157 
00161   const SISConePlugin * jet_def_plugin() const {return _jet_def_plugin;}
00162 
00165   std::string description() const;
00166 
00170   inline double most_ambiguous_split() const {return _most_ambiguous_split;}
00171 
00172 private:
00173   std::vector<PseudoJet> _protocones;
00174   const SISConePlugin * _jet_def_plugin;
00175   double                _most_ambiguous_split;
00176   // let us be written to by SISConePlugin
00177   friend class SISConePlugin;
00178 };
00179 
00180 
00181 FASTJET_END_NAMESPACE        // defined in fastjet/internal/base.hh
00182 
00183 #endif // __SISCONEPLUGIN_HH__
00184 

Generated on Sat Mar 3 12:36:10 2007 for fastjet by  doxygen 1.4.2