|
|
|||
File indexing completed on 2026-08-06 09:24:08
0001 // -*- C++ -*- 0002 #ifndef Herwig_MEfv2rv_H 0003 #define Herwig_MEfv2rv_H 0004 // 0005 // This is the declaration of the MEfv2rv class. 0006 // 0007 0008 #include "GeneralHardME.h" 0009 #include "Herwig/MatrixElement/ProductionMatrixElement.h" 0010 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" 0011 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" 0012 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" 0013 #include "ThePEG/Helicity/WaveFunction/RSSpinorWaveFunction.h" 0014 #include "ThePEG/Helicity/WaveFunction/RSSpinorBarWaveFunction.h" 0015 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" 0016 #include "ThePEG/Helicity/Vertex/AbstractRFVVertex.h" 0017 #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" 0018 #include "ThePEG/Helicity/Vertex/AbstractRFVVVertex.h" 0019 0020 namespace Herwig { 0021 0022 using namespace ThePEG; 0023 0024 /** 0025 * This class implements the matrix element for a fermion and a vector 0026 * boson to a vector boson and a RS fermion. It inherits from GeneralHardME 0027 * and implements the appropriate virtual functions. 0028 * 0029 * @see GeneralHardME 0030 * 0031 */ 0032 class MEfv2rv: public GeneralHardME { 0033 0034 public: 0035 0036 /** A vector of SpinorWaveFunctions. */ 0037 typedef vector<Helicity::SpinorWaveFunction> SpinorVector; 0038 0039 /** A vector of SpinorBarWaveFunctions. */ 0040 typedef vector<Helicity::SpinorBarWaveFunction> SpinorBarVector; 0041 0042 /** A vector of SpinorWaveFunctions. */ 0043 typedef vector<Helicity::RSSpinorWaveFunction> RSSpinorVector; 0044 0045 /** A vector of SpinorBarWaveFunctions. */ 0046 typedef vector<Helicity::RSSpinorBarWaveFunction> RSSpinorBarVector; 0047 0048 /** A vector of VectorWaveFunctions. */ 0049 typedef vector<Helicity::VectorWaveFunction> VBVector; 0050 0051 public: 0052 0053 /** @name Virtual functions required by the MEBase class. */ 0054 //@{ 0055 /** 0056 * The matrix element for the kinematical configuration 0057 * previously provided by the last call to setKinematics(), suitably 0058 * scaled by sHat() to give a dimension-less number. 0059 * @return the matrix element scaled with sHat() to give a 0060 * dimensionless number. 0061 */ 0062 virtual double me2() const; 0063 //@} 0064 0065 /** 0066 * Construct the vertex information for the spin correlations 0067 * @param sub Pointer to the relevent SubProcess 0068 */ 0069 virtual void constructVertex(tSubProPtr sub); 0070 0071 private: 0072 0073 /** @name Functions to calculate the Helicity MatrixElement.*/ 0074 //@{ 0075 /** 0076 * Calculate the matrix element for an incoming fermion 0077 * @param spIn A vector of spinors for the incoming fermion 0078 * @param vecIn A vector of VectorWaveFunctions for the incoming boson 0079 * @param spbOut A vector of SpinorBarWaveFunctions for the outgoing fermion 0080 * @param vecOut A vector of VectorWaveFunctions for the outgoing boson 0081 * @param mc If the outgoing vector is massless or not 0082 * @param first Whether or not first call to decide if colour decomposition etc 0083 * should be calculated 0084 * @param mesq The matrix element squared 0085 */ 0086 ProductionMatrixElement 0087 fv2rvHeME(const SpinorVector & spIn, const VBVector & vecIn, 0088 const RSSpinorBarVector & spbOut, 0089 const VBVector & vecOut, bool mc, 0090 double & mesq, bool first) const; 0091 0092 /** 0093 * Calculate the matrix element for an incoming anti-fermion 0094 * @param spbIn A vector of SpinorBarWaveFunctions for the incoming anti-fermion 0095 * @param vecIn A vector of VectorWaveFunctions for the incoming boson 0096 * @param spOut A vector of Spinors for the outgoing antifermion 0097 * @param vecOut A vector of VectorWaveFunctions for the outgoing boson 0098 * @param mc If the outgoing vector is massless or not 0099 * @param first Whether or not first call to decide if colour decomposition etc 0100 * should be calculated 0101 * @param mesq The matrix element squared 0102 */ 0103 ProductionMatrixElement 0104 fbv2rbvHeME(const SpinorBarVector & spbIn, const VBVector & vecIn, 0105 const RSSpinorVector & spOut, 0106 const VBVector & vecOut, bool mc, 0107 double & mesq, bool first) const; 0108 //@} 0109 0110 public: 0111 0112 /** @name Functions used by the persistent I/O system. */ 0113 //@{ 0114 /** 0115 * Function used to write out object persistently. 0116 * @param os the persistent output stream written to. 0117 */ 0118 void persistentOutput(PersistentOStream & os) const; 0119 0120 /** 0121 * Function used to read in object persistently. 0122 * @param is the persistent input stream read from. 0123 * @param version the version number of the object when written. 0124 */ 0125 void persistentInput(PersistentIStream & is, int version); 0126 //@} 0127 0128 /** 0129 * The standard Init function used to initialize the interfaces. 0130 * Called exactly once for each class by the class description system 0131 * before the main function starts or 0132 * when this class is dynamically loaded. 0133 */ 0134 static void Init(); 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 protected: 0154 0155 /** @name Standard Interfaced functions. */ 0156 //@{ 0157 /** 0158 * Initialize this object after the setup phase before saving an 0159 * EventGenerator to disk. 0160 * @throws InitException if object could not be initialized properly. 0161 */ 0162 virtual void doinit(); 0163 //@} 0164 0165 private: 0166 0167 /** 0168 * The assignment operator is private and must never be called. 0169 * In fact, it should not even be implemented. 0170 */ 0171 MEfv2rv & operator=(const MEfv2rv &) = delete; 0172 0173 private: 0174 0175 /** @name Store dynamically casted vertices. */ 0176 //@{ 0177 /** 0178 * A pair off FFVVertex pointers 0179 */ 0180 vector<pair<AbstractFFVVertexPtr, AbstractRFVVertexPtr> > fermion_; 0181 0182 /** 0183 * A pair of FFVVertex, VVVertex pointers 0184 */ 0185 vector<pair<AbstractRFVVertexPtr, AbstractVVVVertexPtr> > vector_; 0186 0187 /** 0188 * Four point vertices 0189 */ 0190 vector<AbstractRFVVVertexPtr> four_; 0191 //@} 0192 0193 }; 0194 0195 } 0196 0197 #endif /* Herwig_MEfv2rv_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|