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