|
|
|||
File indexing completed on 2026-08-06 09:24:05
0001 // -*- C++ -*-// 0002 // ThreePionCzyzCurrent.h is a part of Herwig - A multi-purpose Monte Carlo event generator 0003 // Copyright (C) 2002-2019 The Herwig Collaboration 0004 // 0005 // Herwig is licenced under version 3 of the GPL, see COPYING for details. 0006 // Please respect the MCnet academic guidelines, see GUIDELINES for details. 0007 #ifndef Herwig_ThreePionCzyzCurrent_H 0008 #define Herwig_ThreePionCzyzCurrent_H 0009 // 0010 // This is the declaration of the ThreePionCzyzCurrent class. 0011 // 0012 0013 #include "WeakCurrent.h" 0014 0015 namespace Herwig { 0016 0017 using namespace ThePEG; 0018 0019 0020 /** \ingroup Decay 0021 * 0022 * The ThreeMesonCzyzCurrent class implements the currents from Eur.Phys.J. C47 (2006) 617-624 for 0023 * \f$\pi^+\pi^-\pi^0\f$ 0024 * @see WeakCurrent. 0025 * @see \ref ThreePionCzyzCurrentInterfaces "The interfaces" 0026 * defined for ThreePionCzyzCurrent. 0027 * 0028 */ 0029 class ThreePionCzyzCurrent: public WeakCurrent { 0030 0031 public: 0032 0033 /** 0034 * The default constructor. 0035 */ 0036 ThreePionCzyzCurrent(); 0037 0038 /** @name Methods for the construction of the phase space integrator. */ 0039 //@{ 0040 /** 0041 * Complete the construction of the decay mode for integration.classes inheriting 0042 * from this one. 0043 * This method is purely virtual and must be implemented in the classes inheriting 0044 * from WeakCurrent. 0045 * @param icharge The total charge of the outgoing particles in the current. 0046 * @param resonance If specified only include terms with this particle 0047 * @param flavour Information on the required flavours of the quarks 0048 * @param imode The mode in the current being asked for. 0049 * @param mode The phase space mode for the integration 0050 * @param iloc The location of the of the first particle from the current in 0051 * the list of outgoing particles. 0052 * @param ires The location of the first intermediate for the current. 0053 * @param phase The prototype phase space channel for the integration. 0054 * @param upp The maximum possible mass the particles in the current are 0055 * allowed to have. 0056 * @return Whether the current was sucessfully constructed. 0057 */ 0058 virtual bool createMode(int icharge, tcPDPtr resonance, FlavourInfo flavour, 0059 unsigned int imode,PhaseSpaceModePtr mode, 0060 unsigned int iloc,int ires, 0061 PhaseSpaceChannel phase, Energy upp ); 0062 0063 /** 0064 * The particles produced by the current. This just returns the two pseudoscalar 0065 * mesons and the photon. 0066 * @param icharge The total charge of the particles in the current. 0067 * @param imode The mode for which the particles are being requested 0068 * @param iq The PDG code for the quark 0069 * @param ia The PDG code for the antiquark 0070 * @return The external particles for the current. 0071 */ 0072 virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia); 0073 //@} 0074 0075 /** 0076 * Hadronic current. This method is purely virtual and must be implemented in 0077 * all classes inheriting from this one. 0078 * @param resonance If specified only include terms with this particle 0079 * @param flavour Information on the required flavours of the quarks 0080 * @param imode The mode 0081 * @param ichan The phase-space channel the current is needed for. 0082 * @param scale The invariant mass of the particles in the current. 0083 * @param outgoing The particles produced in the decay 0084 * @param momenta The momenta of the particles produced in the decay 0085 * @param meopt Option for the calculation of the matrix element 0086 * @return The current. 0087 */ 0088 virtual vector<LorentzPolarizationVectorE> 0089 current(tcPDPtr resonance, FlavourInfo flavour, 0090 const int imode, const int ichan,Energy & scale, 0091 const tPDVector & outgoing, 0092 const vector<Lorentz5Momentum> & momenta, 0093 DecayIntegrator::MEOption meopt) const; 0094 0095 /** 0096 * Accept the decay. Checks the particles are the allowed mode. 0097 * @param id The id's of the particles in the current. 0098 * @return Can this current have the external particles specified. 0099 */ 0100 virtual bool accept(vector<int> id); 0101 0102 /** 0103 * Return the decay mode number for a given set of particles in the current. 0104 * @param id The id's of the particles in the current. 0105 * @return The number of the mode 0106 */ 0107 virtual unsigned int decayMode(vector<int> id); 0108 0109 /** 0110 * Output the setup information for the particle database 0111 * @param os The stream to output the information to 0112 * @param header Whether or not to output the information for MySQL 0113 * @param create Whether or not to add a statement creating the object 0114 */ 0115 virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; 0116 0117 public: 0118 0119 /** @name Functions used by the persistent I/O system. */ 0120 //@{ 0121 /** 0122 * Function used to write out object persistently. 0123 * @param os the persistent output stream written to. 0124 */ 0125 void persistentOutput(PersistentOStream & os) const; 0126 0127 /** 0128 * Function used to read in object persistently. 0129 * @param is the persistent input stream read from. 0130 * @param version the version number of the object when written. 0131 */ 0132 void persistentInput(PersistentIStream & is, int version); 0133 //@} 0134 0135 /** 0136 * The standard Init function used to initialize the interfaces. 0137 * Called exactly once for each class by the class description system 0138 * before the main function starts or 0139 * when this class is dynamically loaded. 0140 */ 0141 static void Init(); 0142 0143 protected: 0144 0145 /** @name Clone Methods. */ 0146 //@{ 0147 /** 0148 * Make a simple clone of this object. 0149 * @return a pointer to the new object. 0150 */ 0151 virtual IBPtr clone() const; 0152 0153 /** Make a clone of this object, possibly modifying the cloned object 0154 * to make it sane. 0155 * @return a pointer to the new object. 0156 */ 0157 virtual IBPtr fullclone() const; 0158 //@} 0159 0160 protected: 0161 0162 /** @name Standard Interfaced functions. */ 0163 //@{ 0164 0165 /** 0166 * Initialize this object after the setup phase before saving and 0167 * EventGenerator to disk. 0168 * @throws InitException if object could not be initialized properly. 0169 */ 0170 virtual void doinit(); 0171 //@} 0172 0173 private: 0174 0175 /** 0176 * The assignment operator is private and must never be called. 0177 * In fact, it should not even be implemented. 0178 */ 0179 ThreePionCzyzCurrent & operator=(const ThreePionCzyzCurrent &) = delete; 0180 0181 private: 0182 0183 /** 0184 * Masses and widths of the particles, used in the \f$I=0\f$ piece 0185 */ 0186 //@{ 0187 /** 0188 * Rho masses 0189 */ 0190 vector<Energy> rhoMasses_; 0191 /** 0192 * Rho widths 0193 */ 0194 vector<Energy> rhoWidths_; 0195 0196 /** 0197 * Omega masses 0198 */ 0199 vector<Energy> omegaMasses_; 0200 /** 0201 * Omega widths 0202 */ 0203 vector<Energy> omegaWidths_; 0204 0205 /** 0206 * Phi mass 0207 */ 0208 Energy phiMass_; 0209 /** 0210 * Phi width 0211 */ 0212 Energy phiWidth_; 0213 //@} 0214 0215 /** 0216 * Couplings in the model \f$I=0\f$, labelled A..F in paper 0217 */ 0218 vector<InvEnergy3> coup_I0_; 0219 0220 /** 0221 * Masses and widths for the \f$I=1\f$ component 0222 */ 0223 //@{ 0224 /** 0225 * Rho masses 0226 */ 0227 vector<Energy> rhoMasses_I1_; 0228 /** 0229 * Rho widths 0230 */ 0231 vector<Energy> rhoWidths_I1_; 0232 0233 /** 0234 * Omega masses 0235 */ 0236 Energy omegaMass_I1_; 0237 /** 0238 * Omega widths 0239 */ 0240 Energy omegaWidth_I1_; 0241 //@} 0242 0243 /** 0244 * Couplings for the the \f$I=1\f$ component 0245 */ 0246 //@{ 0247 /** 0248 * The sigma parameter 0249 */ 0250 double sigma_; 0251 0252 /** 0253 * The numerical part of \f$G_\omega\f$ 0254 */ 0255 InvEnergy GW_pre_; 0256 0257 /** 0258 * The full \f$G_\omega\f$ 0259 */ 0260 Energy GW_; 0261 0262 /** 0263 * \f$g_{\omega\pi\pi}\f$ 0264 */ 0265 double g_omega_pi_pi_; 0266 //@} 0267 0268 /** 0269 * Pion mass 0270 */ 0271 Energy mpip_, mpi0_; 0272 0273 }; 0274 0275 } 0276 0277 #endif /* Herwig_ThreePionCzyzCurrent_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|