Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:24:26

0001 // -*- C++ -*-
0002 #ifndef Herwig_ShowerBasis_H
0003 #define Herwig_ShowerBasis_H
0004 //
0005 // This is the declaration of the ShowerBasis class.
0006 //
0007 
0008 #include "ShowerBasis.fh"
0009 #include "Herwig/Shower/QTilde/Base/ShowerParticle.fh"
0010 #include "Herwig/Shower/QTilde/ShowerConfig.h"
0011 #include "ThePEG/Config/ThePEG.h"
0012 #include "ThePEG/Vectors/Lorentz5Vector.h"
0013 
0014 namespace Herwig {
0015 
0016 using namespace ThePEG;
0017 
0018 /**
0019  * The ShowerBasis class stores the basis vectors used by the shower
0020  */
0021 class ShowerBasis: public Base {
0022 
0023 public:
0024 
0025   /**
0026    *   enum for the frame definition
0027    */
0028   enum Frame {BackToBack,Rest};
0029 
0030 public:
0031 
0032   /**
0033    * The default constructor.
0034    */
0035   ShowerBasis() {}
0036   
0037   /**
0038    * Access to the frame definition
0039    */
0040   Frame frame() const {return frame_;}
0041 
0042   /**
0043    * Implementation of the virtual function returning a set of basis vectors, specific to
0044    * the type of evolution.  This function will be used by the
0045    * ForwardShowerEvolver in order to access \f$p\f$
0046    * and \f$n\f$.
0047    */
0048   virtual vector<Lorentz5Momentum> getBasis() const; 
0049 
0050   /**
0051    *  Set the basis vectors
0052    */
0053   void setBasis(const Lorentz5Momentum &p, const Lorentz5Momentum & n,
0054         Frame frame);
0055 
0056   /**
0057    * Access to the \f$p\f$ vector used to describe the kinematics.
0058    */
0059   const Lorentz5Momentum & pVector() const {return pVector_;}
0060 
0061   /**
0062    * Access to the \f$n\f$ vector used to describe the kinematics.
0063    */
0064   const Lorentz5Momentum & nVector() const {return nVector_;}
0065 
0066   /**
0067    *  Dot product of thew basis vectors
0068    */
0069   Energy2 p_dot_n() const {return pVector_*nVector_;}
0070 
0071   /**
0072    *  Transform the shower kinematics (usually the reference vectors)
0073    */
0074   virtual void transform(const LorentzRotation & r);
0075 
0076   /**
0077    * Converts a Sudakov parametrization of a momentum w.r.t. the given 
0078    * basis \f$p\f$ and \f$n\f$ into a 5 momentum.
0079    * @param alpha The \f$\alpha\f$ parameter of the Sudakov parameterisation
0080    * @param beta  The \f$\beta\f$ parameter of the Sudakov parameterisation
0081    * @param px    The \f$x\f$-component of the transverse momentum in the Sudakov 
0082    *              parameterisation
0083    * @param py    The \f$x\f$-component of the transverse momentum in the Sudakov 
0084    *              parameterisation
0085    */
0086   Lorentz5Momentum sudakov2Momentum(double alpha, double beta,
0087                     Energy px, Energy py) const {
0088     return alpha*pVector_ + beta*nVector_ + px*xPerp_ + py*yPerp_;
0089   }
0090 
0091 private:
0092 
0093   /**
0094    * The assignment operator is private and must never be called.
0095    * In fact, it should not even be implemented.
0096    */
0097   ShowerBasis & operator=(const ShowerBasis &) = delete;
0098 
0099 private:
0100 
0101   /**
0102    *  The frame in which the basis vectors are defined
0103    */
0104   Frame frame_;
0105 
0106   /**
0107    *  The \f$p\f$ reference vector
0108    */
0109   Lorentz5Momentum pVector_;
0110 
0111   /**
0112    *  The \f$n\f$ reference vector
0113    */
0114   Lorentz5Momentum nVector_;
0115 
0116   /**
0117    *  x \f$q_\perp\f$ reference vector
0118    */
0119   LorentzVector<double> xPerp_;
0120 
0121   /**
0122    *  y \f$q_\perp\f$reference vector
0123    */
0124   LorentzVector<double> yPerp_;
0125 
0126 };
0127 
0128 }
0129 
0130 #endif /* Herwig_ShowerBasis_H */