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