Herwig++
2.7.0
|
00001 // -*- C++ -*- 00002 // 00003 // PVectorMesonVectorPScalarDecayer.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_PVectorMesonVectorPScalarDecayer_H 00010 #define HERWIG_PVectorMesonVectorPScalarDecayer_H 00011 // 00012 // This is the declaration of the PVectorMesonVectorPScalarDecayer class. 00013 // 00014 #include "Herwig++/Decay/DecayIntegrator.h" 00015 #include "Herwig++/Decay/DecayPhaseSpaceMode.h" 00016 #include "ThePEG/Helicity/LorentzPolarizationVector.h" 00017 00018 namespace Herwig { 00019 using namespace ThePEG; 00020 00041 class PVectorMesonVectorPScalarDecayer: public DecayIntegrator { 00042 00043 public: 00044 00048 PVectorMesonVectorPScalarDecayer(); 00049 00056 virtual int modeNumber(bool & cc, tcPDPtr parent, 00057 const tPDVector & children) const; 00058 00067 double me2(const int ichan,const Particle & part, 00068 const ParticleVector & decay, MEOption meopt) const; 00069 00075 virtual void dataBaseOutput(ofstream & os,bool header) const; 00076 00077 public: 00078 00085 void persistentOutput(PersistentOStream & os) const; 00086 00092 void persistentInput(PersistentIStream & is, int version); 00094 00098 static void Init(); 00099 00108 bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) 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 00141 virtual void doinitrun(); 00143 00144 private: 00145 00149 static ClassDescription<PVectorMesonVectorPScalarDecayer> initPVectorMesonVectorPScalarDecayer; 00150 00154 PVectorMesonVectorPScalarDecayer & operator=(const PVectorMesonVectorPScalarDecayer &); 00155 00156 private: 00157 00161 vector<InvEnergy> _coupling; 00162 00166 vector<int> _incoming; 00167 00171 vector<int> _outgoingV; 00172 00176 vector<int> _outgoingP; 00177 00181 vector<double> _maxweight; 00182 00186 unsigned int _initsize; 00187 00191 mutable RhoDMatrix _rho; 00192 00196 mutable vector<Helicity::LorentzPolarizationVector> _vectors[2]; 00197 00198 }; 00199 00200 } 00201 00202 00203 #include "ThePEG/Utilities/ClassTraits.h" 00204 00205 namespace ThePEG { 00206 00213 template <> 00214 struct BaseClassTrait<Herwig::PVectorMesonVectorPScalarDecayer,1> { 00216 typedef Herwig::DecayIntegrator NthBase; 00217 }; 00218 00223 template <> 00224 struct ClassTraits<Herwig::PVectorMesonVectorPScalarDecayer> 00225 : public ClassTraitsBase<Herwig::PVectorMesonVectorPScalarDecayer> { 00227 static string className() { return "Herwig::PVectorMesonVectorPScalarDecayer"; } 00233 static string library() { return "HwVMDecay.so"; } 00234 00235 }; 00236 00239 } 00240 00241 #endif /* HERWIG_PVectorMesonVectorPScalarDecayer_H */