|
|
|||
File indexing completed on 2026-08-06 09:24:08
0001 // -*- C++ -*- 0002 #ifndef HERWIG_MEff2ts_H 0003 #define HERWIG_MEff2ts_H 0004 // 0005 // This is the declaration of the MEff2ts class. 0006 // 0007 0008 #include "GeneralHardME.h" 0009 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" 0010 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" 0011 #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" 0012 #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h" 0013 #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h" 0014 #include "ThePEG/Helicity/Vertex/AbstractSSTVertex.h" 0015 #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" 0016 #include "ThePEG/Helicity/Vertex/AbstractFFSTVertex.h" 0017 0018 namespace Herwig { 0019 0020 using namespace ThePEG; 0021 using Helicity::SpinorWaveFunction; 0022 using Helicity::SpinorBarWaveFunction; 0023 using Helicity::ScalarWaveFunction; 0024 using Helicity::TensorWaveFunction; 0025 0026 /** 0027 * The MEff2ts class implements the general matrix element for fermion fermion -> tensor scalar 0028 * 0029 */ 0030 class MEff2ts: public GeneralHardME { 0031 0032 public: 0033 0034 /** @name Typedefs */ 0035 //@{ 0036 /** 0037 * A vector of SpinorWaveFunctions 0038 */ 0039 typedef vector<SpinorWaveFunction> SpinorVector; 0040 0041 /** 0042 * A vector of SpinorWaveBarFunctions 0043 */ 0044 typedef vector<SpinorBarWaveFunction> SpinorBarVector; 0045 0046 /** 0047 * A vector of VectorWaveFunctions 0048 */ 0049 typedef vector<TensorWaveFunction> TBVector; 0050 //@} 0051 0052 public: 0053 0054 /** 0055 * The default constructor. 0056 */ 0057 MEff2ts() : fermion_(0), scalar_(0), fourPoint_(0) {} 0058 0059 /** 0060 * The matrix element for the kinematical configuration 0061 * previously provided by the last call to setKinematics(), suitably 0062 * scaled by sHat() to give a dimension-less number. 0063 * @return the matrix element scaled with sHat() to give a 0064 * dimensionless number. 0065 */ 0066 virtual double me2() const; 0067 0068 /** 0069 * Construct the vertex information for the spin correlations 0070 * @param sub Pointer to the relevent SubProcess 0071 */ 0072 virtual void constructVertex(tSubProPtr sub); 0073 0074 public: 0075 0076 /** @name Functions used by the persistent I/O system. */ 0077 //@{ 0078 /** 0079 * Function used to write out object persistently. 0080 * @param os the persistent output stream written to. 0081 */ 0082 void persistentOutput(PersistentOStream & os) const; 0083 0084 /** 0085 * Function used to read in object persistently. 0086 * @param is the persistent input stream read from. 0087 * @param version the version number of the object when written. 0088 */ 0089 void persistentInput(PersistentIStream & is, int version); 0090 //@} 0091 0092 /** 0093 * The standard Init function used to initialize the interfaces. 0094 * Called exactly once for each class by the class description system 0095 * before the main function starts or 0096 * when this class is dynamically loaded. 0097 */ 0098 static void Init(); 0099 0100 protected: 0101 0102 /** @name Clone Methods. */ 0103 //@{ 0104 /** 0105 * Make a simple clone of this object. 0106 * @return a pointer to the new object. 0107 */ 0108 virtual IBPtr clone() const; 0109 0110 /** Make a clone of this object, possibly modifying the cloned object 0111 * to make it sane. 0112 * @return a pointer to the new object. 0113 */ 0114 virtual IBPtr fullclone() const; 0115 //@} 0116 0117 protected: 0118 0119 /** @name Standard Interfaced functions. */ 0120 //@{ 0121 /** 0122 * Initialize this object after the setup phase before saving an 0123 * EventGenerator to disk. 0124 * @throws InitException if object could not be initialized properly. 0125 */ 0126 void doinit(); 0127 //@} 0128 0129 private: 0130 0131 /** 0132 * The assignment operator is private and must never be called. 0133 * In fact, it should not even be implemented. 0134 */ 0135 MEff2ts & operator=(const MEff2ts &) = delete; 0136 0137 private: 0138 0139 /** @name Functions to compute the ProductionMatrixElement. */ 0140 //@{ 0141 /** 0142 * Compute the matrix element for \f$\Psi\bar{\Psi}\to\Psi\bar{\Psi}\f$ 0143 * @param sp Spinors for first incoming particle 0144 * @param spbar SpinorBar Wavefunctions for second incoming particle 0145 * @param sca ScalarWaveFunction for outgoing scalar 0146 * @param ten Outgoing TensorWaveFunction 0147 * @param me2 colour averaged, spin summed ME 0148 * @param first Whether or not first call to decide if colour decomposition etc 0149 * should be calculated 0150 * @return ProductionMatrixElement containing results of 0151 * helicity calculations 0152 */ 0153 ProductionMatrixElement 0154 ffb2tsHeME(SpinorVector & sp, SpinorBarVector & spbar, 0155 TBVector & ten, ScalarWaveFunction & sca, 0156 double & me2,bool first) const; 0157 //@} 0158 0159 private: 0160 0161 /** 0162 * Store a pair of FFTVertex and FFVVertex pointers 0163 */ 0164 vector<pair<AbstractFFTVertexPtr, AbstractFFSVertexPtr> > fermion_; 0165 0166 /** 0167 * Store a pair of FFTVertex and VVTVertex pointers 0168 */ 0169 vector<pair<AbstractFFSVertexPtr, AbstractSSTVertexPtr> > scalar_; 0170 0171 /** 0172 * The four point vertex 0173 */ 0174 vector<AbstractFFSTVertexPtr> fourPoint_; 0175 0176 }; 0177 0178 } 0179 0180 #endif /* HERWIG_MEff2ts_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|