|
|
|||
File indexing completed on 2026-08-06 09:24:02
0001 // -*- C++ -*- 0002 // 0003 // EtaPiPiPiDecayer.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_EtaPiPiPiDecayer_H 0010 #define HERWIG_EtaPiPiPiDecayer_H 0011 // This is the declaration of the EtaPiPiPiDecayer class. 0012 0013 #include "Herwig/Decay/DecayIntegrator.h" 0014 #include "Herwig/Decay/PhaseSpaceMode.h" 0015 0016 namespace Herwig { 0017 using namespace ThePEG; 0018 0019 /** \ingroup Decay 0020 * 0021 * The <code>EtaPiPiPiDecayer</code> class is designed for the simulation of 0022 * the decay of the \f$\eta\f$ or \f$\eta'\f$ to either \f$\pi^+\pi^-\pi^0\f$ 0023 * or \f$\pi^0\pi^0\pi^0\f$ and the decay of the \f$\eta'\f$ to 0024 * \f$\pi^+\pi^-\eta\f$ or \f$\pi^0\pi^0\eta\f$ 0025 * 0026 * The matrix element takes the form 0027 * \f[ |\mathcal{M}|^2 = N\left[1+ay+by^2+cx^2\right],\f] 0028 * where 0029 * \f[x = \frac{\sqrt{3}(u-t)}{2M_0(M_0-m_1-m_2-m_3)},\f] 0030 * \f[y = \frac{(m_1+m_2+m_3)((M_0-m_3)^2-s)}{2M_0(m_1+m_2)(M_0-m_1-m_2-m_3)}-1,\f] 0031 * where 0032 * - \f$m_{1,2,3}\f$ are the masses of the outgoing mesons 0033 * - \f$u = (p_0-p_1)^2\f$, 0034 * - \f$t = (p_0-p_2)^2\f$, 0035 * - \f$s = (p_0-p_3)^2\f$. 0036 * 0037 * This form is taken from hep-ph/0301058 as are the experimental results for 0038 * the constants which are used where available and the theory results which are 0039 * used when there is no experimental data. 0040 * 0041 * @see DecayIntegrator 0042 * 0043 */ 0044 class EtaPiPiPiDecayer: public DecayIntegrator { 0045 0046 public: 0047 0048 /** 0049 * Default constructor. 0050 */ 0051 EtaPiPiPiDecayer() { 0052 // no intermediates 0053 generateIntermediates(false); 0054 } 0055 0056 0057 /** 0058 * Which of the possible decays is required 0059 * @param cc Is this mode the charge conjugate 0060 * @param parent The decaying particle 0061 * @param children The decay products 0062 */ 0063 virtual int modeNumber(bool & cc, tcPDPtr parent, 0064 const tPDVector & children) const; 0065 0066 /** 0067 * Return the matrix element squared for a given mode and phase-space channel. 0068 * @param ichan The channel we are calculating the matrix element for. 0069 * @param part The decaying Particle. 0070 * @param outgoing The particles produced in the decay 0071 * @param momenta The momenta of the particles produced in the decay 0072 * @param meopt Option for the calculation of the matrix element 0073 * @return The matrix element squared for the phase-space configuration. 0074 */ 0075 double me2(const int ichan,const Particle & part, 0076 const tPDVector & outgoing, 0077 const vector<Lorentz5Momentum> & momenta, 0078 MEOption meopt) const; 0079 0080 /** 0081 * Construct the SpinInfos for the particles produced in the decay 0082 */ 0083 virtual void constructSpinInfo(const Particle & part, 0084 ParticleVector outgoing) const; 0085 0086 /** 0087 * Method to return an object to calculate the 3 body partial width. 0088 * @param dm The DecayMode 0089 * @return A pointer to a WidthCalculatorBase object capable of calculating the width 0090 */ 0091 virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const; 0092 0093 /** 0094 * The differential three body decay rate with one integral performed. 0095 * @param imode The mode for which the matrix element is needed. 0096 * @param q2 The scale, \e i.e. the mass squared of the decaying particle. 0097 * @param s The invariant mass which still needs to be integrate over. 0098 * @param m1 The mass of the first outgoing particle. 0099 * @param m2 The mass of the second outgoing particle. 0100 * @param m3 The mass of the third outgoing particle. 0101 * @return The differential rate \f$\frac{d\Gamma}{ds}\f$ 0102 */ 0103 virtual InvEnergy threeBodydGammads(const int imode, const Energy2 q2, const Energy2 s, 0104 const Energy m1, const Energy m2, 0105 const Energy m3) const; 0106 0107 /** 0108 * Output the setup information for the particle database 0109 * @param os The stream to output the information to 0110 * @param header Whether or not to output the information for MySQL 0111 */ 0112 virtual void dataBaseOutput(ofstream & os,bool header) const; 0113 0114 public: 0115 0116 /** @name Functions used by the persistent I/O system. */ 0117 //@{ 0118 /** 0119 * Function used to write out object persistently. 0120 * @param os the persistent output stream written to. 0121 */ 0122 void persistentOutput(PersistentOStream & os) const; 0123 0124 /** 0125 * Function used to read in object persistently. 0126 * @param is the persistent input stream read from. 0127 * @param version the version number of the object when written. 0128 */ 0129 void persistentInput(PersistentIStream & is, int version); 0130 //@} 0131 0132 /** 0133 * Standard Init function used to initialize the interfaces. 0134 */ 0135 static void Init(); 0136 0137 protected: 0138 0139 /** @name Clone Methods. */ 0140 //@{ 0141 /** 0142 * Make a simple clone of this object. 0143 * @return a pointer to the new object. 0144 */ 0145 virtual IBPtr clone() const {return new_ptr(*this);} 0146 0147 /** Make a clone of this object, possibly modifying the cloned object 0148 * to make it sane. 0149 * @return a pointer to the new object. 0150 */ 0151 virtual IBPtr fullclone() const {return new_ptr(*this);} 0152 //@} 0153 0154 protected: 0155 0156 /** @name Standard Interfaced functions. */ 0157 //@{ 0158 /** 0159 * Initialize this object after the setup phase before saving and 0160 * EventGenerator to disk. 0161 * @throws InitException if object could not be initialized properly. 0162 */ 0163 virtual void doinit(); 0164 0165 /** 0166 * Initialize this object to the begining of the run phase. 0167 */ 0168 virtual void doinitrun(); 0169 //@} 0170 0171 private: 0172 0173 /** 0174 * Private and non-existent assignment operator. 0175 */ 0176 EtaPiPiPiDecayer & operator=(const EtaPiPiPiDecayer &) = delete; 0177 0178 public: 0179 0180 /** 0181 * Set the parameters for a decay mode 0182 */ 0183 string setUpDecayMode(string arg); 0184 0185 private: 0186 0187 /** 0188 * the id of the incoming particle 0189 */ 0190 vector<int> incoming_; 0191 0192 /** 0193 * the id of the last neutral meson 0194 */ 0195 vector<int> outgoing_; 0196 0197 /** 0198 * whether the pions are charged or neutral 0199 */ 0200 vector<bool> charged_; 0201 0202 /** 0203 * the prefactor for the decay 0204 */ 0205 vector<double> prefactor_; 0206 0207 /** 0208 * The constants for the matrix elements 0209 */ 0210 //*{ 0211 /** 0212 * The \f$a\f$ constant 0213 */ 0214 vector<double> a_; 0215 0216 /** 0217 * The \f$a\f$ constant 0218 */ 0219 vector<double> b_; 0220 0221 /** 0222 * The \f$a\f$ constant 0223 */ 0224 vector<double> c_; 0225 //@} 0226 0227 /** 0228 * maximum weights 0229 */ 0230 vector<double> maxWeight_; 0231 0232 /** 0233 * Spin density matrix 0234 */ 0235 mutable RhoDMatrix rho_; 0236 }; 0237 0238 } 0239 0240 0241 #endif /* HERWIG_EtaPiPiPiDecayer_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|