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