|
|
|||
File indexing completed on 2026-08-06 09:24:27
0001 // -*- C++ -*- 0002 // 0003 // ZeroZeroOneSplitFn.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_ZeroZeroOneSplitFn_H 0010 #define HERWIG_ZeroZeroOneSplitFn_H 0011 // 0012 // This is the declaration of the ZeroZeroOneSplitFn 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 * This class provides the concrete implementation of the exact leading-order 0023 * splitting function for \f$\phi\to \phi g\f$. 0024 * 0025 * In this case the splitting function is given by 0026 * \f[P(z,t) = 2C\left(\frac{z}{1-z}-\frac{m^2_\phi}{t}\right),\f] 0027 * where \f$C\f$ is the corresponding colour factor. 0028 * Our choice for the overestimate is 0029 * \f[P_{\rm over}(z) = \frac{2C}{1-z},\f] 0030 * therefore the integral is 0031 * \f[\int P_{\rm over}(z) {\rm d}z = -2C\ln(1-z),\f] 0032 * and its inverse is 0033 * \f[1-\exp\left(\frac{r}{2C}\right).\f] 0034 * 0035 * @see \ref ZeroZeroOneSplitFnInterfaces "The interfaces" 0036 * defined for ZeroZeroOneSplitFn. 0037 */ 0038 class ZeroZeroOneSplitFn: public SplittingFunction { 0039 0040 public: 0041 0042 /** 0043 * Concrete implementation of the method to determine whether this splitting 0044 * function can be used for a given set of particles. 0045 * @param ids The PDG codes for the particles in the splitting. 0046 */ 0047 virtual bool accept(const IdList & ids) const; 0048 0049 /** 0050 * Methods to return the splitting function. 0051 */ 0052 //@{ 0053 /** 0054 * The concrete implementation of the splitting function, \f$P\f$. 0055 * @param z The energy fraction. 0056 * @param t The scale. 0057 * @param ids The PDG codes for the particles in the splitting. 0058 * @param mass Whether or not to include the mass dependent terms 0059 * @param rho The spin density matrix 0060 */ 0061 virtual double P(const double z, const Energy2 t, const IdList & ids, 0062 bool mass, const RhoDMatrix & rho) const; 0063 0064 /** 0065 * The concrete implementation of the overestimate of the splitting function, 0066 * \f$P_{\rm over}\f$. 0067 * @param z The energy fraction. 0068 * @param ids The PDG codes for the particles in the splitting. 0069 */ 0070 virtual double overestimateP(const double z, const IdList & ids) const; 0071 0072 /** 0073 * The concrete implementation of the 0074 * the ratio of the splitting function to the overestimate, i.e. 0075 * \f$P(z,\tilde{q}^2)/P_{\rm over}(z)\f$. 0076 * @param z The energy fraction. 0077 * @param t The scale. 0078 * @param ids The PDG codes for the particles in the splitting. 0079 * @param mass Whether or not to include the mass dependent terms 0080 * @param rho The spin density matrix 0081 */ 0082 virtual double ratioP(const double z, const Energy2 t, const IdList & ids, 0083 bool mass, const RhoDMatrix & rho) const; 0084 0085 /** 0086 * The concrete implementation of the indefinite integral of the 0087 * overestimated splitting function, \f$P_{\rm over}\f$. 0088 * @param z The energy fraction. 0089 * @param ids The PDG codes for the particles in the splitting. 0090 * @param PDFfactor Which additional factor to include for the PDF 0091 * 0 is no additional factor, 0092 * 1 is \f$1/z\f$, 2 is \f$1/(1-z)\f$ and 3 is \f$1/z/(1-z)\f$ 0093 */ 0094 virtual double integOverP(const double z, const IdList & ids, 0095 unsigned int PDFfactor=0) const; 0096 0097 /** 0098 * The concrete implementation of the inverse of the indefinite integral. 0099 * @param r Value of the splitting function to be inverted 0100 * @param ids The PDG codes for the particles in the splitting. 0101 * @param PDFfactor Which additional factor to include for the PDF 0102 * 0 is no additional factor, 0103 * 1 is \f$1/z\f$, 2 is \f$1/(1-z)\f$ and 3 is \f$1/z/(1-z)\f$ 0104 */ 0105 virtual double invIntegOverP(const double r, const IdList & ids, 0106 unsigned int PDFfactor=0) const; 0107 //@} 0108 0109 /** 0110 * Method to calculate the azimuthal angle for forward evolution 0111 * @param particle The particle which is branching 0112 * @param showerkin The ShowerKinematics object 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 * Method to calculate the azimuthal angle for backward 0124 * Shouldn't be needed and NOT IMPLEMENTED 0125 * @param particle The particle which is branching 0126 * @param showerkin The ShowerKinematics object 0127 * @param z The energy fraction 0128 * @param t The scale \f$t=2p_j\cdot p_k\f$. 0129 * @param ids The PDG codes for the particles in the splitting. 0130 * @param The azimuthal angle, \f$\phi\f$. 0131 * @return The weight 0132 */ 0133 virtual vector<pair<int,Complex> > 0134 generatePhiBackward(const double z, const Energy2 t, const IdList & ids, 0135 const RhoDMatrix &); 0136 0137 /** 0138 * Calculate the matrix element for the splitting 0139 * @param particle The particle which is branching 0140 * @param showerkin The ShowerKinematics object 0141 * @param z The energy fraction 0142 * @param t The scale \f$t=2p_j\cdot p_k\f$. 0143 * @param ids The PDG codes for the particles in the splitting. 0144 * @param The azimuthal angle, \f$\phi\f$. 0145 */ 0146 virtual DecayMEPtr matrixElement(const double z, const Energy2 t, 0147 const IdList & ids, const double phi, bool timeLike); 0148 0149 public: 0150 0151 /** 0152 * The standard Init function used to initialize the interfaces. 0153 * Called exactly once for each class by the class description system 0154 * before the main function starts or 0155 * when this class is dynamically loaded. 0156 */ 0157 static void Init(); 0158 0159 protected: 0160 0161 /** @name Clone Methods. */ 0162 //@{ 0163 /** 0164 * Make a simple clone of this object. 0165 * @return a pointer to the new object. 0166 */ 0167 virtual IBPtr clone() const {return new_ptr(*this);} 0168 0169 /** Make a clone of this object, possibly modifying the cloned object 0170 * to make it sane. 0171 * @return a pointer to the new object. 0172 */ 0173 virtual IBPtr fullclone() const {return new_ptr(*this);} 0174 //@} 0175 0176 private: 0177 0178 /** 0179 * The assignment operator is private and must never be called. 0180 * In fact, it should not even be implemented. 0181 */ 0182 ZeroZeroOneSplitFn & operator=(const ZeroZeroOneSplitFn &) = delete; 0183 0184 }; 0185 0186 } 0187 0188 #endif /* HERWIG_ZeroZeroOneSplitFn_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|