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