|
|
|||
File indexing completed on 2026-08-06 09:24:02
0001 // -*- C++ -*- 0002 // 0003 // EtaPiGammaGammaDecayer.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_EtaPiGammaGammaDecayer_H 0010 #define HERWIG_EtaPiGammaGammaDecayer_H 0011 // This is the declaration of the EtaPiGammaGammaDecayer class. 0012 0013 #include "Herwig/Decay/DecayIntegrator.h" 0014 #include "Herwig/Decay/PhaseSpaceMode.h" 0015 #include "ThePEG/StandardModel/StandardModelBase.h" 0016 #include "Herwig/Utilities/Kinematics.h" 0017 #include "ThePEG/Helicity/LorentzPolarizationVector.h" 0018 0019 namespace Herwig { 0020 using namespace ThePEG; 0021 0022 /** \ingroup Decay 0023 * 0024 * The <code>EtaPiGammaGammaDecayer</code> class implements a VMD model 0025 * matrix element for \f$\eta,\eta'\to \pi^0 \gamma \gamma\f$ taken from 0026 * hep-ph/0112150. 0027 * 0028 * The matrix element is given by 0029 * \f[ \mathcal{M} = 0030 * D(s,t,u)\left[ \epsilon_1\cdot\epsilon_2 q_1\cdot q_2 0031 * -\epsilon_1\cdot q_2\epsilon_2\cdot q_1\right] 0032 * -E(s,t,u)\left[-\epsilon_1\cdot\epsilon_2p\cdot q_1p\cdot q_2 0033 * -\epsilon_1\cdot p\epsilon_2\cdot p q_1\cdot q_2 0034 * +\epsilon_1\cdot q_2 \epsilon_2\cdot p p\cdot q_1 0035 * +\epsilon_1\cdot p \epsilon_2\cdot q_1 p\cdot q_2 0036 *\right], 0037 * \f] 0038 * where \f$q_{1,2}\f$ are the momenta of the photons, \f$\epsilon_{1,2}\f$ are 0039 * the polarization vectors of the photons, \f$p\f$ is the momentum of the decaying 0040 * meson and 0041 * \f[D(s,t,u) = \frac{2\sqrt{3}}{9}g^2_{\omega\rho\pi} 0042 * \left(\frac{2eF^2_{\pi}g}{m^2_V}\right)^2\times\left(\frac{F_\pi}{F_8}\cos\theta\mp\sqrt{2}\frac{F_\pi}{F_0}\sin\theta\right)\times\left[\frac{p\cdot q_2-m^2_\eta}{m^2_V-t}+\frac{p\cdot q_1-m^2_\eta}{m^2_V-u}\right]\f] 0043 * \f[E(s,t,u) =-\frac{2\sqrt{3}}{9}g^2_{\omega\rho\pi}\left(\frac{2eF^2_{\pi}g}{m^2_V}\right)^2\times\left(\frac{F_\pi}{F_8}\cos\theta\mp\sqrt{2}\frac{F_\pi}{F_0}\sin\theta\right)\times\left[\frac1{m^2_V-t}+\frac1{m^2_V-u}\right].\f] 0044 * the \f$-\f$ sign corresponds to the \f$\eta\f$ decay and the \f$+\f$ to the \f$\eta'\f$ decay. 0045 * Here 0046 * - \f$g_{\omega\rho\pi}\f$ is the coupling of the 0047 * \f$\omega\f$ to the \f$\rho\f$ and a pion. 0048 * - \f$e\f$ is the electric charge. 0049 * - \f$F_{\pi}\f$ is the pion decay constant. 0050 * - \f$g\f$ is the conversion factor for a \f$\rho\f$ into a photon. 0051 * - \f$m_V\f$ is the mass of the vector meson, in this case we use the \f$\rho\f$. 0052 * - \f$F_0\f$ is the singlet decay constant. 0053 * - \f$F_8\f$ is the octet decay constant. 0054 * - \f$\theta\f$ is the octet-singlet mixing angle 0055 * - \f$m_\eta\f$ is the mass of the decay meson. 0056 * 0057 * In practice we use a slightly modified form by including a running width term to 0058 * include the \f$\eta'\f$ decay as well as the \f$\eta\f$ decay. 0059 * 0060 * @see DecayIntegrator 0061 * 0062 */ 0063 class EtaPiGammaGammaDecayer: public DecayIntegrator { 0064 0065 public: 0066 0067 /** 0068 * Default constructor. 0069 */ 0070 EtaPiGammaGammaDecayer(); 0071 0072 /** 0073 * Which of the possible decays is required 0074 * @param cc Is this mode the charge conjugate 0075 * @param parent The decaying particle 0076 * @param children The decay products 0077 */ 0078 virtual int modeNumber(bool & cc, tcPDPtr parent, 0079 const tPDVector & children) const; 0080 0081 /** 0082 * Return the matrix element squared for a given mode and phase-space channel. 0083 * @param ichan The channel we are calculating the matrix element for. 0084 * @param part The decaying Particle. 0085 * @param outgoing The particles produced in the decay 0086 * @param momenta The momenta of the particles produced in the decay 0087 * @param meopt Option for the calculation of the matrix element 0088 * @return The matrix element squared for the phase-space configuration. 0089 */ 0090 double me2(const int ichan,const Particle & part, 0091 const tPDVector & outgoing, 0092 const vector<Lorentz5Momentum> & momenta, 0093 MEOption meopt) const; 0094 0095 /** 0096 * Construct the SpinInfos for the particles produced in the decay 0097 */ 0098 virtual void constructSpinInfo(const Particle & part, 0099 ParticleVector outgoing) const; 0100 0101 /** 0102 * Method to return an object to calculate the 3 body partial width. 0103 * @param dm The DecayMode 0104 * @return A pointer to a WidthCalculatorBase object capable of calculating the width 0105 */ 0106 virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const; 0107 0108 /** 0109 * The matrix element to be integrated for the three-body decays as a function 0110 * of the invariant masses of pairs of the outgoing particles. 0111 * @param imode The mode for which the matrix element is needed. 0112 * @param q2 The scale, \e i.e. the mass squared of the decaying particle. 0113 * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. 0114 * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. 0115 * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. 0116 * @param m1 The mass of the first outgoing particle. 0117 * @param m2 The mass of the second outgoing particle. 0118 * @param m3 The mass of the third outgoing particle. 0119 * @return The matrix element 0120 */ 0121 virtual double threeBodyMatrixElement(const int imode, const Energy2 q2, 0122 const Energy2 s3, const Energy2 s2, 0123 const Energy2 s1, const Energy m1, 0124 const Energy m2,const Energy m3) const; 0125 0126 /** 0127 * Output the setup information for the particle database 0128 * @param os The stream to output the information to 0129 * @param header Whether or not to output the information for MySQL 0130 */ 0131 virtual void dataBaseOutput(ofstream & os,bool header) 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 * Standard Init function used to initialize the interfaces. 0153 */ 0154 static void Init(); 0155 0156 protected: 0157 0158 /** @name Clone Methods. */ 0159 //@{ 0160 /** 0161 * Make a simple clone of this object. 0162 * @return a pointer to the new object. 0163 */ 0164 virtual IBPtr clone() const {return new_ptr(*this);} 0165 0166 /** Make a clone of this object, possibly modifying the cloned object 0167 * to make it sane. 0168 * @return a pointer to the new object. 0169 */ 0170 virtual IBPtr fullclone() const {return new_ptr(*this);} 0171 //@} 0172 0173 protected: 0174 0175 /** @name Standard Interfaced functions. */ 0176 //@{ 0177 /** 0178 * Initialize this object after the setup phase before saving and 0179 * EventGenerator to disk. 0180 * @throws InitException if object could not be initialized properly. 0181 */ 0182 virtual void doinit(); 0183 0184 /** 0185 * Initialize this object to the begining of the run phase. 0186 */ 0187 virtual void doinitrun(); 0188 //@} 0189 0190 private: 0191 0192 /** 0193 * Private and non-existent assignment operator. 0194 */ 0195 EtaPiGammaGammaDecayer & operator=(const EtaPiGammaGammaDecayer &) = delete; 0196 0197 private: 0198 0199 /** 0200 * The coupling \f$g_{\omega\rho\pi}\f$ of the \f$\rho\f$ to \f$\omega\f$ and 0201 * a \f$\pi\f$. 0202 */ 0203 InvEnergy _grhoomega; 0204 0205 /** 0206 * The pion decay constant, \f$F_{\pi}\f$ 0207 */ 0208 Energy _fpi; 0209 0210 /** 0211 * The mass of the \f$\rho\f$. 0212 */ 0213 Energy _rhomass; 0214 0215 /** 0216 * The width of the \f$\rho\f$. 0217 */ 0218 Energy _rhowidth; 0219 0220 /** 0221 * The coupling for the conversion of a rho to a photon, \f$g\f$ 0222 */ 0223 double _grho; 0224 0225 /** 0226 * The mass of the pion 0227 */ 0228 Energy _mpi; 0229 0230 /** 0231 * Constant for the running \f$\rho\f$ width calculation. 0232 */ 0233 double _rhoconst; 0234 0235 /** 0236 * Use local values of the \f$\rho\f$ mass and width. 0237 */ 0238 bool _localparameters; 0239 0240 /** 0241 * Ratios of the decay constants \f$F_8/F_\pi\f$. 0242 */ 0243 double _ratiofpif8; 0244 0245 /** 0246 * Ratios of the decay constants \f$F_0/F_\pi\f$. 0247 */ 0248 double _ratiofpif0; 0249 0250 /** 0251 * the mixing angle, \f$\theta\f$. 0252 */ 0253 double _theta; 0254 0255 /** 0256 * the maximum weights for the \f$\eta\f$ decay. 0257 */ 0258 double _etamax; 0259 0260 /** 0261 * the maximum weights for the \f$\eta'\f$ decay. 0262 */ 0263 double _etapmax; 0264 0265 /** 0266 * The prefactor for the \f$D(s,t,u)\f$ function. 0267 */ 0268 vector<InvEnergy2> _dconst; 0269 0270 /** 0271 * The prefactor for the \f$E(s,t,u)\f$ function. 0272 */ 0273 vector<InvEnergy2> _econst; 0274 0275 /** 0276 * Spin density matrix 0277 */ 0278 mutable RhoDMatrix _rho; 0279 0280 /** 0281 * Polarization vectors for the photons 0282 */ 0283 mutable vector<Helicity::LorentzPolarizationVector> _vectors[2]; 0284 }; 0285 0286 } 0287 0288 0289 #endif /* HERWIG_EtaPiGammaGammaDecayer_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|