]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - JETAN/fastjet/fastjet/NestedDefsPlugin.hh
Fastjet headers
[u/mrichter/AliRoot.git] / JETAN / fastjet / fastjet / NestedDefsPlugin.hh
diff --git a/JETAN/fastjet/fastjet/NestedDefsPlugin.hh b/JETAN/fastjet/fastjet/NestedDefsPlugin.hh
new file mode 100644 (file)
index 0000000..8bf91e4
--- /dev/null
@@ -0,0 +1,79 @@
+//STARTHEADER
+// $Id: NestedDefsPlugin.hh 1394 2009-01-17 05:08:31Z soyez $
+//
+// Copyright (c) 2007-2008, Matteo Cacciari, Gavin Salam and Gregory Soyez
+//
+//----------------------------------------------------------------------
+// This file is part of FastJet.
+//
+//  FastJet is free software; you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation; either version 2 of the License, or
+//  (at your option) any later version.
+//
+//  The algorithms that underlie FastJet have required considerable
+//  development and are described in hep-ph/0512210. If you use
+//  FastJet as part of work towards a scientific publication, please
+//  include a citation to the FastJet paper.
+//
+//  FastJet is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with FastJet; if not, write to the Free Software
+//  Foundation, Inc.:
+//      59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+//----------------------------------------------------------------------
+//ENDHEADER
+
+#ifndef __NESTEDALGSPLUGIN_HH__
+#define __NESTEDALGSPLUGIN_HH__
+
+#include "fastjet/JetDefinition.hh"
+#include <list>
+#include <memory>
+#include <cmath>
+
+// questionable whether this should be in fastjet namespace or not...
+namespace fastjet {      // defined in fastjet/internal/base.hh
+
+// another forward declaration to reduce includes
+class PseudoJet;
+
+//----------------------------------------------------------------------
+//
+/// NestedAglsPlugin is a plugin for fastjet (v2.4 upwards) that, given
+/// a list of jet definitions, performs the clustering by feeding the 
+/// particles to the first algorithm and then, successively feeding the 
+/// output to the next algorithm in the list.
+//
+class NestedDefsPlugin : public JetDefinition::Plugin {
+public:
+  /// Main constructor for the NestedDefs Plugin class.  
+  ///
+  /// The argument is an initialised list of jet algorithms
+  NestedDefsPlugin (std::list<JetDefinition> &defs) :
+    _defs(defs){}
+
+  /// copy constructor
+  NestedDefsPlugin (const NestedDefsPlugin & plugin) {
+    *this = plugin;
+  }
+
+  // the things that are required by base class
+  virtual std::string description () const;
+  virtual void run_clustering(ClusterSequence &) const;
+  /// the plugin mechanism's standard way of accessing the jet radius
+  /// here we return the R of the last alg in the list
+  virtual double R() const {return _defs.rbegin()->R();}
+
+private:
+  std::list<JetDefinition> _defs;
+};
+
+} // fastjet namespace 
+
+#endif // __SISCONEPLUGIN_HH__
+