|
|
|||
File indexing completed on 2026-08-06 09:23:59
0001 // -*- C++ -*- 0002 #ifndef HERWIG_BaryonFormFactor_H 0003 #define HERWIG_BaryonFormFactor_H 0004 // 0005 // This is the declaration of the BaryonFormFactor class. 0006 // 0007 #include "ThePEG/Interface/Interfaced.h" 0008 #include "BaryonFormFactor.fh" 0009 #include "ThePEG/Config/Complex.h" 0010 #include "Herwig/Decay/IsoSpin.h" 0011 0012 namespace Herwig { 0013 using namespace ThePEG; 0014 0015 /** \ingroup Decay 0016 * The BaryonFormFactor class is the base class for the implementation 0017 * of the form-factors for the weak decay of a baryon. 0018 * 0019 * This is designed so that the form factors can be used for both the semi-leptonic 0020 * decays and using factorization for hadronic weak decays. 0021 * 0022 * The form factors are given below for the decay \f$X(p_0)\to Y(p_1)\f$ with 0023 * \f$q_\mu=(p_0-p_1)_\mu\f$. 0024 * 0025 * 0026 * The form-factors are defined to be 0027 * 0028 * \f[\bar{u}(p_1) \left[ \gamma^\mu \left(F^V_1+F^A_1 \gamma_5\right) 0029 * +\frac{i}{(m_0+m_1)}\sigma_{\mu\nu}q^\nu\left(F^V_2+F^A_2\gamma_5\right) 0030 * +\frac1{(m_0+m_1)}q^\mu\left(F^V_3+F^A_3\gamma_5\right)\right] u(p_0) \f] 0031 * 0032 * for the \f$\frac12\to\frac12\f$ transition and 0033 * 0034 * \f[\bar{u}^\alpha(p_1) \left[ g_{\alpha\mu}\left(G^V_1+G^A_1 \gamma_5\right) 0035 * +\frac1{(m_0+m_1)}p_{0\alpha}\gamma_\mu\left(G^V_2+G^A_2\gamma_5\right) 0036 * +\frac1{(m_0+m_1)^2}p_{0\alpha}p_{1\mu}\left(G^V_3+G^A_3\gamma_5\right)\right.\f] 0037 * \f[ \left. 0038 * +\frac1{(m_0+m_1)^2}p_{0\alpha}q_\mu\left(G^V_4+G^A_4\gamma_5\right)\right] 0039 * \gamma_5 u(p_0) 0040 * \f] 0041 * for the \f$\frac12\to\frac32\f$ transition. 0042 * 0043 * These definitions differ from those in the liturature because we have divided some 0044 * terms by the sum of the baryon masses to ensure that the form-factors are all 0045 * dimensionless. 0046 * 0047 * In many applications, particularly for the decay of baryons containing a heavy 0048 * quark, an alternative version of the form factors in terms of the velocities 0049 * of the baryons is used. This form is 0050 * 0051 * \f[\bar{u}(v') \left[ \gamma^\mu \left(F_1-G_1 \gamma_5\right) 0052 * v^\mu \left(F_2-G_2 \gamma_5\right) 0053 * {v'}^\mu \left(F_3-G_3\gamma_5\right)\right] u(v) \f] 0054 * 0055 * for the \f$\frac12\to\frac12\f$ transition and 0056 * 0057 * \f[\bar{u}^\alpha(v') \left[ v_\alpha\gamma_\mu\left(N_1-K_1 \gamma_5\right) 0058 * +v_\alpha v^\mu \left(N_2-K_2 \gamma_5\right) 0059 * +v_\alpha {v'}^\mu \left(N_3-K_3 \gamma_5\right) 0060 * +g_\alpha^\mu \left(N_4-K_4 \gamma_5\right)\right] 0061 * \gamma_5 u(v) 0062 * \f] 0063 * for the \f$\frac12\to\frac32\f$ transition. 0064 * 0065 * In terms of these form factors the form factors we use are 0066 * 0067 * \f[F^V_1= F_1+\frac12(m_0+m_1)\left(\frac{F_2}{m_0}+\frac{F_3}{m_1}\right)\f] 0068 * \f[F^V_2=\frac12(m_0+m_1)\left(\frac{F_2}{m_0}+\frac{F_3}{m_1}\right)\f] 0069 * \f[F^V_3=\frac12(m_0+m_1)\left(\frac{F_2}{m_0}-\frac{F_3}{m_1}\right)\f] 0070 * \f[F^A_1=-G_1+\frac12(m_0-m_1)\left(\frac{G_2}{m_0}+\frac{G_3}{m_1}\right)\f] 0071 * \f[F^A_2=-\frac12(m_0+m_1)\left(\frac{G_2}{m_0}+\frac{G_3}{m_1}\right)\f] 0072 * \f[F^A_3=\frac12(m_0+m_1)\left(-\frac{G_2}{m_0}+\frac{G_3}{m_1}\right)\f] 0073 * 0074 * for the \f$\frac12\to\frac12\f$ transition and 0075 * 0076 * \f[G_1^V = N_4\f] 0077 * \f[G_2^V = N_1\frac{(m_0+m_1)}{m_0}\f] 0078 * \f[G_3^V = \frac{(m_0+m_1)^2}{m_0}\left(\frac{N_2}{m_0}+\frac{N_3}{m_1}\right)\f] 0079 * \f[G_4^V = N_2\frac{(m_0+m_1)^2}{m^2_0}\f] 0080 * \f[G_1^A =-K_4\f] 0081 * \f[G_2^A =-K_1\frac{(m_0+m_1)}{m_0}\f] 0082 * \f[G_3^A =-\frac{(m_0+m_1)^2}{m_0}\left(\frac{K_2}{m_0}+\frac{K_3}{m_1}\right)\f] 0083 * \f[G_4^A =-K_2\frac{(m_0+m_1)^2}{m^2_0}\f] 0084 * 0085 * for the \f$\frac12\to\frac32\f$ transition. 0086 * 0087 * 0088 * @see ScalarFormFactor 0089 * 0090 */ 0091 0092 class BaryonFormFactor: public Interfaced { 0093 0094 public: 0095 0096 /** 0097 * Whether the form factor is space- or time-like 0098 */ 0099 enum Virtuality {TimeLike, SpaceLike}; 0100 0101 0102 public: 0103 0104 /** 0105 * Default constructor 0106 */ 0107 BaryonFormFactor() : _numbermodes() {} 0108 0109 /** @name Functions used by the persistent I/O system. */ 0110 //@{ 0111 /** 0112 * Function used to write out object persistently. 0113 * @param os the persistent output stream written to. 0114 */ 0115 void persistentOutput(PersistentOStream & os) const; 0116 0117 /** 0118 * Function used to read in object persistently. 0119 * @param is the persistent input stream read from. 0120 * @param version the version number of the object when written. 0121 */ 0122 void persistentInput(PersistentIStream & is, int version); 0123 //@} 0124 0125 /** 0126 * Standard Init function used to initialize the interfaces. 0127 */ 0128 static void Init(); 0129 0130 protected: 0131 0132 /** @name Clone Methods. */ 0133 //@{ 0134 /** 0135 * Make a simple clone of this object. 0136 * @return a pointer to the new object. 0137 */ 0138 virtual IBPtr clone() const {return new_ptr(*this);} 0139 0140 /** Make a clone of this object, possibly modifying the cloned object 0141 * to make it sane. 0142 * @return a pointer to the new object. 0143 */ 0144 virtual IBPtr fullclone() const {return new_ptr(*this);} 0145 //@} 0146 0147 public: 0148 0149 /** @name Functions to give information about the form factors available. */ 0150 //@{ 0151 0152 /** 0153 * Find the location for a given pair of particle. 0154 * \param in PDG code for the incoming baryon. 0155 * \param out PDG code for the outgoing baryon. 0156 * \param cc particles or charge conjugates stored in form factor. 0157 * @return The location in the vectors storing the data. 0158 */ 0159 int formFactorNumber(int in,int out,bool & cc) const { 0160 int output(-1); 0161 unsigned int ix(0); 0162 if(_incomingid.size()==0){return output;} 0163 do { 0164 if(_incomingid[ix]== in && _outgoingid[ix]== out) { 0165 cc=false; 0166 output=ix; 0167 } 0168 else if (_incomingid[ix]==-in && _outgoingid[ix]==-out) { 0169 cc=true; 0170 output=ix; 0171 } 0172 ++ix; 0173 } 0174 while(ix<_incomingid.size()&&output<0); 0175 return output; 0176 } 0177 0178 /** 0179 * Get the particle ids for an entry. 0180 * @param iloc The location in the list. 0181 * @param id0 The PDG code for the incoming baryon. 0182 * @param id1 The PDG code for the outgoing baryon. 0183 */ 0184 void particleID(int iloc,int& id0,int& id1) { 0185 id0=_incomingid[iloc]; 0186 id1=_outgoingid[iloc]; 0187 } 0188 0189 /** 0190 * Information on the form factor. 0191 * @param iloc The location in the list. 0192 * @param ispin The spin of the incoming baryon. 0193 * @param ospin The spin of the outgoing baryon. 0194 * @param spect1 The PDG code of the first spectator quark. 0195 * @param spect2 The PDG code of the second spectator quark. 0196 * @param inquark The PDG code for decaying incoming quark. 0197 * @param outquark The PDG code for the outgoing quark produced in the decay. 0198 */ 0199 void formFactorInfo(int iloc,int & ispin,int & ospin,int & spect1, 0200 int & spect2, int & inquark,int & outquark) { 0201 ispin = _incomingJ[iloc]; 0202 ospin = _outgoingJ[iloc]; 0203 spect1 = _spectator1[iloc]; 0204 spect2 = _spectator2[iloc]; 0205 inquark = _inquark[iloc]; 0206 outquark = _outquark[iloc]; 0207 } 0208 0209 /** 0210 * Information on the form factor. 0211 * @param in The PDG code of the incoming baryon. 0212 * @param out The PDG code of the outgoing baryon. 0213 * @param ispin The spin of the incoming baryon. 0214 * @param ospin The spin of the outgoing baryon. 0215 * @param spect1 The PDG code of the first spectator quark. 0216 * @param spect2 The PDG code of the second spectator quark. 0217 * @param inquark The PDG code for decaying incoming quark. 0218 * @param outquark The PDG code for the outgoing quark produced in the decay. 0219 */ 0220 void formFactorInfo(int in,int out,int & ispin,int & ospin,int & spect1, 0221 int & spect2, int & inquark,int & outquark) { 0222 bool dummy; 0223 unsigned int ix=formFactorNumber(in,out,dummy); 0224 formFactorInfo(ix,ispin,ospin,spect1,spect2,inquark,outquark); 0225 } 0226 0227 /** 0228 * number of form factors 0229 */ 0230 unsigned int numberOfFactors() const {return _incomingid.size();} 0231 //@} 0232 0233 public: 0234 0235 /** @name Form Factors */ 0236 //@{ 0237 /** 0238 * The form factor for the weak decay of a spin \f$\frac12\f$ baryon to a 0239 * spin \f$\frac12\f$ baryon. 0240 * This method is virtual and must be implementented in classes 0241 * inheriting from this which include spin\f$\frac12\f$ to spin \f$\frac12\f$ 0242 * form factors. 0243 * @param q2 The scale \f$q^2\f$. 0244 * @param iloc The location in the form factor list. 0245 * @param id0 The PDG code of the incoming baryon. 0246 * @param id1 The PDG code of the outgoing baryon. 0247 * @param m0 The mass of the incoming baryon. 0248 * @param m1 The mass of the outgoing baryon. 0249 * @param f1v The form factor \f$F^V_1\f$. 0250 * @param f2v The form factor \f$F^V_2\f$. 0251 * @param f3v The form factor \f$F^V_3\f$. 0252 * @param f1a The form factor \f$F^A_1\f$. 0253 * @param f2a The form factor \f$F^A_2\f$. 0254 * @param f3a The form factor \f$F^A_3\f$. 0255 * @param virt Whether the q2 is space or timelike 0256 */ 0257 virtual void SpinHalfSpinHalfFormFactor(Energy2 q2,int iloc, int id0, int id1, 0258 Energy m0, Energy m1, 0259 Complex & f1v,Complex & f2v,Complex & f3v, 0260 Complex & f1a,Complex & f2a,Complex & f3a, 0261 FlavourInfo flavour, 0262 Virtuality virt=SpaceLike); 0263 0264 /** 0265 * The form factor for the weak decay of a spin \f$\frac12\f$ baryon to a 0266 * spin \f$\frac32\f$ baryon. 0267 * This method is virtual and must be implementented in classes 0268 * inheriting from this which include spin\f$\frac12\f$ to spin \f$\frac32\f$ 0269 * form factors. 0270 * @param q2 The scale \f$q^2\f$. 0271 * @param iloc The location in the form factor list. 0272 * @param id0 The PDG code of the incoming baryon. 0273 * @param id1 The PDG code of the outgoing baryon. 0274 * @param m0 The mass of the incoming baryon. 0275 * @param m1 The mass of the outgoing baryon. 0276 * @param g1v The form factor \f$G^V_1\f$. 0277 * @param g2v The form factor \f$G^V_2\f$. 0278 * @param g3v The form factor \f$G^V_3\f$. 0279 * @param g4v The form factor \f$G^V_4\f$. 0280 * @param g1a The form factor \f$G^A_1\f$. 0281 * @param g2a The form factor \f$G^A_2\f$. 0282 * @param g3a The form factor \f$G^A_3\f$. 0283 * @param g4a The form factor \f$G^A_4\f$. 0284 * @param virt Whether the q2 is space or timelike 0285 */ 0286 virtual void SpinHalfSpinThreeHalfFormFactor(Energy2 q2,int iloc, int id0, int id1, 0287 Energy m0, Energy m1, 0288 Complex & g1v,Complex & g2v,Complex & g3v, 0289 Complex & g4v,Complex & g1a,Complex & g2a, 0290 Complex & g3a,Complex & g4a, 0291 FlavourInfo flavour, 0292 Virtuality virt=SpaceLike); 0293 //@} 0294 0295 /** 0296 * Output the setup information for the particle database 0297 * @param os The stream to output the information to 0298 * @param header Whether or not to output the information for MySQL 0299 * @param create Whether or not to add a statement creating the object 0300 */ 0301 virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; 0302 0303 protected: 0304 0305 /** 0306 * Add a form factor to the list. 0307 * @param in The PDG code of the incoming baryon. 0308 * @param out The PDG code of the outgoing baryon. 0309 * @param inspin The spin of the incoming baryon. 0310 * @param outspin The spin of the outgoing baryon. 0311 * @param spect1 The PDG code of the first spectator quark. 0312 * @param spect2 The PDG code of the second spectator quark. 0313 * @param inquark The PDG code for decaying incoming quark. 0314 * @param outquark The PDG code for the outgoing quark produced in the decay. 0315 */ 0316 void addFormFactor(int in,int out,int inspin, int outspin, int spect1, 0317 int spect2, int inquark,int outquark) { 0318 _incomingid.push_back(in); 0319 _outgoingid.push_back(out); 0320 _incomingJ.push_back(inspin); 0321 _outgoingJ.push_back(outspin); 0322 _spectator1.push_back(spect1); 0323 _spectator2.push_back(spect2); 0324 _inquark.push_back(inquark); 0325 _outquark.push_back(outquark); 0326 } 0327 0328 /** 0329 * Set initial number of modes 0330 * @param nmodes The number of modes. 0331 */ 0332 void initialModes(unsigned int nmodes) {_numbermodes=nmodes;} 0333 0334 /** 0335 * Get the initial number of modes 0336 */ 0337 unsigned int initialModes() const {return _numbermodes;} 0338 0339 protected: 0340 0341 /** @name Standard Interfaced functions. */ 0342 //@{ 0343 /** 0344 * Initialize this object after the setup phase before saving and 0345 * EventGenerator to disk. 0346 * @throws InitException if object could not be initialized properly. 0347 */ 0348 virtual void doinit(); 0349 //@} 0350 0351 private: 0352 0353 /** 0354 * Private and non-existent assignment operator. 0355 */ 0356 BaryonFormFactor & operator=(const BaryonFormFactor &) = delete; 0357 0358 private: 0359 0360 /** 0361 * the id's of the incoming particles 0362 */ 0363 vector<int> _incomingid; 0364 0365 /** 0366 * the id's of the outgoing particles 0367 */ 0368 vector<int> _outgoingid; 0369 0370 /** 0371 * spin of the incoming particle 0372 */ 0373 vector<int> _incomingJ; 0374 0375 /** 0376 * spin of the outgoing particle 0377 */ 0378 vector<int> _outgoingJ; 0379 0380 /** 0381 * the id of the first spectator quark 0382 */ 0383 vector<int> _spectator1; 0384 0385 /** 0386 * the id of the second spectator quark 0387 */ 0388 vector<int> _spectator2; 0389 0390 /** 0391 * the id of the decaying quark 0392 */ 0393 vector<int> _inquark; 0394 0395 /** 0396 * the id of the outgoing quark 0397 */ 0398 vector<int> _outquark; 0399 0400 /** 0401 * The initial number of modes 0402 */ 0403 unsigned int _numbermodes; 0404 }; 0405 0406 } 0407 0408 #endif /* HERWIG_BaryonFormFactor_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|