Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // HQETFormFactor.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_HQETFormFactor_H
0010 #define HERWIG_HQETFormFactor_H
0011 //
0012 // This is the declaration of the HQETFormFactor class.
0013 //
0014 
0015 #include "ScalarFormFactor.h"
0016 
0017 namespace Herwig {
0018 
0019 using namespace ThePEG;
0020 
0021 /**
0022  * The HQETFormFactor class implements the form factors for the decay of
0023  * B mesons into D and \f$D^*\f$ mesons using form factors based on Heavy Quark
0024  * Effective theory of the parameterisation of hep-ph/9712417 away from the 
0025  * heavy quark limit.
0026  *
0027  * @see \ref HQETFormFactorInterfaces "The interfaces"
0028  * defined for HQETFormFactor.
0029  */
0030 class HQETFormFactor: public ScalarFormFactor {
0031 
0032 public:
0033 
0034   /**
0035    * The default constructor.
0036    */
0037   HQETFormFactor();
0038 
0039   /** @name Form Factors */
0040   //@{
0041   /**
0042    * The form factor for the weak decay of a scalar to a scalar.
0043    * @param q2 The scale \f$q^2\f$.
0044    * @param iloc The location in the form factor list.
0045    * @param id0 The PDG code of the incoming meson.
0046    * @param id1 The PDG code of the outgoing meson.
0047    * @param m0 The mass of the incoming meson.
0048    * @param m1 The mass of the outgoing meson.
0049    * @param f0 The form factor \f$f_0\f$. 
0050    * @param fp The form factor \f$f_+\f$.
0051    */
0052   virtual void ScalarScalarFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1,
0053                       Energy m0,Energy m1,Complex & f0,
0054                       Complex & fp) const;
0055 
0056   /**
0057    * The form factor for the weak decay of a scalar to a vector.
0058    * @param q2 The scale \f$q^2\f$.
0059    * @param iloc The location in the form factor list.
0060    * @param id0 The PDG code of the incoming meson.
0061    * @param id1 The PDG code of the outgoing meson.
0062    * @param m0 The mass of the incoming meson.
0063    * @param m1 The mass of the outgoing meson.
0064    * @param A0 The form factor \f$A_0\f$
0065    * @param A1 The form factor \f$A_1\f$
0066    * @param A2 The form factor \f$A_2\f$
0067    * @param V  The form factor \f$V\f$
0068    */
0069   virtual void ScalarVectorFormFactor(Energy2 q2, unsigned int iloc, int id0, int id1,
0070                       Energy m0, Energy m1,Complex & A0,
0071                       Complex & A1,Complex & A2, Complex & V) const;
0072   //@}
0073 
0074   /**
0075    * Output the setup information for the particle database
0076    * @param os The stream to output the information to
0077    * @param header Whether or not to output the information for MySQL
0078    * @param create Whether or not to add a statement creating the object
0079    */
0080   virtual void dataBaseOutput(ofstream & os,bool header,bool create) const;
0081 
0082 public:
0083 
0084   /** @name Functions used by the persistent I/O system. */
0085   //@{
0086   /**
0087    * Function used to write out object persistently.
0088    * @param os the persistent output stream written to.
0089    */
0090   void persistentOutput(PersistentOStream & os) const;
0091 
0092   /**
0093    * Function used to read in object persistently.
0094    * @param is the persistent input stream read from.
0095    * @param version the version number of the object when written.
0096    */
0097   void persistentInput(PersistentIStream & is, int version);
0098   //@}
0099 
0100   /**
0101    * The standard Init function used to initialize the interfaces.
0102    * Called exactly once for each class by the class description system
0103    * before the main function starts or
0104    * when this class is dynamically loaded.
0105    */
0106   static void Init();
0107 
0108 protected:
0109 
0110   /** @name Clone Methods. */
0111   //@{
0112   /**
0113    * Make a simple clone of this object.
0114    * @return a pointer to the new object.
0115    */
0116   virtual IBPtr clone() const {return new_ptr(*this);}
0117 
0118   /** Make a clone of this object, possibly modifying the cloned object
0119    * to make it sane.
0120    * @return a pointer to the new object.
0121    */
0122   virtual IBPtr fullclone() const {return new_ptr(*this);}
0123   //@}
0124 
0125 private:
0126 
0127   /**
0128    * The assignment operator is private and must never be called.
0129    * In fact, it should not even be implemented.
0130    */
0131   HQETFormFactor & operator=(const HQETFormFactor &) = delete;
0132 
0133 private:
0134 
0135   /**
0136    *  The normalisation parameter for the scalar form factors
0137    */
0138   double _f1scalar;
0139 
0140   /**
0141    *  The normalisation parameter for the vector form factors
0142    */
0143   double _f1vector;
0144 
0145   /**
0146    *  The form factor \f$R_1(\omega)\f$ at \f$\omega=1\f$.
0147    */
0148   double _r1;
0149 
0150   /**
0151    *  The form factor \f$R_2(\omega)\f$ at \f$\omega=1\f$.
0152    */
0153   double _r2;
0154 
0155   /**
0156    *  The slope parameter \f$\rho^2\f$ for the scalar form factors
0157    */
0158   double _rho2scalar;
0159 
0160   /**
0161    *  The slope parameter \f$\rho^2\f$ for the vector form factors
0162    */
0163   double _rho2vector;
0164 };
0165 
0166 }
0167 
0168 #endif /* HERWIG_HQETFormFactor_H */