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