|
|
|||
File indexing completed on 2026-08-06 09:24:00
0001 // -*- C++ -*- 0002 #ifndef HERWIG_BaryonThreeQuarkModelFormFactor_H 0003 #define HERWIG_BaryonThreeQuarkModelFormFactor_H 0004 // 0005 // This is the declaration of the BaryonThreeQuarkModelFormFactor class. 0006 // 0007 #include "BaryonFormFactor.h" 0008 #include "ThePEG/PDT/ParticleData.h" 0009 0010 namespace Herwig { 0011 using namespace ThePEG; 0012 0013 /** \ingroup Decay 0014 * 0015 * The BaryonThreeQuarkModelFormFactor class implements the 0016 * form factors for the semi-leptonic decay of baryons containing a heavy quark 0017 * from the relativistic three-quark model calculation of PRD56, 348. 0018 * 0019 * As the only formulae in the paper are for the heavy-to-heavy i.e. bottom 0020 * to charm decay this there are the only modes included, although the paper 0021 * also includes charm decays and bottom decays to light quarks. 0022 * 0023 * The form factors are calculated by numerical computing the integrals from 0024 * PRD56, 348 to obtain the coefficients for the expansion of the form factors. 0025 * 0026 * @see BaryonFormFactor 0027 */ 0028 class BaryonThreeQuarkModelFormFactor: public BaryonFormFactor { 0029 0030 public: 0031 0032 /** 0033 * Default constructor 0034 */ 0035 BaryonThreeQuarkModelFormFactor(); 0036 0037 /** @name Functions used by the persistent I/O system. */ 0038 //@{ 0039 /** 0040 * Function used to write out object persistently. 0041 * @param os the persistent output stream written to. 0042 */ 0043 void persistentOutput(PersistentOStream & os) const; 0044 0045 /** 0046 * Function used to read in object persistently. 0047 * @param is the persistent input stream read from. 0048 * @param version the version number of the object when written. 0049 */ 0050 void persistentInput(PersistentIStream & is, int version); 0051 //@} 0052 0053 /** 0054 * Standard Init function used to initialize the interfaces. 0055 */ 0056 static void Init(); 0057 0058 protected: 0059 0060 /** @name Clone Methods. */ 0061 //@{ 0062 /** 0063 * Make a simple clone of this object. 0064 * @return a pointer to the new object. 0065 */ 0066 virtual IBPtr clone() const {return new_ptr(*this);} 0067 0068 /** Make a clone of this object, possibly modifying the cloned object 0069 * to make it sane. 0070 * @return a pointer to the new object. 0071 */ 0072 virtual IBPtr fullclone() const {return new_ptr(*this);} 0073 //@} 0074 0075 public: 0076 0077 /** @name Form Factors */ 0078 //@{ 0079 /** 0080 * The form factor for the weak decay of a spin \f$\frac12\f$ baryon to a 0081 * spin \f$\frac12\f$ baryon. 0082 * @param q2 The scale \f$q^2\f$. 0083 * @param iloc The location in the form factor list. 0084 * @param id0 The PDG code of the incoming baryon. 0085 * @param id1 The PDG code of the outgoing baryon. 0086 * @param m0 The mass of the incoming baryon. 0087 * @param m1 The mass of the outgoing baryon. 0088 * @param f1v The form factor \f$F^V_1\f$. 0089 * @param f2v The form factor \f$F^V_2\f$. 0090 * @param f3v The form factor \f$F^V_3\f$. 0091 * @param f1a The form factor \f$F^A_1\f$. 0092 * @param f2a The form factor \f$F^A_2\f$. 0093 * @param f3a The form factor \f$F^A_3\f$. 0094 * @param virt Whether the q2 is space or timelike 0095 */ 0096 virtual void SpinHalfSpinHalfFormFactor(Energy2 q2,int iloc, int id0, int id1, 0097 Energy m0, Energy m1, 0098 Complex & f1v,Complex & f2v,Complex & f3v, 0099 Complex & f1a,Complex & f2a,Complex & f3a, 0100 FlavourInfo flavour, 0101 Virtuality virt=SpaceLike); 0102 0103 /** 0104 * The form factor for the weak decay of a spin \f$\frac12\f$ baryon to a 0105 * spin \f$\frac32\f$ baryon. 0106 * @param q2 The scale \f$q^2\f$. 0107 * @param iloc The location in the form factor list. 0108 * @param id0 The PDG code of the incoming baryon. 0109 * @param id1 The PDG code of the outgoing baryon. 0110 * @param m0 The mass of the incoming baryon. 0111 * @param m1 The mass of the outgoing baryon. 0112 * @param g1v The form factor \f$G^V_1\f$. 0113 * @param g2v The form factor \f$G^V_2\f$. 0114 * @param g3v The form factor \f$G^V_3\f$. 0115 * @param g4v The form factor \f$G^V_4\f$. 0116 * @param g1a The form factor \f$G^A_1\f$. 0117 * @param g2a The form factor \f$G^A_2\f$. 0118 * @param g3a The form factor \f$G^A_3\f$. 0119 * @param g4a The form factor \f$G^A_4\f$. 0120 * @param virt Whether the q2 is space or timelike 0121 */ 0122 virtual void SpinHalfSpinThreeHalfFormFactor(Energy2 q2,int iloc, int id0, int id1, 0123 Energy m0, Energy m1, 0124 Complex & g1v,Complex & g2v,Complex & g3v, 0125 Complex & g4v,Complex & g1a,Complex & g2a, 0126 Complex & g3a,Complex & g4a, 0127 FlavourInfo flavour, 0128 Virtuality virt=SpaceLike); 0129 //@} 0130 0131 /** 0132 * Output the setup information for the particle database 0133 * @param os The stream to output the information to 0134 * @param header Whether or not to output the information for MySQL 0135 * @param create Whether or not to add a statement creating the object 0136 */ 0137 virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; 0138 0139 /** 0140 * The integrand for the coefficients of the expansion. This is a function of the 0141 * integration variable \f$x\f$ which is chosen to transform the integrand over \f$y\f$ 0142 * which is from \f$0\f$ to \f$\infty\f$ to an integral between 0 and 1. This means 0143 * that \f$y=\frac{1-x}{x}\f$. 0144 * @param x The integration variable. 0145 */ 0146 double operator ()(double x) const; 0147 /** Argument type for GaussianIntegrator */ 0148 typedef double ArgType; 0149 /** Return type for GaussianIntegrator */ 0150 typedef double ValType; 0151 0152 /** 0153 * The integrand for the semi-analytic calculation of the semi-leptonic width. 0154 * This is included for testing purposes. 0155 * @param omega The \f$\omega\f$ parameter of the heavy quark form-factors. 0156 * @param m0 The mass of the incoming baryon. 0157 * @param m1 The mass of the outgoing baryon. 0158 * @param type The type of the decay 0159 * @param imass The baryonic mass parameter to use. 0160 * @param id0 PDG code for the decaying particle 0161 * @param id1 PDG code for the decay product 0162 */ 0163 Energy widthIntegrand(double omega,Energy m0, Energy m1, int type, int imass, 0164 int id0,int id1); 0165 0166 protected: 0167 0168 /** @name Function needed to calculate the form factors */ 0169 //@{ 0170 /** 0171 * Returns the function \f$\Phi_N\f$ function of PRD56, 348 as a function 0172 * of \f$\omega\f$. 0173 */ 0174 vector<double> phiFunction(double); 0175 0176 /** 0177 * The integral of a power of the the \f$S\f$ function of PRD56, 348 with respect 0178 * to \f$\theta\f$. This is used to 0179 * calculate the coefficients of the expansion to compute the form factors. 0180 * The integral is calculated by computing a low power of the integrand and then 0181 * using recursion relations to calculate the pwoer requested. 0182 * @param y The \f$y\f$ variable of the function which is integrate over numerically. 0183 * @param N The power to which the integrand is raised. 0184 * @param SNm2 The integral with the function raised to the power \f$N/2-1\f$. 0185 * @param SN The integral with the function raised to the power \f$N\f$. 0186 */ 0187 void SN(double y,int N,double & SNm2,double & SN) const; 0188 //@} 0189 0190 protected: 0191 0192 /** @name Standard Interfaced functions. */ 0193 //@{ 0194 0195 /** 0196 * Initialize this object after the setup phase before saving and 0197 * EventGenerator to disk. 0198 * @throws InitException if object could not be initialized properly. 0199 */ 0200 virtual void doinit(); 0201 //@} 0202 0203 private: 0204 0205 /** 0206 * Private and non-existent assignment operator. 0207 */ 0208 BaryonThreeQuarkModelFormFactor & operator=(const BaryonThreeQuarkModelFormFactor &) = delete; 0209 0210 private: 0211 0212 /** @name Parameters for the form factors */ 0213 //@{ 0214 /** 0215 * Initialization of the expansion coefficients 0216 */ 0217 bool _initialize; 0218 0219 /** 0220 * Order of the expansion for the form factors. 0221 */ 0222 unsigned int _order; 0223 0224 /** 0225 * Mass of the light quarks used in the calculation of the form factors. 0226 */ 0227 Energy _mlight; 0228 0229 /** 0230 * Mass of the strange quark used in the calculation of the form factors. 0231 */ 0232 Energy _mstrange; 0233 0234 /** 0235 * The heavy quark \f$\Lambda_Q\f$ parameter for the calculation of the form factors. 0236 */ 0237 Energy _LambdaQ; 0238 0239 /** 0240 * The \f$\Lambda_{qq}\f$ parameter for the calculation of the form factors. 0241 */ 0242 Energy _Lambdaqq; 0243 0244 /** 0245 * The \f$\Lambda_{sq}\f$ parameter for the calculation of the form factors. 0246 */ 0247 Energy _Lambdasq; 0248 0249 0250 /** 0251 * The \f$\Lambda_{ss}\f$ parameter for the calculation of the form factors. 0252 */ 0253 Energy _Lambdass; 0254 0255 /** 0256 * Coefficients for the expansion of the \f$\xi(\omega)\f$ form factor. 0257 */ 0258 vector<double> _C0; 0259 0260 /** 0261 * Coefficients for the expansion of the \f$\xi_1(\omega)\f$ form factor. 0262 */ 0263 vector<double> _C1; 0264 0265 /** 0266 * Coefficients for the expansion of the \f$\xi_2(\omega)\f$ form factor. 0267 */ 0268 vector<double> _C2; 0269 0270 /** 0271 * Coefficient of the first term in the integrand for the coefficient calculation. 0272 */ 0273 double _a; 0274 0275 /** 0276 * Coefficient of the second term in the integrand for the coefficient calculation. 0277 */ 0278 double _b; 0279 0280 /** 0281 * The \f$\mu^2\f$ parameter for the coefficient calculation. 0282 */ 0283 double _mu2; 0284 0285 /** 0286 * the order of the coefficient being calculated. 0287 */ 0288 int _N; 0289 //@} 0290 }; 0291 0292 } 0293 0294 #endif /* HERWIG_BaryonThreeQuarkModelFormFactor_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|