Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:23:59

0001 // -*- C++ -*-
0002 //
0003 // BallZwickyScalarFormFactor.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_BallZwickyScalarFormFactor_H
0010 #define HERWIG_BallZwickyScalarFormFactor_H
0011 //
0012 // This is the declaration of the BallZwickyScalarFormFactor class.
0013 //
0014 #include "ScalarFormFactor.h"
0015 
0016 namespace Herwig {
0017 using namespace ThePEG;
0018 
0019 /** \ingroup Decay
0020  *
0021  *  This class is the implementation of the form-factors of PRD71 014015 (2005) for
0022  *  the form-factor for the decay of a B-meson to a light pseudoscalar meson.
0023  *
0024  *  This class is one of the few which includes the penguin form factors in addition
0025  *  to the standard weak decay form factors.
0026  *
0027  * @see ScalarFormFactor
0028  * @see BallZwickyVectorFormFactor
0029  */
0030 class BallZwickyScalarFormFactor: public ScalarFormFactor {
0031   
0032 public:
0033 
0034   /**
0035    * Default constructor
0036    */
0037   BallZwickyScalarFormFactor();
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,
0053                       int id1, Energy m0, Energy m1,
0054                       Complex & f0,Complex & fp) const;
0055 
0056   /**
0057    * The form factor for the weak penguin decay of a scalar meson to a scalar meson.
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 fT The form factor \f$f_T\f$.
0065    */
0066   void ScalarScalarSigmaFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1,
0067                    Energy m0, Energy m1,Complex & fT) const;
0068   //@}
0069 
0070   /**
0071    * Output the setup information for the particle database
0072    * @param os The stream to output the information to
0073    * @param header Whether or not to output the information for MySQL
0074    * @param create Whether or not to add a statement creating the object
0075    */
0076   virtual void dataBaseOutput(ofstream & os,bool header,bool create) const;
0077 
0078 public:
0079 
0080   /** @name Functions used by the persistent I/O system. */
0081   //@{
0082   /**
0083    * Function used to write out object persistently.
0084    * @param os the persistent output stream written to.
0085    */
0086   void persistentOutput(PersistentOStream & os) const;
0087 
0088   /**
0089    * Function used to read in object persistently.
0090    * @param is the persistent input stream read from.
0091    * @param version the version number of the object when written.
0092    */
0093   void persistentInput(PersistentIStream & is, int version);
0094   //@}
0095 
0096   /**
0097    * Standard Init function used to initialize the interfaces.
0098    */
0099   static void Init();
0100 
0101 protected:
0102 
0103   /** @name Clone Methods. */
0104   //@{
0105   /**
0106    * Make a simple clone of this object.
0107    * @return a pointer to the new object.
0108    */
0109   virtual IBPtr clone() const {return new_ptr(*this);}
0110 
0111   /** Make a clone of this object, possibly modifying the cloned object
0112    * to make it sane.
0113    * @return a pointer to the new object.
0114    */
0115   virtual IBPtr fullclone() const {return new_ptr(*this);}
0116   //@}
0117 
0118 protected:
0119 
0120   /** @name Standard Interfaced functions. */
0121   //@{
0122   /**
0123    * Initialize this object after the setup phase before saving and
0124    * EventGenerator to disk.
0125    * @throws InitException if object could not be initialized properly.
0126    */
0127   virtual void doinit();
0128   //@}
0129 
0130 private:
0131 
0132   /**
0133    * Private and non-existent assignment operator.
0134    */
0135   BallZwickyScalarFormFactor & operator=(const BallZwickyScalarFormFactor &) = delete;
0136 
0137 private:
0138 
0139   /** @name Coefficients for the form factors.*/
0140   //@{
0141 
0142   /**
0143    * The coefficient \f$r_1\f$ for the \f$f_0(q^2)\f$ form factor.
0144    */
0145   vector<double> _r10;
0146 
0147   /**
0148    * The coefficient \f$r_2\f$ for the \f$f_0(q^2)\f$ form factor.
0149    */
0150   vector<double> _r20;
0151 
0152   /**
0153    * The coefficient \f$r_1\f$ for the \f$f_+(q^2)\f$ form factor.
0154    */
0155   vector<double> _r1plus;
0156 
0157   /**
0158    * The coefficient \f$r_2\f$ for the \f$f_+(q^2)\f$ form factor.
0159    */
0160   vector<double> _r2plus;
0161 
0162   /**
0163    * The coefficient \f$r_1\f$ for the \f$f_T(q^2)\f$ form factor.
0164    */
0165   vector<double> _r1T;
0166 
0167   /**
0168    * The coefficient \f$r_2\f$ for the \f$f_T(q^2)\f$ form factor.
0169    */
0170   vector<double> _r2T;
0171   //@}
0172 
0173   /** @name Masses for the form factors.*/
0174   //@{
0175 
0176   /**
0177    * The mass \f$(m_1)^2\f$ \f$f_0(q^2)\f$ form factor.
0178    */
0179   vector<Energy2> _m120;
0180 
0181   /**
0182    * The mass \f$m_{\rm fit}^2\f$ \f$f_0(q^2)\f$ form factor.
0183    */
0184   vector<Energy2> _mfit20;
0185 
0186   /**
0187    * The mass \f$(m_1)^2\f$ \f$f_+(q^2)\f$ form factor.
0188    */
0189   vector<Energy2> _m12plus;
0190 
0191   /**
0192    * The mass \f$m_{\rm fit}^2\f$ \f$f_+(q^2)\f$ form factor.
0193    */
0194   vector<Energy2> _mfit2plus;
0195 
0196   /**
0197    * The mass \f$(m_1)^2\f$ \f$f_T(q^2)\f$ form factor.
0198    */
0199   vector<Energy2> _m12T;
0200 
0201   /**
0202    * The mass \f$m_{\rm fit}^2\f$ \f$f_T(q^2)\f$ form factor.
0203    */
0204   vector<Energy2> _mfit2T;
0205   //@}
0206 
0207   /**
0208    * The \f$\eta-\eta'\f$ mixing angle 
0209    */
0210   double _thetaeta;
0211 
0212 };
0213 
0214 }
0215 
0216 #endif /* HERWIG_BallZwickyScalarFormFactor_H */