FastJet 3.0beta1
GridJetPlugin.hh
00001 #ifndef __GRIDJETPLUGIN_HH__
00002 #define __GRIDJETPLUGIN_HH__
00003 
00004 //STARTHEADER
00005 // $Id: GridJetPlugin.hh 2267 2011-06-20 15:10:23Z salam $
00006 //
00007 // Copyright (c) 2011, Matteo Cacciari, Gavin Salam and Gregory Soyez
00008 //
00009 //----------------------------------------------------------------------
00010 // This file is part of FastJet.
00011 //
00012 //  FastJet is free software; you can redistribute it and/or modify
00013 //  it under the terms of the GNU General Public License as published by
00014 //  the Free Software Foundation; either version 2 of the License, or
00015 //  (at your option) any later version.
00016 //
00017 //  The algorithms that underlie FastJet have required considerable
00018 //  development and are described in hep-ph/0512210. If you use
00019 //  FastJet as part of work towards a scientific publication, please
00020 //  include a citation to the FastJet paper.
00021 //
00022 //  FastJet is distributed in the hope that it will be useful,
00023 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
00024 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00025 //  GNU General Public License for more details.
00026 //
00027 //  You should have received a copy of the GNU General Public License
00028 //  along with FastJet; if not, write to the Free Software
00029 //  Foundation, Inc.:
00030 //      59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00031 //----------------------------------------------------------------------
00032 //ENDHEADER
00033 
00034 
00035 #include "fastjet/JetDefinition.hh"
00036 
00037 FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
00038 
00039 // forward declaration to reduce includes
00040 class ClusterSequence;
00041 
00042 //----------------------------------------------------------------------
00043 //
00044 /// @ingroup plugins
00045 /// \class GridJetPlugin
00046 /// plugin for fastjet (v3.0 upwards) that clusters particles such
00047 /// that all particles in a given cell of a rectangular rapidity-phi
00048 /// grid end up in a common "jet".
00049 ///
00050 /// This is not intended for use as a regular jet clustering algorithm, 
00051 /// but is rather provided for comparison purposes with the 
00052 /// GridMedianBackgroundEstimator (which is even faster).
00053 class GridJetPlugin : public JetDefinition::Plugin {
00054 public:
00055   /// Main constructor for the GridJetPlugin Plugin class.
00056   ///
00057   /// \param ymax           The maximal rapidity extent of the grid
00058   /// \param requested_grid_spacing The requested grid spacing
00059   /// \param post_jet_def   if present, and not == JetDefinition()
00060   ///                       (which has undefined_jet_algorithm), then
00061   ///                       run the post_jet_def on the result of the grid
00062   ///                       clustering.
00063   GridJetPlugin (double ymax, double requested_grid_spacing,
00064                  const JetDefinition & post_jet_def = JetDefinition());
00065 
00066   /// copy constructor
00067   GridJetPlugin (const GridJetPlugin & plugin) {
00068     *this = plugin;
00069   }
00070 
00071   // the things that are required by base class
00072   virtual std::string description () const;
00073   virtual void run_clustering(ClusterSequence &) const;
00074 
00075   /// This returns the sqrt(dphi*dy/pi) -- i.e. the radius that for a
00076   /// circular jet would give the same area.
00077   virtual double R() const;
00078 
00079 private:
00080 
00081   void setup_grid();
00082 
00083   int igrid(const PseudoJet & p) const;
00084 
00085   double _ymin, _ymax, _dy, _dphi, _requested_grid_spacing;
00086   int _ny, _nphi, _ntotal;
00087 
00088   JetDefinition _post_jet_def;
00089 
00090 };
00091 
00092 FASTJET_END_NAMESPACE        // defined in fastjet/internal/base.hh
00093 
00094 #endif // __GRIDJETPLUGIN_HH__
00095 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends