Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // WSBFormFactor.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_WSBFormFactor_H
0010 #define HERWIG_WSBFormFactor_H
0011 //
0012 // This is the declaration of the WSBFormFactor class.
0013 //
0014 #include "ScalarFormFactor.h"
0015 
0016 namespace Herwig {
0017 using namespace ThePEG;
0018 
0019   /** \ingroup Decay
0020    *
0021    *  The WSBFormFactor class is the implementation of the form factor
0022    *  model of Z.Phys. C29, 637 for the semi-leptonic form factors. It includes
0023    *  form factors for a number of \f$D\f$, \f$B\f$ and \f$D_s\f$ decays. 
0024    *  In practice the parameters
0025    *  of the model were taken from Z.Phys. C34, 103 which includes a number of
0026    *  decay modes which were not considered in the original paper. 
0027    *
0028    *  This form factor model is included both to give an alternative for many modes
0029    *  to the ISGW models and for use in the factorisation approxmation for hadronic
0030    *  decays.
0031    * 
0032    * @see ScalarFormFactor
0033    * @see ISGWFormFactor
0034    * @see ISGW2FormFactor
0035    *
0036    */
0037 
0038 class WSBFormFactor: public ScalarFormFactor {
0039 
0040 public:
0041 
0042   /**
0043    * Default constructor
0044    */
0045   WSBFormFactor();
0046 
0047   /** @name Form-Factors */
0048   //@{
0049   /**
0050    * The form factor for the weak decay of a scalar to a scalar. 
0051    * @param q2 The scale \f$q^2\f$.
0052    * @param iloc The location in the form-factor list.
0053    * @param id0 The PDG code of the incoming meson.
0054    * @param id1 The PDG code of the outgoing meson.
0055    * @param m0 The mass of the incoming meson.
0056    * @param m1 The mass of the outgoing meson.
0057    * @param f0 The form-factor \f$f_0\f$. 
0058    * @param fp The form-factor \f$f_+\f$.
0059    */
0060   virtual void ScalarScalarFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1,
0061                       Energy m0,Energy m1,
0062                       Complex & f0,Complex & fp) const;
0063 
0064   /**
0065    * The form factor for the weak decay of a scalar to a vector.
0066    * @param q2 The scale \f$q^2\f$.
0067    * @param iloc The location in the form-factor list.
0068    * @param id0 The PDG code of the incoming meson.
0069    * @param id1 The PDG code of the outgoing meson.
0070    * @param m0 The mass of the incoming meson.
0071    * @param m1 The mass of the outgoing meson.
0072    * @param V  The form-factor \f$V\f$
0073    * @param A0 The form-factor \f$A_0\f$
0074    * @param A1 The form-factor \f$A_1\f$
0075    * @param A2 The form-factor \f$A_2\f$
0076    */
0077   virtual void ScalarVectorFormFactor(Energy2 q2, unsigned int iloc, int id0, int id1,
0078                       Energy m0, Energy m1, Complex & V,
0079                       Complex & A0,Complex & A1,Complex & A2) const;
0080   //@}
0081 
0082   /**
0083    * Output the setup information for the particle database
0084    * @param os The stream to output the information to
0085    * @param header Whether or not to output the information for MySQL
0086    * @param create Whether or not to add a statement creating the object
0087    */
0088   virtual void dataBaseOutput(ofstream & os,bool header,bool create) const;
0089 
0090 public:
0091 
0092   /** @name Functions used by the persistent I/O system. */
0093   //@{
0094   /**
0095    * Function used to write out object persistently.
0096    * @param os the persistent output stream written to.
0097    */
0098   void persistentOutput(PersistentOStream & os) const;
0099 
0100   /**
0101    * Function used to read in object persistently.
0102    * @param is the persistent input stream read from.
0103    * @param version the version number of the object when written.
0104    */
0105   void persistentInput(PersistentIStream & is, int version);
0106   //@}
0107 
0108   /**
0109    * Standard Init function used to initialize the interfaces.
0110    */
0111   static void Init();
0112 
0113 protected:
0114 
0115   /** @name Clone Methods. */
0116   //@{
0117   /**
0118    * Make a simple clone of this object.
0119    * @return a pointer to the new object.
0120    */
0121   virtual IBPtr clone() const {return new_ptr(*this);}
0122 
0123   /** Make a clone of this object, possibly modifying the cloned object
0124    * to make it sane.
0125    * @return a pointer to the new object.
0126    */
0127   virtual IBPtr fullclone() const {return new_ptr(*this);}
0128   //@}
0129 
0130 protected:
0131 
0132   /** @name Standard Interfaced functions. */
0133   //@{
0134 
0135   /**
0136    * Initialize this object after the setup phase before saving and
0137    * EventGenerator to disk.
0138    * @throws InitException if object could not be initialized properly.
0139    */
0140   virtual void doinit();
0141   //@}
0142 
0143 private:
0144 
0145   /**
0146    * Private and non-existent assignment operator.
0147    */
0148   WSBFormFactor & operator=(const WSBFormFactor &) = delete;
0149 
0150 private:
0151 
0152   /** @name Parameters for the form factors */
0153   //@{
0154   /**
0155    * The form factor at \f$q^2=0\f$ for scalar decays.
0156    */
0157   vector<double> _F0;
0158 
0159   /**
0160    * the form factor \f$V\f$ at \f$q^2=0\f$ for vector decays.
0161    */
0162   vector<double> _V;
0163 
0164   /**
0165    * the form factor \f$A_0\f$ at \f$q^2=0\f$ for vector decays.
0166    */
0167   vector<double> _A0;
0168 
0169   /**
0170    * the form factor \f$A_1\f$ at \f$q^2=0\f$ for vector decays.
0171    */
0172   vector<double> _A1;
0173 
0174   /**
0175    * the form factor \f$A_2\f$ at \f$q^2=0\f$ for vector decays.
0176    */
0177   vector<double> _A2;
0178 
0179   /**
0180    * Spin-0 mass for the scalar form factors
0181    */
0182   vector<Energy> _mS0;
0183 
0184   /**
0185    * Spin-1 mass for the scalar form factors
0186    */
0187   vector<Energy> _mS1;
0188 
0189   /**
0190    * Spin-0 mass for the vector form factors
0191    */
0192   vector<Energy> _mV0;
0193 
0194   /**
0195    * Spin-1 mass for the vector form factors
0196    */
0197   vector<Energy> _mV1;
0198   //@}
0199 
0200   /**
0201    * The \f$\eta-\eta'\f$ mixing angle 
0202    */
0203   double _thetaeta;
0204 };
0205 
0206 }
0207 
0208 #endif /* HERWIG_WSBFormFactor_H */