Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 10:14:41

0001 // $Id: SecondaryLund.hh 1345 2023-03-01 08:49:41Z salam $
0002 //
0003 // Copyright (c) 2018-, Frederic A. Dreyer, Keith Hamilton, Alexander Karlberg,
0004 // Gavin P. Salam, Ludovic Scyboz, Gregory Soyez, Rob Verheyen
0005 //
0006 //----------------------------------------------------------------------
0007 // This file is part of FastJet contrib.
0008 //
0009 // It is free software; you can redistribute it and/or modify it under
0010 // the terms of the GNU General Public License as published by the
0011 // Free Software Foundation; either version 2 of the License, or (at
0012 // your option) any later version.
0013 //
0014 // It is distributed in the hope that it will be useful, but WITHOUT
0015 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
0016 // or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
0017 // License for more details.
0018 //
0019 // You should have received a copy of the GNU General Public License
0020 // along with this code. If not, see <http://www.gnu.org/licenses/>.
0021 //----------------------------------------------------------------------
0022 
0023 #ifndef __FASTJET_CONTRIB_SECONDARYLUND_HH__
0024 #define __FASTJET_CONTRIB_SECONDARYLUND_HH__
0025 
0026 #include "LundGenerator.hh"
0027 
0028 FASTJET_BEGIN_NAMESPACE
0029 
0030 namespace contrib{
0031   
0032 //----------------------------------------------------------------------
0033 /// \class SecondaryLund
0034 /// Base class for definitions of the leading emission
0035 class SecondaryLund {
0036 public:
0037   /// SecondaryLund constructor
0038   SecondaryLund() {}
0039 
0040   /// destructor
0041   virtual ~SecondaryLund() {}
0042 
0043   /// returns the index of branch corresponding to the root of the secondary plane
0044   virtual int result(const std::vector<LundDeclustering> & declusts) const = 0;
0045 
0046   int operator()(const std::vector<LundDeclustering> & declusts) const {
0047     return result(declusts);
0048   }
0049 
0050   /// description of the class
0051   virtual std::string description() const;
0052 };
0053   
0054 //----------------------------------------------------------------------
0055 /// \class SecondaryLund_mMDT
0056 /// Contains a definition for the leading emission using mMDTZ
0057 class SecondaryLund_mMDT : public SecondaryLund {
0058 public:
0059   /// SecondaryLund_mMDT constructor
0060   SecondaryLund_mMDT(double zcut = 0.025) : zcut_(zcut) {}
0061 
0062   /// destructor
0063   virtual ~SecondaryLund_mMDT() {}
0064   
0065   /// returns the index of branch corresponding to the root of the secondary plane
0066   virtual int result(const std::vector<LundDeclustering> & declusts) const;
0067   
0068   /// description of the class
0069   virtual std::string description() const;  
0070 private:
0071   /// zcut parameter
0072   double zcut_;
0073 };
0074   
0075 //----------------------------------------------------------------------
0076 /// \class SecondaryLund_dotmMDT
0077 /// Contains a definition for the leading emission using dotmMDT
0078 class SecondaryLund_dotmMDT : public SecondaryLund {
0079 public:
0080   /// SecondaryLund_dotmMDT constructor
0081   SecondaryLund_dotmMDT(double zcut = 0.025) : zcut_(zcut) {}
0082 
0083   /// destructor
0084   virtual ~SecondaryLund_dotmMDT() {}
0085   
0086   /// returns the index of branch corresponding to the root of the secondary plane
0087   virtual int result(const std::vector<LundDeclustering> & declusts) const;
0088   
0089   /// description of the class
0090   virtual std::string description() const;  
0091 
0092 private:
0093   /// zcut parameter
0094   double zcut_;
0095 };
0096   
0097 //----------------------------------------------------------------------
0098 /// \class SecondaryLund_Mass
0099 /// Contains a definition for the leading emission using mass
0100 class SecondaryLund_Mass : public SecondaryLund {
0101 public:
0102   /// SecondaryLund_Mass constructor (default mass reference is W mass)
0103   SecondaryLund_Mass(double ref_mass = 80.4) : mref2_(ref_mass*ref_mass) {}
0104 
0105   /// destructor
0106   virtual ~SecondaryLund_Mass() {}
0107   
0108   /// returns the index of branch corresponding to the root of the secondary plane
0109   virtual int result(const std::vector<LundDeclustering> & declusts) const;
0110   
0111   /// description of the class
0112   virtual std::string description() const;  
0113 private:
0114   double mref2_;
0115 };
0116 
0117 } // namespace contrib
0118 
0119 FASTJET_END_NAMESPACE
0120 
0121 #endif  // __FASTJET_CONTRIB_SECONDARYLUND_HH__
0122