|
|
|||
File indexing completed on 2026-08-06 09:24:21
0001 // -*- C++ -*- 0002 // 0003 // ScalarMassGenerator.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_ScalarMassGenerator_H 0010 #define HERWIG_ScalarMassGenerator_H 0011 // This is the declaration of the ScalarMassGenerator class. 0012 0013 #include "GenericMassGenerator.h" 0014 #include "ScalarMassGenerator.fh" 0015 #include "ThePEG/Config/Complex.h" 0016 0017 namespace Herwig { 0018 using namespace ThePEG; 0019 0020 /** \ingroup PDT 0021 * 0022 * The <code>ScalarMassGenerator</code> class is designed for the generation 0023 * of the masses of the \f$a_0\f$ and \f$f_0\f$ mesons which have \f$K\bar{K}\f$ 0024 * modes close to the on-shell mass of the particle. 0025 * 0026 * The form based on the Flatte parameterisation of PLB63, 224, we use a weight 0027 * \f[\frac{1}{\pi}\frac{m\Gamma(m)}{|M^2-m^2-i\sum_ig^2_i\rho_i|^2}\f], 0028 * where 0029 * - \f$g_i\f$ is the coupling for a given decay mode 0030 * - \f$\rho_i=2p_i/m\f$ is Lorentz-invariant phase-space where \f$p_i\f$ is the 0031 * momentum release in the decay, this analytically continued 0032 * below the threshold. 0033 * In this case the running width given by the sum of the running partial widths 0034 * \f[\Gamma_i(m) = 2g^2_i\frac{p_i}{m^2}\f], 0035 * and we differ from the Flatte approach in not analytically 0036 * continuing below the threshold for the numerator. 0037 * 0038 * @see MassGenerator 0039 * @see GenericMassGenerator 0040 * 0041 */ 0042 class ScalarMassGenerator: public GenericMassGenerator { 0043 0044 public: 0045 0046 /** @name Functions used by the persistent I/O system. */ 0047 //@{ 0048 /** 0049 * Function used to write out object persistently. 0050 * @param os the persistent output stream written to. 0051 */ 0052 void persistentOutput(PersistentOStream & os) const; 0053 0054 /** 0055 * Function used to read in object persistently. 0056 * @param is the persistent input stream read from. 0057 * @param version the version number of the object when written. 0058 */ 0059 void persistentInput(PersistentIStream & is, int version); 0060 //@} 0061 0062 /** 0063 * Standard Init function used to initialize the interfaces. 0064 */ 0065 static void Init(); 0066 0067 public: 0068 0069 /** 0070 * Weight for the factor for an off-shell mass 0071 * @param mass The off-shell mass 0072 * @param shape The type of shape to use as for the BreitWignerShape interface 0073 * @return The weight. 0074 */ 0075 virtual double weight(Energy mass,int shape) const; 0076 0077 /** 0078 * output for the database 0079 */ 0080 virtual void dataBaseOutput(ofstream &,bool); 0081 0082 protected: 0083 0084 /** 0085 * Return the full weight 0086 */ 0087 virtual InvEnergy2 BreitWignerWeight(Energy q, int shape) const; 0088 0089 protected: 0090 0091 /** @name Clone Methods. */ 0092 //@{ 0093 /** 0094 * Make a simple clone of this object. 0095 * @return a pointer to the new object. 0096 */ 0097 virtual IBPtr clone() const {return new_ptr(*this);} 0098 0099 /** Make a clone of this object, possibly modifying the cloned object 0100 * to make it sane. 0101 * @return a pointer to the new object. 0102 */ 0103 virtual IBPtr fullclone() const {return new_ptr(*this);} 0104 //@} 0105 0106 protected: 0107 0108 /** @name Standard Interfaced functions. */ 0109 //@{ 0110 /** 0111 * Initialize this object after the setup phase before saving and 0112 * EventGenerator to disk. 0113 * @throws InitException if object could not be initialized properly. 0114 */ 0115 virtual void doinit(); 0116 //@} 0117 0118 private: 0119 0120 /** 0121 * Private and non-existent assignment operator. 0122 */ 0123 ScalarMassGenerator & operator=(const ScalarMassGenerator &) = delete; 0124 0125 private: 0126 0127 /** 0128 * couplings for the decay channels 0129 */ 0130 vector<Energy> _coupling; 0131 0132 /** 0133 * The first outgoing mass for the channels 0134 */ 0135 vector<Energy> _mass1; 0136 0137 /** 0138 * The second outgoing mass for the channels 0139 */ 0140 vector<Energy> _mass2; 0141 0142 /** 0143 * calculated values to speed things up 0144 */ 0145 //@{ 0146 /** 0147 * Maximum mass squared 0148 */ 0149 vector<Energy2> _m2plus; 0150 0151 /** 0152 * Minimum mass squared 0153 */ 0154 vector<Energy2> _m2minus; 0155 //@} 0156 0157 }; 0158 0159 } 0160 0161 0162 #endif /* HERWIG_ScalarMassGenerator_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|