|
|
|||
File indexing completed on 2026-08-06 09:24:04
0001 // -*- C++ -*- 0002 #ifndef Herwig_OmegaPionSNDCurrent_H 0003 #define Herwig_OmegaPionSNDCurrent_H 0004 // 0005 // This is the declaration of the OmegaPionSNDCurrent class. 0006 // 0007 0008 #include "WeakCurrent.h" 0009 0010 namespace Herwig { 0011 0012 using namespace ThePEG; 0013 0014 /** 0015 * The OmegaPionSNDCurrent class implements the decay current for \f$\pi^\pm\pi^0 \gamma\f$ via 0016 * an intermediate \f$\omega\f$. It inherits from the <code>WeakCurrent</code> 0017 * class and implements the hadronic current. 0018 * 0019 * The model is based on the one from Phys.Rev. D88 (2013) no.5, 054013. 0020 * 0021 * @see \ref OmegaPionSNDCurrentInterfaces "The interfaces" 0022 * defined for OmegaPionSNDCurrent. 0023 */ 0024 class OmegaPionSNDCurrent: public WeakCurrent { 0025 0026 public: 0027 0028 /** 0029 * The default constructor. 0030 */ 0031 OmegaPionSNDCurrent(); 0032 0033 public: 0034 0035 /** @name Methods for the construction of the phase space integrator. */ 0036 //@{ 0037 /** 0038 * Complete the construction of the decay mode for integration.classes inheriting 0039 * from this one. 0040 * This method is purely virtual and must be implemented in the classes inheriting 0041 * from WeakCurrent. 0042 * @param icharge The total charge of the outgoing particles in the current. 0043 * @param resonance If specified only include terms with this particle 0044 * @param flavour Information on the required flavours of the quarks 0045 * @param imode The mode in the current being asked for. 0046 * @param mode The phase space mode for the integration 0047 * @param iloc The location of the of the first particle from the current in 0048 * the list of outgoing particles. 0049 * @param ires The location of the first intermediate for the current. 0050 * @param phase The prototype phase space channel for the integration. 0051 * @param upp The maximum possible mass the particles in the current are 0052 * allowed to have. 0053 * @return Whether the current was sucessfully constructed. 0054 */ 0055 virtual bool createMode(int icharge, tcPDPtr resonance, 0056 FlavourInfo flavour, 0057 unsigned int imode,PhaseSpaceModePtr mode, 0058 unsigned int iloc,int ires, 0059 PhaseSpaceChannel phase, Energy upp ); 0060 0061 /** 0062 * The particles produced by the current. This just returns the pseudoscalar 0063 * meson. 0064 * @param icharge The total charge of the particles in the current. 0065 * @param imode The mode for which the particles are being requested 0066 * @param iq The PDG code for the quark 0067 * @param ia The PDG code for the antiquark 0068 * @return The external particles for the current. 0069 */ 0070 virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia); 0071 //@} 0072 0073 /** 0074 * Hadronic current. This method is purely virtual and must be implemented in 0075 * all classes inheriting from this one. 0076 * @param resonance If specified only include terms with this particle 0077 * @param flavour Information on the required flavours of the quarks 0078 * @param imode The mode 0079 * @param ichan The phase-space channel the current is needed for. 0080 * @param scale The invariant mass of the particles in the current. 0081 * @param outgoing The particles produced in the decay 0082 * @param momenta The momenta of the particles produced in the decay 0083 * @param meopt Option for the calculation of the matrix element 0084 * @return The current. 0085 */ 0086 virtual vector<LorentzPolarizationVectorE> 0087 current(tcPDPtr resonance, 0088 FlavourInfo flavour, 0089 const int imode, const int ichan,Energy & scale, 0090 const tPDVector & outgoing, 0091 const vector<Lorentz5Momentum> & momenta, 0092 DecayIntegrator::MEOption meopt) const; 0093 0094 /** 0095 * Construct the SpinInfo for the decay products 0096 */ 0097 virtual void constructSpinInfo(ParticleVector decay) const; 0098 0099 /** 0100 * Accept the decay. Checks the meson against the list 0101 * @param id The id's of the particles in the current. 0102 * @return Can this current have the external particles specified. 0103 */ 0104 virtual bool accept(vector<int> id); 0105 0106 /** 0107 * Return the decay mode number for a given set of particles in the current. 0108 * Checks the meson against the list 0109 * @param id The id's of the particles in the current. 0110 * @return The number of the mode 0111 */ 0112 virtual unsigned int decayMode(vector<int> id); 0113 0114 /** 0115 * Output the setup information for the particle database 0116 * @param os The stream to output the information to 0117 * @param header Whether or not to output the information for MySQL 0118 * @param create Whether or not to add a statement creating the object 0119 */ 0120 virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; 0121 0122 public: 0123 0124 /** @name Functions used by the persistent I/O system. */ 0125 //@{ 0126 /** 0127 * Function used to write out object persistently. 0128 * @param os the persistent output stream written to. 0129 */ 0130 void persistentOutput(PersistentOStream & os) const; 0131 0132 /** 0133 * Function used to read in object persistently. 0134 * @param is the persistent input stream read from. 0135 * @param version the version number of the object when written. 0136 */ 0137 void persistentInput(PersistentIStream & is, int version); 0138 //@} 0139 0140 /** 0141 * The standard Init function used to initialize the interfaces. 0142 * Called exactly once for each class by the class description system 0143 * before the main function starts or 0144 * when this class is dynamically loaded. 0145 */ 0146 static void Init(); 0147 0148 protected: 0149 0150 /** @name Clone Methods. */ 0151 //@{ 0152 /** 0153 * Make a simple clone of this object. 0154 * @return a pointer to the new object. 0155 */ 0156 virtual IBPtr clone() const; 0157 0158 /** Make a clone of this object, possibly modifying the cloned object 0159 * to make it sane. 0160 * @return a pointer to the new object. 0161 */ 0162 virtual IBPtr fullclone() const; 0163 //@} 0164 protected: 0165 0166 /** 0167 * Initialize this object after the setup phase before saving an 0168 * EventGenerator to disk. 0169 * @throws InitException if object could not be initialized properly. 0170 */ 0171 virtual void doinit(); 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 OmegaPionSNDCurrent & operator=(const OmegaPionSNDCurrent &) = delete; 0180 0181 private : 0182 0183 /** 0184 * Masses of the \f$\rho\f$ resonances 0185 */ 0186 vector<Energy> rhoMasses_; 0187 0188 /** 0189 * Widths of the \f$\rho\f$ resonances 0190 */ 0191 vector<Energy> rhoWidths_; 0192 0193 /** 0194 * Ampltitudes for the different rhos in the current 0195 */ 0196 vector<double> amp_; 0197 0198 /** 0199 * Phases for the different rhos in the current 0200 */ 0201 vector<double> phase_; 0202 0203 /** 0204 * Weights of the different rho resonances in the current 0205 */ 0206 vector<Complex> wgts_; 0207 0208 /** 0209 * Coupling of the rho to the photon, \f$f_\rho\f$. 0210 */ 0211 double fRho_; 0212 0213 /** 0214 * Coupling of the rho to the omega and a pion, \f$g_{\rho\omega\pi}\f$. 0215 */ 0216 InvEnergy gRhoOmegaPi_; 0217 0218 /** 0219 * The pion mass 0220 */ 0221 Energy mpi_; 0222 }; 0223 0224 } 0225 0226 #endif /* Herwig_OmegaPionSNDCurrent_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|