|
|
|||
File indexing completed on 2026-08-06 09:24:05
0001 // -*- C++ -*- 0002 #ifndef Herwig_TwoKaonCzyzCurrent_H 0003 #define Herwig_TwoKaonCzyzCurrent_H 0004 // 0005 // This is the declaration of the TwoKaonCzyzCurrent class. 0006 // 0007 0008 #include "WeakCurrent.h" 0009 0010 namespace Herwig { 0011 0012 using namespace ThePEG; 0013 0014 /** 0015 * The TwoKaonCzyzCurrent class implements the current of PRD 81 094014 for the 0016 * production of two kaons. 0017 * 0018 * @see \ref TwoKaonCzyzCurrentInterfaces "The interfaces" 0019 * defined for TwoKaonCzyzCurrent. 0020 */ 0021 class TwoKaonCzyzCurrent: public WeakCurrent { 0022 0023 public: 0024 0025 /** 0026 * The default constructor. 0027 */ 0028 TwoKaonCzyzCurrent(); 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,FlavourInfo flavour, 0052 unsigned int imode,PhaseSpaceModePtr mode, 0053 unsigned int iloc,int ires, 0054 PhaseSpaceChannel phase, Energy upp ); 0055 0056 /** 0057 * The particles produced by the current. This just returns the two pseudoscalar 0058 * mesons and the photon. 0059 * @param icharge The total charge of the particles in the current. 0060 * @param imode The mode for which the particles are being requested 0061 * @param iq The PDG code for the quark 0062 * @param ia The PDG code for the antiquark 0063 * @return The external particles for the current. 0064 */ 0065 virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia); 0066 //@} 0067 0068 /** 0069 * Hadronic current. This method is purely virtual and must be implemented in 0070 * all classes inheriting from this one. 0071 * @param resonance If specified only include terms with this particle 0072 * @param flavour Information on the required flavours of the quarks 0073 * @param imode The mode 0074 * @param ichan The phase-space channel the current is needed for. 0075 * @param scale The invariant mass of the particles in the current. 0076 * @param outgoing The particles produced in the decay 0077 * @param momenta The momenta of the particles produced in the decay 0078 * @param meopt Option for the calculation of the matrix element 0079 * @return The current. 0080 */ 0081 virtual vector<LorentzPolarizationVectorE> 0082 current(tcPDPtr resonance, FlavourInfo flavour, 0083 const int imode, const int ichan,Energy & scale, 0084 const tPDVector & outgoing, 0085 const vector<Lorentz5Momentum> & momenta, 0086 DecayIntegrator::MEOption meopt) const; 0087 0088 /** 0089 * Accept the decay. Checks the particles are the allowed mode. 0090 * @param id The id's of the particles in the current. 0091 * @return Can this current have the external particles specified. 0092 */ 0093 virtual bool accept(vector<int> id); 0094 0095 /** 0096 * Return the decay mode number for a given set of particles in the current. 0097 * @param id The id's of the particles in the current. 0098 * @return The number of the mode 0099 */ 0100 virtual unsigned int decayMode(vector<int> id); 0101 0102 /** 0103 * Output the setup information for the particle database 0104 * @param os The stream to output the information to 0105 * @param header Whether or not to output the information for MySQL 0106 * @param create Whether or not to add a statement creating the object 0107 */ 0108 virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; 0109 0110 /** 0111 * Calculation of the kaon form factor 0112 */ 0113 Complex Fkaon(Energy2 q2,const int imode, const int ichan, 0114 IsoSpin::IsoSpin Itotal, 0115 Strangeness::Strange strange, 0116 tcPDPtr resonance, 0117 Energy ma, Energy mb) const; 0118 0119 /** 0120 * Calculation of the kaon form factor, remainder I=1 0121 */ 0122 Complex FkaonRemainderI1(Energy2 q2) const; 0123 0124 /** 0125 * Calculation of the kaon form factor, remainder I=0 0126 */ 0127 Complex FkaonRemainderI0(Energy2 q2,Energy ma, Energy mb) const; 0128 0129 public: 0130 0131 /** @name Functions used by the persistent I/O system. */ 0132 //@{ 0133 /** 0134 * Function used to write out object persistently. 0135 * @param os the persistent output stream written to. 0136 */ 0137 void persistentOutput(PersistentOStream & os) const; 0138 0139 /** 0140 * Function used to read in object persistently. 0141 * @param is the persistent input stream read from. 0142 * @param version the version number of the object when written. 0143 */ 0144 void persistentInput(PersistentIStream & is, int version); 0145 //@} 0146 0147 /** 0148 * The standard Init function used to initialize the interfaces. 0149 * Called exactly once for each class by the class description system 0150 * before the main function starts or 0151 * when this class is dynamically loaded. 0152 */ 0153 static void Init(); 0154 0155 protected: 0156 0157 /** @name Clone Methods. */ 0158 //@{ 0159 /** 0160 * Make a simple clone of this object. 0161 * @return a pointer to the new object. 0162 */ 0163 virtual IBPtr clone() const; 0164 0165 /** Make a clone of this object, possibly modifying the cloned object 0166 * to make it sane. 0167 * @return a pointer to the new object. 0168 */ 0169 virtual IBPtr fullclone() const; 0170 //@} 0171 0172 protected: 0173 0174 /** @name Standard Interfaced functions. */ 0175 //@{ 0176 0177 /** 0178 * Initialize this object after the setup phase before saving and 0179 * EventGenerator to disk. 0180 * @throws InitException if object could not be initialized properly. 0181 */ 0182 virtual void doinit(); 0183 //@} 0184 0185 /** 0186 * Construct the interpolators 0187 */ 0188 void constructInterpolators() const; 0189 0190 private: 0191 0192 /** 0193 * The assignment operator is private and must never be called. 0194 * In fact, it should not even be implemented. 0195 */ 0196 TwoKaonCzyzCurrent & operator=(const TwoKaonCzyzCurrent &) = delete; 0197 0198 private: 0199 0200 /** 0201 * Weights for the different \f$\rho\f$ resonances in the current, \f$\alpha_k\f$. 0202 */ 0203 //@{ 0204 /** 0205 * The Complex weight used in the calculation 0206 */ 0207 vector<Complex> rhoWgt_; 0208 0209 /** 0210 * The magnitude for input 0211 */ 0212 vector<double> rhoMag_; 0213 0214 /** 0215 * The phase for input 0216 */ 0217 vector<double> rhoPhase_; 0218 //@} 0219 0220 /** 0221 * Weights for the different \f$\omega\f$ resonances in the current, \f$\alpha_k\f$. 0222 */ 0223 //@{ 0224 /** 0225 * The Complex weight used in the calculation 0226 */ 0227 vector<Complex> omegaWgt_; 0228 0229 /** 0230 * The magnitude for input 0231 */ 0232 vector<double> omegaMag_; 0233 0234 /** 0235 * The phase for input 0236 */ 0237 vector<double> omegaPhase_; 0238 //@} 0239 0240 /** 0241 * Weights for the different \f$\phi\f$ resonances in the current, \f$\alpha_k\f$. 0242 */ 0243 //@{ 0244 /** 0245 * The Complex weight used in the calculation 0246 */ 0247 vector<Complex> phiWgt_; 0248 0249 /** 0250 * The magnitude for input 0251 */ 0252 vector<double> phiMag_; 0253 0254 /** 0255 * The phase for input 0256 */ 0257 vector<double> phiPhase_; 0258 //@} 0259 0260 /** 0261 * The masses of the \f$\rho\f$ resonances. 0262 */ 0263 vector<Energy> rhoMasses_; 0264 0265 /** 0266 * The widths of the \f$\rho\f$ resonances. 0267 */ 0268 vector<Energy> rhoWidths_; 0269 0270 /** 0271 * The masses of the \f$\omega\f$ resonances. 0272 */ 0273 vector<Energy> omegaMasses_; 0274 0275 /** 0276 * The widths of the \f$\omega\f$ resonances. 0277 */ 0278 vector<Energy> omegaWidths_; 0279 0280 /** 0281 * The masses of the \f$\phi\f$ resonances. 0282 */ 0283 vector<Energy> phiMasses_; 0284 0285 /** 0286 * The widths of the \f$\phi\f$ resonances. 0287 */ 0288 vector<Energy> phiWidths_; 0289 0290 /** 0291 * Regge \f$\beta\f$ parameter for \f$\rho\f$ resonances 0292 */ 0293 double betaRho_; 0294 0295 /** 0296 * Regge \f$\beta\f$ parameter for \f$\omega\f$ resonances 0297 */ 0298 double betaOmega_; 0299 0300 /** 0301 * Regge \f$\beta\f$ parameter for \f$\phi\f$ resonances 0302 */ 0303 double betaPhi_; 0304 0305 /** 0306 * Number of resonaces at which to trucated the series 0307 */ 0308 unsigned int nMax_; 0309 0310 /** 0311 * The \f$\eta_\phi\f$ parameter 0312 */ 0313 double etaPhi_; 0314 0315 /** 0316 * The \f$\gamma_\omega\f$ parameter 0317 */ 0318 double gammaOmega_; 0319 0320 /** 0321 * The \f$\gamma_\phi\f$ parameter 0322 */ 0323 double gammaPhi_; 0324 0325 /** 0326 * Masses of the resonances 0327 */ 0328 vector<vector<Energy> > mass_; 0329 0330 /** 0331 * Widths of the resonances 0332 */ 0333 vector<vector<Energy> > width_; 0334 0335 /** 0336 * Couplings of the resonaces 0337 */ 0338 vector<vector<Complex> > coup_; 0339 0340 /** 0341 * The function \f$\frac{\\hat{H}}{dq^2}\f$ at \f$q^2=m^2\f$ for the GS form of the 0342 * Breit-Wigner 0343 */ 0344 vector<double> dh_; 0345 0346 /** 0347 * The function \f$\\hat{H}\f$ at \f$q^2=m^2\f$ for the GS form of the 0348 * Breit-Wigner 0349 */ 0350 vector<Energy2> hres_; 0351 0352 /** 0353 * The \f$H(0)\f$ parameter for the GS form of the 0354 * Breit-Wigner 0355 */ 0356 vector<Energy2> h0_; 0357 0358 /** 0359 * The charged pion mass 0360 */ 0361 Energy mpi_; 0362 0363 /** 0364 * The maximum energy 0365 */ 0366 Energy eMax_; 0367 0368 /** 0369 * Interpolators for the higher resonance components for speed 0370 */ 0371 mutable Interpolator<double,Energy2>::Ptr fKI0Re_, fKI0Im_,fKI1Re_, fKI1Im_; 0372 0373 }; 0374 0375 } 0376 0377 #endif /* Herwig_TwoKaonCzyzCurrent_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|