FastJet 3.0.6
|
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, see <http://www.gnu.org/licenses/>. 00029 //---------------------------------------------------------------------- 00030 //ENDHEADER 00031 00032 00033 #include "fastjet/JetDefinition.hh" 00034 00035 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh 00036 00037 // forward declaration to reduce includes 00038 class ClusterSequence; 00039 00040 //---------------------------------------------------------------------- 00041 // 00042 /// @ingroup plugins 00043 /// \class GridJetPlugin 00044 /// plugin for fastjet (v3.0 upwards) that clusters particles such 00045 /// that all particles in a given cell of a rectangular rapidity-phi 00046 /// grid end up in a common "jet". 00047 /// 00048 /// This is not intended for use as a regular jet clustering algorithm, 00049 /// but is rather provided for comparison purposes with the 00050 /// GridMedianBackgroundEstimator (which is even faster). 00051 class GridJetPlugin : public JetDefinition::Plugin { 00052 public: 00053 /// Main constructor for the GridJetPlugin Plugin class. 00054 /// 00055 /// \param ymax The maximal rapidity extent of the grid 00056 /// \param requested_grid_spacing The requested grid spacing 00057 /// \param post_jet_def if present, and not == JetDefinition() 00058 /// (which has undefined_jet_algorithm), then 00059 /// run the post_jet_def on the result of the grid 00060 /// clustering. 00061 GridJetPlugin (double ymax, double requested_grid_spacing, 00062 const JetDefinition & post_jet_def = JetDefinition()); 00063 00064 /// copy constructor 00065 GridJetPlugin (const GridJetPlugin & plugin) { 00066 *this = plugin; 00067 } 00068 00069 // the things that are required by base class 00070 virtual std::string description () const; 00071 virtual void run_clustering(ClusterSequence &) const; 00072 00073 /// This returns the sqrt(dphi*dy/pi) -- i.e. the radius that for a 00074 /// circular jet would give the same area. 00075 virtual double R() const; 00076 00077 /// returns the actual rapidity spacing of the grid 00078 double drap() const {return _dy;} 00079 /// returns the actual phi spacing of the grid 00080 double dphi() const {return _dphi;} 00081 /// returns the minimum rapidity of the grid 00082 double rapmin() const {return _ymin;} 00083 /// returns the maximum rapidity of the grid 00084 double rapmax() const {return _ymax;} 00085 00086 private: 00087 00088 void setup_grid(); 00089 00090 int igrid(const PseudoJet & p) const; 00091 00092 double _ymin, _ymax, _dy, _dphi, _requested_grid_spacing; 00093 int _ny, _nphi, _ntotal; 00094 00095 JetDefinition _post_jet_def; 00096 00097 }; 00098 00099 FASTJET_END_NAMESPACE // defined in fastjet/internal/base.hh 00100 00101 #endif // __GRIDJETPLUGIN_HH__ 00102