Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:57:18

0001 //FJSTARTHEADER
0002 // $Id$
0003 //
0004 // Copyright (c) 2007-2021, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
0005 //
0006 //----------------------------------------------------------------------
0007 // This file is part of FastJet.
0008 //
0009 //  FastJet is free software; you can redistribute it and/or modify
0010 //  it under the terms of the GNU General Public License as published by
0011 //  the Free Software Foundation; either version 2 of the License, or
0012 //  (at your option) any later version.
0013 //
0014 //  The algorithms that underlie FastJet have required considerable
0015 //  development. They are described in the original FastJet paper,
0016 //  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
0017 //  FastJet as part of work towards a scientific publication, please
0018 //  quote the version you use and include a citation to the manual and
0019 //  optionally also to hep-ph/0512210.
0020 //
0021 //  FastJet is distributed in the hope that it will be useful,
0022 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
0023 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0024 //  GNU General Public License for more details.
0025 //
0026 //  You should have received a copy of the GNU General Public License
0027 //  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
0028 //----------------------------------------------------------------------
0029 //FJENDHEADER
0030 
0031 #ifndef __NESTEDALGSPLUGIN_HH__
0032 #define __NESTEDALGSPLUGIN_HH__
0033 
0034 #include "fastjet/JetDefinition.hh"
0035 #include <list>
0036 #include <memory>
0037 #include <cmath>
0038 
0039 // questionable whether this should be in fastjet namespace or not...
0040 FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
0041 
0042 // another forward declaration to reduce includes
0043 class PseudoJet;
0044 
0045 //----------------------------------------------------------------------
0046 //
0047 /// @ingroup plugins
0048 /// \class NestedDefsPlugin
0049 /// Plugin to run multiple jet definitions successively (plugin for fastjet v2.4 upwards)
0050 ///
0051 /// NestedAglsPlugin is a plugin for fastjet (v2.4 upwards) that, given
0052 /// a list of jet definitions, performs the clustering by feeding the 
0053 /// particles to the first algorithm and then, successively feeding the 
0054 /// output to the next algorithm in the list.
0055 //
0056 class NestedDefsPlugin : public JetDefinition::Plugin {
0057 public:
0058   /// Main constructor for the NestedDefs Plugin class.  
0059   ///
0060   /// The argument is an initialised list of jet algorithms
0061   NestedDefsPlugin (std::list<JetDefinition> &defs) :
0062     _defs(defs){}
0063 
0064   /// copy constructor
0065   NestedDefsPlugin (const NestedDefsPlugin & plugin) {
0066     *this = plugin;
0067   }
0068 
0069   // the things that are required by base class
0070   virtual std::string description () const;
0071   virtual void run_clustering(ClusterSequence &) const;
0072   /// the plugin mechanism's standard way of accessing the jet radius
0073   /// here we return the R of the last alg in the list
0074   virtual double R() const {return _defs.rbegin()->R();}
0075 
0076 private:
0077   std::list<JetDefinition> _defs;
0078 };
0079 
0080 FASTJET_END_NAMESPACE        // defined in fastjet/internal/base.hh
0081 
0082 #endif // __SISCONEPLUGIN_HH__
0083