Herwig++
2.7.0
|
00001 // -*- C++ -*- 00002 // 00003 // VectorMesonPVectorPScalarDecayer.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_VectorMesonPVectorPScalarDecayer_H 00010 #define HERWIG_VectorMesonPVectorPScalarDecayer_H 00011 // This is the declaration of the VectorMesonPVectorPScalarDecayer class. 00012 00013 #include "Herwig++/Decay/DecayIntegrator.h" 00014 #include "Herwig++/Decay/DecayPhaseSpaceMode.h" 00015 #include "ThePEG/Helicity/LorentzPolarizationVector.h" 00016 00017 namespace Herwig { 00018 using namespace ThePEG; 00019 00035 class VectorMesonPVectorPScalarDecayer: public DecayIntegrator { 00036 00037 public: 00038 00042 VectorMesonPVectorPScalarDecayer(); 00043 00050 virtual int modeNumber(bool & cc, tcPDPtr parent, 00051 const tPDVector & children) const; 00052 00061 double me2(const int ichan,const Particle & part, 00062 const ParticleVector & decay, MEOption meopt) const; 00063 00069 virtual void dataBaseOutput(ofstream & os,bool header) const; 00070 00071 public: 00072 00079 void persistentOutput(PersistentOStream & os) const; 00080 00086 void persistentInput(PersistentIStream & is, int version); 00088 00092 static void Init(); 00093 00102 bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const; 00103 00104 protected: 00105 00112 virtual IBPtr clone() const {return new_ptr(*this);} 00113 00118 virtual IBPtr fullclone() const {return new_ptr(*this);} 00120 00121 protected: 00122 00130 virtual void doinit(); 00131 00135 virtual void doinitrun(); 00137 00138 private: 00139 00143 static ClassDescription<VectorMesonPVectorPScalarDecayer> initVectorMesonPVectorPScalarDecayer; 00144 00148 VectorMesonPVectorPScalarDecayer & operator=(const VectorMesonPVectorPScalarDecayer &); 00149 00150 private: 00151 00155 vector<InvEnergy> _coupling; 00156 00160 vector<int> _incoming; 00161 00165 vector<int> _outgoingA; 00166 00170 vector<int> _outgoingP; 00171 00175 vector<double> _maxweight; 00176 00180 unsigned int _initsize; 00181 00185 mutable RhoDMatrix _rho; 00186 00190 mutable vector<Helicity::LorentzPolarizationVector> _vectors[2]; 00191 00192 }; 00193 00194 } 00195 00196 00197 #include "ThePEG/Utilities/ClassTraits.h" 00198 00199 namespace ThePEG { 00200 00207 template <> 00208 struct BaseClassTrait<Herwig::VectorMesonPVectorPScalarDecayer,1> { 00210 typedef Herwig::DecayIntegrator NthBase; 00211 }; 00212 00217 template <> 00218 struct ClassTraits<Herwig::VectorMesonPVectorPScalarDecayer> 00219 : public ClassTraitsBase<Herwig::VectorMesonPVectorPScalarDecayer> { 00221 static string className() { return "Herwig::VectorMesonPVectorPScalarDecayer"; } 00227 static string library() { return "HwVMDecay.so"; } 00228 00229 }; 00230 00233 } 00234 00235 #endif /* HERWIG_VectorMesonPVectorPScalarDecayer_H */