|
|
|||
File indexing completed on 2026-08-06 09:24:04
0001 // -*- C++ -*- 0002 // 0003 // FourPionCzyzCurrent.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 #ifndef Herwig_FourPionCzyzCurrent_H 0009 #define Herwig_FourPionCzyzCurrent_H 0010 // 0011 // This is the declaration of the FourPionCzyzCurrent class. 0012 // 0013 0014 #include "WeakCurrent.h" 0015 0016 namespace Herwig { 0017 0018 using namespace ThePEG; 0019 0020 0021 /** \ingroup Decay 0022 * 0023 * The FourMesonCzyzCurrent class implements the currents from Phys.Rev. D77 (2008) 114005 0024 * for 4 pions 0025 * @see WeakCurrent. 0026 * @see \ref FourPionCzyzCurrentInterfaces "The interfaces" 0027 * defined for FourPionCzyzCurrent. 0028 * 0029 */ 0030 class FourPionCzyzCurrent: public WeakCurrent { 0031 0032 public: 0033 0034 /** 0035 * The default constructor. 0036 */ 0037 FourPionCzyzCurrent(); 0038 0039 /** @name Methods for the construction of the phase space integrator. */ 0040 //@{ 0041 /** 0042 * Complete the construction of the decay mode for integration.classes inheriting 0043 * from this one. 0044 * This method is purely virtual and must be implemented in the classes inheriting 0045 * from WeakCurrent. 0046 * @param icharge The total charge of the outgoing particles in the current. 0047 * @param resonance If specified only include terms with this particle 0048 * @param flavour Information on the required flavours of the quarks 0049 * @param imode The mode in the current being asked for. 0050 * @param mode The phase space mode for the integration 0051 * @param iloc The location of the of the first particle from the current in 0052 * the list of outgoing particles. 0053 * @param ires The location of the first intermediate for the current. 0054 * @param phase The prototype phase space channel for the integration. 0055 * @param upp The maximum possible mass the particles in the current are 0056 * allowed to have. 0057 * @return Whether the current was sucessfully constructed. 0058 */ 0059 virtual bool createMode(int icharge, tcPDPtr resonance, 0060 FlavourInfo flavour, 0061 unsigned int imode,PhaseSpaceModePtr mode, 0062 unsigned int iloc,int ires, 0063 PhaseSpaceChannel phase, Energy upp ); 0064 0065 /** 0066 * The particles produced by the current. This just returns the two pseudoscalar 0067 * mesons and the photon. 0068 * @param icharge The total charge of the particles in the current. 0069 * @param imode The mode for which the particles are being requested 0070 * @param iq The PDG code for the quark 0071 * @param ia The PDG code for the antiquark 0072 * @return The external particles for the current. 0073 */ 0074 virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia); 0075 //@} 0076 0077 /** 0078 * Hadronic current. This method is purely virtual and must be implemented in 0079 * all classes inheriting from this one. 0080 * @param resonance If specified only include terms with this particle 0081 * @param flavour Information on the required flavours of the quarks 0082 * @param imode The mode 0083 * @param ichan The phase-space channel the current is needed for. 0084 * @param scale The invariant mass of the particles in the current. 0085 * @param outgoing The particles produced in the decay 0086 * @param momenta The momenta of the particles produced in the decay 0087 * @param meopt Option for the calculation of the matrix element 0088 * @return The current. 0089 */ 0090 virtual vector<LorentzPolarizationVectorE> 0091 current(tcPDPtr resonance, FlavourInfo flavour, 0092 const int imode, const int ichan,Energy & scale, 0093 const tPDVector & outgoing, 0094 const vector<Lorentz5Momentum> & momenta, 0095 DecayIntegrator::MEOption meopt) const; 0096 0097 /** 0098 * Accept the decay. Checks the particles are the allowed mode. 0099 * @param id The id's of the particles in the current. 0100 * @return Can this current have the external particles specified. 0101 */ 0102 virtual bool accept(vector<int> id); 0103 0104 /** 0105 * Return the decay mode number for a given set of particles in the current. 0106 * @param id The id's of the particles in the current. 0107 * @return The number of the mode 0108 */ 0109 virtual unsigned int decayMode(vector<int> id); 0110 0111 /** 0112 * Output the setup information for the particle database 0113 * @param os The stream to output the information to 0114 * @param header Whether or not to output the information for MySQL 0115 * @param create Whether or not to add a statement creating the object 0116 */ 0117 virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; 0118 0119 public: 0120 0121 /** @name Functions used by the persistent I/O system. */ 0122 //@{ 0123 /** 0124 * Function used to write out object persistently. 0125 * @param os the persistent output stream written to. 0126 */ 0127 void persistentOutput(PersistentOStream & os) const; 0128 0129 /** 0130 * Function used to read in object persistently. 0131 * @param is the persistent input stream read from. 0132 * @param version the version number of the object when written. 0133 */ 0134 void persistentInput(PersistentIStream & is, int version); 0135 //@} 0136 0137 /** 0138 * The standard Init function used to initialize the interfaces. 0139 * Called exactly once for each class by the class description system 0140 * before the main function starts or 0141 * when this class is dynamically loaded. 0142 */ 0143 static void Init(); 0144 0145 protected: 0146 0147 /** 0148 * Create the channels for 1 term in the current 0149 */ 0150 void createChannels(unsigned int imode, 0151 int icharge, tcPDPtr resonance, 0152 unsigned int iloc,int ires, 0153 tPDVector outgoing, PhaseSpaceModePtr mode, 0154 PhaseSpaceChannel channel, 0155 unsigned int j1, unsigned int j2, 0156 unsigned int j3, unsigned int j4, 0157 int & nchan); 0158 0159 /** 0160 * Basis current in terms of which all the others can be calculated 0161 */ 0162 LorentzVector<complex<InvEnergy> > baseCurrent(Energy2 Q2, 0163 tcPDPtr resonance, 0164 const int ichan, 0165 const Lorentz5Momentum & Q, 0166 const Lorentz5Momentum & q1, 0167 const Lorentz5Momentum & q2, 0168 const Lorentz5Momentum & q3, 0169 const Lorentz5Momentum & q4) const; 0170 protected: 0171 0172 /** @name Clone Methods. */ 0173 //@{ 0174 /** 0175 * Make a simple clone of this object. 0176 * @return a pointer to the new object. 0177 */ 0178 virtual IBPtr clone() const; 0179 0180 /** Make a clone of this object, possibly modifying the cloned object 0181 * to make it sane. 0182 * @return a pointer to the new object. 0183 */ 0184 virtual IBPtr fullclone() const; 0185 //@} 0186 0187 protected: 0188 0189 /** @name Standard Interfaced functions. */ 0190 //@{ 0191 0192 /** 0193 * Initialize this object after the setup phase before saving and 0194 * EventGenerator to disk. 0195 * @throws InitException if object could not be initialized properly. 0196 */ 0197 virtual void doinit(); 0198 //@} 0199 0200 private: 0201 0202 /** 0203 * The assignment operator is private and must never be called. 0204 * In fact, it should not even be implemented. 0205 */ 0206 FourPionCzyzCurrent & operator=(const FourPionCzyzCurrent &) = delete; 0207 0208 private: 0209 0210 /** 0211 * Masses and widths of the particles 0212 */ 0213 //@{ 0214 /** 0215 * Rho masses (PDG for most of current) 0216 */ 0217 vector<Energy> rhoMasses_; 0218 /** 0219 * Rho widths (PDG for most of current) 0220 */ 0221 vector<Energy> rhoWidths_; 0222 0223 /** 0224 * Rho masses for the \f$F_\rho\f$ piece 0225 */ 0226 vector<Energy> rhoMasses_Frho_; 0227 /** 0228 * Rho widths for the \f$F_\rho\f$ piece 0229 */ 0230 vector<Energy> rhoWidths_Frho_; 0231 0232 /** 0233 * Omega mass 0234 */ 0235 Energy omegaMass_; 0236 /** 0237 * Omega widths 0238 */ 0239 Energy omegaWidth_; 0240 0241 /** 0242 * \f$f_0\f$ mass 0243 */ 0244 Energy f0Mass_; 0245 /** 0246 * \f$f_0\f$ width 0247 */ 0248 Energy f0Width_; 0249 0250 /** 0251 * \f$a_1\f$ mass 0252 */ 0253 Energy a1Mass_; 0254 /** 0255 * \f$a_1\f$ width 0256 */ 0257 Energy a1Width_; 0258 //@} 0259 0260 /** 0261 * Couplings in the model 0262 */ 0263 //@{ 0264 /** 0265 * Coefficents for sum over \f$\rho\f$ resonances in \f$a_1\f$ term 0266 */ 0267 vector<double> beta_a1_; 0268 0269 /** 0270 * Coefficents for sum over \f$\rho\f$ resonances in \f$f_0\f$ term 0271 */ 0272 vector<double> beta_f0_; 0273 0274 /** 0275 * Coefficents for sum over \f$\rho\f$ resonances in \f$\omega\f$ term 0276 */ 0277 vector<double> beta_omega_; 0278 0279 /** 0280 * Coefficents for sum over \f$\rho\f$ resonances in \f$B_\rho\f$ term 0281 */ 0282 vector<double> beta_B_; 0283 0284 /** 0285 * Coefficents for sum over \f$\rho\f$ resonances in \f$T_\rho\f$ term 0286 */ 0287 vector<double> beta_bar_; 0288 0289 /** 0290 * Coupling for the \f$a_1\f$ term 0291 */ 0292 InvEnergy2 c_a1_; 0293 0294 /** 0295 * Coupling for the \f$f_0\f$ term 0296 */ 0297 InvEnergy2 c_f0_; 0298 0299 /** 0300 * Coupling for the \f$\omega\f$ term 0301 */ 0302 InvEnergy c_omega_; 0303 0304 /** 0305 * Coupling for the \f\rho\f$ term 0306 */ 0307 double c_rho_; 0308 0309 /** 0310 * \f$g_{\rho\pi\pi}\f$ 0311 */ 0312 double g_rho_pi_pi_; 0313 0314 /** 0315 * \f$g_{\omega\pi\prho}\f$ 0316 */ 0317 ThePEG::Qty<std::ratio<0,1>, std::ratio<-5,1>, std::ratio<0,1> > g_omega_pi_rho_; 0318 0319 /** 0320 * \f$g_{\rho\gamma}\f$ 0321 */ 0322 Energy2 g_rho_gamma_; 0323 //@} 0324 0325 /** 0326 * Pion masses 0327 */ 0328 Energy mpip_, mpi0_; 0329 0330 /** 0331 * Map for the phase-space channels 0332 */ 0333 vector<vector<int> > channelMap_; 0334 }; 0335 0336 } 0337 0338 #endif /* Herwig_FourPionCzyzCurrent_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|