Herwig++
2.7.0
|
00001 // -*- C++ -*- 00002 // 00003 // MEee2Z.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_MEee2Z_H 00010 #define HERWIG_MEee2Z_H 00011 // 00012 // This is the declaration of the <!id>MEee2Z<!!id> class. 00013 // 00014 00015 #include "ThePEG/MatrixElement/ME2to2Base.h" 00016 #include "ThePEG/MatrixElement/MEBase.h" 00017 #include "Herwig++/Models/RSModel/RSModel.h" 00018 #include "ThePEG/Repository/EventGenerator.h" 00019 #include "ThePEG/PDT/EnumParticles.h" 00020 #include "ThePEG/Utilities/Rebinder.h" 00021 #include "Herwig++/MatrixElement/ProductionMatrixElement.h" 00022 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" 00023 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" 00024 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" 00025 00026 namespace Herwig { 00027 using namespace ThePEG; 00028 using Helicity::SpinorWaveFunction; 00029 using Helicity::SpinorBarWaveFunction; 00030 using Helicity::VectorWaveFunction; 00031 00036 class MEee2Z: public MEBase { 00037 00038 public: 00039 00046 virtual unsigned int orderInAlphaS() const; 00047 00052 virtual unsigned int orderInAlphaEW() const; 00053 00061 virtual double me2() const; 00062 00066 virtual Energy2 scale() const; 00067 00071 virtual void getDiagrams() const; 00072 00081 virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; 00082 00090 virtual Selector<const ColourLines *> 00091 colourGeometries(tcDiagPtr diag) const; 00092 00096 virtual void constructVertex(tSubProPtr); 00101 virtual int nDim() const; 00102 00110 virtual bool generateKinematics(const double * r); 00111 00117 virtual CrossSection dSigHatDR() const; 00119 00120 public: 00121 00128 void persistentOutput(PersistentOStream & os) const; 00129 00135 void persistentInput(PersistentIStream & is, int version); 00137 00144 static void Init(); 00145 00146 protected: 00147 00154 inline virtual IBPtr clone() const {return new_ptr(*this);} 00155 00160 inline virtual IBPtr fullclone() const {return new_ptr(*this);} 00162 00163 protected: 00164 00172 virtual void doinit(); 00174 00175 private: 00176 00184 ProductionMatrixElement HelicityME(vector<SpinorWaveFunction> fin, 00185 vector<SpinorBarWaveFunction> ain, 00186 vector<VectorWaveFunction> vout,double& me) const; 00187 00188 private: 00189 00194 static ClassDescription<MEee2Z> initMEee2Z; 00195 00200 MEee2Z & operator=(const MEee2Z &); 00201 00202 private: 00203 00207 AbstractFFVVertexPtr _theFFZVertex; 00208 00209 }; 00210 00211 } 00212 00213 00214 #include "ThePEG/Utilities/ClassTraits.h" 00215 00216 namespace ThePEG { 00217 00222 template <> 00223 struct BaseClassTrait<Herwig::MEee2Z,1> { 00225 typedef MEBase NthBase; 00226 }; 00227 00230 template <> 00231 struct ClassTraits<Herwig::MEee2Z> 00232 : public ClassTraitsBase<Herwig::MEee2Z> { 00234 static string className() { return "Herwig::MEee2Z"; } 00238 static string library() { return "LeptonME.so"; } 00239 }; 00240 00243 } 00244 00245 #endif /* HERWIG_MEee2Z_H */