Herwig++
2.7.0
|
00001 // -*- C++ -*- 00002 #ifndef RADIATIVEZPRIME_MEqq2ZPrime2ZGammma_H 00003 #define RADIATIVEZPRIME_MEqq2ZPrime2ZGamma_H 00004 // 00005 // This is the declaration of the MEqq2ZPrime2ZGamma class. 00006 // 00007 00008 #include "Herwig++/MatrixElement/HwMEBase.h" 00009 #include "Herwig++/MatrixElement/ProductionMatrixElement.h" 00010 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" 00011 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" 00012 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" 00013 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh" 00014 #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.fh" 00015 00016 namespace RadiativeZPrime { 00017 00018 using namespace ThePEG; 00019 using namespace Herwig; 00020 00028 class MEqq2ZPrime2ZGamma: public HwMEBase { 00029 00030 public: 00031 00035 MEqq2ZPrime2ZGamma(); 00036 00043 virtual unsigned int orderInAlphaS() const; 00044 00049 virtual unsigned int orderInAlphaEW() const; 00050 00058 virtual double me2() const; 00059 00063 virtual Energy2 scale() const; 00064 00068 virtual void getDiagrams() const; 00069 00078 virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; 00079 00087 virtual Selector<const ColourLines *> 00088 colourGeometries(tcDiagPtr diag) const; 00089 00093 virtual void constructVertex(tSubProPtr); 00095 00096 00097 public: 00098 00105 void persistentOutput(PersistentOStream & os) const; 00106 00112 void persistentInput(PersistentIStream & is, int version); 00114 00121 static void Init(); 00122 00123 protected: 00124 00131 inline virtual IBPtr clone() const { return new_ptr(*this);} 00132 00137 inline virtual IBPtr fullclone() const { return new_ptr(*this);} 00139 00140 protected: 00141 00150 double qqME(vector<SpinorWaveFunction> & fin , 00151 vector<SpinorBarWaveFunction> & ain , 00152 vector<VectorWaveFunction> & Zout, 00153 vector<VectorWaveFunction> & gammaout, 00154 bool me) const; 00155 00156 protected: 00157 00165 virtual void doinit(); 00167 00168 private: 00169 00174 static ClassDescription<MEqq2ZPrime2ZGamma> initMEqq2ZPrime2ZGamma; 00175 00180 MEqq2ZPrime2ZGamma & operator=(const MEqq2ZPrime2ZGamma &); 00181 00182 private: 00183 00191 AbstractFFVVertexPtr _theFFZPrimeVertex; 00192 00196 AbstractVVVVertexPtr _theGammaZPrimeZVertex; 00198 00202 tcPDPtr _zPrime; 00203 00211 unsigned int _maxflavour; 00213 00217 ProductionMatrixElement _me; 00218 00219 }; 00220 00221 } 00222 00223 #include "ThePEG/Utilities/ClassTraits.h" 00224 00225 namespace ThePEG { 00226 00231 template <> 00232 struct BaseClassTrait<RadiativeZPrime::MEqq2ZPrime2ZGamma,1> { 00234 typedef Herwig::HwMEBase NthBase; 00235 }; 00236 00239 template <> 00240 struct ClassTraits<RadiativeZPrime::MEqq2ZPrime2ZGamma> 00241 : public ClassTraitsBase<RadiativeZPrime::MEqq2ZPrime2ZGamma> { 00243 static string className() { return "RadiativeZPrime::MEqq2ZPrime2ZGamma"; } 00251 static string library() { return "RadiativeZPrime.so"; } 00252 }; 00253 00256 } 00257 00258 #endif /* RADIATIVEZPRIME_MEqq2ZPrime2ZGamma_H */