|
|
|||
File indexing completed on 2026-08-06 09:24:26
0001 // -*- C++ -*- 0002 #ifndef Herwig_HalfHalfZeroEWSplitFn_H 0003 #define Herwig_HalfHalfZeroEWSplitFn_H 0004 // 0005 // This is the declaration of the HalfHalfZeroEWSplitFn class. 0006 // 0007 0008 #include "SplittingFunction.h" 0009 #include "Herwig/Models/StandardModel/StandardModel.h" 0010 0011 namespace Herwig { 0012 0013 using namespace ThePEG; 0014 0015 /** 0016 * The HalfHalfZeroEWSplitFn class implements the splitting function for 0017 * \f$\frac12\to q\frac12 h\f$ where the spin-0 higgs particle is a massive scalar boson. 0018 * 0019 * @see \ref HalfHalfZeroEWSplitFnInterfaces "The interfaces" 0020 * defined for HalfHalfZeroEWSplitFn. 0021 */ 0022 class HalfHalfZeroEWSplitFn: public SplittingFunction { 0023 0024 public: 0025 0026 /** 0027 * Concrete implementation of the method to determine whether this splitting 0028 * function can be used for a given set of particles. 0029 * @param ids The PDG codes for the particles in the splitting. 0030 */ 0031 virtual bool accept(const IdList & ids) const; 0032 0033 /** 0034 * Methods to return the splitting function. 0035 */ 0036 //@{ 0037 /** 0038 * The concrete implementation of the splitting function, \f$P(z,t)\f$. 0039 * @param z The energy fraction. 0040 * @param t The scale. 0041 * @param ids The PDG codes for the particles in the splitting. 0042 * @param mass Whether or not to include the mass dependent terms 0043 * @param rho The spin density matrix 0044 */ 0045 virtual double P(const double z, const Energy2 t, const IdList & ids, 0046 const bool mass, const RhoDMatrix & rho) const; 0047 0048 /** 0049 * The concrete implementation of the overestimate of the splitting function, 0050 * \f$P_{\rm over}\f$. 0051 * @param z The energy fraction. 0052 * @param ids The PDG codes for the particles in the splitting. 0053 */ 0054 virtual double overestimateP(const double z, const IdList & ids) const; 0055 0056 /** 0057 * The concrete implementation of the 0058 * the ratio of the splitting function to the overestimate, i.e. 0059 * \f$P(z,t)/P_{\rm over}(z)\f$. 0060 * @param z The energy fraction. 0061 * @param t The scale. 0062 * @param ids The PDG codes for the particles in the splitting. 0063 * @param mass Whether or not to include the mass dependent terms 0064 * @param rho The spin density matrix 0065 */ 0066 virtual double ratioP(const double z, const Energy2 t, const IdList & ids, 0067 const bool mass, const RhoDMatrix & rho) const; 0068 0069 /** 0070 * The concrete implementation of the indefinite integral of the 0071 * overestimated splitting function, \f$P_{\rm over}\f$. 0072 * @param z The energy fraction. 0073 * @param ids The PDG codes for the particles in the splitting. 0074 * @param PDFfactor Which additional factor to include for the PDF 0075 * 0 is no additional factor, 0076 * 1 is \f$1/z\f$, 2 is \f$1/(1-z)\f$ and 3 is \f$1/z/(1-z)\f$ 0077 */ 0078 virtual double integOverP(const double z, const IdList & ids, 0079 unsigned int PDFfactor=0) const; 0080 0081 /** 0082 * The concrete implementation of the inverse of the indefinite integral. 0083 * @param r Value of the splitting function to be inverted 0084 * @param ids The PDG codes for the particles in the splitting. 0085 * @param PDFfactor Which additional factor to include for the PDF 0086 * 0 is no additional factor, 0087 * 1 is \f$1/z\f$, 2 is \f$1/(1-z)\f$ and 3 is \f$1/z/(1-z)\f$ 0088 */ 0089 virtual double invIntegOverP(const double r, const IdList & ids, 0090 unsigned int PDFfactor=0) const; 0091 //@} 0092 0093 /** 0094 * Method to calculate the azimuthal angle 0095 * @param z The energy fraction 0096 * @param t The scale \f$t=2p_j\cdot p_k\f$. 0097 * @param ids The PDG codes for the particles in the splitting. 0098 * @param The azimuthal angle, \f$\phi\f$. 0099 * @return The weight 0100 */ 0101 virtual vector<pair<int,Complex> > 0102 generatePhiForward(const double z, const Energy2 t, const IdList & ids, 0103 const RhoDMatrix &); 0104 0105 /** 0106 * Method to calculate the azimuthal angle for backward evolution 0107 * @param z The energy fraction 0108 * @param t The scale \f$t=2p_j\cdot p_k\f$. 0109 * @param ids The PDG codes for the particles in the splitting. 0110 * @param The azimuthal angle, \f$\phi\f$. 0111 * @return The weight 0112 */ 0113 virtual vector<pair<int,Complex> > 0114 generatePhiBackward(const double z, const Energy2 t, const IdList & ids, 0115 const RhoDMatrix &); 0116 0117 /** 0118 * Calculate the matrix element for the splitting 0119 * @param z The energy fraction 0120 * @param t The scale \f$t=2p_j\cdot p_k\f$. 0121 * @param ids The PDG codes for the particles in the splitting. 0122 * @param The azimuthal angle, \f$\phi\f$. 0123 */ 0124 virtual DecayMEPtr matrixElement(const double z, const Energy2 t, 0125 const IdList & ids, const double phi, bool timeLike); 0126 0127 protected: 0128 0129 /** 0130 * Get the couplings without running masses 0131 */ 0132 void getCouplings(double & gH, const IdList & ids) const; 0133 0134 /** 0135 * Get the couplings with running masses 0136 */ 0137 void getCouplings(double & gH, const IdList & ids, const Energy2 t) const; 0138 0139 public: 0140 0141 /** @name Functions used by the persistent I/O system. */ 0142 //@{ 0143 /** 0144 * Function used to write out object persistently. 0145 * @param os the persistent output stream written to. 0146 */ 0147 void persistentOutput(PersistentOStream & os) const; 0148 0149 /** 0150 * Function used to read in object persistently. 0151 * @param is the persistent input stream read from. 0152 * @param version the version number of the object when written. 0153 */ 0154 void persistentInput(PersistentIStream & is, int version); 0155 //@} 0156 0157 /** 0158 * The standard Init function used to initialize the interfaces. 0159 * Called exactly once for each class by the class description system 0160 * before the main function starts or 0161 * when this class is dynamically loaded. 0162 */ 0163 static void Init(); 0164 0165 protected: 0166 0167 /** @name Clone Methods. */ 0168 //@{ 0169 /** 0170 * Make a simple clone of this object. 0171 * @return a pointer to the new object. 0172 */ 0173 virtual IBPtr clone() const; 0174 0175 /** Make a clone of this object, possibly modifying the cloned object 0176 * to make it sane. 0177 * @return a pointer to the new object. 0178 */ 0179 virtual IBPtr fullclone() const; 0180 //@} 0181 0182 protected: 0183 0184 /** @name Standard Interfaced functions. */ 0185 //@{ 0186 /** 0187 * Initialize this object after the setup phase before saving an 0188 * EventGenerator to disk. 0189 * @throws InitException if object could not be initialized properly. 0190 */ 0191 virtual void doinit(); 0192 //@} 0193 0194 private: 0195 0196 /** 0197 * The assignment operator is private and must never be called. 0198 * In fact, it should not even be implemented. 0199 */ 0200 HalfHalfZeroEWSplitFn & operator=(const HalfHalfZeroEWSplitFn &) = delete; 0201 0202 private: 0203 0204 /** 0205 * Higgs couplings 0206 */ 0207 double ghqq_; 0208 0209 0210 /** 0211 * Pointer to the SM object. 0212 */ 0213 tcHwSMPtr _theSM; 0214 0215 }; 0216 0217 } 0218 0219 #endif /* Herwig_HalfHalfZeroEWSplitFn_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|