Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // ISGWFormFactor.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_ISGWFormFactor_H
0010 #define HERWIG_ISGWFormFactor_H
0011 //
0012 // This is the declaration of the <ISGWFormFactor class.
0013 //
0014 #include "ScalarFormFactor.h"
0015 #include "ThePEG/StandardModel/StandardModelBase.h"
0016 #include "ThePEG/PDT/ParticleData.h"
0017 #include "ThePEG/PDT/EnumParticles.h"
0018 #include "ThePEG/PDT/EnumParticles.h"
0019 #include "ThePEG/Repository/EventGenerator.h"
0020 
0021 namespace Herwig {
0022 using namespace ThePEG;
0023 
0024   /** \ingroup Decay
0025    *
0026    *  The ISGWFormFactor class is the implementation of the ISGW model of 
0027    *  Phys. Rev. D39, 799 (1989) for the form-factors. It inherits from the 
0028    *  ScalarFormFactor class and members
0029    *  for the calculation of the relevant form factors.
0030    * 
0031    * @see ScalarFormFactor
0032    * @see ISGW2FormFactor
0033    */
0034 
0035 class ISGWFormFactor: public ScalarFormFactor {
0036 
0037 public:
0038 
0039   /**
0040    * Default constructor
0041    */
0042   ISGWFormFactor();
0043 
0044   /** @name Form-Factors */
0045   //@{
0046   /**
0047    * The form factor for the weak decay of a scalar to a scalar. 
0048    * @param q2 The scale \f$q^2\f$.
0049    * @param iloc The location in the form-factor list.
0050    * @param id0 The PDG code of the incoming meson.
0051    * @param id1 The PDG code of the outgoing meson.
0052    * @param m0 The mass of the incoming meson.
0053    * @param m1 The mass of the outgoing meson.
0054    * @param f0 The form-factor \f$f_0\f$. 
0055    * @param fp The form-factor \f$f_+\f$.
0056    */
0057   virtual void ScalarScalarFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1,Energy m0,
0058                       Energy m1,Complex & f0,Complex & fp) const;
0059 
0060   /**
0061    * The form factor for the weak decay of a scalar to a vector.
0062    * @param q2 The scale \f$q^2\f$.
0063    * @param iloc The location in the form-factor list.
0064    * @param id0 The PDG code of the incoming meson.
0065    * @param id1 The PDG code of the outgoing meson.
0066    * @param m0 The mass of the incoming meson.
0067    * @param m1 The mass of the outgoing meson.
0068    * @param V  The form-factor \f$V\f$
0069    * @param A0 The form-factor \f$A_0\f$
0070    * @param A1 The form-factor \f$A_1\f$
0071    * @param A2 The form-factor \f$A_2\f$
0072    */
0073   virtual void ScalarVectorFormFactor(Energy2 q2, unsigned int iloc, int id0, int id1,
0074                       Energy m0, Energy m1, Complex & V,
0075                       Complex & A0,Complex & A1,Complex & A2) const;
0076 
0077   /**
0078    * The form factor for the weak decay of a scalar to a tensor.
0079    * @param q2 The scale \f$q^2\f$.
0080    * @param iloc The location in the form-factor list.
0081    * @param id0 The PDG code of the incoming meson.
0082    * @param id1 The PDG code of the outgoing meson.
0083    * @param m0 The mass of the incoming meson.
0084    * @param m1 The mass of the outgoing meson.
0085    * @param h  The form-factor \f$h\f$.
0086    * @param k  The form-factor \f$k\f$. 
0087    * @param bp The form-factor \f$b_+\f$.
0088    * @param bm The form-factor \f$b_-\f$.
0089    */
0090   virtual void ScalarTensorFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1,
0091                       Energy m0,
0092                       Energy m1, complex<InvEnergy2> & h,
0093                       Complex & k, complex<InvEnergy2> & bp,
0094                       complex<InvEnergy2> & bm) const;
0095   //@}
0096 
0097   /**
0098    * Output the setup information for the particle database
0099    * @param os The stream to output the information to
0100    * @param header Whether or not to output the information for MySQL
0101    * @param create Whether or not to add a statement creating the object
0102    */
0103   virtual void dataBaseOutput(ofstream & os,bool header,bool create) const;
0104 
0105 public:
0106 
0107   /** @name Functions used by the persistent I/O system. */
0108   //@{
0109   /**
0110    * Function used to write out object persistently.
0111    * @param os the persistent output stream written to.
0112    */
0113   void persistentOutput(PersistentOStream & os) const;
0114 
0115   /**
0116    * Function used to read in object persistently.
0117    * @param is the persistent input stream read from.
0118    * @param version the version number of the object when written.
0119    */
0120   void persistentInput(PersistentIStream & is, int version);
0121   //@}
0122 
0123   /**
0124    * Standard Init function used to initialize the interfaces.
0125    */
0126   static void Init();
0127 
0128 protected:
0129 
0130   /** The member which implements all the different form-factors
0131    * @param q2 The scale \f$q^2\f$.
0132    * @param iloc The location in the form-factor list.
0133    * @param id0 The PDG code of the incoming meson.
0134    * @param id1 The PDG code of the outgoing meson.
0135    * @param m0 The mass of the incoming meson.
0136    * @param m1 The mass of the outgoing meson.
0137    * @param f1 The first  form-factor.
0138    * @param f2 The second form-factor. 
0139    * @param f3 The third  form-factor.
0140    * @param f4 The fourth form-factor.
0141    */
0142   void formFactor(Energy2 q2,unsigned int iloc,int id0,int id1,Energy m0,
0143           Energy m1,Complex & f1,Complex & f2,
0144           Complex & f3,Complex & f4) const;
0145   // general member to calculate all the form-factors
0146 
0147 protected:
0148 
0149   /** @name Clone Methods. */
0150   //@{
0151   /**
0152    * Make a simple clone of this object.
0153    * @return a pointer to the new object.
0154    */
0155   virtual IBPtr clone() const {return new_ptr(*this);}
0156 
0157   /** Make a clone of this object, possibly modifying the cloned object
0158    * to make it sane.
0159    * @return a pointer to the new object.
0160    */
0161   virtual IBPtr fullclone() const {return new_ptr(*this);}
0162   //@}
0163 
0164 protected:
0165 
0166   /** @name Standard Interfaced functions. */
0167   //@{
0168   /**
0169    * Initialize this object after the setup phase before saving and
0170    * EventGenerator to disk.
0171    * @throws InitException if object could not be initialized properly.
0172    */
0173   virtual void doinit();
0174   //@}
0175 
0176 private:
0177 
0178   /**
0179    * Private and non-existent assignment operator.
0180    */
0181   ISGWFormFactor & operator=(const ISGWFormFactor &) = delete;
0182 
0183 private:
0184 
0185   /**
0186    * The relativistic compensation factor
0187    */
0188   double _kappa;
0189 
0190   /** @name Quark masses */
0191   //@{
0192   /**
0193    * The down quark mass
0194    */
0195   Energy _mdown;
0196 
0197   /**
0198    * The up quark mass
0199    */
0200   Energy _mup;
0201 
0202   /**
0203    * The strange quark mass
0204    */
0205   Energy _mstrange;
0206 
0207   /**
0208    * The charm quark mass
0209    */
0210   Energy _mcharm;
0211 
0212   /**
0213    * The bottom quark mass
0214    */
0215   Energy _mbottom;
0216 
0217   /**
0218    * The masses of the quarks as a vector
0219    */
0220   vector<Energy> _mquark;
0221   //@}
0222 
0223 
0224   /** @name Wave function parameters */
0225   //@{
0226   /**
0227    * The wavefunction s-wave \f$\beta\f$ variational parameters for  \f$u\bar{d}\f$ 
0228    */
0229   Energy _betaSud;
0230 
0231   /**
0232    * The wavefunction s-wave \f$\beta\f$ variational parameters for  \f$u\bar{s}\f$ 
0233    */
0234   Energy _betaSus;
0235 
0236   /**
0237    * The wavefunction s-wave \f$\beta\f$ variational parameters for  \f$u\bar{c}\f$ 
0238    */
0239   Energy _betaSuc;
0240 
0241   /**
0242    * The wavefunction s-wave \f$\beta\f$ variational parameters for  \f$u\bar{b}\f$ 
0243    */
0244   Energy _betaSub;
0245 
0246   /**
0247    * The s-wave variational parameters as a vector.
0248    */
0249   vector<vector<Energy> > _betaS;
0250 
0251   /**
0252    * The wavefunction p-wave \f$\beta\f$ variational parameters for  \f$u\bar{d}\f$ 
0253    */
0254   Energy _betaPud;
0255 
0256   /**
0257    * The wavefunction s-wave \f$\beta\f$ variational parameters for  \f$u\bar{s}\f$ 
0258    */
0259   Energy _betaPus;
0260 
0261   /**
0262    * The wavefunction s-wave \f$\beta\f$ variational parameters for  \f$u\bar{c}\f$ 
0263    */
0264   Energy _betaPuc;
0265 
0266   /**
0267    * The p-wave variational parameters as a vector
0268    */
0269   vector<vector<Energy> > _betaP;
0270   //@}
0271 
0272   /**
0273    * The \f$\eta-\eta'\f$ mixing angle 
0274    */
0275   double _thetaeta;
0276 };
0277 
0278 }
0279 
0280 #endif /* HERWIG_ISGWFormFactor_H */