Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // ISGW2FormFactor.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_ISGW2FormFactor_H
0010 #define HERWIG_ISGW2FormFactor_H
0011 //
0012 // This is the declaration of the ISGW2FormFactor class.
0013 //
0014 #include "ScalarFormFactor.h"
0015 #include "ThePEG/StandardModel/StandardModelBase.h"
0016 #include "ThePEG/PDT/EnumParticles.h"
0017 #include "ThePEG/PDT/ParticleData.h"
0018 #include "ThePEG/Repository/EventGenerator.h"
0019 
0020 namespace Herwig {
0021 using namespace ThePEG;
0022 
0023   /** \ingroup Decay
0024    *
0025    *  The ISGW2FormFactor class is the implementation of 
0026    *  the ISGW2 model of Phys. Rev. D52, 2783 (1995) for the scalar meson form
0027    *  factors.
0028    *
0029    *  It inherits from the ScalarFormFactor class and implements
0030    *  the calculation of the relevant form factors.
0031    *
0032    * @see ScalarFormFactor
0033    * @see ISGWFormFactor
0034    */
0035 
0036 class ISGW2FormFactor: public ScalarFormFactor {
0037 
0038 public:
0039 
0040   /**
0041    * Default constructor
0042    */
0043   ISGW2FormFactor();
0044 
0045   /** @name Form-Factors */
0046   //@{
0047   /**
0048    * The form factor for the weak decay of a scalar to a scalar. 
0049    * @param q2 The scale \f$q^2\f$.
0050    * @param iloc The location in the form-factor list.
0051    * @param id0 The PDG code of the incoming meson.
0052    * @param id1 The PDG code of the outgoing meson.
0053    * @param m0 The mass of the incoming meson.
0054    * @param m1 The mass of the outgoing meson.
0055    * @param f0 The form-factor \f$f_0\f$. 
0056    * @param fp The form-factor \f$f_+\f$.
0057    */
0058   virtual void ScalarScalarFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1,
0059                       Energy m0,Energy m1,Complex & f0,
0060                       Complex & fp) const;
0061 
0062   /**
0063    * The form factor for the weak decay of a scalar to a vector.
0064    * @param q2 The scale \f$q^2\f$.
0065    * @param iloc The location in the form-factor list.
0066    * @param id0 The PDG code of the incoming meson.
0067    * @param id1 The PDG code of the outgoing meson.
0068    * @param m0 The mass of the incoming meson.
0069    * @param m1 The mass of the outgoing meson.
0070    * @param V  The form-factor \f$V\f$
0071    * @param A0 The form-factor \f$A_0\f$
0072    * @param A1 The form-factor \f$A_1\f$
0073    * @param A2 The form-factor \f$A_2\f$
0074    */
0075   virtual void ScalarVectorFormFactor(Energy2 q2, unsigned int iloc, int id0, int id1,
0076                       Energy m0, Energy m1, Complex & V,
0077                       Complex & A0,Complex & A1,Complex & A2) const;
0078 
0079   /**
0080    * The form factor for the weak decay of a scalar to a tensor.
0081    * @param q2 The scale \f$q^2\f$.
0082    * @param iloc The location in the form-factor list.
0083    * @param id0 The PDG code of the incoming meson.
0084    * @param id1 The PDG code of the outgoing meson.
0085    * @param m0 The mass of the incoming meson.
0086    * @param m1 The mass of the outgoing meson.
0087    * @param h  The form-factor \f$h\f$.
0088    * @param k  The form-factor \f$k\f$. 
0089    * @param bp The form-factor \f$b_+\f$.
0090    * @param bm The form-factor \f$b_-\f$.
0091    */
0092   virtual void ScalarTensorFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1,
0093                       Energy m0,Energy m1, complex<InvEnergy2> & h,
0094                       Complex & k, complex<InvEnergy2> & bp,
0095                       complex<InvEnergy2> & bm) const;
0096   //@}
0097 
0098   /**
0099    * Output the setup information for the particle database
0100    * @param os The stream to output the information to
0101    * @param header Whether or not to output the information for MySQL
0102    * @param create Whether or not to add a statement creating the object
0103    */
0104   virtual void dataBaseOutput(ofstream & os,bool header,bool create) const;
0105 
0106 public:
0107 
0108   /** @name Functions used by the persistent I/O system. */
0109   //@{
0110   /**
0111    * Function used to write out object persistently.
0112    * @param os the persistent output stream written to.
0113    */
0114   void persistentOutput(PersistentOStream & os) const;
0115 
0116   /**
0117    * Function used to read in object persistently.
0118    * @param is the persistent input stream read from.
0119    * @param version the version number of the object when written.
0120    */
0121   void persistentInput(PersistentIStream & is, int version);
0122   //@}
0123 
0124   /**
0125    * Standard Init function used to initialize the interfaces.
0126    */
0127   static void Init();
0128 
0129 protected:
0130 
0131   /** The member which implements all the different form-factors
0132    * @param q2 The scale \f$q^2\f$.
0133    * @param iloc The location in the form-factor list.
0134    * @param id0 The PDG code of the incoming meson.
0135    * @param id1 The PDG code of the outgoing meson.
0136    * @param m0 The mass of the incoming meson.
0137    * @param m1 The mass of the outgoing meson.
0138    * @param f1 The first  form-factor.
0139    * @param f2 The second form-factor. 
0140    * @param f3 The third  form-factor.
0141    * @param f4 The fourth form-factor.
0142    */
0143   void formFactor(Energy2 q2,unsigned int iloc,int id0,int id1,Energy m0,
0144           Energy m1,Complex & f1,Complex & f2,
0145           Complex & f3,Complex & f4) const;
0146   // general member to calculate all the form-factors
0147 
0148 protected:
0149 
0150   /** @name Clone Methods. */
0151   //@{
0152   /**
0153    * Make a simple clone of this object.
0154    * @return a pointer to the new object.
0155    */
0156   virtual IBPtr clone() const {return new_ptr(*this);}
0157 
0158   /** Make a clone of this object, possibly modifying the cloned object
0159    * to make it sane.
0160    * @return a pointer to the new object.
0161    */
0162   virtual IBPtr fullclone() const {return new_ptr(*this);}
0163   //@}
0164 
0165 protected:
0166 
0167   /** @name Standard Interfaced functions. */
0168   //@{
0169   /**
0170    * Initialize this object after the setup phase before saving and
0171    * EventGenerator to disk.
0172    * @throws InitException if object could not be initialized properly.
0173    */
0174   virtual void doinit();
0175   //@}
0176 
0177 private:
0178 
0179   /**
0180    * Private and non-existent assignment operator.
0181    */
0182   ISGW2FormFactor & operator=(const ISGW2FormFactor &) = delete;
0183 
0184 protected:
0185 
0186   /**
0187    * The saturated \f$\alpha_S\f$ used to calculate the form-factors.
0188    * @param mass Mass scale to work out the number of flavours.
0189    * @param q2 \f$q^2\f$ the scale.
0190    * @return the value of \f$\alpha_S\f$.
0191    */
0192   double alphaS(Energy mass, Energy2 q2) const {
0193     Energy2 lqcd2(0.04*GeV2);
0194     double nflav(4.);
0195     double output(_alphamuQM);
0196     if (q2>0.36*GeV2) {
0197       if(mass<_mcharm+0.03*GeV) nflav=3.0;
0198       output = 12.*Constants::pi/(33.-2.*nflav)/log(q2/lqcd2);
0199     }
0200     return output;
0201   }
0202 
0203 private:
0204 
0205   /** @name Quark masses */
0206   //@{
0207   /**
0208    * The down quark mass
0209    */
0210   Energy _mdown;
0211 
0212   /**
0213    * The up quark mass
0214    */
0215   Energy _mup;
0216 
0217   /**
0218    * The strange quark mass
0219    */
0220   Energy _mstrange;
0221 
0222   /**
0223    * The charm quark mass
0224    */
0225   Energy _mcharm;
0226 
0227   /**
0228    * The bottom quark mass
0229    */
0230   Energy _mbottom;
0231 
0232   /**
0233    * The masses of the quarks as a vector
0234    */
0235   vector<Energy> _mquark;
0236   //@}
0237 
0238   /** @name Wave function parameters for the \f$1^1S_0\f$ level.*/
0239   //@{
0240 
0241   /**
0242    * The wavefunction \f$1^1S_0\f$ \f$\beta\f$ variational parameter for \f$u\bar{d}\f$ 
0243    */
0244   Energy _beta1S0ud;
0245 
0246   /**
0247    * The wavefunction \f$1^1S_0\f$ \f$\beta\f$ variational parameter for \f$u\bar{s}\f$ 
0248    */
0249   Energy _beta1S0us;
0250 
0251   /**
0252    * The wavefunction \f$1^1S_0\f$ \f$\beta\f$ variational parameter for \f$s\bar{s}\f$ 
0253    */
0254   Energy _beta1S0ss;
0255 
0256   /**
0257    * The wavefunction \f$1^1S_0\f$ \f$\beta\f$ variational parameter for \f$c\bar{u}\f$ 
0258    */
0259   Energy _beta1S0cu;
0260 
0261   /**
0262    * The wavefunction \f$1^1S_0\f$ \f$\beta\f$ variational parameter for \f$c\bar{s}\f$ 
0263    */
0264   Energy _beta1S0cs;
0265 
0266   /**
0267    * The wavefunction \f$1^1S_0\f$ \f$\beta\f$ variational parameter for \f$u\bar{b}\f$ 
0268    */
0269   Energy _beta1S0ub;
0270 
0271   /**
0272    * The wavefunction \f$1^1S_0\f$ \f$\beta\f$ variational parameter for \f$s\bar{b}\f$ 
0273    */
0274   Energy _beta1S0sb;
0275 
0276   /**
0277    * The wavefunction \f$1^1S_0\f$ \f$\beta\f$ variational parameter for \f$c\bar{c}\f$ 
0278    */
0279   Energy _beta1S0cc;
0280 
0281   /**
0282    * The wavefunction \f$1^1S_0\f$ \f$\beta\f$ variational parameter for \f$b\bar{c}\f$ 
0283    */
0284   Energy _beta1S0bc;
0285 
0286   /**
0287    *  The wavefunction parameters as an array
0288    */
0289   vector<vector<Energy> > _beta1S0;
0290 
0291   /**
0292    *  The masses as a array
0293    */
0294   vector<vector<Energy> > _mass1S0;
0295   //@}
0296 
0297   /** @name Wave function parameters for the \f$1^3S_1\f$ level.*/
0298   //@{
0299   /**
0300    * The wavefunction \f$1^3S_1\f$ \f$\beta\f$ variational parameter for \f$u\bar{d}\f$ 
0301    */
0302   Energy _beta3S1ud;
0303 
0304   /**
0305    * The wavefunction \f$1^3S_1\f$ \f$\beta\f$ variational parameter for \f$u\bar{s}\f$ 
0306    */
0307   Energy _beta3S1us;
0308 
0309   /**
0310    * The wavefunction \f$1^3S_1\f$ \f$\beta\f$ variational parameter for \f$s\bar{s}\f$ 
0311    */
0312   Energy _beta3S1ss;
0313 
0314   /**
0315    * The wavefunction \f$1^3S_1\f$ \f$\beta\f$ variational parameter for \f$c\bar{u}\f$ 
0316    */
0317   Energy _beta3S1cu;
0318 
0319   /**
0320    * The wavefunction \f$1^3S_1\f$ \f$\beta\f$ variational parameter for \f$c\bar{s}\f$ 
0321    */
0322   Energy _beta3S1cs;
0323 
0324   /**
0325    * The wavefunction \f$1^3S_1\f$ \f$\beta\f$ variational parameter for \f$u\bar{b}\f$ 
0326    */
0327   Energy _beta3S1ub;
0328 
0329   /**
0330    * The wavefunction \f$1^3S_1\f$ \f$\beta\f$ variational parameter for \f$s\bar{b}\f$ 
0331    */
0332   Energy _beta3S1sb;
0333 
0334   /**
0335    * The wavefunction \f$1^3S_1\f$ \f$\beta\f$ variational parameter for \f$c\bar{c}\f$ 
0336    */
0337   Energy _beta3S1cc;
0338 
0339   /**
0340    * The wavefunction \f$1^3S_1\f$ \f$\beta\f$ variational parameter for \f$b\bar{c}\f$ 
0341    */
0342   Energy _beta3S1bc;
0343 
0344   /**
0345    * The wavefunction paramaeters as an array.
0346    */
0347   vector<vector<Energy> > _beta3S1;
0348   //@}
0349 
0350 
0351   /** @name Wave function parameters for the \f$1P\f$ levels.*/
0352   //@{
0353 
0354   /**
0355    * The wavefunction \f$1P\f$ \f$\beta\f$ variational parameter for \f$u\bar{d}\f$ 
0356    */
0357   Energy _beta1Pud;
0358 
0359   /**
0360    * The wavefunction \f$1P\f$ \f$\beta\f$ variational parameter for \f$u\bar{s}\f$ 
0361    */
0362   Energy _beta1Pus;
0363 
0364   /**
0365    * The wavefunction \f$1P\f$ \f$\beta\f$ variational parameter for \f$s\bar{s}\f$ 
0366    */
0367   Energy _beta1Pss;
0368 
0369   /**
0370    * The wavefunction \f$1P\f$ \f$\beta\f$ variational parameter for \f$c\bar{u}\f$ 
0371    */
0372   Energy _beta1Pcu;
0373 
0374   /**
0375    * The wavefunction \f$1P\f$ \f$\beta\f$ variational parameter for \f$c\bar{s}\f$ 
0376    */
0377   Energy _beta1Pcs;
0378 
0379   /**
0380    * The wavefunction \f$1P\f$ \f$\beta\f$ variational parameter for \f$u\bar{b}\f$ 
0381    */
0382   Energy _beta1Pub;
0383 
0384   /**
0385    * The wavefunction \f$1P\f$ \f$\beta\f$ variational parameter for \f$s\bar{b}\f$ 
0386    */
0387   Energy _beta1Psb;
0388 
0389   /**
0390    * The wavefunction \f$1P\f$ \f$\beta\f$ variational parameter for \f$c\bar{c}\f$ 
0391    */
0392   Energy _beta1Pcc;
0393 
0394   /**
0395    * The wavefunction \f$1P\f$ \f$\beta\f$ variational parameter for \f$b\bar{c}\f$ 
0396    */
0397   Energy _beta1Pbc;
0398 
0399   /**
0400    * The wavefunction paramaeters as an array.
0401    */
0402   vector<vector<Energy> > _beta1P;
0403 
0404   /**
0405    * The spin-1/2 masses
0406    */
0407   // the 1/2 spin masses
0408   vector<vector<Energy> > _massPoh;
0409 
0410   /**
0411    * The spin-3/2 masses
0412    */
0413   vector<vector<Energy> > _massPth;
0414   //@}
0415 
0416   /**@name Parameters for the strong coupling*/
0417   //@{
0418   /**
0419    *  The cut-off value of \f$\alpha_S\f$.
0420    */
0421   double _alphamuQM;
0422   /**
0423    * The values of \f$\alpha_S\f$ at the quark masses.
0424    */
0425   vector<double> _alphaQ;
0426   //@}
0427 
0428   /**@name Relativistic correction factors */
0429   //@{
0430   /**
0431    * The correction factor for \f$D\to\rho\f$.
0432    */
0433   double _CfDrho;
0434 
0435   /**
0436    * The correction factor for \f$D\to K^*\f$.
0437    */
0438   double _CfDKstar;
0439 
0440   /**
0441    * The correction factor for \f$D_s\to K^*\f$.
0442    */
0443   double _CfDsKstar;
0444 
0445   /**
0446    * The correction factor for \f$D_s\to\phi\f$.
0447    */
0448   double _CfDsphi;
0449 
0450   /**
0451    * The correction factor for \f$B\to\rho\f$.
0452    */
0453   double _CfBrho;
0454 
0455   /**
0456    * The correction factor for \f$B\to D^*\f$.
0457    */
0458   double _CfBDstar;
0459 
0460   /**
0461    * The correction factor for \f$B_s\to K^*\f$.
0462    */
0463   double  _CfBsKstar;
0464 
0465   /**
0466    * The correction factor for \f$B_s\to D^*\f$.
0467    */
0468   double _CfBsDstar;
0469 
0470   /**
0471    * The correction factor for \f$B_c\to D^*\f$.
0472    */
0473   double _CfBcDstar;
0474 
0475   /**
0476    * The correction factor for \f$B_c\to\psi\f$.
0477    */
0478   double _CfBcpsi;
0479 
0480   /**
0481    * The correction factor for \f$B_c\to B_s^*\f$.
0482    */
0483   double _CfBcBsstar;
0484 
0485   /**
0486    * The correction factor for \f$B_c\to B^*\f$.
0487    */
0488   double _CfBcBstar;
0489   //@}
0490 
0491   /**
0492    * The \f$\eta-\eta'\f$ mixing angle 
0493    */
0494   double _thetaeta;
0495 
0496   /**
0497    * Include the \f$a_L(\omega)\f$ piece of the \f$C_{ji}\f$ factor
0498    */
0499   bool _includeaW;
0500 };
0501 
0502 }
0503 
0504 #endif /* HERWIG_ISGW2FormFactor_H */