|
|
|||
File indexing completed on 2026-08-06 09:24:13
0001 // -*- C++ -*- 0002 // 0003 // NJetsAmplitude.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_NJetsAmplitude_H 0010 #define Herwig_NJetsAmplitude_H 0011 // 0012 // This is the declaration of the NJetsAmplitude class. 0013 // 0014 0015 #include "Herwig/MatrixElement/Matchbox/Base/MatchboxOLPME.h" 0016 0017 namespace Herwig { 0018 0019 using namespace ThePEG; 0020 0021 /** 0022 * \ingroup Matchbox 0023 * \author Simon Platzer 0024 * 0025 * \brief NJetsAmplitude implements an interface to NJets 0026 */ 0027 class NJetsAmplitude: public MatchboxOLPME { 0028 0029 public: 0030 0031 /** 0032 * The default constructor. 0033 */ 0034 NJetsAmplitude(); 0035 0036 public: 0037 0038 /** 0039 * Return true, if this amplitude already includes averaging over 0040 * incoming parton's quantum numbers. 0041 */ 0042 virtual bool hasInitialAverage() const { return false; } 0043 0044 /** 0045 * Return true, if this amplitude already includes symmetry factors 0046 * for identical outgoing particles. 0047 */ 0048 virtual bool hasFinalStateSymmetry() const { return false; } 0049 0050 /** 0051 * Start the one loop provider, if appropriate, giving order and 0052 * contract files 0053 */ 0054 virtual void signOLP(const string&, const string&); 0055 0056 /** 0057 * Start the one loop provider, if appropriate 0058 */ 0059 virtual void startOLP(const string&, int& status); 0060 0061 /** 0062 * Start the one loop provider, if appropriate. This default 0063 * implementation writes an BLHA 2.0 order file and starts the OLP 0064 */ 0065 virtual bool startOLP(const map<pair<Process,int>,int>& procs); 0066 0067 /** 0068 * Call OLP_EvalSubProcess and fill in the results 0069 */ 0070 virtual void evalSubProcess() const; 0071 0072 /** 0073 * Fill in results for the given colour correlator 0074 */ 0075 virtual void evalColourCorrelator(pair<int,int> ij) const; 0076 0077 /** 0078 * Return a positive helicity polarization vector for a gluon of 0079 * momentum p (with reference vector n) to be used when evaluating 0080 * spin correlations. 0081 */ 0082 virtual LorentzVector<Complex> plusPolarization(const Lorentz5Momentum& p, 0083 const Lorentz5Momentum& n, 0084 int id = -1) const; 0085 0086 /** 0087 * Fill in results for the given colour/spin correlator 0088 */ 0089 virtual void evalSpinColourCorrelator(pair<int,int> ij) const; 0090 0091 public: 0092 0093 /** @name Functions used by the persistent I/O system. */ 0094 //@{ 0095 /** 0096 * Function used to write out object persistently. 0097 * @param os the persistent output stream written to. 0098 */ 0099 void persistentOutput(PersistentOStream & os) const; 0100 0101 /** 0102 * Function used to read in object persistently. 0103 * @param is the persistent input stream read from. 0104 * @param version the version number of the object when written. 0105 */ 0106 void persistentInput(PersistentIStream & is, int version); 0107 //@} 0108 0109 /** 0110 * The standard Init function used to initialize the interfaces. 0111 * Called exactly once for each class by the class description system 0112 * before the main function starts or 0113 * when this class is dynamically loaded. 0114 */ 0115 static void Init(); 0116 0117 protected: 0118 0119 /** @name Standard Interfaced functions. */ 0120 //@{ 0121 0122 /** 0123 * Initialize this object after the setup phase before saving an 0124 * EventGenerator to disk. 0125 * @throws InitException if object could not be initialized properly. 0126 */ 0127 virtual void doinit(); 0128 0129 /** 0130 * Initialize this object. Called in the run phase just before 0131 * a run begins. 0132 */ 0133 virtual void doinitrun(); 0134 //@} 0135 0136 protected: 0137 0138 /** @name Clone Methods. */ 0139 //@{ 0140 /** 0141 * Make a simple clone of this object. 0142 * @return a pointer to the new object. 0143 */ 0144 virtual IBPtr clone() const; 0145 0146 /** Make a clone of this object, possibly modifying the cloned object 0147 * to make it sane. 0148 * @return a pointer to the new object. 0149 */ 0150 virtual IBPtr fullclone() const; 0151 //@} 0152 0153 0154 // If needed, insert declarations of virtual function defined in the 0155 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 0156 0157 0158 private: 0159 0160 /** 0161 * The assignment operator is private and must never be called. 0162 * In fact, it should not even be implemented. 0163 */ 0164 NJetsAmplitude & operator=(const NJetsAmplitude &) = delete; 0165 0166 /** 0167 * Store colour correlator results 0168 */ 0169 mutable vector<double> colourCorrelatorResults; 0170 0171 /** 0172 * Store spin colour correlator results 0173 */ 0174 mutable vector<double> spinColourCorrelatorResults; 0175 0176 /** 0177 * Location of NJETs 0178 */ 0179 string NJetsPrefix_; 0180 0181 /** 0182 * Location of NJET librarys 0183 */ 0184 string NJetsLibs_; 0185 0186 /** 0187 * Load the NJET library 0188 */ 0189 void loadNJET(); 0190 0191 }; 0192 0193 } 0194 0195 #endif /* Herwig_NJetsAmplitude_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|