Herwig++
2.7.0
|
00001 // -*- C++ -*- 00002 // 00003 // DtoKPiPiE691.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_DtoKPiPiE691_H 00010 #define HERWIG_DtoKPiPiE691_H 00011 // 00012 // This is the declaration of the DtoKPiPiE691 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 00028 class DtoKPiPiE691: public DecayIntegrator { 00029 00030 public: 00034 DtoKPiPiE691(); 00035 00042 virtual int modeNumber(bool & cc, tcPDPtr parent, 00043 const tPDVector & children) const; 00044 00053 double me2( const int ichan,const Particle & part, 00054 const ParticleVector & decay, MEOption meopt) const; 00055 00061 virtual void dataBaseOutput(ofstream & os,bool header) const; 00062 00063 public: 00064 00071 void persistentOutput(PersistentOStream & os) const; 00072 00078 void persistentInput(PersistentIStream & is, int version); 00080 00087 static void Init(); 00088 00089 protected: 00090 00103 double decayAngle(const Lorentz5Momentum & pparent, 00104 const Lorentz5Momentum & pres, 00105 const Lorentz5Momentum & p1) const { 00106 Energy2 dot = pparent*p1, mREp = pres*pparent; 00107 Energy2 mRE1 = pres*p1, mp2 = pparent.mass2(); 00108 Energy2 mres2 = pres.mass2(), m12 = p1.mass2(); 00109 return (dot*mres2-mREp*mRE1)/ 00110 sqrt((mREp*mREp-mres2*mp2)*(mRE1*mRE1-mres2*m12)); 00111 } 00112 00121 Complex amplitude(int ispin, double costheta,Energy mAB, 00122 Energy wres, Energy mres) const { 00123 double s = 0.; 00124 switch(ispin) { 00125 case 0: s = 1.; break; 00126 case 1: s = costheta; break; 00127 case 2: s = 1.5*sqr(costheta)-0.5; break; 00128 default: assert(false); 00129 } 00130 Complex bw = sqrt(0.5*wres/GeV/Constants::pi)*GeV/ 00131 (mAB-mres-complex<Energy>(ZERO,0.5*wres)); 00132 return s*bw; 00133 } 00135 00136 protected: 00137 00144 virtual IBPtr clone() const {return new_ptr(*this);} 00145 00150 virtual IBPtr fullclone() const {return new_ptr(*this);} 00152 00153 protected: 00154 00162 virtual void doinit(); 00163 00168 virtual void doinitrun(); 00170 00171 private: 00172 00177 static ClassDescription<DtoKPiPiE691> initDtoKPiPiE691; 00178 00183 DtoKPiPiE691 & operator=(const DtoKPiPiE691 &); 00184 00185 private: 00186 00194 double _a1NR; 00195 00199 double _phi1NR; 00200 00204 double _a1K892; 00205 00209 double _phi1K892; 00210 00214 double _a1K1430; 00215 00219 double _phi1K1430; 00220 00224 double _a1K1680; 00225 00229 double _phi1K1680; 00230 00234 double _a2NR; 00235 00239 double _phi2NR; 00240 00244 double _a2K8920; 00245 00249 double _phi2K8920; 00250 00254 double _a2K892m; 00255 00259 double _phi2K892m; 00260 00264 double _a2rho; 00265 00269 double _phi2rho; 00270 00274 double _a3NR; 00275 00279 double _phi3NR; 00280 00284 double _a3K892; 00285 00289 double _phi3K892; 00290 00294 double _a3rho; 00295 00299 double _phi3rho; 00301 00309 Complex _c1NR; 00310 00314 Complex _c1K892; 00315 00319 Complex _c1K1430; 00320 00324 Complex _c1K1680; 00325 00329 Complex _c2NR; 00330 00334 Complex _c2K8920; 00335 00339 Complex _c2K892m; 00340 00344 Complex _c2rho; 00345 00349 Complex _c3NR; 00350 00354 Complex _c3K892; 00355 00359 Complex _c3rho; 00361 00369 bool _localparameters; 00370 00374 Energy _mK8920; 00375 00379 Energy _wK8920; 00380 00384 Energy _mK892m; 00385 00389 Energy _wK892m; 00390 00394 Energy _mK1680; 00395 00399 Energy _wK1680; 00400 00404 Energy _mK1430; 00405 00409 Energy _wK1430; 00410 00414 Energy _mrho0; 00415 00419 Energy _wrho0; 00420 00424 Energy _mrhop; 00425 00429 Energy _wrhop; 00431 00439 vector<double> _maxwgt; 00440 00444 vector<double> _weights; 00446 00450 mutable RhoDMatrix _rho; 00451 }; 00452 00453 } 00454 00455 #include "ThePEG/Utilities/ClassTraits.h" 00456 00457 namespace ThePEG { 00458 00463 template <> 00464 struct BaseClassTrait<Herwig::DtoKPiPiE691,1> { 00466 typedef Herwig::DecayIntegrator NthBase; 00467 }; 00468 00471 template <> 00472 struct ClassTraits<Herwig::DtoKPiPiE691> 00473 : public ClassTraitsBase<Herwig::DtoKPiPiE691> { 00475 static string className() { return "Herwig::DtoKPiPiE691"; } 00483 static string library() { return "HwSMDecay.so"; } 00484 }; 00485 00488 } 00489 00490 #endif /* HERWIG_DtoKPiPiE691_H */