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