File indexing completed on 2026-08-06 09:24:01
0001
0002 #ifndef THEPEG_VtoFFVDecayer_H
0003 #define THEPEG_VtoFFVDecayer_H
0004
0005
0006
0007
0008 #include "GeneralThreeBodyDecayer.h"
0009 #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h"
0010 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
0011 #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h"
0012 #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
0013 #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h"
0014 #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h"
0015
0016 namespace Herwig {
0017 using namespace ThePEG;
0018
0019
0020
0021
0022
0023
0024
0025 class VtoFFVDecayer: public GeneralThreeBodyDecayer {
0026
0027 public:
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038 double me2(const int ichan,const Particle & part,
0039 const tPDVector & outgoing,
0040 const vector<Lorentz5Momentum> & momenta,
0041 MEOption meopt) const;
0042
0043
0044
0045
0046 virtual void constructSpinInfo(const Particle & part,
0047 ParticleVector outgoing) const;
0048
0049
0050
0051
0052
0053
0054
0055 virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const;
0056
0057 public:
0058
0059
0060
0061
0062
0063
0064
0065 void persistentOutput(PersistentOStream & os) const;
0066
0067
0068
0069
0070
0071
0072 void persistentInput(PersistentIStream & is, int version);
0073
0074
0075
0076
0077
0078
0079
0080
0081 static void Init();
0082
0083 protected:
0084
0085
0086
0087
0088
0089
0090
0091 virtual IBPtr clone() const;
0092
0093
0094
0095
0096
0097 virtual IBPtr fullclone() const;
0098
0099
0100 protected:
0101
0102
0103
0104
0105 virtual void setupDiagrams(bool checkKinematics);
0106
0107 private:
0108
0109
0110
0111
0112
0113 VtoFFVDecayer & operator=(const VtoFFVDecayer &) = delete;
0114
0115 private:
0116
0117
0118
0119
0120 vector<pair<AbstractVVSVertexPtr, AbstractFFSVertexPtr> > sca_;
0121
0122
0123
0124
0125 vector<pair<AbstractFFVVertexPtr, AbstractFFVVertexPtr> > fer_;
0126
0127
0128
0129
0130 vector<pair<AbstractVVVVertexPtr, AbstractFFVVertexPtr> > vec_;
0131
0132
0133
0134
0135 vector<pair<AbstractVVTVertexPtr, AbstractFFTVertexPtr> > ten_;
0136
0137
0138
0139
0140 mutable RhoDMatrix rho_;
0141
0142
0143
0144
0145 mutable vector<VectorWaveFunction> inVector_;
0146
0147
0148
0149
0150 mutable ScalarWaveFunction swave_;
0151
0152
0153
0154
0155 mutable vector<VectorWaveFunction> outVector_;
0156
0157
0158
0159
0160 mutable pair<vector<SpinorWaveFunction>,vector<SpinorBarWaveFunction> > outspin_[3];
0161 };
0162
0163 }
0164
0165 #endif