Herwig++
2.7.0
|
00001 // -*- C++ -*- 00002 #ifndef RADIATIVEZPRIME_MEqq2ZPrime2ff_H 00003 #define RADIATIVEZPRIME_MEqq2ZPrime2ff_H 00004 // 00005 // This is the declaration of the MEqq2ZPrime2ff class. 00006 // 00007 00008 #include "Herwig++/MatrixElement/HwMEBase.h" 00009 #include "Herwig++/MatrixElement/ProductionMatrixElement.h" 00010 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" 00011 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" 00012 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh" 00013 00014 namespace RadiativeZPrime { 00015 00016 using namespace ThePEG; 00017 using namespace Herwig; 00018 00026 class MEqq2ZPrime2ff: public HwMEBase { 00027 00028 public: 00029 00033 MEqq2ZPrime2ff(); 00034 00041 virtual unsigned int orderInAlphaS() const; 00042 00047 virtual unsigned int orderInAlphaEW() const; 00048 00056 virtual double me2() const; 00057 00061 virtual Energy2 scale() const; 00062 00066 virtual void getDiagrams() const; 00067 00076 virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; 00077 00085 virtual Selector<const ColourLines *> 00086 colourGeometries(tcDiagPtr diag) const; 00087 00091 virtual void constructVertex(tSubProPtr); 00093 00094 public: 00095 00102 void persistentOutput(PersistentOStream & os) const; 00103 00109 void persistentInput(PersistentIStream & is, int version); 00111 00118 static void Init(); 00119 00120 protected: 00121 00128 inline virtual IBPtr clone() const {return new_ptr(*this);} 00129 00134 inline virtual IBPtr fullclone() const {return new_ptr(*this);} 00136 00137 protected: 00138 00147 double qqME(vector<SpinorWaveFunction> & fin , 00148 vector<SpinorBarWaveFunction> & ain , 00149 vector<SpinorBarWaveFunction> & fout, 00150 vector<SpinorWaveFunction> & aout, 00151 bool me) const; 00152 00153 protected: 00154 00162 virtual void doinit(); 00164 00165 private: 00166 00171 static ClassDescription<MEqq2ZPrime2ff> initMEqq2ZPrime2ff; 00172 00177 MEqq2ZPrime2ff & operator=(const MEqq2ZPrime2ff &); 00178 00179 private: 00180 00188 AbstractFFVVertexPtr _theFFZPrimeVertex; 00189 00193 AbstractFFVVertexPtr _theFFZVertex; 00194 00198 AbstractFFVVertexPtr _theFFPVertex; 00200 00208 tcPDPtr _zPrime; 00209 00213 tcPDPtr _z0; 00214 00218 tcPDPtr _gamma; 00220 00228 unsigned int _maxflavour; 00229 00233 unsigned int _gammaZ; 00234 00238 unsigned int _process; 00240 00244 ProductionMatrixElement _me; 00245 }; 00246 00247 } 00248 00249 #include "ThePEG/Utilities/ClassTraits.h" 00250 00251 namespace ThePEG { 00252 00257 template <> 00258 struct BaseClassTrait<RadiativeZPrime::MEqq2ZPrime2ff,1> { 00260 typedef Herwig::HwMEBase NthBase; 00261 }; 00262 00265 template <> 00266 struct ClassTraits<RadiativeZPrime::MEqq2ZPrime2ff> 00267 : public ClassTraitsBase<RadiativeZPrime::MEqq2ZPrime2ff> { 00269 static string className() { return "RadiativeZPrime::MEqq2ZPrime2ff"; } 00277 static string library() { return "RadiativeZPrime.so"; } 00278 }; 00279 00282 } 00283 00284 #endif /* RADIATIVEZPRIME_MEqq2ZPrime2ff_H */