|
|
|||
File indexing completed on 2026-08-06 09:24:02
0001 // -*- C++ -*- 0002 // 0003 // SMHiggsWWDecayer.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_SMHiggsWWDecayer_H 0010 #define HERWIG_SMHiggsWWDecayer_H 0011 // 0012 // This is the declaration of the SMHiggsWWDecayer class. 0013 // 0014 0015 #include "Herwig/Decay/PerturbativeDecayer.h" 0016 #include "Herwig/Decay/PhaseSpaceMode.h" 0017 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh" 0018 #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.fh" 0019 #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" 0020 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" 0021 0022 namespace Herwig { 0023 0024 using namespace ThePEG; 0025 using namespace ThePEG::Helicity; 0026 0027 /** 0028 * The SMHiggsWWDecayer class performs the decay of the Standard Model 0029 * Higgs boson to \f$W^+W^-\f$ and \f$Z^0Z^0\f$ including the decays 0030 * of the gauge bosons. 0031 * 0032 * @see \ref SMHiggsWWDecayerInterfaces "The interfaces" 0033 * defined for SMHiggsWWDecayer. 0034 */ 0035 class SMHiggsWWDecayer: public PerturbativeDecayer { 0036 0037 public: 0038 0039 /** 0040 * A typedef to select the boson decay modes 0041 */ 0042 typedef Selector<unsigned int> ModeSelector; 0043 0044 public: 0045 0046 /** 0047 * The default constructor. 0048 */ 0049 SMHiggsWWDecayer(); 0050 0051 /** 0052 * Check if this decayer can perfom the decay for a particular mode. 0053 * Uses the modeNumber member but can be overridden 0054 * @param parent The decaying particle 0055 * @param children The decay products 0056 */ 0057 virtual bool accept(tcPDPtr parent, const tPDVector & children) const; 0058 0059 /** 0060 * For a given decay mode and a given particle instance, perform the 0061 * decay and return the decay products. As this is the base class this 0062 * is not implemented. 0063 * @return The vector of particles produced in the decay. 0064 */ 0065 virtual ParticleVector decay(const Particle & parent, 0066 const tPDVector & children) const; 0067 0068 /** 0069 * Which of the possible decays is required 0070 */ 0071 virtual int modeNumber(bool &, tcPDPtr, const tPDVector & ) const {return -1;} 0072 0073 /** 0074 * Return the matrix element squared for a given mode and phase-space channel. 0075 * @param ichan The channel we are calculating the matrix element for. 0076 * @param part The decaying Particle. 0077 * @param outgoing The particles produced in the decay 0078 * @param momenta The momenta of the particles produced in the decay 0079 * @param meopt Option for the calculation of the matrix element 0080 * @return The matrix element squared for the phase-space configuration. 0081 */ 0082 double me2(const int ichan,const Particle & part, 0083 const tPDVector & outgoing, 0084 const vector<Lorentz5Momentum> & momenta, 0085 MEOption meopt) const; 0086 0087 /** 0088 * Construct the SpinInfos for the particles produced in the decay 0089 */ 0090 virtual void constructSpinInfo(const Particle & part, 0091 ParticleVector outgoing) const; 0092 0093 /** 0094 * Output the setup information for the particle database 0095 * @param os The stream to output the information to 0096 * @param header Whether or not to output the information for MySQL 0097 */ 0098 virtual void dataBaseOutput(ofstream & os,bool header) const; 0099 0100 public: 0101 0102 /** @name Functions used by the persistent I/O system. */ 0103 //@{ 0104 /** 0105 * Function used to write out object persistently. 0106 * @param os the persistent output stream written to. 0107 */ 0108 void persistentOutput(PersistentOStream & os) const; 0109 0110 /** 0111 * Function used to read in object persistently. 0112 * @param is the persistent input stream read from. 0113 * @param version the version number of the object when written. 0114 */ 0115 void persistentInput(PersistentIStream & is, int version); 0116 //@} 0117 0118 /** 0119 * The standard Init function used to initialize the interfaces. 0120 * Called exactly once for each class by the class description system 0121 * before the main function starts or 0122 * when this class is dynamically loaded. 0123 */ 0124 static void Init(); 0125 0126 protected: 0127 0128 /** @name Clone Methods. */ 0129 //@{ 0130 /** 0131 * Make a simple clone of this object. 0132 * @return a pointer to the new object. 0133 */ 0134 virtual IBPtr clone() const {return new_ptr(*this);} 0135 0136 /** Make a clone of this object, possibly modifying the cloned object 0137 * to make it sane. 0138 * @return a pointer to the new object. 0139 */ 0140 virtual IBPtr fullclone() const {return new_ptr(*this);} 0141 //@} 0142 0143 protected: 0144 0145 /** @name Standard Interfaced functions. */ 0146 //@{ 0147 /** 0148 * Initialize this object after the setup phase before saving an 0149 * EventGenerator to disk. 0150 * @throws InitException if object could not be initialized properly. 0151 */ 0152 virtual void doinit(); 0153 0154 /** 0155 * Initialize this object. Called in the run phase just before 0156 * a run begins. 0157 */ 0158 virtual void doinitrun(); 0159 //@} 0160 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 SMHiggsWWDecayer & operator=(const SMHiggsWWDecayer &) = delete; 0169 0170 private: 0171 0172 /** 0173 * Pointers to the vertices for the helicity calculations 0174 */ 0175 //@{ 0176 /** 0177 * Pointer to the fermion-femion-W vertex 0178 */ 0179 AbstractFFVVertexPtr _theFFWVertex; 0180 0181 /** 0182 * Pointer to the fermion-femion-Z vertex 0183 */ 0184 AbstractFFVVertexPtr _theFFZVertex; 0185 0186 /** 0187 * Pointer to the higgs-WW/ZZ vertex 0188 */ 0189 AbstractVVSVertexPtr _theHVVVertex; 0190 //@} 0191 0192 /** 0193 * Selectors for the gauge boson decay modes 0194 */ 0195 //@{ 0196 /** 0197 * Selector for the W decays 0198 */ 0199 ModeSelector _wdecays; 0200 0201 /** 0202 * Selector for the Z decays 0203 */ 0204 ModeSelector _zdecays; 0205 //@} 0206 0207 /** 0208 * Product of gauge boson branching ratios for normalisation 0209 */ 0210 vector<double> _ratio; 0211 0212 /** 0213 * Maximum weights for the decays 0214 */ 0215 //@{ 0216 /** 0217 * Maximum weight for \f$H\to W^+W^-\f$ decays 0218 */ 0219 vector<double> _wmax; 0220 0221 /** 0222 * Maximum weight for \f$H\to Z^0Z^0\f$ decays 0223 */ 0224 vector<double> _zmax; 0225 //@} 0226 0227 /** 0228 * Spin density matrix 0229 */ 0230 mutable RhoDMatrix _rho; 0231 0232 /** 0233 * Scalar wavefunction 0234 */ 0235 mutable ScalarWaveFunction _swave; 0236 0237 /** 0238 * 1st spinor wavefunction 0239 */ 0240 mutable vector<SpinorWaveFunction > _awave1; 0241 0242 /** 0243 * 2nd spinor wavefunction 0244 */ 0245 mutable vector<SpinorWaveFunction > _awave2; 0246 0247 /** 0248 * 1st barred spinor wavefunction 0249 */ 0250 mutable vector<SpinorBarWaveFunction> _fwave1; 0251 0252 /** 0253 * 2nd barred spinor wavefunction 0254 */ 0255 mutable vector<SpinorBarWaveFunction> _fwave2; 0256 }; 0257 0258 } 0259 0260 #endif /* HERWIG_SMHiggsWWDecayer_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|