|
|
|||
File indexing completed on 2026-08-06 09:24:26
0001 // -*- C++ -*- 0002 // 0003 // OneOneOneSplitFn.h is a part of Herwig - A multi-purpose Monte Carlo event generator 0004 // Copyright (C) 2002-2019 The Herwig Collaboration 0005 // 0006 // Herwig is licenced under version 3 of the GPL, see COPYING for details. 0007 // Please respect the MCnet academic guidelines, see GUIDELINES for details. 0008 // 0009 #ifndef HERWIG_OneOneOneSplitFn_H 0010 #define HERWIG_OneOneOneSplitFn_H 0011 // 0012 // This is the declaration of the OneOneOneSplitFn class. 0013 // 0014 0015 #include "Herwig/Shower/QTilde/SplittingFunctions/SplittingFunction.h" 0016 0017 namespace Herwig { 0018 0019 using namespace ThePEG; 0020 0021 /** \ingroup Shower 0022 * 0023 * This class provides the concrete implementation of the exact leading-order 0024 * splitting function for \f$1\to 11\f$. 0025 * 0026 * In this case the splitting function is given by 0027 * \f[P(z) =2C*\left(\frac{z}{1-z}+\frac{1-z}{z}+z(1-z)\right),\f] 0028 * where \f$C=\f$ is the corresponding colour factor. 0029 * Our choice for the overestimate is 0030 * \f[P_{\rm over}(z) = 2C\left(\frac1z+\frac1{1-z}\right),\f] 0031 * therefore the integral is 0032 * \f[\int P_{\rm over}(z) {\rm d}z =2C\ln\left(\frac{z}{1-z}\right),\f] 0033 * and its inverse is 0034 * \f[\frac{\exp\left(\frac{r}{2C}\right)}{(1+\exp\left(\frac{r}{2C}\right)}\f] 0035 * 0036 * 0037 * @see \ref OneOneOneSplitFnInterfaces "The interfaces" 0038 * defined for OneOneOneSplitFn. 0039 */ 0040 class OneOneOneSplitFn: public SplittingFunction { 0041 0042 public: 0043 0044 /** 0045 * Concrete implementation of the method to determine whether this splitting 0046 * function can be used for a given set of particles. 0047 * @param ids The PDG codes for the particles in the splitting. 0048 */ 0049 virtual bool accept(const IdList & ids) const; 0050 0051 /** 0052 * Methods to return the splitting function. 0053 */ 0054 //@{ 0055 /** 0056 * The concrete implementation of the splitting function, \f$P(z,t)\f$. 0057 * @param z The energy fraction. 0058 * @param t The scale. 0059 * @param ids The PDG codes for the particles in the splitting. 0060 * @param mass Whether or not to include the mass dependent terms 0061 * @param rho The spin density matrix 0062 */ 0063 virtual double P(const double z, const Energy2 t, const IdList & ids, 0064 const bool mass, const RhoDMatrix & rho) const; 0065 0066 /** 0067 * The concrete implementation of the overestimate of the splitting function, 0068 * \f$P_{\rm over}\f$. 0069 * @param z The energy fraction. 0070 * @param ids The PDG codes for the particles in the splitting. 0071 */ 0072 virtual double overestimateP(const double z, const IdList & ids) const; 0073 0074 /** 0075 * The concrete implementation of the 0076 * the ratio of the splitting function to the overestimate, i.e. 0077 * \f$P(z,t)/P_{\rm over}(z)\f$. 0078 * @param z The energy fraction. 0079 * @param t The scale. 0080 * @param ids The PDG codes for the particles in the splitting. 0081 * @param mass Whether or not to include the mass dependent terms 0082 * @param rho The spin density matrix 0083 */ 0084 virtual double ratioP(const double z, const Energy2 t, const IdList & ids, 0085 const bool mass, const RhoDMatrix & rho) const; 0086 0087 /** 0088 * The concrete implementation of the indefinite integral of the 0089 * overestimated splitting function, \f$P_{\rm over}\f$. 0090 * @param z The energy fraction. 0091 * @param ids The PDG codes for the particles in the splitting. 0092 * @param PDFfactor Which additional factor to include for the PDF 0093 * 0 is no additional factor, 0094 * 1 is \f$1/z\f$, 2 is \f$1/(1-z)\f$ and 3 is \f$1/z/(1-z)\f$ 0095 */ 0096 virtual double integOverP(const double z, const IdList & ids, 0097 unsigned int PDFfactor=0) const; 0098 0099 /** 0100 * The concrete implementation of the inverse of the indefinite integral. 0101 * @param r Value of the splitting function to be inverted 0102 * @param ids The PDG codes for the particles in the splitting. 0103 * @param PDFfactor Which additional factor to include for the PDF 0104 * 0 is no additional factor, 0105 * 1 is \f$1/z\f$, 2 is \f$1/(1-z)\f$ and 3 is \f$1/z/(1-z)\f$ 0106 */ 0107 virtual double invIntegOverP(const double r, const IdList & ids, 0108 unsigned int PDFfactor=0) const; 0109 //@} 0110 0111 /** 0112 * Method to calculate the azimuthal angle for forward evolution 0113 * @param z The energy fraction 0114 * @param t The scale \f$t=2p_j\cdot p_k\f$. 0115 * @param ids The PDG codes for the particles in the splitting. 0116 * @param The azimuthal angle, \f$\phi\f$. 0117 * @return The weight 0118 */ 0119 virtual vector<pair<int,Complex> > 0120 generatePhiForward(const double z, const Energy2 t, const IdList & ids, 0121 const RhoDMatrix &); 0122 0123 /** 0124 * Method to calculate the azimuthal angle for backward evolution 0125 * @param z The energy fraction 0126 * @param t The scale \f$t=2p_j\cdot p_k\f$. 0127 * @param ids The PDG codes for the particles in the splitting. 0128 * @param The azimuthal angle, \f$\phi\f$. 0129 * @return The weight 0130 */ 0131 virtual vector<pair<int,Complex> > 0132 generatePhiBackward(const double z, const Energy2 t, const IdList & ids, 0133 const RhoDMatrix &); 0134 0135 /** 0136 * Calculate the matrix element for the splitting 0137 * @param z The energy fraction 0138 * @param t The scale \f$t=2p_j\cdot p_k\f$. 0139 * @param ids The PDG codes for the particles in the splitting. 0140 * @param The azimuthal angle, \f$\phi\f$. 0141 */ 0142 virtual DecayMEPtr matrixElement(const double z, const Energy2 t, 0143 const IdList & ids, const double phi, bool timeLike); 0144 0145 public: 0146 0147 /** 0148 * The standard Init function used to initialize the interfaces. 0149 * Called exactly once for each class by the class description system 0150 * before the main function starts or 0151 * when this class is dynamically loaded. 0152 */ 0153 static void Init(); 0154 0155 protected: 0156 0157 /** @name Clone Methods. */ 0158 //@{ 0159 /** 0160 * Make a simple clone of this object. 0161 * @return a pointer to the new object. 0162 */ 0163 virtual IBPtr clone() const {return new_ptr(*this);} 0164 0165 /** Make a clone of this object, possibly modifying the cloned object 0166 * to make it sane. 0167 * @return a pointer to the new object. 0168 */ 0169 virtual IBPtr fullclone() const {return new_ptr(*this);} 0170 //@} 0171 0172 private: 0173 0174 /** 0175 * The assignment operator is private and must never be called. 0176 * In fact, it should not even be implemented. 0177 */ 0178 OneOneOneSplitFn & operator=(const OneOneOneSplitFn &) = delete; 0179 0180 }; 0181 0182 } 0183 0184 #endif /* HERWIG_OneOneOneSplitFn_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|