|
|
|||
File indexing completed on 2026-08-06 09:24:13
0001 // -*- C++ -*- 0002 // 0003 // MatchboxInsertionOperator.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_MatchboxInsertionOperator_H 0010 #define HERWIG_MatchboxInsertionOperator_H 0011 // 0012 // This is the declaration of the MatchboxInsertionOperator class. 0013 // 0014 0015 #include "ThePEG/Handlers/HandlerBase.h" 0016 #include "ThePEG/Handlers/StandardXComb.h" 0017 #include "ThePEG/Handlers/LastXCombInfo.h" 0018 #include "Herwig/MatrixElement/Matchbox/InsertionOperators/MatchboxInsertionOperator.fh" 0019 #include "Herwig/MatrixElement/Matchbox/Utility/LastMatchboxXCombInfo.h" 0020 #include "Herwig/MatrixElement/Matchbox/Base/MatchboxMEBase.fh" 0021 #include "Herwig/MatrixElement/Matchbox/MatchboxFactory.fh" 0022 0023 namespace Herwig { 0024 0025 using namespace ThePEG; 0026 0027 /** 0028 * \ingroup Matchbox 0029 * \author Simon Platzer 0030 * 0031 * \brief MatchboxInsertionOperator is the base class for insertion operators. 0032 * 0033 * @see \ref MatchboxInsertionOperatorInterfaces "The interfaces" 0034 * defined for MatchboxInsertionOperator. 0035 */ 0036 class MatchboxInsertionOperator: 0037 public HandlerBase, 0038 public LastXCombInfo<StandardXComb>, 0039 public LastMatchboxXCombInfo { 0040 0041 public: 0042 0043 /** @name Standard constructors and destructors. */ 0044 //@{ 0045 /** 0046 * The default constructor. 0047 */ 0048 MatchboxInsertionOperator(); 0049 0050 /** 0051 * The destructor. 0052 */ 0053 virtual ~MatchboxInsertionOperator(); 0054 //@} 0055 0056 public: 0057 0058 /** 0059 * Return the factory which produced this matrix element 0060 */ 0061 Ptr<MatchboxFactory>::tptr factory() const; 0062 0063 /** @name Process and phasespace information */ 0064 //@{ 0065 0066 /** 0067 * Return true, if this virtual correction 0068 * applies to the given process. 0069 */ 0070 virtual bool apply(const cPDVector&) const = 0; 0071 0072 /** 0073 * Return the Born matrix element this class represents 0074 * virtual corrections to. 0075 */ 0076 Ptr<MatchboxMEBase>::tptr lastBorn() const ; 0077 0078 /** 0079 * Set the XComb object steering the Born matrix 0080 * element this class represents virtual corrections to. 0081 */ 0082 virtual void setXComb(tStdXCombPtr xc) { 0083 theLastXComb = xc; 0084 lastMatchboxXComb(xc); 0085 } 0086 0087 0088 /** 0089 * Set parameters for new alpha parameter. 0090 */ 0091 virtual void setAlpha(double )const {assert(false);} 0092 0093 0094 0095 /** 0096 * Return the number of additional random variables 0097 * needed to calculate this virtual correction. 0098 */ 0099 virtual int nDimAdditional() const { return 0; } 0100 0101 //@} 0102 0103 /** @name Conventions */ 0104 //@{ 0105 0106 0107 /** 0108 * Return true, if the amplitude is DRbar renormalized, otherwise 0109 * MSbar is assumed. 0110 */ 0111 virtual bool isDRbar() const; 0112 /** 0113 * Return true, if this virtual correction 0114 * has been calculated using dimensional reduction. 0115 * CDR is assumed otherwise. 0116 */ 0117 virtual bool isDR() const; 0118 /** 0119 * Return true, if the virtual correction has been calculated in the 0120 * dipole convention. 0121 */ 0122 virtual bool isCS() const; 0123 /** 0124 * Return true, if the virtual correction has been calculated in the 0125 * BDK convention. 0126 */ 0127 virtual bool isBDK() const; 0128 /** 0129 * Return true, if the virtual correction has been calculated in the 0130 * expanded convention. 0131 */ 0132 virtual bool isExpanded() const; 0133 /** 0134 * If defined, return the coefficient of the pole in epsilon^2 0135 */ 0136 virtual double oneLoopDoublePole() const { return 0.; } 0137 0138 /** 0139 * If defined, return the coefficient of the pole in epsilon 0140 */ 0141 virtual double oneLoopSinglePole() const { return 0.; } 0142 0143 //@} 0144 0145 /** @name Evaluate the insertion operator */ 0146 //@{ 0147 0148 /** 0149 * Evaluate the finite virtual correction for the 0150 * variables supplied through the Born XComb object 0151 * and possible additional random numbers. 0152 */ 0153 virtual double me2() const = 0; 0154 0155 /** 0156 * Evaluate the finite virtual correction for the 0157 * variables supplied through the Born XComb object 0158 * and possible additional random numbers. 0159 */ 0160 virtual CrossSection dSigHatDR() const; 0161 0162 0163 /** 0164 * Evaluate the difference of dSigHatDR with and without alpha 0165 * parameter. 0166 */ 0167 virtual CrossSection dSigHatDRAlphaDiff(double alpha) const{ 0168 setAlpha(alpha); 0169 CrossSection res=dSigHatDR(); 0170 setAlpha(1.); 0171 return res-dSigHatDR(); 0172 } 0173 0174 //@} 0175 0176 /** @name Caching and helpers to setup insertion operator objects. */ 0177 //@{ 0178 0179 /** 0180 * Inform this matrix element that a new phase space 0181 * point is about to be generated, so all caches should 0182 * be flushed. 0183 */ 0184 virtual void flushCaches() {} 0185 0186 /** 0187 * Clone this insertion operator. 0188 */ 0189 Ptr<MatchboxInsertionOperator>::ptr cloneMe() const { 0190 return dynamic_ptr_cast<Ptr<MatchboxInsertionOperator>::ptr>(clone()); 0191 } 0192 0193 /** 0194 * Clone the dependencies, using a given prefix. 0195 */ 0196 virtual void cloneDependencies(const std::string& prefix = ""); 0197 0198 //@} 0199 0200 public: 0201 0202 /** @name Functions used by the persistent I/O system. */ 0203 //@{ 0204 /** 0205 * Function used to write out object persistently. 0206 * @param os the persistent output stream written to. 0207 */ 0208 void persistentOutput(PersistentOStream & os) const; 0209 0210 /** 0211 * Function used to read in object persistently. 0212 * @param is the persistent input stream read from. 0213 * @param version the version number of the object when written. 0214 */ 0215 void persistentInput(PersistentIStream & is, int version); 0216 //@} 0217 0218 /** 0219 * The standard Init function used to initialize the interfaces. 0220 * Called exactly once for each class by the class description system 0221 * before the main function starts or 0222 * when this class is dynamically loaded. 0223 */ 0224 static void Init(); 0225 0226 0227 // If needed, insert declarations of virtual function defined in the 0228 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 0229 0230 private: 0231 0232 /** 0233 * The assignment operator is private and must never be called. 0234 * In fact, it should not even be implemented. 0235 */ 0236 MatchboxInsertionOperator & operator=(const MatchboxInsertionOperator &) = delete; 0237 0238 }; 0239 0240 } 0241 0242 #endif /* HERWIG_MatchboxInsertionOperator_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|