|
|
|||
File indexing completed on 2026-08-06 09:24:08
0001 // -*- C++ -*- 0002 #ifndef HERWIG_MEvv2tv_H 0003 #define HERWIG_MEvv2tv_H 0004 // 0005 // This is the declaration of the MEvv2tv class. 0006 // 0007 0008 #include "GeneralHardME.h" 0009 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" 0010 #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h" 0011 #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h" 0012 #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" 0013 #include "ThePEG/Helicity/Vertex/AbstractVVVTVertex.h" 0014 0015 namespace Herwig { 0016 0017 using namespace ThePEG; 0018 using ThePEG::Helicity::VectorWaveFunction; 0019 using ThePEG::Helicity::TensorWaveFunction; 0020 0021 /** 0022 * Here is the documentation of the MEvv2tv class. 0023 * 0024 * @see \ref MEvv2tvInterfaces "The interfaces" 0025 * defined for MEvv2tv. 0026 */ 0027 class MEvv2tv: public GeneralHardME { 0028 0029 /** Vector of VectorWaveFunctions. */ 0030 typedef vector<VectorWaveFunction> VBVector; 0031 0032 /** Vector of TensorWaveFunctions. */ 0033 typedef vector<TensorWaveFunction> TBVector; 0034 0035 public: 0036 0037 /** 0038 * The default constructor. 0039 */ 0040 MEvv2tv() : vector_(0), fourPoint_(0) {} 0041 0042 /** 0043 * The matrix element for the kinematical configuration 0044 * previously provided by the last call to setKinematics(), suitably 0045 * scaled by sHat() to give a dimension-less number. 0046 * @return the matrix element scaled with sHat() to give a 0047 * dimensionless number. 0048 */ 0049 virtual double me2() const; 0050 0051 /** 0052 * Construct the vertex information for the spin correlations 0053 * @param sub Pointer to the relevent SubProcess 0054 */ 0055 virtual void constructVertex(tSubProPtr sub); 0056 0057 public: 0058 0059 /** @name Functions used by the persistent I/O system. */ 0060 //@{ 0061 /** 0062 * Function used to write out object persistently. 0063 * @param os the persistent output stream written to. 0064 */ 0065 void persistentOutput(PersistentOStream & os) const; 0066 0067 /** 0068 * Function used to read in object persistently. 0069 * @param is the persistent input stream read from. 0070 * @param version the version number of the object when written. 0071 */ 0072 void persistentInput(PersistentIStream & is, int version); 0073 //@} 0074 0075 /** 0076 * The standard Init function used to initialize the interfaces. 0077 * Called exactly once for each class by the class description system 0078 * before the main function starts or 0079 * when this class is dynamically loaded. 0080 */ 0081 static void Init(); 0082 0083 protected: 0084 0085 /** @name Clone Methods. */ 0086 //@{ 0087 /** 0088 * Make a simple clone of this object. 0089 * @return a pointer to the new object. 0090 */ 0091 virtual IBPtr clone() const; 0092 0093 /** Make a clone of this object, possibly modifying the cloned object 0094 * to make it sane. 0095 * @return a pointer to the new object. 0096 */ 0097 virtual IBPtr fullclone() const; 0098 //@} 0099 0100 protected: 0101 0102 /** @name Standard Interfaced functions. */ 0103 //@{ 0104 /** 0105 * Initialize this object after the setup phase before saving an 0106 * EventGenerator to disk. 0107 * @throws InitException if object could not be initialized properly. 0108 */ 0109 void doinit(); 0110 //@} 0111 0112 private: 0113 0114 /** @name Functions to calculate production matrix elements and me2. */ 0115 //@{ 0116 /** 0117 * Calculate me2 and the production matrix element for the normal mode. 0118 * @param vec1 Vector of VectorWaveFunction for the 1st incoming boson 0119 * @param vec2 Vector of VectorWaveFunction for the 2nd incoming boson 0120 * @param ten TensorWaveFunction for outgoing tensor. 0121 * @param vec3 Vector of VectorWaveFunction for the outgoing boson 0122 * @param first Whether or not first call to decide if colour decomposition etc 0123 * should be calculated 0124 * @param full_me The value of me2 calculation 0125 */ 0126 ProductionMatrixElement vv2tvHeME(const VBVector & vec1, 0127 const VBVector & vec2, 0128 const TBVector & ten, 0129 const VBVector & vec3, 0130 double & full_me, bool first) const; 0131 0132 /** 0133 * A debugging function to test the value of me2 against an 0134 * analytic function. 0135 * @param me2 The value of the \f$ |\bar{\mathcal{M}}|^2 \f$ 0136 */ 0137 virtual void debug(double me2) const; 0138 0139 private: 0140 0141 /** 0142 * The assignment operator is private and must never be called. 0143 * In fact, it should not even be implemented. 0144 */ 0145 MEvv2tv & operator=(const MEvv2tv &) = delete; 0146 0147 private: 0148 0149 /** 0150 * Store a pair of FFTVertex and FFVVertex pointers 0151 */ 0152 vector<pair<AbstractVVVVertexPtr, AbstractVVTVertexPtr> > vector_; 0153 0154 /** 0155 * The four point vertex 0156 */ 0157 vector<AbstractVVVTVertexPtr> fourPoint_; 0158 0159 }; 0160 0161 } 0162 0163 #endif /* HERWIG_MEvv2tv_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|