|
|
|||
File indexing completed on 2026-08-06 09:24:07
0001 // -*- C++ -*- 0002 #ifndef Herwig_MEGammaGamma2PiPi_H 0003 #define Herwig_MEGammaGamma2PiPi_H 0004 // 0005 // This is the declaration of the MEGammaGamma2PiPi class. 0006 // 0007 0008 #include "Herwig/MatrixElement/HwMEBase.h" 0009 #include "Herwig/MatrixElement/ProductionMatrixElement.h" 0010 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" 0011 0012 namespace Herwig { 0013 0014 using namespace ThePEG; 0015 using ThePEG::Helicity::VectorWaveFunction; 0016 0017 /** 0018 * The MEGammaGamma2PiPi class provides a smiple matrix element for \f$\gamma\gamma\to \pi^+\pi^-$ using scalar QED 0019 * 0020 * @see \ref MEGammaGamma2PiPiInterfaces "The interfaces" 0021 * defined for MEGammaGamma2PiPi. 0022 */ 0023 class MEGammaGamma2PiPi: public HwMEBase { 0024 0025 public: 0026 0027 /** 0028 * The default constructor. 0029 */ 0030 MEGammaGamma2PiPi(); 0031 0032 public: 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 /** 0089 * Construct the vertex of spin correlations. 0090 */ 0091 virtual void constructVertex(tSubProPtr); 0092 0093 public: 0094 0095 /** 0096 * The standard Init function used to initialize the interfaces. 0097 * Called exactly once for each class by the class description system 0098 * before the main function starts or 0099 * when this class is dynamically loaded. 0100 */ 0101 static void Init(); 0102 0103 protected: 0104 0105 /** 0106 * Matrix element for \f$\gamma\gamma\to q\bar{q}\f$ 0107 * @param p1 The wavefunctions for the first incoming photon 0108 * @param p2 The wavefunctions for the second incoming photon 0109 * @param momenta The momenta 0110 * @param calc Whether or not to calculate the matrix element 0111 */ 0112 double helicityME(vector<VectorWaveFunction> &p1,vector<VectorWaveFunction> &p2, 0113 const vector<Lorentz5Momentum> & momenta, 0114 bool calc) const; 0115 0116 protected: 0117 0118 /** @name Clone Methods. */ 0119 //@{ 0120 /** 0121 * Make a simple clone of this object. 0122 * @return a pointer to the new object. 0123 */ 0124 virtual IBPtr clone() const; 0125 0126 /** Make a clone of this object, possibly modifying the cloned object 0127 * to make it sane. 0128 * @return a pointer to the new object. 0129 */ 0130 virtual IBPtr fullclone() const; 0131 //@} 0132 0133 private: 0134 0135 /** 0136 * The assignment operator is private and must never be called. 0137 * In fact, it should not even be implemented. 0138 */ 0139 MEGammaGamma2PiPi & operator=(const MEGammaGamma2PiPi &) = delete; 0140 0141 private: 0142 0143 /** 0144 * Matrix element 0145 */ 0146 mutable ProductionMatrixElement me_; 0147 0148 }; 0149 0150 } 0151 0152 #endif /* Herwig_MEGammaGamma2PiPi_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|