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