Herwig++
2.7.0
|
00001 // -*- C++ -*- 00002 // 00003 // DtoKPiPiMarkIII.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_DtoKPiPiMarkIII_H 00010 #define HERWIG_DtoKPiPiMarkIII_H 00011 // 00012 // This is the declaration of the DtoKPiPiMarkIII 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 DtoKPiPiMarkIII: public DecayIntegrator { 00029 00030 public: 00031 00035 DtoKPiPiMarkIII(); 00036 00043 virtual int modeNumber(bool & cc, tcPDPtr parent, 00044 const tPDVector & children) const; 00045 00054 double me2( const int ichan,const Particle & part, 00055 const ParticleVector & decay, MEOption meopt) const; 00056 00062 virtual void dataBaseOutput(ofstream & os,bool header) const; 00063 00064 public: 00065 00072 void persistentOutput(PersistentOStream & os) const; 00073 00079 void persistentInput(PersistentIStream & is, int version); 00081 00088 static void Init(); 00089 00090 protected: 00091 00105 Complex amplitude(bool rho, Energy mD, 00106 Energy mA , Energy mB , Energy mC , 00107 Energy mAB, Energy mAC, Energy mBC, 00108 Energy mres, Energy wres) const; 00109 00110 protected: 00111 00118 virtual IBPtr clone() const {return new_ptr(*this);} 00119 00124 virtual IBPtr fullclone() const {return new_ptr(*this);} 00126 00127 protected: 00128 00136 virtual void doinit(); 00137 00142 virtual void doinitrun(); 00144 00145 private: 00146 00151 static ClassDescription<DtoKPiPiMarkIII> initDtoKPiPiMarkIII; 00152 00157 DtoKPiPiMarkIII & operator=(const DtoKPiPiMarkIII &); 00158 00159 private: 00160 00168 double _a1rho; 00169 00173 double _phi1rho; 00174 00178 double _a1Kstarm; 00179 00183 double _phi1Kstarm; 00184 00188 double _a1Kstar0; 00189 00193 double _phi1Kstar0; 00194 00198 double _a1NR; 00199 00203 double _phi1NR; 00204 00208 Complex _c1rho; 00209 00213 Complex _c1Kstarm; 00214 00218 Complex _c1Kstar0; 00219 00223 Complex _c1NR; 00225 00233 double _a2rho; 00234 00238 double _phi2rho; 00239 00243 double _a2Kstar; 00244 00248 double _phi2Kstar; 00249 00253 double _a2NR; 00254 00258 double _phi2NR; 00259 00263 Complex _c2rho; 00264 00268 Complex _c2Kstar; 00269 00273 Complex _c2NR; 00275 00283 double _a3rho; 00284 00288 double _phi3rho; 00289 00293 double _a3Kstar; 00294 00298 double _phi3Kstar; 00299 00303 double _a3NR; 00304 00308 double _phi3NR; 00309 00313 Complex _c3rho; 00314 00318 Complex _c3Kstar; 00319 00323 Complex _c3NR; 00325 00333 double _a4Kstar; 00334 00338 double _phi4Kstar; 00339 00343 double _a4NR; 00344 00348 double _phi4NR; 00349 00353 Complex _c4Kstar; 00354 00358 Complex _c4NR; 00360 00368 bool _localparameters; 00369 00373 Energy _mrhop; 00374 00378 Energy _wrhop; 00379 00383 Energy _mrho0; 00384 00388 Energy _wrho0; 00389 00393 Energy _mKstarm; 00394 00398 Energy _wKstarm; 00399 00403 Energy _mKstar0; 00404 00408 Energy _wKstar0; 00410 00418 InvEnergy _rrho; 00419 00423 InvEnergy _rKstar; 00425 00433 vector<double> _maxwgt; 00434 00438 vector<double> _weights; 00440 00444 mutable RhoDMatrix _rho; 00445 }; 00446 00447 } 00448 00449 #include "ThePEG/Utilities/ClassTraits.h" 00450 00451 namespace ThePEG { 00452 00457 template <> 00458 struct BaseClassTrait<Herwig::DtoKPiPiMarkIII,1> { 00460 typedef Herwig::DecayIntegrator NthBase; 00461 }; 00462 00465 template <> 00466 struct ClassTraits<Herwig::DtoKPiPiMarkIII> 00467 : public ClassTraitsBase<Herwig::DtoKPiPiMarkIII> { 00469 static string className() { return "Herwig::DtoKPiPiMarkIII"; } 00477 static string library() { return "HwSMDecay.so"; } 00478 }; 00479 00482 } 00483 00484 #endif /* HERWIG_DtoKPiPiMarkIII_H */