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