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