Herwig++
2.7.0
|
00001 // -*- C++ -*- 00002 // 00003 // KaonThreeMesonCurrent.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator 00004 // Copyright (C) 2002-2011 The Herwig Collaboration 00005 // 00006 // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. 00007 // Please respect the MCnet academic guidelines, see GUIDELINES for details. 00008 // 00009 #ifndef HERWIG_KaonThreeMesonCurrent_H 00010 #define HERWIG_KaonThreeMesonCurrent_H 00011 // 00012 // This is the declaration of the KaonThreeMesonCurrent class. 00013 // 00014 00015 #include "ThreeMesonCurrentBase.h" 00016 00017 namespace Herwig { 00018 00019 using namespace ThePEG; 00020 00030 class KaonThreeMesonCurrent: public ThreeMesonCurrentBase { 00031 00032 public: 00033 00037 KaonThreeMesonCurrent(); 00038 00055 virtual bool createMode(int icharge,unsigned int imode,DecayPhaseSpaceModePtr mode, 00056 unsigned int iloc,unsigned int ires, 00057 DecayPhaseSpaceChannelPtr phase,Energy upp); 00059 00066 virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; 00067 00080 double threeBodyMatrixElement(const int imode, const Energy2 q2, 00081 const Energy2 s3, const Energy2 s2, 00082 const Energy2 s1, const Energy m1, 00083 const Energy m2, const Energy m3) const; 00084 00085 protected: 00086 00091 virtual bool acceptMode(int) const; 00092 00103 virtual FormFactors calculateFormFactors(const int ichan,const int imode, 00104 Energy2 q2,Energy2 s1,Energy2 s2,Energy2 s3) const; 00105 00106 public: 00107 00114 void persistentOutput(PersistentOStream & os) const; 00115 00121 void persistentInput(PersistentIStream & is, int version); 00123 00130 static void Init(); 00131 00132 protected: 00133 00140 virtual IBPtr clone() const; 00141 00146 virtual IBPtr fullclone() const; 00148 00149 protected: 00150 00158 virtual void doinit(); 00159 00163 virtual void doinitrun(); 00164 00168 virtual void doupdate(); 00170 00171 private: 00172 00177 KaonThreeMesonCurrent & operator=(const KaonThreeMesonCurrent &); 00178 00179 private: 00180 00186 Complex Trho1(Energy2 q2,int ires) const; 00187 00193 Complex Trho2(Energy2 q2,int ires) const; 00194 00200 Complex TKstar1(Energy2 q2,int ires) const; 00201 00207 Complex TKstar2(Energy2 q2,int ires) const; 00208 00214 Complex BWrho1(Energy2 q2, unsigned int ires) const; 00215 00221 Complex BWrho2(Energy2 q2, unsigned int ires) const; 00222 00228 Complex BWKstar1(Energy2 q2, unsigned int ires) const; 00229 00235 Complex BWKstar2(Energy2 q2, unsigned int ires) const; 00236 00242 Complex a1BreitWigner(Energy2 q2) const; 00243 00250 Complex TK1(Energy2 q2,unsigned int iopt,int ires) const; 00251 00258 Complex K1BreitWigner(Energy2 q2,unsigned int ires) const; 00259 00265 Energy a1Width(Energy2 q2) const; 00266 00270 double g(Energy2 q2) const; 00271 00276 void inita1Width(int iopt); 00277 00283 Complex Tomega(Energy2 q2, int ires) const; 00284 00290 Complex OmegaPhiBreitWigner(Energy2 q2, unsigned int ires) const; 00291 00299 Complex TOmegaKStar(Energy2 s1,Energy2 s2,int ires) const; 00300 00301 private: 00302 00310 vector<double> _rho1wgts; 00311 00315 vector<Energy> _rho1mass; 00316 00320 vector<Energy> _rho1width; 00322 00330 vector<double> _rho2wgts; 00331 00335 vector<Energy> _rho2mass; 00336 00340 vector<Energy> _rho2width; 00342 00350 vector<double> _kstar1wgts; 00351 00355 vector<Energy> _kstar1mass; 00356 00360 vector<Energy> _kstar1width; 00362 00370 vector<double> _kstar2wgts; 00371 00375 vector<Energy> _kstar2mass; 00376 00380 vector<Energy> _kstar2width; 00382 00390 Energy _a1mass; 00391 00395 Energy _a1width; 00396 00400 vector<Energy> _k1mass; 00401 00405 vector<Energy> _k1width; 00406 00410 vector<double> _k1wgta; 00411 00415 vector<double> _k1wgtb; 00416 00420 vector<Energy> _a1runwidth; 00421 00425 vector<Energy2> _a1runq2; 00426 00430 Interpolator<Energy,Energy2>::Ptr _a1runinter; 00432 00440 double _epsomega; 00441 00445 Energy _omegamass; 00446 00450 Energy _omegawidth; 00451 00455 Energy _phimass; 00456 00460 Energy _phiwidth; 00462 00466 double _omegaKstarwgt; 00467 00471 Energy _fpi; 00472 00476 Energy _mpi; 00477 00481 Energy _mK; 00482 00490 bool _initializea1; 00491 00495 bool _rhoparameters; 00496 00500 bool _kstarparameters; 00501 00505 bool _a1parameters; 00506 00510 bool _k1parameters; 00511 00515 bool _a1opt; 00516 00520 bool _omegaopt; 00522 00526 Energy _maxmass; 00527 00531 Energy _maxcalc; 00532 }; 00533 00534 } 00535 00536 #endif /* HERWIG_KaonThreeMesonCurrent_H */