|
|
|||
File indexing completed on 2026-08-06 09:24:04
0001 // -*- C++ -*- 0002 #ifndef Herwig_EtaPhiCurrent_H 0003 #define Herwig_EtaPhiCurrent_H 0004 // 0005 // This is the declaration of the EtaPhiCurrent class. 0006 // 0007 0008 #include "WeakCurrent.h" 0009 0010 namespace Herwig { 0011 0012 using namespace ThePEG; 0013 0014 /** 0015 * The EtaPhiCurrent class implements the current for $\eta\phi$ using the results of 0016 * Phys.Atom.Nucl. 81 (2018) no.2, 205-213 0017 * 0018 * @see \ref EtaPhiCurrentInterfaces "The interfaces" 0019 * defined for EtaPhiCurrent. 0020 */ 0021 class EtaPhiCurrent: public WeakCurrent { 0022 0023 public: 0024 0025 /** 0026 * The default constructor. 0027 */ 0028 EtaPhiCurrent(); 0029 0030 public: 0031 0032 /** @name Methods for the construction of the phase space integrator. */ 0033 //@{ 0034 /** 0035 * Complete the construction of the decay mode for integration.classes inheriting 0036 * from this one. 0037 * This method is purely virtual and must be implemented in the classes inheriting 0038 * from WeakCurrent. 0039 * @param icharge The total charge of the outgoing particles in the current. 0040 * @param resonance If specified only include terms with this particle 0041 * @param flavour Information on the required flavours of the quarks 0042 * @param imode The mode in the current being asked for. 0043 * @param mode The phase space mode for the integration 0044 * @param iloc The location of the of the first particle from the current in 0045 * the list of outgoing particles. 0046 * @param ires The location of the first intermediate for the current. 0047 * @param phase The prototype phase space channel for the integration. 0048 * @param upp The maximum possible mass the particles in the current are 0049 * allowed to have. 0050 * @return Whether the current was sucessfully constructed. 0051 */ 0052 virtual bool createMode(int icharge, tcPDPtr resonance, 0053 FlavourInfo flavour, 0054 unsigned int imode,PhaseSpaceModePtr mode, 0055 unsigned int iloc,int ires, 0056 PhaseSpaceChannel phase, Energy upp ); 0057 0058 /** 0059 * The particles produced by the current. This just returns the pseudoscalar 0060 * meson. 0061 * @param icharge The total charge of the particles in the current. 0062 * @param imode The mode for which the particles are being requested 0063 * @param iq The PDG code for the quark 0064 * @param ia The PDG code for the antiquark 0065 * @return The external particles for the current. 0066 */ 0067 virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia); 0068 //@} 0069 0070 /** 0071 * Hadronic current. This method is purely virtual and must be implemented in 0072 * all classes inheriting from this one. 0073 * @param resonance If specified only include terms with this particle 0074 * @param flavour Information on the required flavours of the quarks 0075 * @param imode The mode 0076 * @param ichan The phase-space channel the current is needed for. 0077 * @param scale The invariant mass of the particles in the current. 0078 * @param outgoing The particles produced in the decay 0079 * @param momenta The momenta of the particles produced in the decay 0080 * @param meopt Option for the calculation of the matrix element 0081 * @return The current. 0082 */ 0083 virtual vector<LorentzPolarizationVectorE> 0084 current(tcPDPtr resonance, 0085 FlavourInfo flavour, 0086 const int imode, const int ichan,Energy & scale, 0087 const tPDVector & outgoing, 0088 const vector<Lorentz5Momentum> & momenta, 0089 DecayIntegrator::MEOption meopt) const; 0090 0091 /** 0092 * Construct the SpinInfo for the decay products 0093 */ 0094 virtual void constructSpinInfo(ParticleVector decay) const; 0095 0096 /** 0097 * Accept the decay. Checks the meson against the list 0098 * @param id The id's of the particles in the current. 0099 * @return Can this current have the external particles specified. 0100 */ 0101 virtual bool accept(vector<int> id); 0102 0103 /** 0104 * Return the decay mode number for a given set of particles in the current. 0105 * Checks the meson against the list 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 /** @name Clone Methods. */ 0148 //@{ 0149 /** 0150 * Make a simple clone of this object. 0151 * @return a pointer to the new object. 0152 */ 0153 virtual IBPtr clone() const; 0154 0155 /** Make a clone of this object, possibly modifying the cloned object 0156 * to make it sane. 0157 * @return a pointer to the new object. 0158 */ 0159 virtual IBPtr fullclone() const; 0160 //@} 0161 0162 protected: 0163 0164 /** @name Standard Interfaced functions. */ 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 0174 private: 0175 0176 /** 0177 * The assignment operator is private and must never be called. 0178 * In fact, it should not even be implemented. 0179 */ 0180 EtaPhiCurrent & operator=(const EtaPhiCurrent &) = delete; 0181 0182 private: 0183 0184 /** 0185 * Mass for the resonances 0186 */ 0187 vector<Energy> resMasses_; 0188 0189 /** 0190 * Widths for the resonances 0191 */ 0192 vector<Energy> resWidths_; 0193 0194 /** 0195 * Amplitudes for couplings for the resonances 0196 */ 0197 vector<InvEnergy> amp_; 0198 0199 /** 0200 * Amplitudes for couplings for the resonances 0201 */ 0202 vector<double> phase_; 0203 0204 /** 0205 * Couplings for the resonances 0206 */ 0207 vector<complex<InvEnergy> > couplings_; 0208 }; 0209 0210 } 0211 0212 #endif /* Herwig_EtaPhiCurrent_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|