File indexing completed on 2026-08-06 09:24:08
0001
0002 #ifndef Herwig_MEvv2rf_H
0003 #define Herwig_MEvv2rf_H
0004
0005
0006
0007
0008 #include "GeneralHardME.h"
0009 #include "ThePEG/Helicity/Vertex/AbstractRFSVertex.h"
0010 #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h"
0011 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
0012 #include "ThePEG/Helicity/Vertex/AbstractRFVVertex.h"
0013 #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
0014 #include "ThePEG/Helicity/Vertex/AbstractRFVVVertex.h"
0015 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
0016 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
0017 #include "ThePEG/Helicity/WaveFunction/RSSpinorWaveFunction.h"
0018 #include "ThePEG/Helicity/WaveFunction/RSSpinorBarWaveFunction.h"
0019 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
0020 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
0021
0022 namespace Herwig {
0023
0024 using namespace ThePEG;
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034 class MEvv2rf: public GeneralHardME {
0035
0036 public:
0037
0038
0039 typedef vector<VectorWaveFunction> VBVector;
0040
0041
0042 typedef vector<SpinorWaveFunction> SpinorVector;
0043
0044
0045 typedef vector<SpinorBarWaveFunction> SpinorBarVector;
0046
0047
0048 typedef vector<RSSpinorWaveFunction> RSSpinorVector;
0049
0050
0051 typedef vector<RSSpinorBarWaveFunction> RSSpinorBarVector;
0052
0053 public:
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064 virtual double me2() const;
0065
0066
0067
0068
0069
0070
0071 virtual void constructVertex(tSubProPtr sub);
0072
0073 public:
0074
0075
0076
0077
0078
0079
0080
0081 void persistentOutput(PersistentOStream & os) const;
0082
0083
0084
0085
0086
0087
0088 void persistentInput(PersistentIStream & is, int version);
0089
0090
0091
0092
0093
0094
0095
0096
0097 static void Init();
0098
0099 protected:
0100
0101
0102
0103
0104
0105
0106
0107 virtual IBPtr clone() const;
0108
0109
0110
0111
0112
0113 virtual IBPtr fullclone() const;
0114
0115
0116 protected:
0117
0118
0119
0120
0121
0122
0123
0124
0125 virtual void doinit();
0126
0127
0128 private:
0129
0130
0131
0132
0133 ProductionMatrixElement vv2rfME(const VBVector & v1, const VBVector & v2,
0134 const RSSpinorBarVector & sbar,
0135 const SpinorVector & sp,
0136 double & me2, bool first) const;
0137
0138
0139
0140
0141 ProductionMatrixElement vv2frME(const VBVector & v1, const VBVector & v2,
0142 const SpinorBarVector & sbar,
0143 const RSSpinorVector & sp,
0144 double & me2, bool first) const;
0145
0146 private:
0147
0148
0149
0150
0151
0152 MEvv2rf & operator=(const MEvv2rf &) = delete;
0153 private:
0154
0155
0156
0157
0158
0159
0160 vector<pair<AbstractVVSVertexPtr, AbstractRFSVertexPtr > > scalar_;
0161
0162
0163
0164
0165 vector<pair<AbstractRFVVertexPtr, AbstractFFVVertexPtr> > fermion_;
0166
0167
0168
0169
0170 vector<pair<AbstractVVVVertexPtr, AbstractRFVVertexPtr> > vector_;
0171
0172
0173
0174
0175 vector<AbstractRFVVVertexPtr> four_;
0176
0177
0178 };
0179
0180 }
0181
0182 #endif