|
|
|||
File indexing completed on 2026-08-06 09:24:26
0001 // -*- C++ -*- 0002 #ifndef Herwig_OneOneOneEWSplitFn_H 0003 #define Herwig_OneOneOneEWSplitFn_H 0004 // 0005 // This is the declaration of the OneOneOneEWSplitFn 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 OneOneOneEWSplitFn class implements the splitting function for 0017 * \f$\1\to q\1 1\f$ where the spin-1 particles are massive electroweak gauge bosons. 0018 * 0019 * @see \ref OneOneOneEWSplitFnInterfaces "The interfaces" 0020 * defined for OneOneOneEWSplitFn. 0021 */ 0022 class OneOneOneEWSplitFn: 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 0131 */ 0132 void getCouplings(double & gvvv, const IdList & ids) const; 0133 0134 public: 0135 0136 /** @name Functions used by the persistent I/O system. */ 0137 //@{ 0138 /** 0139 * Function used to write out object persistently. 0140 * @param os the persistent output stream written to. 0141 */ 0142 void persistentOutput(PersistentOStream & os) const; 0143 0144 /** 0145 * Function used to read in object persistently. 0146 * @param is the persistent input stream read from. 0147 * @param version the version number of the object when written. 0148 */ 0149 void persistentInput(PersistentIStream & is, int version); 0150 //@} 0151 0152 /** 0153 * The standard Init function used to initialize the interfaces. 0154 * Called exactly once for each class by the class description system 0155 * before the main function starts or 0156 * when this class is dynamically loaded. 0157 */ 0158 static void Init(); 0159 0160 protected: 0161 0162 /** @name Clone Methods. */ 0163 //@{ 0164 /** 0165 * Make a simple clone of this object. 0166 * @return a pointer to the new object. 0167 */ 0168 virtual IBPtr clone() const; 0169 0170 /** Make a clone of this object, possibly modifying the cloned object 0171 * to make it sane. 0172 * @return a pointer to the new object. 0173 */ 0174 virtual IBPtr fullclone() const; 0175 //@} 0176 0177 protected: 0178 0179 /** @name Standard Interfaced functions. */ 0180 //@{ 0181 /** 0182 * Initialize this object after the setup phase before saving an 0183 * EventGenerator to disk. 0184 * @throws InitException if object could not be initialized properly. 0185 */ 0186 virtual void doinit(); 0187 //@} 0188 0189 private: 0190 0191 /** 0192 * The assignment operator is private and must never be called. 0193 * In fact, it should not even be implemented. 0194 */ 0195 OneOneOneEWSplitFn & operator=(const OneOneOneEWSplitFn &) = delete; 0196 0197 private: 0198 0199 /** 0200 * W^{\pm} -> W^{\pm} G couplings 0201 */ 0202 double gWWG_; 0203 0204 /** 0205 * W^{\pm} -> W^{\pm} Z couplings 0206 */ 0207 double gWWZ_; 0208 0209 /** 0210 * Pointer to the SM object. 0211 */ 0212 tcHwSMPtr _theSM; 0213 }; 0214 0215 } 0216 0217 #endif /* Herwig_OneOneOneEWSplitFn_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|