|
|
|||
File indexing completed on 2026-08-06 09:24:10
0001 // -*- C++ -*- 0002 // 0003 // MatchboxAmplitudeqqbarttbar.h is a part of Herwig - A multi-purpose Monte Carlo event generator 0004 // Copyright (C) 2002-2019 The Herwig Collaboration 0005 // 0006 // Herwig is licenced under version 3 of the GPL, see COPYING for details. 0007 // Please respect the MCnet academic guidelines, see GUIDELINES for details. 0008 // 0009 #ifndef Herwig_MatchboxAmplitudeqqbarttbar_H 0010 #define Herwig_MatchboxAmplitudeqqbarttbar_H 0011 // 0012 // This is the declaration of the MatchboxAmplitudeqqbarttbar class. 0013 // 0014 0015 #include "Herwig/MatrixElement/Matchbox/Base/MatchboxAmplitude.h" 0016 #include "Herwig/MatrixElement/Matchbox/Builtin/Amplitudes/MatchboxCurrents.h" 0017 #include "MG_qqx2ttx.h" 0018 #include "HelAmps_sm.h" 0019 0020 namespace Herwig { 0021 0022 using namespace ThePEG; 0023 0024 /** 0025 * \ingroup Matchbox 0026 * \author Alix Wilcock 0027 * 0028 * \brief MatchboxAmplitudeqqbarttbar 0029 */ 0030 class MatchboxAmplitudeqqbarttbar: 0031 public MatchboxAmplitude, public MatchboxCurrents { 0032 0033 public: 0034 0035 /** 0036 * The default constructor. 0037 */ 0038 MatchboxAmplitudeqqbarttbar(); 0039 0040 public: 0041 0042 /** 0043 * Return true, if this amplitude can handle the given process. 0044 */ 0045 virtual bool canHandle(const PDVector&) const; 0046 0047 /** 0048 * Return the (tree-level) order in \f$g_S\f$ in which this matrix 0049 * element is given. 0050 */ 0051 virtual unsigned int orderInGs() const {return 2; } 0052 0053 /** 0054 * Return the (tree-level) order in \f$g_{EM}\f$ in which this matrix 0055 * element is given. 0056 */ 0057 virtual unsigned int orderInGem() const { return 0; } 0058 0059 /** 0060 * Return true, if this amplitude will not require colour correlations. 0061 */ 0062 virtual bool noCorrelations() const { return false; } 0063 0064 /** 0065 * Return true, if this amplitude is capable of calculating one-loop 0066 * (QCD) corrections. 0067 */ 0068 virtual bool haveOneLoop() const { return false; } 0069 0070 /** 0071 * Calculate the tree level amplitudes for the phasespace point 0072 * stored in lastXComb. 0073 */ 0074 virtual void prepareAmplitudes(Ptr<MatchboxMEBase>::tcptr); 0075 0076 /** 0077 * Evaluate the amplitude for the given colour tensor id and 0078 * helicity assignment 0079 */ 0080 virtual Complex evaluate(size_t, const vector<int>&, Complex&); 0081 0082 /** 0083 * Return the value of the dimensional regularization 0084 * parameter. Note that renormalization scale dependence is fully 0085 * restored in DipoleIOperator. 0086 */ 0087 virtual Energy2 mu2() const { return lastSHat(); } 0088 0089 /** 0090 * Flush all cashes. 0091 */ 0092 virtual void flushCaches() { 0093 MatchboxCurrents::reset(); 0094 MatchboxAmplitude::flushCaches(); 0095 } 0096 0097 public: 0098 0099 /** @name Functions used by the persistent I/O system. */ 0100 //@{ 0101 /** 0102 * Function used to write out object persistently. 0103 * @param os the persistent output stream written to. 0104 */ 0105 void persistentOutput(PersistentOStream & os) const; 0106 0107 /** 0108 * Function used to read in object persistently. 0109 * @param is the persistent input stream read from. 0110 * @param version the version number of the object when written. 0111 */ 0112 void persistentInput(PersistentIStream & is, int version); 0113 //@} 0114 0115 /** 0116 * The standard Init function used to initialize the interfaces. 0117 * Called exactly once for each class by the class description system 0118 * before the main function starts or 0119 * when this class is dynamically loaded. 0120 */ 0121 static void Init(); 0122 0123 protected: 0124 0125 /** @name Clone Methods. */ 0126 //@{ 0127 /** 0128 * Make a simple clone of this object. 0129 * @return a pointer to the new object. 0130 */ 0131 virtual IBPtr clone() const; 0132 0133 /** Make a clone of this object, possibly modifying the cloned object 0134 * to make it sane. 0135 * @return a pointer to the new object. 0136 */ 0137 virtual IBPtr fullclone() const; 0138 //@} 0139 0140 0141 // If needed, insert declarations of virtual function defined in the 0142 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 0143 0144 protected: 0145 0146 /** @name Standard Interfaced functions. */ 0147 //@{ 0148 /** 0149 * Initialize this object after the setup phase before saving an 0150 * EventGenerator to disk. 0151 * @throws InitException if object could not be initialized properly. 0152 */ 0153 virtual void doinit(); 0154 0155 /** 0156 * Initialize this object. Called in the run phase just before 0157 * a run begins. 0158 */ 0159 virtual void doinitrun(); 0160 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 MatchboxAmplitudeqqbarttbar & operator=(const MatchboxAmplitudeqqbarttbar &) = delete; 0170 0171 /** 0172 * Containers for external particle momenta 0173 */ 0174 double mom0 [4]; 0175 double mom1 [4]; 0176 double mom2 [4]; 0177 double mom3 [4]; 0178 0179 /** 0180 * Fill MGParams_ with Herwig values of parameters 0181 */ 0182 void setupParams(map<string, double> & MGParams); 0183 0184 /** 0185 * Stores parameters needed in MG_process 0186 */ 0187 map<string,double> MGParams_; 0188 0189 }; 0190 0191 } 0192 0193 #endif /* Herwig_MatchboxAmplitudeqqbarttbar_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|