Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // $Id$
0002 //
0003 // Copyright (c) 2013, Oxford University.
0004 //
0005 //----------------------------------------------------------------------
0006 // This file is part of FastJet contrib ScJet.
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_SCJET_HH__
0023 #define __FASTJET_CONTRIB_SCJET_HH__
0024 
0025 #include <fastjet/internal/base.hh>
0026 #include <fastjet/JetDefinition.hh>
0027 
0028 FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
0029 
0030 class ClusterSequence;
0031 
0032 namespace contrib{
0033 
0034 //------------------------------------------------------------------------
0035 /// \class ScJet
0036 /// Jet algorithm based on semi-classical jet model.
0037 ///
0038 /// Implementation of an NNH-based sequential recombination algorithm
0039 /// using distance measures derived from a semi-classical jet model.
0040 /// Documented in J Tseng, H Evans,
0041 /// "Semi-classical approach to sequential recombination algorithms
0042 /// for jet clustering", arXiv:1304.1025 (2013).
0043 class ScJet : public JetDefinition::Plugin {
0044 public:
0045 
0046   /// enumeration to specify types of energy input.
0047   /// mt and pt are longitudinal boost-invariant, et is not.
0048   typedef enum { use_mt, use_pt, use_et } energyModeType;
0049 
0050   /// print energy mode
0051   static std::string energyModeString(energyModeType mode) {
0052     switch (mode) {
0053       case use_mt : return std::string("Mt");
0054       case use_pt : return std::string("Pt");
0055       case use_et : return std::string("Et");
0056       default :     return std::string("Undefined");
0057     }
0058   }
0059 
0060   /// default ctor
0061   ScJet(double Rin, energyModeType mode = use_mt, int Rexp = 3) :
0062     _R(Rin), _Rexp(Rexp), _energyMode(mode) {}
0063 
0064   /// copy constructor
0065   ScJet(const ScJet& plugin) :
0066     _R(plugin._R), _Rexp(plugin._Rexp), _energyMode(plugin._energyMode) {}
0067 
0068   /// default dtor
0069   ~ScJet(){}
0070 
0071   /// required by base class
0072   virtual std::string description() const;
0073 
0074   /// required by base class
0075   virtual void run_clustering(ClusterSequence&) const;
0076 
0077   /// plugin mechanism's standard way of accessing the jet radius
0078   virtual double R() const { return _R; }
0079 
0080   /// return radius exponent parameter
0081   int Rexp() const { return _Rexp; }
0082 
0083   /// return energy mode
0084   energyModeType energyMode() const { return _energyMode; }
0085 
0086   /// return energy mode string (non-static version)
0087   std::string energyModeString() const { return energyModeString(_energyMode); }
0088 
0089   /// avoid warning when the user requests exclusive jets
0090   virtual bool exclusive_sequence_meaningful() const { return true; }
0091 
0092 private:
0093 
0094   double _R; // jet radius parameter
0095   int _Rexp; // radius exponent parameter
0096   energyModeType _energyMode; // energy calculation type
0097 
0098 };
0099 
0100 
0101 } // namespace contrib
0102 
0103 FASTJET_END_NAMESPACE
0104 
0105 #endif  // __FASTJET_CONTRIB_SCJET_HH__