herwig is hosted by Hepforge, IPPP Durham
Herwig++  2.7.0
DtoKPiPiCLEO.h
00001 // -*- C++ -*-
00002 //
00003 // DtoKPiPiCLEO.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_DtoKPiPiCLEO_H
00010 #define HERWIG_DtoKPiPiCLEO_H
00011 //
00012 // This is the declaration of the DtoKPiPiCLEO class.
00013 //
00014 
00015 #include "Herwig++/Decay/DecayIntegrator.h"
00016 #include "Herwig++/Decay/DecayPhaseSpaceMode.h"
00017 
00018 namespace Herwig {
00019 
00020 using namespace ThePEG;
00021 
00031 class DtoKPiPiCLEO: public DecayIntegrator {
00032 
00033 public:
00034 
00038   DtoKPiPiCLEO();
00039   
00046   virtual int modeNumber(bool & cc, tcPDPtr parent, 
00047                          const tPDVector & children) const;
00048 
00057   double me2( const int ichan,const Particle & part,
00058              const ParticleVector & decay, MEOption meopt) const;
00059 
00065   virtual void dataBaseOutput(ofstream & os,bool header) const;
00066 
00067 public:
00068 
00075   void persistentOutput(PersistentOStream & os) const;
00076 
00082   void persistentInput(PersistentIStream & is, int version);
00084 
00091   static void Init();
00092 
00093 protected:
00094 
00109   Complex amplitude(int ispin, bool f0, Energy mD, 
00110                     Energy mA , Energy mB , Energy mC ,
00111                     Energy mAB, Energy mAC, Energy mBC,
00112                     Energy mres, Energy wres) const;
00113 
00114 protected:
00115 
00122   virtual IBPtr clone() const {return new_ptr(*this);}
00123 
00128   virtual IBPtr fullclone() const {return new_ptr(*this);}
00130 
00131 protected:
00132 
00140   virtual void doinit();
00141 
00146   virtual void doinitrun();
00148 
00149 private:
00150 
00155   static ClassDescription<DtoKPiPiCLEO> initDtoKPiPiCLEO;
00156 
00161   DtoKPiPiCLEO & operator=(const DtoKPiPiCLEO &);
00162 
00163 private:
00164 
00173   bool _localparameters;
00174 
00178   Energy _momega;
00179 
00183   Energy _womega;
00184 
00188   Energy _mf980;
00189 
00193   Energy _wf980;
00194 
00198   double _gpi;
00199 
00203   double _gK;
00204 
00208   bool _f0opt;
00209 
00213   Energy _mf2;
00214 
00218   Energy _wf2;
00219 
00223   Energy _mf1370;
00224 
00228   Energy _wf1370;
00229 
00233   Energy _mK14300;
00234 
00238   Energy _wK14300;
00239 
00243   Energy _mK14302;
00244 
00248   Energy _wK14302;
00249 
00253   Energy _mK1680;
00254 
00258   Energy _wK1680;
00259 
00263   Energy _mrho1700;
00264 
00268   Energy _wrho1700;
00269 
00273   Energy _mK8920;
00274 
00278   Energy _wK8920;
00279 
00283   Energy _mK892A;
00284 
00288   Energy _wK892A;
00289 
00293   Energy _mK892B;
00294 
00298   Energy _wK892B;
00299 
00303   Energy _mrhoA;
00304 
00308   Energy _wrhoA;
00309 
00313   Energy _mrhoB;
00314 
00318   Energy _wrhoB;
00320 
00328   double _a1NR;
00329 
00333   double _phi1NR;
00334 
00338   double _a1rho;
00339 
00343   double _phi1rho;
00344 
00348   double _a1Kstarm;
00349 
00353   double _phi1Kstarm;
00354 
00358   double _a1Kstar0;
00359 
00363   double _phi1Kstar0;
00364 
00368   Energy2 _a1K1430m;
00369 
00373   double _phi1K1430m;
00374 
00378   Energy2 _a1K14300;
00379 
00383   double _phi1K14300;
00384 
00388   double _a1rho1700;
00389 
00393   double _phi1rho1700;
00394 
00398   double _a1K1680;
00399 
00403   double _phi1K1680;
00404 
00408   Complex _c1NR;
00409 
00413   Complex _c1rho;
00414 
00418   Complex _c1Kstarm;
00419 
00423   Complex _c1Kstar0;
00424 
00428   complex<Energy2> _c1K1430m;
00429 
00433   complex<Energy2> _c1K14300;
00434 
00438   Complex _c1rho1700;
00439 
00443   Complex _c1K1680;
00445 
00453   double _a2Kstarp;
00454 
00458   double _phi2Kstarp;
00459 
00463   double _a2rho;
00464 
00468   double _phi2rho;
00469 
00473   double _a2omega;
00474 
00478   double _phi2omega;
00479 
00483   double _a2Kstarm;
00484 
00488   double _phi2Kstarm;
00489 
00493   Energy2 _a2f980;
00494 
00498   double _phi2f980;
00499 
00503   InvEnergy2 _a2f2;
00504 
00508   double _phi2f2;
00509 
00513   Energy2 _a2f1370;
00514 
00518   double _phi2f1370;
00519 
00523   Energy2 _a2K14300;
00524 
00528   double _phi2K14300;
00529 
00533   InvEnergy2 _a2K14302;
00534 
00538   double _phi2K14302;
00539 
00543   double _a2K1680;
00544 
00548   double _phi2K1680;
00549 
00553   double _a2NR;
00554 
00558   double _phi2NR;
00559 
00563   Complex _c2Kstarp;
00564 
00568   Complex _c2rho;
00569 
00573   Complex _c2omega;
00574 
00578   Complex _c2Kstarm;
00579 
00583   complex<Energy2> _c2f980;
00584 
00588   complex<InvEnergy2> _c2f2;
00589 
00593   complex<Energy2> _c2f1370;
00594 
00598   complex<Energy2> _c2K14300;
00599 
00603   complex<InvEnergy2> _c2K14302;
00604 
00608   Complex _c2K1680;
00609 
00613   Complex _c2NR;
00615 
00623   InvEnergy _rD0;
00624 
00628   InvEnergy _rres;
00630 
00638   vector<double> _maxwgt;
00639 
00643   vector<double> _weights;
00645 
00653   Energy _mpi;
00654 
00658   Energy _mkp;
00659 
00663   Energy _mk0;
00665 
00669   mutable RhoDMatrix _rho;
00670 };
00671 
00672 }
00673 
00674 #include "ThePEG/Utilities/ClassTraits.h"
00675 
00676 namespace ThePEG {
00677 
00682 template <>
00683 struct BaseClassTrait<Herwig::DtoKPiPiCLEO,1> {
00685   typedef Herwig::DecayIntegrator NthBase;
00686 };
00687 
00690 template <>
00691 struct ClassTraits<Herwig::DtoKPiPiCLEO>
00692   : public ClassTraitsBase<Herwig::DtoKPiPiCLEO> {
00694   static string className() { return "Herwig::DtoKPiPiCLEO"; }
00702   static string library() { return "HwSMDecay.so"; }
00703 };
00704 
00707 }
00708 
00709 #endif /* HERWIG_DtoKPiPiCLEO_H */