|
|
|||
File indexing completed on 2026-08-06 09:24:02
0001 // -*- C++ -*- 0002 // 0003 // WeakPartonicDecayer.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_WeakPartonicDecayer_H 0010 #define HERWIG_WeakPartonicDecayer_H 0011 // 0012 // This is the declaration of the WeakPartonicDecayer class. 0013 // 0014 0015 #include "PartonicDecayerBase.h" 0016 0017 namespace Herwig { 0018 0019 using namespace ThePEG; 0020 0021 /** 0022 * The WeakPartonicDecayer class is designed to replace the HeavyDecayer 0023 * class which implements the partonic decays of hadrons containing a 0024 * heavy quark in the same way as in FORTRAN Herwig. 0025 * 0026 * There are a number of major changes 0027 * 0028 * - The helicity formalism is used for the decays so that the \f$\tau\f$ lepton 0029 * gets the correct correlations. 0030 * 0031 * - The particles produced directly by the hadronisation, i.e. the primary hadrons 0032 * produced in cluster decay are checked to ensure that none of the exclusive 0033 * modes are reproduced. 0034 * 0035 * - Two body modes are allowed to try and force baryon production etc. In this case 0036 * the colours of the partons are connected. 0037 * 0038 * - Three body modes of the form \f$q g \bar{q}\f$ are supported for penguin mediated 0039 * weak decays. 0040 * 0041 * Two types of matrix element are supported for this decay 0042 * 0043 * - MECode=0 flat-phase space. 0044 * - MECode=100 V-A matrix element for the heavy quark decay in the spectator model. 0045 * 0046 * In addition for the two-body decays and the three-bopdy spectator decays 0047 * using the weka V-A matrix element the option of adding an extra gluon to increase 0048 * the multiplicity of hadrons is included 0049 * 0050 * @see HeavyDecayer 0051 */ 0052 class WeakPartonicDecayer: public PartonicDecayerBase { 0053 0054 public: 0055 0056 /** 0057 * The default constructor. 0058 */ 0059 WeakPartonicDecayer(); 0060 0061 /** 0062 * Check if this decayer can perfom the decay for a particular mode 0063 * @param parent The decaying particle 0064 * @param children The decay products 0065 * @return true If this decayer can handle the given mode, otherwise false. 0066 */ 0067 virtual bool accept(tcPDPtr parent, const tPDVector & children) const; 0068 0069 0070 /** 0071 * Perform the decay of the particle to the specified decay products 0072 * @param parent The decaying particle 0073 * @param children The decay products 0074 * @return a ParticleVector containing the decay products. 0075 */ 0076 virtual ParticleVector decay(const Particle & parent, 0077 const tPDVector & children) const; 0078 0079 /** 0080 * Output the setup information for the particle database 0081 * @param os The stream to output the information to 0082 * @param header Whether or not to output the information for MySQL 0083 */ 0084 virtual void dataBaseOutput(ofstream & os,bool header) const; 0085 0086 public: 0087 0088 /** @name Functions used by the persistent I/O system. */ 0089 //@{ 0090 /** 0091 * Function used to write out object persistently. 0092 * @param os the persistent output stream written to. 0093 */ 0094 void persistentOutput(PersistentOStream & os) const; 0095 0096 /** 0097 * Function used to read in object persistently. 0098 * @param is the persistent input stream read from. 0099 * @param version the version number of the object when written. 0100 */ 0101 void persistentInput(PersistentIStream & is, int version); 0102 //@} 0103 0104 /** 0105 * The standard Init function used to initialize the interfaces. 0106 * Called exactly once for each class by the class description system 0107 * before the main function starts or 0108 * when this class is dynamically loaded. 0109 */ 0110 static void Init(); 0111 0112 public: 0113 0114 /** 0115 * Weighting of phase space for V-A matrix elements 0116 */ 0117 static double VAWt(Energy2, Energy2, Energy2, InvEnergy4); 0118 0119 protected: 0120 0121 /** @name Clone Methods. */ 0122 //@{ 0123 /** 0124 * Make a simple clone of this object. 0125 * @return a pointer to the new object. 0126 */ 0127 virtual IBPtr clone() const; 0128 0129 /** Make a clone of this object, possibly modifying the cloned object 0130 * to make it sane. 0131 * @return a pointer to the new object. 0132 */ 0133 virtual IBPtr fullclone() const; 0134 //@} 0135 0136 /** 0137 * Compute \f$\rho\f$ matrix for tau decay in three body case 0138 * @param dec ParticleData object of decaying quark 0139 * @param rhoin Spin density matrix for the decaying quark 0140 * @param pdec The momentum of the decaying particle 0141 * @param partons The partons produced 0142 */ 0143 double threeBodyMatrixElement(tcPDPtr dec,const RhoDMatrix & rhoin, 0144 Lorentz5Momentum & pdec, 0145 ParticleVector& partons) const; 0146 0147 /** 0148 * Four body matrix element for weak decay including an extra gluon 0149 * @param p0 Momentum of decaying quark 0150 * @param p1 Momentum of connected decay product 0151 * @param p2 Momentum of first parton from W decay 0152 * @param p3 Momentum of second parton from W decay 0153 * @param pg Momentum of gluon from W decay 0154 * @param Wcol Whether or not W products are coloured 0155 * @param initial Whether the radiation is from the decaying quark/first decay product 0156 * or W decay products 0157 */ 0158 double fourBodyMatrixElement(Lorentz5Momentum & p0,Lorentz5Momentum & p1, 0159 Lorentz5Momentum & p2,Lorentz5Momentum & p3, 0160 Lorentz5Momentum & pg,bool Wcol, bool & initial) const; 0161 0162 private: 0163 0164 /** 0165 * The assignment operator is private and must never be called. 0166 * In fact, it should not even be implemented. 0167 */ 0168 WeakPartonicDecayer & operator=(const WeakPartonicDecayer &) = delete; 0169 0170 private: 0171 0172 /** 0173 * The code for the matrix element being used. 0174 */ 0175 int MECode; 0176 0177 /** 0178 * Probablilty of radiation giving an extra quark-antiquark pair 0179 */ 0180 double _radprob; 0181 0182 /** 0183 * Maximum number of tries to generate the kinematics 0184 */ 0185 unsigned int _maxtry; 0186 0187 /** 0188 * Maximum weight for three-body decays 0189 */ 0190 double _threemax; 0191 0192 /** 0193 * Maximum weight for four-body decays 0194 */ 0195 double _fourmax; 0196 }; 0197 0198 } 0199 0200 #endif /* HERWIG_WeakPartonicDecayer_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|