Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // ThreePionCLEOCurrent.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 THEPEG_ThreePionCLEOCurrent_H
0010 #define THEPEG_ThreePionCLEOCurrent_H
0011 //
0012 // This is the declaration of the ThreePionCLEOCurrent class.
0013 //
0014 #include "WeakCurrent.h"
0015 #include "Herwig/Utilities/Interpolator.h"
0016 #include "Herwig/Utilities/Kinematics.h"
0017 #include "ThePEG/StandardModel/StandardModelBase.h"
0018 
0019 namespace Herwig {
0020 using namespace ThePEG;
0021 
0022 /** \ingroup Decay
0023  *
0024  *  The <code>ThreePionCLEOCurrent</code> class implements
0025  *  the decay of the weak current to three pions
0026  *  using the currents from CLEO Phys. Rev. D 61,012002. This is
0027  *  a model including two \f$\rho\f$ mesons in both \f$s\f$ and \f$p\f$ wave,
0028  *  a \f$\sigma\f$, the \f$f_2\f$ and \f$f_0(1370)\f$.
0029  *
0030  * The form factors for the \f$a_1^+ \to \pi^0 \pi^0 \pi^+\f$ mode are
0031  *
0032  * \f[F_1=\sum_k\left\{g^P_{\rho_k}B_{\rho_k}^P(s_1)
0033  *          -\frac{g^D_{\rho_k}}3B_{\rho_k}^P(s_2)
0034  *                        \left((s_3-m_{\pi^+}^2)-(s_1-m_{\pi^0}^2)\right)\right\}
0035  *     +\frac23\left(g_\sigma B^S_\sigma(s_3)+g_{f_0}B^S_{f_0}(s_3)\right)     
0036  * +\frac{g_{f_2}}{18s_3}(q^2-m_{\pi^+}^2+s_3)(4m_{\pi^0}^2-s_3)B^D_{f_2}(s_3)
0037  *\f]
0038  *
0039  * \f[F_2=\sum_k\left\{-\frac13g^P_{\rho_k}B_{\rho_k}^P(s_2)
0040  *         -g^D_{\rho_k}B_{\rho_k}^P(s_1)
0041  *                       \left((s_3-m_{\pi^+}^2)-(s_2-m_{\pi^0}^2)\right)\right\}
0042  *     +\frac23\left(g_\sigma B^S_\sigma(s_3)+g_{f_0}B^S_{f_0}(s_3)\right)
0043  * +\frac1{18s_3}g_{f_2}(q^2-m_{\pi^+}^2+s_3)(4m_{\pi^0}^2-s_3)B^D_{f_2}(s_3)
0044  *\f]
0045  *
0046  * \f[F_3=\sum_k g^D_{\rho_k}\left\{ 
0047  *     -\frac13B_{\rho_k}^P(s_1)\left((s_3-m_{\pi^+}^2)-(s_2-m_{\pi^0}^2)\right)
0048  *     +\frac13B_{\rho_k}^P(s_2)\left((s_3-m_{\pi^+}^2)-(s_1-m_{\pi^0}^2)\right)\right\}
0049  *  -\frac{g_{f_2}}2(s_1-s_2)B^D_{f_2}(s_3)\f]
0050  *  The form factors for  \f$a_1^+\to \pi^+ \pi^+ \pi^-\f$ mode
0051  *
0052  * \f[F_1=\sum_k\left\{-g^P_{\rho_k}B_{\rho_k}^P(s_1)
0053  *                       -\frac{g^D_{\rho_k}}3B_{\rho_k}^P(s_2)(s_1-s_3)\right\}
0054  *    -\frac23\left(g_\sigma B^S_\sigma(s_2)+g_{f_0} B^S_{f_0}(s_2)\right) 
0055  *    +g_{f_2}\left(\frac12(s_3-s_2)B^D_{f_2}(s_1)
0056  *    -\frac1{18s_2}(4m_{\pi^+}^2-s_2)(q^2+s_2-m_{\pi^+}^2)B^D_{f_2}(s_2)\right)\f]
0057  *
0058  * \f[F_2=\sum_k\left\{-g^P_{\rho_k}B_{\rho_k}^P(s_2)
0059  *                       -\frac{g^D_{\rho_k}}3B_{\rho_k}^P(s_1)(s_2-s_3)\right\}
0060  *    -\frac23\left(g_\sigma B^S_\sigma(s_1)+g_{f_0} B^S_{f_0}(s_1)\right)
0061  *    +g_{f_2}\left(\frac12(s_3-s_1)B^D_{f_2}(s_2)
0062  *    -\frac1{18s_1}(4m_{\pi^+}^2-s_1)(q^2+s_1-m_{\pi^+}^2)B^D_{f_2}(s_1)\right)\f]
0063  *
0064  * \f[F_3=\sum_k
0065  *     -g^D_{\rho_k}\left( \frac13(s_2-s_3)B_{\rho_k}^P(s_1)
0066  *                        -\frac13(s_1-s_3)B_{\rho_k}^P(s_2)\right)
0067  *   -\frac23\left(g_\sigma B^S_\sigma(s_1)+g_{f_0}B^S_{f_0}(s_1)\right)
0068  *   +\frac23\left(g_\sigma B^S_\sigma(s_2)+g_{f_0}B^S_{f_0}(s_2)\right)\f]
0069  *\f[
0070  *   +g_{f_2}\left(-\frac1{18s_1}(4m_{\pi^+}^2-s_1)(q^2+s_1-m_{\pi^+}^2)B^D_{f_2}(s_1)
0071  *            +\frac1{18s_2}(4m_{\pi^+}^2-s_2)(q^2+s_2-m_{\pi^+}^2)B^D_{f_2}(s_2)\right)\f]
0072  *
0073  * where
0074  *
0075  * - \f$g_{f_2}\f$ is the coupling of the \f$f_2\f$ to the \f$a_1\f$
0076  * - \f$g_{f_0}\f$ is the coupling of the \f$f_0(1370)\f$ to the \f$a_1\f$
0077  * - \f$g_{\sigma}\f$ is the coupling of the \f$\sigma\f$ to the \f$a_1\f$
0078  * - \f$g^P_{\rho_k}\f$ is the \f$p\f$-wave coupling of the \f$\rho_k\f$ multiplet
0079  *     to the \f$a_1\f$.
0080  * - \f$g^D_{\rho_k}\f$ is the \f$d\f$-wave coupling of the \f$\rho_k\f$ multiplet
0081  *     to the \f$a_1\f$.
0082  * - \f$s_3=m^2_{12}\f$ is the invariant mass squared of particles 1 and 2.
0083  * - \f$s_2=m^2_{13}\f$ is the invariant mass squared of particles 1 and 3.
0084  * - \f$s_1=m^2_{23}\f$ is the invariant mass squared of particles 2 and 3.
0085  *
0086  * The Breit-Wigner factors are given by
0087     \f$B^L_Y(s_i) = \frac{m^2_Y}{m^2_Y-s_i+im_Y\Gamma^{Y,L}(s_i)}\f$
0088  * where
0089  * \f$\Gamma^{Y,L}(s_i) = \Gamma^Y\left(\frac{p(s_i)}{p(M_Y}\right)^{2L+1}\frac{m_Y}{\sqrt{s_i}}\f$
0090  * \f$m_Y\f$ and \f$\Gamma^Y\f$ are the mass and width of the particle \f$Y\f$ 
0091  * respectively. \f$p(s_i)\f$ is the momentum of the outgoing pion in the 
0092  * rest frame of the resonance \f$Y\f$.
0093  *
0094  * @see a1ThreePionCLEODecayer
0095  * @see ThreePionCLEOa1MatrixElement
0096  * 
0097  */
0098 class ThreePionCLEOCurrent: public WeakCurrent {
0099 
0100   /**
0101    * The matrix element for the running \f$a_1\f$ width is a friend to 
0102    * keep some members private.
0103    */
0104   friend class ThreePionCLEOa1MatrixElement;
0105 
0106 public:
0107 
0108   /**
0109    * Default constructor
0110    */
0111   ThreePionCLEOCurrent();
0112 
0113   /**
0114    * Hadronic current. This method is purely virtual and must be implemented in
0115    * all classes inheriting from this one.
0116    * @param resonance If specified only include terms with this particle
0117    * @param flavour Information on the required flavours of the quarks
0118    * @param imode The mode
0119    * @param ichan The phase-space channel the current is needed for.
0120    * @param scale The invariant mass of the particles in the current.
0121    * @param outgoing The particles produced in the decay
0122    * @param momenta  The momenta of the particles produced in the decay
0123    * @param meopt Option for the calculation of the matrix element
0124    * @return The current. 
0125    */
0126   virtual vector<LorentzPolarizationVectorE> 
0127   current(tcPDPtr resonance,
0128       FlavourInfo flavour,
0129       const int imode, const int ichan,Energy & scale,
0130       const tPDVector & outgoing,
0131       const vector<Lorentz5Momentum> & momenta,
0132       DecayIntegrator::MEOption meopt) const;
0133 
0134   /**
0135    * Accept the decay. Checks the mesons against the list.
0136    * @param id The id's of the particles in the current.
0137    * @return Can this current have the external particles specified.
0138    */
0139   virtual bool accept(vector<int> id);
0140 
0141   /**
0142    * Return the decay mode number for a given set of particles in the current. 
0143    * Checks the mesons against the list.
0144    * @param id The id's of the particles in the current.
0145    * @return The number of the mode
0146    */
0147   virtual unsigned int decayMode(vector<int> id);
0148 
0149   /**
0150    * The particles produced by the current. This returns the mesons for the mode.
0151    * @param icharge The total charge of the particles in the current.
0152    * @param imode The mode for which the particles are being requested
0153    * @param iq The PDG code for the quark
0154    * @param ia The PDG code for the antiquark
0155    * @return The external particles for the current.
0156    */
0157   virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia);
0158 
0159 public:
0160 
0161   /** @name Methods for the construction of the phase space integrator. */
0162   //@{
0163   /**
0164    * Complete the construction of the decay mode for integration.classes inheriting
0165    * from this one.
0166    * This method is purely virtual and must be implemented in the classes inheriting
0167    * from WeakCurrent.
0168    * @param icharge   The total charge of the outgoing particles in the current.
0169    * @param resonance If specified only include terms with this particle
0170    * @param flavour Information on the required flavours of the quarks
0171    * @param imode     The mode in the current being asked for.
0172    * @param mode      The phase space mode for the integration
0173    * @param iloc      The location of the of the first particle from the current in
0174    *                  the list of outgoing particles.
0175    * @param ires      The location of the first intermediate for the current.
0176    * @param phase     The prototype phase space channel for the integration.
0177    * @param upp       The maximum possible mass the particles in the current are
0178    *                  allowed to have.
0179    * @return Whether the current was sucessfully constructed.
0180    */
0181   virtual bool createMode(int icharge, tcPDPtr resonance,
0182               FlavourInfo flavour,
0183               unsigned int imode,PhaseSpaceModePtr mode,
0184               unsigned int iloc,int ires,
0185               PhaseSpaceChannel phase, Energy upp );
0186   //@}
0187 
0188   /**
0189    * Output the setup information for the particle database
0190    * @param os The stream to output the information to
0191    * @param header Whether or not to output the information for MySQL
0192    * @param create Whether or not to add a statement creating the object
0193    */
0194   virtual void dataBaseOutput(ofstream & os,bool header,bool create) const;
0195 
0196   /**
0197    * the matrix element for the a1 decay to calculate the running width
0198    * @param iopt The mode
0199    * @param q2 The mass of the decaying off-shell \f$a_1\f$, \f$q^2\f$.
0200    * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$.
0201    * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$.
0202    * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$.
0203    * @param m1 The mass of the first  outgoing particle.
0204    * @param m2 The mass of the second outgoing particle.
0205    * @param m3 The mass of the third  outgoing particle.
0206    * @return The matrix element squared summed over spins.
0207    */
0208   double threeBodyMatrixElement(const int iopt, const Energy2 q2,
0209                 const Energy2 s3, const Energy2 s2, 
0210                 const Energy2 s1, const Energy  m1,
0211                 const Energy  m2, const Energy  m3) const;
0212   
0213 public:
0214 
0215   /** @name Functions used by the persistent I/O system. */
0216   //@{
0217   /**
0218    * Function used to write out object persistently.
0219    * @param os the persistent output stream written to.
0220    */
0221   void persistentOutput(PersistentOStream & os) const;
0222 
0223   /**
0224    * Function used to read in object persistently.
0225    * @param is the persistent input stream read from.
0226    * @param version the version number of the object when written.
0227    */
0228   void persistentInput(PersistentIStream & is, int version);
0229   //@}
0230 
0231   /**
0232    * Standard Init function used to initialize the interfaces.
0233    */
0234   static void Init();
0235 
0236 protected:
0237   
0238   /**
0239    * Calculate CLEO form factors for the current. Implements the form factors
0240    * described above.
0241    * @param imode The mode
0242    * @param ichan The phase space channel
0243    * @param q2 The scale \f$q^2\f$ for the current.
0244    * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$.
0245    * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$.
0246    * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$.
0247    * @param F1 The form factor \f$F_1\f$.
0248    * @param F2 The form factor \f$F_2\f$.
0249    * @param F3 The form factor \f$F_3\f$.
0250    */
0251   void CLEOFormFactor(int imode,int ichan,Energy2 q2,Energy2 s1, Energy2 s2,
0252               Energy2 s3,Complex & F1, Complex & F2, Complex & F3) const;
0253 
0254 protected:
0255 
0256   /** @name Clone Methods. */
0257   //@{
0258   /**
0259    * Make a simple clone of this object.
0260    * @return a pointer to the new object.
0261    */
0262   virtual IBPtr clone() const {return new_ptr(*this);}
0263 
0264   /** Make a clone of this object, possibly modifying the cloned object
0265    * to make it sane.
0266    * @return a pointer to the new object.
0267    */
0268   virtual IBPtr fullclone() const {return new_ptr(*this);}
0269   //@}
0270 
0271 protected:
0272 
0273   /** @name Standard Interfaced functions. */
0274   //@{
0275   /**
0276    * Initialize this object after the setup phase before saving and
0277    * EventGenerator to disk.
0278    * @throws InitException if object could not be initialized properly.
0279    */
0280   virtual void doinit();
0281 
0282   /**
0283    * Initialize this object to the begining of the run phase.
0284    */
0285   virtual void doinitrun();
0286 
0287   /**
0288    * Check sanity of the object during the setup phase.
0289    */
0290   virtual void doupdate();
0291   //@}
0292 
0293 private:
0294 
0295   /**
0296    * Private and non-existent assignment operator.
0297    */
0298   ThreePionCLEOCurrent & operator=(const ThreePionCLEOCurrent &) = delete;
0299 
0300 private:
0301 
0302   /**
0303    * The \f$a_1\f$ running width
0304    * @param q2 The scale \f$q^2\f$ for the Breit-Wigner
0305    * @return The \f$a_1\f$ running width.
0306    */
0307   Energy a1width(Energy2 q2) const;
0308 
0309   /**
0310    * Initialize the \f$a_1\f$ running width
0311    * @param iopt Initialization option (-1 full calculation, 0 set up the interpolation)
0312    */
0313   void inita1Width(int iopt);
0314   
0315   /**
0316    * \f$a_1\f$ Breit-Wigner
0317    * @param q2 The scale \f$q^2\f$ for the Breit-Wigner
0318    * @return The Breit-Wigner
0319    */
0320   Complex a1BreitWigner(Energy2 q2) const {
0321     Complex ii(0.,1.);
0322     Energy2 m2=_a1mass*_a1mass; Energy q=sqrt(q2);
0323     Complex output=m2/(m2-q2-ii*q*a1width(q2));
0324     return output;
0325   }
0326 
0327 private:
0328   
0329   /**
0330    * Masses of the \f$\rho\f$ resonances.
0331    */
0332   vector<Energy> _rhomass;
0333 
0334   /**
0335    * Widths of the \f$\rho\f$ resonances.
0336    */
0337   vector<Energy> _rhowidth;
0338 
0339   /**
0340    * Mass of the \f$f_2\f$ resonance
0341    */
0342   Energy _f2mass;
0343 
0344   /**
0345    * Width of the \f$f_2\f$ resonance
0346    */
0347   Energy _f2width;
0348 
0349   /**
0350    * Mass of the \f$f_0(1370)\f$ resonance
0351    */
0352   Energy _f0mass;
0353 
0354   /**
0355    * Width of the \f$f_0(1370)\f$ resonance
0356    */
0357   Energy _f0width;
0358 
0359   /**
0360    * Mass of the \f$\sigma\f$ resonance
0361    */
0362   Energy _sigmamass;
0363 
0364   /**
0365    * Width of the \f$\sigma\f$ resonance
0366    */
0367   Energy _sigmawidth;
0368 
0369   /**
0370    * Mass of the neutral pion.
0371    */
0372   Energy _mpi0;
0373 
0374   /**
0375    * Mass of the charged pion.
0376    */
0377   Energy _mpic;
0378 
0379   /**
0380    * The \f$a_1\f$ mass
0381    */
0382   Energy _a1mass;
0383 
0384   /**
0385    * The \f$a_1\f$ width
0386    */
0387   Energy _a1width;
0388 
0389   /**
0390    * Mass of the \f$K^*\f$ resonace
0391    */
0392   Energy _mKstar;
0393 
0394   /**
0395    * Mass of the \f$K\f$ resonace
0396    */
0397   Energy _mK;
0398 
0399   /**
0400    * Coupling for the \f$KK^*\f$ term in the running width.
0401    */
0402   double _gammk;
0403 
0404   /**
0405    * pion decay constant
0406    */
0407   Energy _fpi;
0408 
0409   /**
0410    *  The prefactor
0411    */
0412   InvEnergy _fact;
0413 
0414   /**
0415    * Magnitude of the \f$p\f$-wave couplings of the rho resonance, \f$g^P_{\rho_k}\f$, 
0416    * (\f$\beta_{1,2}\f$ in the CLEO paper.)
0417    */
0418   vector<double> _rhomagP;
0419 
0420   /**
0421    * Phase of the \f$p\f$-wave couplings of the rho resonance, \f$g^P_{\rho_k}\f$,
0422    * (\f$\beta_{1,2}\f$ in the CLEO paper.)
0423    */
0424   vector<double> _rhophaseP;
0425 
0426   /**
0427    *\f$p\f$-wave couplings of the rho resonance, \f$g^P_{\rho_k}\f$, 
0428    * (\f$\beta_{1,2}\f$ in the CLEO paper.)
0429    */
0430   vector<Complex> _rhocoupP;
0431 
0432   /**
0433    * Magnitude of the \f$d\f$-wave couplings of the rho resonance, \f$g^D_{\rho_k}\f$,
0434    * (\f$\beta_{3,4}\f$ in the CLEO paper.)
0435    */
0436   vector<InvEnergy2> _rhomagD;
0437 
0438   /**
0439    * Phase of the \f$d\f$-wave couplings of the rho resonance, \f$g^D_{\rho_k}\f$, 
0440    * (\f$\beta_{3,4}\f$ in the CLEO paper.)
0441    */
0442   vector<double>_rhophaseD;
0443 
0444   /**
0445    * \f$d\f$-wave couplings of the rho resonance, \f$g^D_{\rho_k}\f$,
0446    * (\f$\beta_{3,4}\f$ in the CLEO paper.)
0447    */
0448   vector<complex<InvEnergy2> > _rhocoupD;
0449 
0450   /**
0451    * Magntiude of the coupling of the \f$f_2\f$ resonance, \f$g_{f_2}\f$,
0452    * (\f$\beta_5\f$ in the CLEO paper.)
0453    */
0454   InvEnergy2 _f2mag;
0455 
0456   /**
0457    * Phase of the coupling of the \f$f_2\f$ resonance, \f$g_{f_2}\f$,
0458    * (\f$\beta_5\f$ in the CLEO paper.)
0459    */
0460   double _f2phase;
0461 
0462   /**
0463    * Coupling of the \f$f_2\f$ resonance, \f$g_{f_2}\f$,
0464    * (\f$\beta_5\f$ in the CLEO paper.)
0465    */
0466   complex<InvEnergy2> _f2coup;
0467 
0468   /**
0469    * Magntiude of the coupling of the \f$f_0(1370)\f$ resonance, \f$g_{f_0}\f$,
0470    * (\f$\beta_6\f$ in the CLEO paper.)
0471    */
0472   double _f0mag;
0473 
0474   /**
0475    * Phase of the coupling of the \f$f_0(1370)\f$ resonance, \f$g_{f_0}\f$,
0476    * (\f$\beta_6\f$ in the CLEO paper.)
0477    */
0478   double _f0phase;
0479 
0480   /**
0481    * Coupling of the \f$f_0(1370)\f$ resonance, \f$g_{f_0}\f$,
0482    * (\f$\beta_6\f$ in the CLEO paper.)
0483    */
0484   Complex _f0coup;
0485 
0486   /**
0487    * Magntiude of the coupling of the \f$\sigma\f$ resonance, \f$g_\sigma\f$,
0488    * (\f$\beta_7\f$ in the CLEO paper.)
0489    */
0490   double _sigmamag;
0491 
0492   /**
0493    * Phase of the coupling of the \f$\sigma\f$ resonance, \f$g_\sigma\f$,
0494    * (\f$\beta_7\f$ in the CLEO paper.)
0495    */
0496   double _sigmaphase;
0497 
0498   /**
0499    * Coupling of the \f$\sigma\f$ resonance, \f$g_\sigma\f$,
0500    * (\f$\beta_7\f$ in the CLEO paper.)
0501    */
0502   Complex _sigmacoup;
0503   
0504   /**
0505    * The \f$a_1\f$ width for the running \f$a_1\f$ width calculation.
0506    */
0507   vector<Energy>  _a1runwidth;
0508 
0509   /**
0510    * The \f$q^2\f$ for the running \f$a_1\f$  width calculation.
0511    */
0512   vector<Energy2> _a1runq2;
0513 
0514 
0515   /**
0516    * The interpolator for the running \f$a_1\f$ width calculation.
0517    */
0518   Interpolator<Energy,Energy2>::Ptr _a1runinter;
0519 
0520   /**
0521    * Initialize the running \f$a_1\f$ width.
0522    */
0523   bool _initializea1;
0524 
0525   /**
0526    * Option for the \f$a_1\f$ width
0527    */
0528   bool _a1opt;
0529 
0530   /**
0531    *  The maximum mass of the hadronic system
0532    */
0533   Energy _maxmass;
0534 
0535   /**
0536    *  The maximum mass when the running width was calculated
0537    */
0538   Energy _maxcalc;
0539 
0540 };
0541 
0542 }
0543 
0544 #endif /* THEPEG_ThreePionCLEOCurrent_H */