FastJet 3.0.2
|
00001 //STARTHEADER 00002 // $Id: CDFJetCluPlugin.hh 2758 2011-11-24 08:31:58Z soyez $ 00003 // 00004 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 00005 // 00006 //---------------------------------------------------------------------- 00007 // This file is part of FastJet. 00008 // 00009 // FastJet is free software; you can redistribute it and/or modify 00010 // it under the terms of the GNU General Public License as published by 00011 // the Free Software Foundation; either version 2 of the License, or 00012 // (at your option) any later version. 00013 // 00014 // The algorithms that underlie FastJet have required considerable 00015 // development and are described in hep-ph/0512210. If you use 00016 // FastJet as part of work towards a scientific publication, please 00017 // include a citation to the FastJet paper. 00018 // 00019 // FastJet is distributed in the hope that it will be useful, 00020 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00021 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00022 // GNU General Public License for more details. 00023 // 00024 // You should have received a copy of the GNU General Public License 00025 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 00026 //---------------------------------------------------------------------- 00027 //ENDHEADER 00028 00029 #ifndef __CDFJETCLUPLUGIN_HH__ 00030 #define __CDFJETCLUPLUGIN_HH__ 00031 00032 #include "fastjet/JetDefinition.hh" 00033 #include "fastjet/PseudoJet.hh" 00034 #include <map> 00035 00036 // questionable whether this should be in fastjet namespace or not... 00037 00038 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh 00039 00040 /// @ingroup plugins 00041 /// \class CDFJetCluPlugin 00042 /// Implementation of the JetClu algorithm from CDF (plugin for 00043 /// fastjet-v2.1 upwards) 00044 class CDFJetCluPlugin : public JetDefinition::Plugin { 00045 public: 00046 /// a compact constructor 00047 CDFJetCluPlugin (double cone_radius_in, 00048 double overlap_threshold_in, 00049 double seed_threshold_in = 1.0, 00050 int iratch_in = 1) : 00051 _seed_threshold ( seed_threshold_in ), 00052 _cone_radius ( cone_radius_in ), 00053 _adjacency_cut ( 2 ), 00054 _max_iterations ( 100 ), 00055 _iratch ( iratch_in ), 00056 _overlap_threshold ( overlap_threshold_in ) {} 00057 00058 /// a constructor that looks like the one provided by CDF 00059 CDFJetCluPlugin (double seed_threshold_in , 00060 double cone_radius_in , 00061 int adjacency_cut_in , 00062 int max_iterations_in , 00063 int iratch_in , 00064 double overlap_threshold_in) : 00065 _seed_threshold (seed_threshold_in ), 00066 _cone_radius (cone_radius_in ), 00067 _adjacency_cut (adjacency_cut_in ), 00068 _max_iterations (max_iterations_in ), 00069 _iratch (iratch_in ), 00070 _overlap_threshold (overlap_threshold_in ) {} 00071 00072 // some functions to return info about parameters 00073 double seed_threshold () const {return _seed_threshold ;} 00074 double cone_radius () const {return _cone_radius ;} 00075 int adjacency_cut () const {return _adjacency_cut ;} 00076 int max_iterations () const {return _max_iterations ;} 00077 int iratch () const {return _iratch ;} 00078 double overlap_threshold () const {return _overlap_threshold ;} 00079 00080 00081 // the things that are required by base class 00082 virtual std::string description () const; 00083 virtual void run_clustering(ClusterSequence &) const; 00084 /// the plugin mechanism's standard way of accessing the jet radius 00085 virtual double R() const {return cone_radius();} 00086 00087 private: 00088 00089 double _seed_threshold ; 00090 double _cone_radius ; 00091 int _adjacency_cut ; 00092 int _max_iterations ; 00093 int _iratch ; 00094 double _overlap_threshold; 00095 00096 /// given a jet try inserting its energy into the map -- if that 00097 /// energy entry already exists, modify the jet infinitesimally so 00098 /// as ensure that the jet energy is unique 00099 void _insert_unique (PseudoJet & jet, std::map<double,int> & jetmap) const; 00100 00101 static bool _first_time; 00102 00103 /// print a banner for reference to the 3rd-party code 00104 void _print_banner(std::ostream *ostr) const; 00105 }; 00106 00107 FASTJET_END_NAMESPACE // defined in fastjet/internal/base.hh 00108 00109 #endif // __CDFJETCLUPLUGIN_HH__