Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-30 10:06:42

0001 //  Nsubjettiness Package
0002 //  Questions/Comments?  jthaler@jthaler.net
0003 //
0004 //  Copyright (c) 2011-14
0005 //  Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason
0006 //
0007 //  $Id: ExtraRecombiners.hh 828 2015-07-20 14:52:06Z jthaler $
0008 //----------------------------------------------------------------------
0009 // This file is part of FastJet contrib.
0010 //
0011 // It is free software; you can redistribute it and/or modify it under
0012 // the terms of the GNU General Public License as published by the
0013 // Free Software Foundation; either version 2 of the License, or (at
0014 // your option) any later version.
0015 //
0016 // It is distributed in the hope that it will be useful, but WITHOUT
0017 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
0018 // or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
0019 // License for more details.
0020 //
0021 // You should have received a copy of the GNU General Public License
0022 // along with this code. If not, see <http://www.gnu.org/licenses/>.
0023 //----------------------------------------------------------------------
0024 
0025 #ifndef __FASTJET_CONTRIB_WINNERTAKEALLRECOMBINER_HH__
0026 #define __FASTJET_CONTRIB_WINNERTAKEALLRECOMBINER_HH__
0027 
0028 #include "fastjet/PseudoJet.hh"
0029 #include "fastjet/JetDefinition.hh"
0030 
0031 #include <cmath>
0032 #include <vector>
0033 #include <list>
0034 #include <limits>
0035 #include <stdio.h>
0036 #include <string.h>
0037 #include <errno.h>
0038 
0039 FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
0040 
0041 namespace contrib {
0042 
0043 ///------------------------------------------------------------------------
0044 /// \class GeneralEtSchemeRecombiner
0045 /// \brief Recombination scheme with generalized Et weighting
0046 ///
0047 /// GeneralEtSchemeRecombiner defines a new recombination scheme by inheriting from JetDefinition::Recombiner.
0048 /// This scheme compares the pT of two input particles, and then combines them into a particle with
0049 /// a pT equal to the sum of the two particle pTs and a direction (in rapidity/phi) weighted by the respective momenta of the
0050 /// particle. The weighting is dependent on the power delta. For delta = infinity, this should return the same result as the
0051 /// WinnerTakeAllRecombiner.
0052 ///------------------------------------------------------------------------
0053 class GeneralEtSchemeRecombiner : public fastjet::JetDefinition::Recombiner {
0054 public:
0055 
0056    /// Constructor takes delta weighting
0057    /// (delta = 1.0 for Et-scheme, delta = infinity for winner-take-all scheme)
0058    GeneralEtSchemeRecombiner(double delta) : _delta(delta) {}
0059   
0060    /// Description
0061    virtual std::string description() const;
0062   
0063    /// Recombine pa and pb and put result into pab
0064    virtual void recombine(const fastjet::PseudoJet & pa,
0065                          const fastjet::PseudoJet & pb, 
0066                          fastjet::PseudoJet & pab) const;
0067 
0068 private:
0069   double _delta;  ///< Weighting exponent
0070 };
0071 
0072 ///------------------------------------------------------------------------
0073 /// \class WinnerTakeAllRecombiner
0074 /// \brief Recombination scheme with winner-take-all weighting
0075 ///
0076 /// WinnerTakeAllRecombiner defines a new recombination scheme by inheriting from JetDefinition::Recombiner.
0077 /// This scheme compares the pT of two input particles, and then combines them into a particle with
0078 /// a pT equal to the sum of the two particle pTs and a direction (in rapidity/phi) identical to that of the harder
0079 /// particle. This creates a jet with an axis guaranteed to align with a particle in the event.
0080 ///------------------------------------------------------------------------
0081 class WinnerTakeAllRecombiner : public fastjet::JetDefinition::Recombiner {
0082 public:
0083    
0084     /// Constructor to choose value of alpha (defaulted to 1 for normal pT sum)
0085    WinnerTakeAllRecombiner(double alpha = 1.0) : _alpha(alpha) {}
0086 
0087    /// Description
0088    virtual std::string description() const;
0089    
0090    /// recombine pa and pb and put result into pab
0091    virtual void recombine(const fastjet::PseudoJet & pa,
0092                           const fastjet::PseudoJet & pb,
0093                           fastjet::PseudoJet & pab) const;
0094 
0095 private:
0096     double _alpha; //power of (pt/E) term when recombining particles
0097 };
0098 
0099 } //namespace contrib
0100 
0101 FASTJET_END_NAMESPACE
0102 
0103 #endif  // __FASTJET_CONTRIB_WINNERTAKEALLRECOMBINER_HH__