Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // $Id: ValenciaPlugin.hh 771 2015-02-21 16:40:07Z vos $
0002 //
0003 // Copyright (c) 2014, Marcel Vos and Ignacio Garcia 
0004 //
0005 //----------------------------------------------------------------------
0006 // This file is part of FastJet contrib.
0007 //
0008 // It is free software; you can redistribute it and/or modify it under
0009 // the terms of the GNU General Public License as published by the
0010 // Free Software Foundation; either version 2 of the License, or (at
0011 // your option) any later version.
0012 //
0013 // It is distributed in the hope that it will be useful, but WITHOUT
0014 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
0015 // or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
0016 // License for more details.
0017 //
0018 // You should have received a copy of the GNU General Public License
0019 // along with this code. If not, see <http://www.gnu.org/licenses/>.
0020 //----------------------------------------------------------------------
0021 
0022 #ifndef __FASTJET_CONTRIB_VALENCIAJETALGORITHM_HH__
0023 #define __FASTJET_CONTRIB_VALENCIAJETALGORITHM_HH__
0024 
0025 #include <fastjet/internal/base.hh>
0026 #include "fastjet/JetDefinition.hh"
0027 #include "fastjet/ClusterSequence.hh"
0028 FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
0029 
0030 namespace contrib{
0031 
0032 //----------------------------------------------------------------------
0033 //
0034 /// ValenciaPlugin is a plugin for fastjet (v2.4 upwards)
0035 ///
0036 /// It implements the Valencia algorithm, as defined in 
0037 /// Boronat, Garcia, Vos, 
0038 /// A new jet reconstruction algorithm for lepton colliders
0039 /// 
0040 /// 
0041 class ValenciaPlugin : public JetDefinition::Plugin {
0042 public:
0043 
0044   /// Constructor for the Valencia Plugin class.  
0045   /// Three floating point arguments are specified to set the parameters
0046   /// the radius parameter R has the usual meaning,
0047   /// the clustering order beta (beta = 1 yields kt-style clustering,
0048   /// beta = 0 purely angular clustering a la C/A and beta = -1
0049   /// clusters hard, collinear radiation first, like anti-kt),
0050   /// and gamma, that governs the shrinking jet size in the forward region
0051   ValenciaPlugin (double R, double beta, double gamma) : _R(R), _beta(beta), _gamma(gamma){}
0052 
0053   /// Constructor for the Valencia Plugin class.  
0054   /// If two arguments are specified to set the parameters
0055   /// the gamma exponent is set equal to beta
0056   ValenciaPlugin (double R, double beta) : _R(R), _beta(beta), _gamma(beta){}
0057 
0058   /// copy constructor
0059   ValenciaPlugin (const ValenciaPlugin & plugin) {
0060     *this = plugin;
0061   }
0062 
0063   // the things that are required by base class
0064   virtual std::string description () const;
0065   virtual void run_clustering(ClusterSequence &) const;
0066 
0067   /// the plugin mechanism's standard way of accessing the jet radius.
0068   /// This must be set to return something sensible, even if R
0069   /// does not make sense for this algorithm!
0070   virtual double R() const {return _R;}
0071   
0072   // the Valencia algorithm has a second parameter beta that governs
0073   // the exponent of the energy in the inter-particle and beam distance 
0074   // criteria, and thus determines the clustering order
0075   virtual double beta() const {return _beta;}
0076   
0077   // the Valencia algorithm has a third parameter gamma that governs
0078   // the exponent of the sin(theta) in the beam distance
0079   // and thus the shrinking of the jet size in the forward region
0080    virtual double gamma() const {return _gamma;}
0081  
0082   
0083 
0084   /// avoid the warning whenever the user requests "exclusive" jets
0085   /// from the cluster sequence
0086   virtual bool exclusive_sequence_meaningful() const {return true;}
0087 
0088 private:
0089   double _R;
0090   double _beta;
0091   double _gamma;
0092 };
0093 
0094 
0095 
0096 
0097 } // namespace contrib
0098 
0099 FASTJET_END_NAMESPACE
0100 
0101 #endif  // __FASTJET_CONTRIB_VALENCIAJETALGORITHM_HH__