Back to home page

EIC code displayed by LXR

 
 

    


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

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 // Note on the implementation:
0032 //   this implementation of the ATLAS Cone is based on the SpartyJet
0033 //   v2.20.0 implementation. See README for details
0034 
0035 #ifndef __ATLASCONEPLUGIN_HH__
0036 #define __ATLASCONEPLUGIN_HH__
0037 
0038 #include "fastjet/JetDefinition.hh"
0039 #include "fastjet/internal/thread_safety_helpers.hh"  // helpers to write transparent code w&wo C++11 features
0040 
0041 // questionable whether this should be in fastjet namespace or not...
0042 FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
0043 
0044 // forward declaration to reduce includes
0045 class PseudoJet;
0046 
0047 //----------------------------------------------------------------------
0048 //
0049 /// @ingroup plugins
0050 /// \class ATLASConePlugin
0051 /// Implementation of the ATLAS Cone (plugin for fastjet v2.4 upwards)
0052 class ATLASConePlugin : public JetDefinition::Plugin {
0053 public:
0054   /// Main constructor for the ATLASCone Plugin class.
0055   ///
0056   /// Apparently the default parameters in the ATLAS software are the
0057   /// ones used here. SpartyJet uses a radius of 0.7, a seed threshold
0058   /// of 1 GeV and an overlap threshold of 0.75
0059   /// For the ATLAS SW defaults, see
0060   ///   http://atlas-sw.cern.ch/cgi-bin/viewcvs-atlas.cgi/groups/JetRoutines/SpartyJet/atlas/
0061   /// in the JetdoneFinderTools.cxx (rev1.1) and JetSplitMergeTool.cxx (rev1.1)
0062   /// For SpartyJet, see atlas/ConeFinderTool.h
0063   ///
0064   /// Finally, to agree with FastJet standards, we do not specify a default R,
0065   /// that in the ATLAS code is 0.7
0066   ATLASConePlugin (double radius, double seedPt_in=2.0, double f_in=0.5)
0067     : _radius(radius), _seedPt(seedPt_in), _f(f_in){}
0068 
0069   /// copy constructor
0070   ATLASConePlugin (const ATLASConePlugin & plugin) {
0071     *this = plugin;
0072   }
0073 
0074   // the things that are required by base class
0075   virtual std::string description () const;
0076   virtual void run_clustering(ClusterSequence &) const;
0077 
0078   /// the plugin mechanism's standard way of accessing the jet radius
0079   /// here we return the R of the last alg in the list
0080   virtual double R() const {return _radius;}
0081 
0082   // access to the other parameters
0083   /// seed threshold
0084   double seedPt() const {return _seedPt;}
0085 
0086   /// split-merge overlap threshold
0087   double f() const {return _f;}
0088 
0089 private:
0090 
0091   double _radius;   ///< the cone radius
0092   double _seedPt;   ///< the pt seed threshold used in stable-cone search
0093   double _f;        ///< the overlap thresholod used in the split-merge
0094 
0095   static thread_safety_helpers::FirstTimeTrue _first_time;
0096 
0097   /// print a banner for reference to the 3rd-party code
0098   void _print_banner(std::ostream *ostr) const;
0099 };
0100 
0101 FASTJET_END_NAMESPACE        // defined in fastjet/internal/base.hh
0102 
0103 #endif // __ATLASCONEPLUGIN_HH__
0104