|
|
|||
File indexing completed on 2026-08-06 09:24:09
0001 // -*- C++ -*- 0002 #ifndef HERWIG_MEee2VV_H 0003 #define HERWIG_MEee2VV_H 0004 // 0005 // This is the declaration of the MEee2VV class. 0006 // 0007 0008 #include "Herwig/MatrixElement/HwMEBase.h" 0009 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" 0010 #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" 0011 #include "Herwig/MatrixElement/ProductionMatrixElement.h" 0012 0013 namespace Herwig { 0014 0015 using namespace ThePEG; 0016 0017 /** 0018 * The MEee2VV class implements the matrix elements for 0019 * \f$e^+e^-\to W^+W^-/|^0Z^0\f$. 0020 * 0021 * @see \ref MEee2VVInterfaces "The interfaces" 0022 * defined for MEee2VV. 0023 */ 0024 class MEee2VV: public HwMEBase { 0025 0026 public: 0027 0028 /** 0029 * The default constructor. 0030 */ 0031 MEee2VV(); 0032 0033 /** @name Virtual functions required by the MEBase class. */ 0034 //@{ 0035 /** 0036 * Return the order in \f$\alpha_S\f$ in which this matrix 0037 * element is given. 0038 */ 0039 virtual unsigned int orderInAlphaS() const; 0040 0041 /** 0042 * Return the order in \f$\alpha_{EW}\f$ in which this matrix 0043 * element is given. 0044 */ 0045 virtual unsigned int orderInAlphaEW() const; 0046 0047 /** 0048 * The matrix element for the kinematical configuration 0049 * previously provided by the last call to setKinematics(), suitably 0050 * scaled by sHat() to give a dimension-less number. 0051 * @return the matrix element scaled with sHat() to give a 0052 * dimensionless number. 0053 */ 0054 virtual double me2() const; 0055 0056 /** 0057 * Return the scale associated with the last set phase space point. 0058 */ 0059 virtual Energy2 scale() const; 0060 0061 /** 0062 * Add all possible diagrams with the add() function. 0063 */ 0064 virtual void getDiagrams() const; 0065 0066 /** 0067 * Get diagram selector. With the information previously supplied with the 0068 * setKinematics method, a derived class may optionally 0069 * override this method to weight the given diagrams with their 0070 * (although certainly not physical) relative probabilities. 0071 * @param dv the diagrams to be weighted. 0072 * @return a Selector relating the given diagrams to their weights. 0073 */ 0074 virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; 0075 0076 /** 0077 * Return a Selector with possible colour geometries for the selected 0078 * diagram weighted by their relative probabilities. 0079 * @param diag the diagram chosen. 0080 * @return the possible colour geometries weighted by their 0081 * relative probabilities. 0082 */ 0083 virtual Selector<const ColourLines *> 0084 colourGeometries(tcDiagPtr diag) const; 0085 0086 /** 0087 * Used internally by generateKinematics, after calculating the 0088 * limits on cos(theta). 0089 */ 0090 virtual double getCosTheta(double cthmin, double cthmax, const double r); 0091 0092 /** 0093 * Construct the vertex of spin correlations. 0094 */ 0095 virtual void constructVertex(tSubProPtr); 0096 //@} 0097 0098 public: 0099 0100 /** @name Functions used by the persistent I/O system. */ 0101 //@{ 0102 /** 0103 * Function used to write out object persistently. 0104 * @param os the persistent output stream written to. 0105 */ 0106 void persistentOutput(PersistentOStream & os) const; 0107 0108 /** 0109 * Function used to read in object persistently. 0110 * @param is the persistent input stream read from. 0111 * @param version the version number of the object when written. 0112 */ 0113 void persistentInput(PersistentIStream & is, int version); 0114 //@} 0115 0116 /** 0117 * The standard Init function used to initialize the interfaces. 0118 * Called exactly once for each class by the class description system 0119 * before the main function starts or 0120 * when this class is dynamically loaded. 0121 */ 0122 static void Init(); 0123 0124 protected: 0125 0126 /** 0127 * Matrix element for \f$f\bar{f}\to W^+W^-\f$. 0128 * @param f1 Spinors for the incoming fermion 0129 * @param a1 Spinors for the incoming antifermion 0130 * @param v1 Polarization vector for the 1st outgoing boson 0131 * @param v2 Polarization vector for the 2nd outgoing boson 0132 */ 0133 double WWME(vector<SpinorWaveFunction> & f1, 0134 vector<SpinorBarWaveFunction> & a1, 0135 vector<VectorWaveFunction> & v1, 0136 vector<VectorWaveFunction> & v2) const; 0137 0138 /** 0139 * Matrix element for \f$f\bar{f}\to Z^0Z^0\f$. 0140 * @param f1 Spinors for the incoming fermion 0141 * @param a1 Spinors for the incoming antifermion 0142 * @param v1 Polarization vector for the 1st outgoing boson 0143 * @param v2 Polarization vector for the 2nd outgoing boson 0144 */ 0145 double ZZME(vector<SpinorWaveFunction> & f1, 0146 vector<SpinorBarWaveFunction> & a1, 0147 vector<VectorWaveFunction> & v1, 0148 vector<VectorWaveFunction> & v2) const; 0149 0150 protected: 0151 0152 /** @name Clone Methods. */ 0153 //@{ 0154 /** 0155 * Make a simple clone of this object. 0156 * @return a pointer to the new object. 0157 */ 0158 virtual IBPtr clone() const; 0159 0160 /** Make a clone of this object, possibly modifying the cloned object 0161 * to make it sane. 0162 * @return a pointer to the new object. 0163 */ 0164 virtual IBPtr fullclone() const; 0165 //@} 0166 0167 0168 protected: 0169 0170 /** @name Standard Interfaced functions. */ 0171 //@{ 0172 /** 0173 * Initialize this object after the setup phase before saving an 0174 * EventGenerator to disk. 0175 * @throws InitException if object could not be initialized properly. 0176 */ 0177 virtual void doinit(); 0178 //@} 0179 0180 private: 0181 0182 /** 0183 * The assignment operator is private and must never be called. 0184 * In fact, it should not even be implemented. 0185 */ 0186 MEee2VV & operator=(const MEee2VV &) = delete; 0187 0188 private: 0189 0190 /** 0191 * Vertices 0192 */ 0193 //@{ 0194 /** 0195 * FFPVertex 0196 */ 0197 AbstractFFVVertexPtr FFPvertex_; 0198 0199 /** 0200 * FFWVertex 0201 */ 0202 AbstractFFVVertexPtr FFWvertex_; 0203 0204 /** 0205 * FFZVertex 0206 */ 0207 AbstractFFVVertexPtr FFZvertex_; 0208 0209 /** 0210 * WWW Vertex 0211 */ 0212 AbstractVVVVertexPtr WWWvertex_; 0213 //@} 0214 0215 /** 0216 * Processes 0217 */ 0218 unsigned int process_; 0219 0220 /** 0221 * Treatment of the the W and Z masses 0222 */ 0223 unsigned int massOption_; 0224 0225 /** 0226 * The matrix element 0227 */ 0228 mutable ProductionMatrixElement me_; 0229 }; 0230 0231 } 0232 0233 #endif /* HERWIG_MEee2VV_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|