thepeg is hosted by Hepforge, IPPP Durham
ThePEG 2.3.0
VVVVVertex.h
1// -*- C++ -*-
2//
3// VVVVVertex.h is a part of ThePEG - Toolkit for HEP Event Generation
4// Copyright (C) 2003-2019 Peter Richardson, Leif Lonnblad
5//
6// ThePEG is licenced under version 3 of the GPL, see COPYING for details.
7// Please respect the MCnet academic guidelines, see GUIDELINES for details.
8//
9#ifndef ThePEG_VVVVVertex_H
10#define ThePEG_VVVVVertex_H
11//
12// This is the declaration of the VVVVVertex class.
13
14#include "ThePEG/Helicity/Vertex/AbstractVVVVVertex.h"
15#include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
16#include "VVVVVertex.fh"
17
18namespace ThePEG {
19namespace Helicity{
20
40
41public:
42
46 static void Init();
47
48public:
49
65 Complex evaluate(Energy2 q2, int iopt,
66 const VectorWaveFunction & vec1, const VectorWaveFunction & vec2,
67 const VectorWaveFunction & vec3, const VectorWaveFunction & vec4);
69
78 assert(false);
79 }
80
91 virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3,
92 tcPDPtr part4)=0;
94
95protected:
96
104 void setOrder(int id1,int id2,int id3,int id4) {
105 _iorder[0]=id1;
106 _iorder[1]=id2;
107 _iorder[2]=id3;
108 _iorder[3]=id4;
109 }
110
115 void setType(int itype) {
116 _itype=itype;
117 }
118
127 _inter[0]=part1;
128 _inter[1]=part2;
129 _coup[0]=c1;
130 _coup[1]=c2;
131 }
132
133private:
134
138 VVVVVertex & operator=(const VVVVVertex &) = delete;
139
140private:
141
146
150 array<int,4> _iorder;
151
155 array<tcPDPtr,2> _inter;
156
160 array<Complex,2> _coup;
161
162};
163}
164}
165
166namespace ThePEG {
167
168}
169#endif /* ThePEG_VVVVVertex_H */
The AbstractVVVVVertex class is the base class for vector-vector-vector-vector interactions in ThePEG...
This is the implementation of the four vector vertex.
Definition: VVVVVertex.h:39
int _itype
Type of vertex 1=QCD 2=EW.
Definition: VVVVVertex.h:145
void setIntermediate(tcPDPtr part1, tcPDPtr part2, Complex c1, Complex c2)
Set the intermediate particles if including s/u/t channel terms.
Definition: VVVVVertex.h:126
array< int, 4 > _iorder
Order of the particles.
Definition: VVVVVertex.h:150
VVVVVertex & operator=(const VVVVVertex &)=delete
Private and non-existent assignment operator.
array< Complex, 2 > _coup
Couplings of the intermediate particles.
Definition: VVVVVertex.h:160
virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3, tcPDPtr part4)=0
Calculate the couplings for a four point interaction.
array< tcPDPtr, 2 > _inter
Intermediate particles.
Definition: VVVVVertex.h:155
virtual void setCoupling(Energy2, tcPDPtr, tcPDPtr, tcPDPtr)
Set coupling methods.
Definition: VVVVVertex.h:77
static void Init()
Standard Init function used to initialize the interfaces.
void setOrder(int id1, int id2, int id3, int id4)
Set the order of the particles.
Definition: VVVVVertex.h:104
void setType(int itype)
Set the type of the vertex.
Definition: VVVVVertex.h:115
Complex evaluate(Energy2 q2, int iopt, const VectorWaveFunction &vec1, const VectorWaveFunction &vec2, const VectorWaveFunction &vec3, const VectorWaveFunction &vec4)
Members to calculate the helicity amplitude expressions for vertices and off-shell particles.
TransientConstRCPtr is a simple wrapper around a bare const pointer which can be assigned to and from...
Definition: RCPtr.h:696
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
std::complex< double > Complex
ThePEG code should use Complex for all complex scalars.
Definition: Complex.h:23