|
|
|||
File indexing completed on 2026-08-06 09:24:08
0001 // -*- C++ -*- 0002 #ifndef Herwig_MEfv2rs_H 0003 #define Herwig_MEfv2rs_H 0004 // 0005 // This is the declaration of the MEfv2rs 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/RSSpinorWaveFunction.h" 0012 #include "ThePEG/Helicity/WaveFunction/RSSpinorBarWaveFunction.h" 0013 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" 0014 #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" 0015 #include "Herwig/MatrixElement/ProductionMatrixElement.h" 0016 #include "ThePEG/Helicity/Vertex/AbstractRFVVertex.h" 0017 #include "ThePEG/Helicity/Vertex/AbstractRFSVertex.h" 0018 #include "ThePEG/Helicity/Vertex/AbstractRFVSVertex.h" 0019 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" 0020 #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" 0021 #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h" 0022 #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h" 0023 0024 namespace Herwig { 0025 0026 using namespace ThePEG; 0027 0028 /** 0029 * This class is designed to implement the matrix element for 0030 * fermion-vector to RS fermion scalar. It inherits from GeneralHardME 0031 * and implements the required virtual functions. 0032 * 0033 * @see GeneralHardME 0034 */ 0035 class MEfv2rs: public GeneralHardME { 0036 0037 /** Vector of SpinorWaveFunctions. */ 0038 typedef vector<SpinorWaveFunction> SpinorVector; 0039 0040 /** Vector of SpinorBarWaveFunctions. */ 0041 typedef vector<SpinorBarWaveFunction> SpinorBarVector; 0042 0043 /** Vector of RSSpinorWaveFunctions. */ 0044 typedef vector<RSSpinorWaveFunction> RSSpinorVector; 0045 0046 /** Vector of RSSpinorBarWaveFunctions. */ 0047 typedef vector<RSSpinorBarWaveFunction> RSSpinorBarVector; 0048 0049 /** Vector of VectorWaveFunctions. */ 0050 typedef vector<VectorWaveFunction> VecWFVector; 0051 0052 public: 0053 0054 /** @name Virtual functions required by the MEBase class. */ 0055 //@{ 0056 /** 0057 * The matrix element for the kinematical configuration 0058 * previously provided by the last call to setKinematics(), suitably 0059 * scaled by sHat() to give a dimension-less number. 0060 * @return the matrix element scaled with sHat() to give a 0061 * dimensionless number. 0062 */ 0063 virtual double me2() const; 0064 //@} 0065 0066 /** 0067 * Construct the vertex information for the spin correlations 0068 * @param subp Pointer to the relevent SubProcess 0069 */ 0070 virtual void constructVertex(tSubProPtr subp); 0071 0072 private: 0073 0074 /** @name Functions to calculate production matrix elements and me2. */ 0075 //@{ 0076 /** 0077 * Calculate me2 and the production matrix element for the normal mode. 0078 * @param spIn Vector of SpinorWaveFunction for the incoming fermion 0079 * @param vecIn Vector of VectorWaveFunction for incoming boson 0080 * @param spbOut Vector of SpinorBarWaveFunction for outgoing fermion 0081 * @param scaOut ScalarWaveFunction for outgoing scalar. 0082 * @param first Whether or not first call to decide if colour decomposition etc 0083 * should be calculated 0084 * @param full_me The value of me2 calculation 0085 */ 0086 ProductionMatrixElement fv2rbsHeME(const SpinorVector & spIn, 0087 const VecWFVector & vecIn, 0088 const RSSpinorBarVector & spbOut, 0089 const ScalarWaveFunction & scaOut, 0090 double & full_me, bool first) const; 0091 0092 /** 0093 * Calculate me2 and the production matrix element for the cc mode. 0094 * @param spbIn Vector of SpinorBarWaveFunction for the incoming fermion 0095 * @param vecIn Vector of VectorWaveFunction for incoming boson 0096 * @param spOut Vector of SpinorWaveFunction for outgoing fermion 0097 * @param scaOut ScalarWaveFunction for outgoing scalar. 0098 * @param first Whether or not first call to decide if colour decomposition etc 0099 * should be calculated 0100 * @param full_me The value of me2 calculation 0101 */ 0102 ProductionMatrixElement fbv2rsHeME(const SpinorBarVector & spbIn, 0103 const VecWFVector & vecIn, 0104 const RSSpinorVector & spOut, 0105 const ScalarWaveFunction & scaOut, 0106 double & full_me, bool first) const; 0107 //@} 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 0154 protected: 0155 0156 /** @name Standard Interfaced functions. */ 0157 //@{ 0158 /** 0159 * Initialize this object after the setup phase before saving an 0160 * EventGenerator to disk. 0161 * @throws InitException if object could not be initialized properly. 0162 */ 0163 virtual void doinit(); 0164 //@} 0165 0166 private: 0167 0168 /** 0169 * The assignment operator is private and must never be called. 0170 * In fact, it should not even be implemented. 0171 */ 0172 MEfv2rs & operator=(const MEfv2rs &) = delete; 0173 0174 private: 0175 0176 /** 0177 * Store a pair of FFSVertex and VSSVertex pointers 0178 */ 0179 vector<pair<AbstractRFSVertexPtr, AbstractVSSVertexPtr> > scalar_; 0180 0181 /** 0182 * Store a pair of FFSVertex and FFVVertex pointers 0183 */ 0184 vector<pair<AbstractFFVVertexPtr, AbstractRFSVertexPtr> > fermion1_; 0185 0186 /** 0187 * Store a pair of FFSVertex and FFVVertex pointers 0188 */ 0189 vector<pair<AbstractFFSVertexPtr, AbstractRFVVertexPtr> > fermion2_; 0190 0191 /** 0192 * Store a pair of VVSVertex and FFVVertex pointers 0193 */ 0194 vector<pair<AbstractRFVVertexPtr,AbstractVVSVertexPtr> > vector_; 0195 0196 /** 0197 * Store the 4-point vertices 0198 */ 0199 vector<AbstractRFVSVertexPtr> four_; 0200 }; 0201 0202 } 0203 0204 #endif /* Herwig_MEfv2rs_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|