Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // MelikhovFormFactor.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_MelikhovFormFactor_H
0010 #define HERWIG_MelikhovFormFactor_H
0011 //
0012 // This is the declaration of the MelikhovFormFactor class.
0013 //
0014 
0015 #include "ScalarFormFactor.h"
0016 
0017 namespace Herwig {
0018 using namespace ThePEG;
0019 
0020 /** \ingroup Decay
0021  *
0022  * The MelikhovFormFactor class implements the model of  Phys. Lett. B 380 (1996) 363
0023  * for the form factors for \f$B\to\pi,\rho\f$. 
0024  *
0025  * @see ScalarFormFactor
0026  *
0027  */
0028 class MelikhovFormFactor: public ScalarFormFactor {
0029 
0030 public:
0031 
0032   /**
0033    * The default constructor.
0034    */
0035   MelikhovFormFactor();
0036 
0037   /** @name Form-Factors */
0038   //@{
0039   /**
0040    * The form factor for the weak decay of a scalar to a scalar. 
0041    * @param q2 The scale \f$q^2\f$.
0042    * @param iloc The location in the form-factor list.
0043    * @param id0 The PDG code of the incoming meson.
0044    * @param id1 The PDG code of the outgoing meson.
0045    * @param m0 The mass of the incoming meson.
0046    * @param m1 The mass of the outgoing meson.
0047    * @param f0 The form-factor \f$f_0\f$. 
0048    * @param fp The form-factor \f$f_+\f$.
0049    */
0050   virtual void ScalarScalarFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1,
0051                       Energy m0,Energy m1,
0052                       Complex & f0,Complex & fp) const;
0053 
0054   /**
0055    * The form factor for the weak decay of a scalar to a vector.
0056    * @param q2 The scale \f$q^2\f$.
0057    * @param iloc The location in the form-factor list.
0058    * @param id0 The PDG code of the incoming meson.
0059    * @param id1 The PDG code of the outgoing meson.
0060    * @param m0 The mass of the incoming meson.
0061    * @param m1 The mass of the outgoing meson.
0062    * @param V  The form-factor \f$V\f$
0063    * @param A0 The form-factor \f$A_0\f$
0064    * @param A1 The form-factor \f$A_1\f$
0065    * @param A2 The form-factor \f$A_2\f$
0066    */
0067   virtual void ScalarVectorFormFactor(Energy2 q2, unsigned int iloc, int id0, int id1,
0068                       Energy m0, Energy m1, Complex & V,
0069                       Complex & A0,Complex & A1,Complex & A2) const;
0070   //@}
0071 
0072   /**
0073    * Output the setup information for the particle database
0074    * @param os The stream to output the information to
0075    * @param header Whether or not to output the information for MySQL
0076    * @param create Whether or not to add a statement creating the object
0077    */
0078   virtual void dataBaseOutput(ofstream & os,bool header,bool create) const;
0079 
0080 public:
0081 
0082   /** @name Functions used by the persistent I/O system. */
0083   //@{
0084   /**
0085    * Function used to write out object persistently.
0086    * @param os the persistent output stream written to.
0087    */
0088   void persistentOutput(PersistentOStream & os) const;
0089 
0090   /**
0091    * Function used to read in object persistently.
0092    * @param is the persistent input stream read from.
0093    * @param version the version number of the object when written.
0094    */
0095   void persistentInput(PersistentIStream & is, int version);
0096   //@}
0097 
0098   /**
0099    * The standard Init function used to initialize the interfaces.
0100    * Called exactly once for each class by the class description system
0101    * before the main function starts or
0102    * when this class is dynamically loaded.
0103    */
0104   static void Init();
0105 
0106 protected:
0107 
0108   /** @name Clone Methods. */
0109   //@{
0110   /**
0111    * Make a simple clone of this object.
0112    * @return a pointer to the new object.
0113    */
0114   virtual IBPtr clone() const {return new_ptr(*this);}
0115 
0116   /** Make a clone of this object, possibly modifying the cloned object
0117    * to make it sane.
0118    * @return a pointer to the new object.
0119    */
0120   virtual IBPtr fullclone() const {return new_ptr(*this);}
0121   //@}
0122 
0123 protected:
0124 
0125   /** @name Standard Interfaced functions. */
0126   //@{
0127   /**
0128    * Initialize this object after the setup phase before saving and
0129    * EventGenerator to disk.
0130    * @throws InitException if object could not be initialized properly.
0131    */
0132   virtual void doinit();
0133   //@}
0134 
0135 private:
0136 
0137   /**
0138    * The assignment operator is private and must never be called.
0139    * In fact, it should not even be implemented.
0140    */
0141   MelikhovFormFactor & operator=(const MelikhovFormFactor &) = delete;
0142 
0143 private:
0144 
0145   /** @name Parameters for the form factors */
0146   //@{
0147   /**
0148    *  The set of fit parameters to use
0149    */
0150   unsigned int _ifit;
0151 
0152   /**
0153    *  The value of \f$R_+(0)\f$ for the \f$B\to\pi\f$ form factor.
0154    */
0155   double _Rplus0;
0156 
0157   /**
0158    *  The value of \f$M_+\f$ for the \f$B\to\pi\f$ form factor.
0159    */
0160   Energy _Mplus;
0161 
0162   /**
0163    *  The value of \f$n_+\f$ for the \f$B\to\pi\f$ form factor.
0164    */
0165   double _nplus;
0166 
0167   /**
0168    *  The value of \f$R_V(0)\f$ for the \f$B\to\rho\f$ form factor.
0169    */
0170   double _RV0;
0171 
0172   /**
0173    *  The value of \f$M_V\f$ for the \f$B\to\rho\f$ form factor.
0174    */
0175   Energy _MV;
0176 
0177   /**
0178    *  The value of \f$n_V\f$ for the \f$B\to\rho\f$ form factor.
0179    */
0180   double _nV;
0181 
0182   /**
0183    *  The value of \f$R_1(0)\f$ for the \f$B\to\rho\f$ form factor.
0184    */
0185   double _R10;
0186 
0187   /**
0188    *  The value of \f$M_1\f$ for the \f$B\to\rho\f$ form factor.
0189    */
0190   Energy _M1;
0191 
0192   /**
0193    *  The value of \f$n_1\f$ for the \f$B\to\rho\f$ form factor.
0194    */
0195   double _n1;
0196 
0197   /**
0198    *  The value of \f$R_2(0)\f$ for the \f$B\to\rho\f$ form factor.
0199    */
0200   double _R20;
0201 
0202   /**
0203    *  The value of \f$M_2\f$ for the \f$B\to\rho\f$ form factor.
0204    */
0205   Energy _M2;
0206 
0207   /**
0208    *  The value of \f$n_2\f$ for the \f$B\to\rho\f$ form factor.
0209    */
0210   double _n2;
0211   //@}
0212 };
0213 
0214 }
0215 
0216 #endif /* HERWIG_MelikhovFormFactor_H */