Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:24:01

0001 // -*- C++ -*-
0002 //
0003 // QuarkoniumDecayer.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_QuarkoniumDecayer_H
0010 #define HERWIG_QuarkoniumDecayer_H
0011 //
0012 // This is the declaration of the QuarkoniumDecayer class.
0013 //
0014 
0015 #include "PartonicDecayerBase.h"
0016 
0017 namespace Herwig {
0018 using namespace ThePEG;
0019 
0020 /** \ingroup Decay
0021  *
0022  * The QuarkoniumDecayer class is designed for the partonic decay of bottom and charmonium
0023  *  resonances. In general it is used for decays of the type:
0024  *    - \f$q,\bar{q}\f$ decay to a quark-antiquark pair generally using phase space,
0025  *      \e i.e. MECode=0.
0026  *
0027  *    - \f$g,g\f$ decay to two gluons normally using phase space,
0028  *      \e i.e. MECode=0.
0029  *
0030  *    - \f$g,g,g\f$ decay to three gluons, this will normally use the Ore-Powell 
0031  *      matrix element, \e i.e. MECode=130.
0032  *
0033  *    - \f$g,g,\gamma\f$ decay to two gluons and a photon, this will normally use
0034  *      the Ore-Powell matrix element, \e i.e. MECode=130.
0035  * 
0036  *
0037  *  This class supports two values of the MECode variable which can be set using
0038  *  the interface
0039  *
0040  *  - MECode=0   flat-phase space
0041  *  - MECode=130 The Ore-Powell onium matrix element.
0042  *
0043  *  This is designed to be the same as the FORTRAN HERWIG routine.
0044  *
0045  * @see HeavyDecayer
0046  * @see Hw64Decayer
0047  * @see Decayer
0048  *
0049  */
0050 class QuarkoniumDecayer: public PartonicDecayerBase {
0051 
0052 public:
0053 
0054   /**
0055    * Standard ctors and dtor
0056    */
0057   QuarkoniumDecayer();
0058 
0059   /**
0060    * Check if this decayer can perfom the decay for a particular mode
0061    * @param parent The decaying particle
0062    * @param children The decay products
0063    * @return true If this decayer can handle the given mode, otherwise false.
0064    */
0065   virtual bool accept(tcPDPtr parent, const tPDVector & children) const;
0066   
0067   /**
0068    *  Perform the decay of the particle to the specified decay products
0069    * @param parent The decaying particle
0070    * @param children The decay products
0071    * @return a ParticleVector containing the decay products.
0072    */
0073   virtual ParticleVector decay(const Particle & parent,
0074                    const tPDVector & children) const;
0075 
0076 
0077   /**
0078    * Output the setup information for the particle database
0079    * @param os The stream to output the information to
0080    * @param header Whether or not to output the information for MySQL
0081    */
0082   virtual void dataBaseOutput(ofstream & os,bool header) const;
0083 
0084 public:
0085 
0086   /**
0087    * Standard Init function used to initialize the interface.
0088    */
0089   static void Init();
0090 
0091   /**
0092    * Standard Persistent stream methods
0093    */
0094   void persistentOutput(PersistentOStream &) const;
0095 
0096   /**
0097    * Standard Persistent stream methods
0098    */
0099   void persistentInput(PersistentIStream &, int);
0100 
0101    /**
0102     * Standard clone methods
0103     */
0104 protected:
0105 
0106    /**
0107     * Standard clone methods
0108     */
0109    virtual IBPtr clone() const;
0110 
0111    /**
0112     * Standard clone methods
0113     */
0114    virtual IBPtr fullclone() const;
0115 
0116 private:
0117 
0118   /**
0119    *  Private and non-existent assignment operator.
0120    */
0121   const QuarkoniumDecayer & operator=(const QuarkoniumDecayer &) = delete;
0122 
0123 private:
0124 
0125   /**
0126    *  The code for the type of matrix element being used.
0127    */
0128   int MECode;
0129 };
0130 
0131 }
0132 
0133 #endif /* HERWIG_QuarkoniumDecayer_H */