Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // MelikhovStechFormFactor.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_MelikhovStechFormFactor_H
0010 #define HERWIG_MelikhovStechFormFactor_H
0011 //
0012 // This is the declaration of the MelikhovStechFormFactor class.
0013 //
0014 
0015 #include "ScalarFormFactor.h"
0016 
0017 namespace Herwig {
0018 using namespace ThePEG;
0019 
0020 /** \ingroup Decay
0021  *
0022  * The MelikhovStechFormFactor class is the implementation of the form factors
0023  * from Phys. Rev. D62  014006 (2000).
0024  *
0025  * @see ScalarFormFactor
0026  */
0027 class MelikhovStechFormFactor: public ScalarFormFactor {
0028 
0029 public:
0030 
0031   /**
0032    * The default constructor.
0033    */
0034   MelikhovStechFormFactor();
0035 
0036   /** @name Form-Factors */
0037   //@{
0038   /**
0039    * The form factor for the weak decay of a scalar to a scalar. 
0040    * @param q2 The scale \f$q^2\f$.
0041    * @param iloc The location in the form-factor list.
0042    * @param id0 The PDG code of the incoming meson.
0043    * @param id1 The PDG code of the outgoing meson.
0044    * @param m0 The mass of the incoming meson.
0045    * @param m1 The mass of the outgoing meson.
0046    * @param f0 The form-factor \f$f_0\f$. 
0047    * @param fp The form-factor \f$f_+\f$.
0048    */
0049   virtual void ScalarScalarFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1,
0050                       Energy m0,Energy m1,
0051                       Complex & f0,Complex & fp) const;
0052 
0053   /**
0054    * The form factor for the weak decay of a scalar to a vector.
0055    * @param q2 The scale \f$q^2\f$.
0056    * @param iloc The location in the form-factor list.
0057    * @param id0 The PDG code of the incoming meson.
0058    * @param id1 The PDG code of the outgoing meson.
0059    * @param m0 The mass of the incoming meson.
0060    * @param m1 The mass of the outgoing meson.
0061    * @param V  The form-factor \f$V\f$
0062    * @param A0 The form-factor \f$A_0\f$
0063    * @param A1 The form-factor \f$A_1\f$
0064    * @param A2 The form-factor \f$A_2\f$
0065    */
0066   virtual void ScalarVectorFormFactor(Energy2 q2, unsigned int iloc, int id0, int id1,
0067                       Energy m0, Energy m1, Complex & V,
0068                       Complex & A0,Complex & A1,Complex & A2) const;
0069 
0070   /**
0071    * The form factor for the weak penguin decay of a scalar meson to a scalar meson.
0072    * This method is virtual
0073    * and must be implemented in classes inheriting from this which include scalar to
0074    * scalar penguin form factors. 
0075    * @param q2 The scale \f$q^2\f$.
0076    * @param iloc The location in the form factor list.
0077    * @param id0 The PDG code of the incoming meson.
0078    * @param id1 The PDG code of the outgoing meson.
0079    * @param m0 The mass of the incoming meson.
0080    * @param m1 The mass of the outgoing meson.
0081    * @param fT The form factor \f$f_T\f$.
0082    */
0083   virtual void ScalarScalarSigmaFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1,
0084                        Energy m0, Energy m1,Complex & fT) const;
0085 
0086   /**
0087    * The form factor for the weak penguin decay of a scalar meson to a vector meson. 
0088    * This method is virtual
0089    * and must be implemented in classes inheriting from this which include scalar to
0090    * vector penguin form factors.
0091    * @param q2 The scale \f$q^2\f$.
0092    * @param iloc The location in the form factor list.
0093    * @param id0 The PDG code of the incoming meson.
0094    * @param id1 The PDG code of the outgoing meson.
0095    * @param m0 The mass of the incoming meson.
0096    * @param m1 The mass of the outgoing meson.
0097    * @param T1 The form factor \f$T_1\f$.
0098    * @param T2 The form factor \f$T_2\f$.
0099    * @param T3 The form factor \f$T_3\f$.
0100    */
0101   virtual void ScalarVectorSigmaFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1,
0102                        Energy m0, Energy m1, Complex & T1,
0103                        Complex & T2, Complex & T3) const;
0104   //@}
0105 
0106   /**
0107    * Output the setup information for the particle database
0108    * @param os The stream to output the information to
0109    * @param header Whether or not to output the information for MySQL
0110    * @param create Whether or not to add a statement creating the object
0111    */
0112   virtual void dataBaseOutput(ofstream & os,bool header,bool create) 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    * The standard Init function used to initialize the interfaces.
0134    * Called exactly once for each class by the class description system
0135    * before the main function starts or
0136    * when this class is dynamically loaded.
0137    */
0138   static void Init();
0139 
0140 protected:
0141 
0142   /** @name Clone Methods. */
0143   //@{
0144   /**
0145    * Make a simple clone of this object.
0146    * @return a pointer to the new object.
0147    */
0148   virtual IBPtr clone() const {return new_ptr(*this);}
0149 
0150   /** Make a clone of this object, possibly modifying the cloned object
0151    * to make it sane.
0152    * @return a pointer to the new object.
0153    */
0154   virtual IBPtr fullclone() const {return new_ptr(*this);}
0155   //@}
0156 
0157 protected:
0158 
0159   /** @name Standard Interfaced functions. */
0160   //@{
0161   /**
0162    * Initialize this object after the setup phase before saving and
0163    * EventGenerator to disk.
0164    * @throws InitException if object could not be initialized properly.
0165    */
0166   virtual void doinit();
0167   //@}
0168 
0169 private:
0170 
0171   /**
0172    * The assignment operator is private and must never be called.
0173    * In fact, it should not even be implemented.
0174    */
0175   MelikhovStechFormFactor & operator=(const MelikhovStechFormFactor &) = delete;
0176 
0177 private:
0178 
0179 
0180   /** @name Parameters for the scalar to scalar form factors */
0181   //@{
0182 
0183   /**
0184    *  The value of \f$F_+(0)\f$ for the form factors.
0185    */
0186   vector<double> _fplus0;
0187 
0188   /**
0189    *  The \f$\sigma_1\f$ parameter for the \f$F_+\f$ form factor.
0190    */
0191   vector<double> _sigma1fp;
0192 
0193   /**
0194    *  The \f$\sigma_2\f$ parameter for the \f$F_+\f$ form factor.
0195    */
0196   vector<double> _sigma2fp;
0197 
0198   /**
0199    *  The value of \f$F_0(0)\f$ for the form factors.
0200    */
0201   vector<double> _f00;
0202 
0203   /**
0204    *  The \f$\sigma_1\f$ parameter for the \f$F_0\f$ form factor.
0205    */
0206   vector<double> _sigma1f0;
0207 
0208   /**
0209    *  The \f$\sigma_2\f$ parameter for the \f$F_0\f$ form factor.
0210    */
0211   vector<double> _sigma2f0;
0212 
0213   /**
0214    *  The value of \f$F_T(0)\f$ for the form factors.
0215    */
0216   vector<double> _fT0;
0217 
0218   /**
0219    *  The \f$\sigma_1\f$ parameter for the \f$F_T\f$ form factor.
0220    */
0221   vector<double> _sigma1fT;
0222 
0223   /**
0224    *  The \f$\sigma_2\f$ parameter for the \f$F_T\f$ form factor.
0225    */
0226   vector<double> _sigma2fT;
0227 
0228   //@}
0229 
0230   /** @name Parameters for the scalar to vector form factors */
0231   //@{
0232   /**
0233    *  The value of \f$V(0)\f$ for the form factors
0234    */
0235   vector<double> _V0;
0236 
0237   /**
0238    *  The \f$\sigma_1\f$ parameter for the \f$V_0\f$ form factor.
0239    */
0240   vector<double> _sigma1V0;
0241 
0242   /**
0243    *  The \f$\sigma_2\f$ parameter for the \f$V_0\f$ form factor.
0244    */
0245   vector<double> _sigma2V0;
0246 
0247   /**
0248    *  The value of \f$A_0(0)\f$ for the form factors
0249    */
0250   vector<double> _A00;
0251 
0252   /**
0253    *  The \f$\sigma_1\f$ parameter for the \f$A_0\f$ form factor.
0254    */
0255   vector<double> _sigma1A0;
0256 
0257   /**
0258    *  The \f$\sigma_2\f$ parameter for the \f$A_0\f$ form factor.
0259    */
0260   vector<double> _sigma2A0;
0261 
0262   /**
0263    *  The value of \f$A_1(0)\f$ for the form factors
0264    */
0265   vector<double> _A10;
0266 
0267   /**
0268    *  The \f$\sigma_1\f$ parameter for the \f$A_1\f$ form factor.
0269    */
0270   vector<double> _sigma1A1;
0271 
0272   /**
0273    *  The \f$\sigma_2\f$ parameter for the \f$A_1\f$ form factor.
0274    */
0275   vector<double> _sigma2A1;
0276 
0277   /**
0278    *  The value of \f$A_2(0)\f$ for the form factors
0279    */
0280   vector<double> _A20;
0281 
0282   /**
0283    *  The \f$\sigma_1\f$ parameter for the \f$A_2\f$ form factor.
0284    */
0285   vector<double> _sigma1A2;
0286 
0287   /**
0288    *  The \f$\sigma_2\f$ parameter for the \f$A_2\f$ form factor.
0289    */
0290   vector<double> _sigma2A2;
0291 
0292   /**
0293    *  The value of \f$T_1(0)\f$ for the form factors
0294    */
0295   vector<double> _T10;
0296 
0297   /**
0298    *  The \f$\sigma_1\f$ parameter for the \f$T_1\f$ form factor.
0299    */
0300   vector<double> _sigma1T1;
0301 
0302   /**
0303    *  The \f$\sigma_2\f$ parameter for the \f$T_1\f$ form factor.
0304    */
0305   vector<double> _sigma2T1;
0306 
0307   /**
0308    *  The value of \f$T_2(0)\f$ for the form factors
0309    */
0310   vector<double> _T20;
0311 
0312   /**
0313    *  The \f$\sigma_1\f$ parameter for the \f$T_2\f$ form factor.
0314    */
0315   vector<double> _sigma1T2;
0316 
0317   /**
0318    *  The \f$\sigma_2\f$ parameter for the \f$T_2\f$ form factor.
0319    */
0320   vector<double> _sigma2T2;
0321 
0322   /**
0323    *  The value of \f$T_3(0)\f$ for the form factors
0324    */
0325   vector<double> _T30;
0326 
0327   /**
0328    *  The \f$\sigma_1\f$ parameter for the \f$T_2\f$ form factor.
0329    */
0330   vector<double> _sigma1T3;
0331 
0332   /**
0333    *  The \f$\sigma_2\f$ parameter for the \f$T_2\f$ form factor.
0334    */
0335   vector<double> _sigma2T3;
0336   //@}
0337 
0338   /**
0339    *   The scalar mass for the \f$q^2\f$ dependence of the form factor.
0340    */
0341   vector<Energy> _massP;
0342 
0343   /**
0344    *   The vector mass for the \f$q^2\f$ dependence of the form factor.
0345    */
0346   vector<Energy> _massV;
0347 
0348   /**
0349    * The \f$\eta-\eta'\f$ mixing angle 
0350    */
0351   double _thetaeta;
0352 };
0353 
0354 }
0355 
0356 #endif /* HERWIG_MelikhovStechFormFactor_H */