AmpGen
2.1
Toggle main menu visibility
Loading...
Searching...
No Matches
Vertex.h
Go to the documentation of this file.
1
#ifndef AMPGEN_IVERTEX_H
2
#define AMPGEN_IVERTEX_H
3
4
#include <map>
5
#include <utility>
6
#include <vector>
7
#include <string>
8
9
#include "
AmpGen/Expression.h
"
10
#include "
AmpGen/Factory.h
"
11
#include "
AmpGen/Particle.h
"
12
#include "
AmpGen/Tensor.h
"
13
#include "
AmpGen/MsgService.h
"
14
22
26
#define DECLARE_VERTEX(NAME) \
27
struct NAME : public Base { \
28
NAME() { DEBUG("Constructing vertex"); } \
29
virtual Tensor operator()(const Tensor &P, const Tensor &Q, const Tensor &V1, const Tensor &V2, DebugSymbols *db = 0) override; \
30
static std::string _id; \
31
}
32
33
#define DEFINE_VERTEX(VERTEX) \
34
REGISTER_WITH_KEY(Vertex::Base, Vertex::VERTEX, #VERTEX, std::string); \
35
Tensor Vertex::VERTEX::operator()(const Tensor &P, const Tensor &Q, const Tensor &V1, const Tensor &V2, DebugSymbols *db)
36
37
namespace
AmpGen
{
42
namespace
Vertex
{
49
struct
Base
{
58
virtual
AmpGen::Tensor
59
operator()
(
const
AmpGen::Tensor
&P,
const
AmpGen::Tensor
&Q,
const
AmpGen::Tensor
&V1,
const
AmpGen::Tensor
&V2,
AmpGen::DebugSymbols
*db =
nullptr
)
60
= 0;
61
62
virtual
~Base
() =
default
;
63
Base
*
create
() {
return
this
; }
64
};
65
67
DECLARE_VERTEX
(
S_SS_S
);
68
71
DECLARE_VERTEX
(
S_VV_S
);
72
75
DECLARE_VERTEX
(
S_VV_S1
);
76
79
DECLARE_VERTEX
(
S_VV_P
);
80
83
DECLARE_VERTEX
(
S_VV_D
);
84
87
DECLARE_VERTEX
(
S_VS_P
);
88
91
DECLARE_VERTEX
(
S_TV_P
);
92
95
DECLARE_VERTEX
(
S_TV_D
);
96
99
DECLARE_VERTEX
(
S_TS_D
);
100
103
DECLARE_VERTEX
(
S_TT_S
);
104
107
DECLARE_VERTEX
(
V_SS_P
);
108
109
DECLARE_VERTEX
(
V_VS_P
);
110
113
DECLARE_VERTEX
(
V_VS_S
);
114
DECLARE_VERTEX
(
V_VS_D
);
115
DECLARE_VERTEX
(
V_TS_P
);
116
DECLARE_VERTEX
(
V_TS_D
);
117
118
DECLARE_VERTEX
(
V_VV_P
);
119
DECLARE_VERTEX
(
V_VV_P1
);
120
DECLARE_VERTEX
(
V_VV_P2
);
121
DECLARE_VERTEX
(
V_VV_S
);
122
123
DECLARE_VERTEX
(
T_VS_D
);
124
DECLARE_VERTEX
(
T_VS_P
);
125
DECLARE_VERTEX
(
T_SS_D
);
126
DECLARE_VERTEX
(
T_TS_D
);
127
DECLARE_VERTEX
(
T_TS_S
);
128
129
DECLARE_VERTEX
(
f_fS_S
);
130
DECLARE_VERTEX
(
f_fS_S1
);
131
DECLARE_VERTEX
(
f_fS_P
);
132
DECLARE_VERTEX
(
f_fS_P1
);
133
134
DECLARE_VERTEX
(
f_Vf_S
);
135
DECLARE_VERTEX
(
f_Vf_S1
);
136
DECLARE_VERTEX
(
f_Vf_P
);
137
DECLARE_VERTEX
(
f_Vf_P1
);
138
DECLARE_VERTEX
(
f_Vf_P2
);
139
DECLARE_VERTEX
(
f_Vf_P3
);
140
141
DECLARE_VERTEX
(
f_fS_SL
);
142
DECLARE_VERTEX
(
f_fS_SR
);
143
144
DECLARE_VERTEX
(
f_Vf_SL
);
145
DECLARE_VERTEX
(
f_Vf_SR
);
146
147
DECLARE_VERTEX
(
f_Vf_D
);
148
DECLARE_VERTEX
(
f_Vf_D1
);
149
150
DECLARE_VERTEX
(
f_Tf_P
);
151
152
DECLARE_VERTEX
(
r_fS_P
);
153
DECLARE_VERTEX
(
r_fS_D
);
154
DECLARE_VERTEX
(
f_rS_P
);
155
DECLARE_VERTEX
(
f_rS_D
);
156
DECLARE_VERTEX
(
f_rS_P1
);
157
158
DECLARE_VERTEX
(
F_FS_S
);
159
DECLARE_VERTEX
(
F_FS_S1
);
160
DECLARE_VERTEX
(
F_FS_P
);
161
DECLARE_VERTEX
(
F_FS_P1
);
162
163
DECLARE_VERTEX
(
F_VF_S
);
164
DECLARE_VERTEX
(
F_VF_S1
);
165
DECLARE_VERTEX
(
F_VF_P
);
166
DECLARE_VERTEX
(
F_VF_P1
);
167
DECLARE_VERTEX
(
F_VF_P2
);
168
DECLARE_VERTEX
(
F_VF_P3
);
169
170
DECLARE_VERTEX
(
F_FS_SL
);
171
DECLARE_VERTEX
(
F_FS_SR
);
172
173
DECLARE_VERTEX
(
F_VF_SL
);
174
DECLARE_VERTEX
(
F_VF_SR
);
175
176
DECLARE_VERTEX
(
F_VF_D
);
177
DECLARE_VERTEX
(
F_VF_D1
);
178
179
DECLARE_VERTEX
(
F_TF_P
);
180
181
DECLARE_VERTEX
(
R_FS_P
);
182
DECLARE_VERTEX
(
R_FS_D
);
183
DECLARE_VERTEX
(
F_RS_P
);
184
DECLARE_VERTEX
(
F_RS_D
);
185
DECLARE_VERTEX
(
F_RS_P1
);
186
187
DECLARE_VERTEX
(
S_fF_S
);
188
DECLARE_VERTEX
(
S_fF_S1
);
189
DECLARE_VERTEX
(
V_fF_S
);
190
DECLARE_VERTEX
(
V_fF_S1
);
191
DECLARE_VERTEX
(
V_fF_PL
);
192
DECLARE_VERTEX
(
V_fF_PR
);
193
194
DECLARE_VERTEX
(
S_VV_rp
);
195
DECLARE_VERTEX
(
S_VV_rm
);
196
DECLARE_VERTEX
(
S_TV_rp
);
197
DECLARE_VERTEX
(
S_TV_rm
);
198
199
class
Factory
:
public
AmpGen::Factory
<Vertex::Base> {
200
public
:
201
static
Tensor
getSpinFactor
(
const
Tensor
&P,
const
Tensor
&Q,
const
Tensor
&V1,
const
Tensor
&V2,
const
std::string &name,
DebugSymbols
*db =
nullptr
);
202
static
Tensor
getSpinFactorNBody
(
const
std::vector<std::pair<Tensor, Tensor>> &tensors,
const
unsigned
int
&mL,
DebugSymbols
*db =
nullptr
);
203
static
bool
isVertex
(
const
std::string &hash);
204
};
205
}
// namespace Vertex
206
214
Tensor
Orbital_PWave
(
const
Tensor
&p,
const
Tensor
&q);
215
222
Tensor
Orbital_DWave
(
const
Tensor
&p,
const
Tensor
&q);
223
229
Tensor
Spin1Projector
(
const
Tensor
&p);
230
237
Tensor
Spin2Projector
(
const
Tensor
&p);
238
244
Tensor
Spin1hProjector
(
const
Tensor
&B);
245
Tensor
Spin3hProjector
(
const
Tensor
&A);
246
Tensor
Spin1hbProjector
(
const
Tensor
&B);
247
Tensor
Spin3hbProjector
(
const
Tensor
&A);
248
249
Tensor
gamma_twiddle
(
const
Tensor
&P);
250
Tensor
Gamma4Vec
();
251
Tensor
Bar
(
const
Tensor
&P);
252
Tensor
slash
(
const
Tensor
&P);
253
}
// namespace AmpGen
254
#endif
Expression.h
Factory.h
MsgService.h
Particle.h
Tensor.h
AmpGen::Factory
Static factory to construct classes from a hierarchy based on a key (normally std::string).
Definition
Factory.h:18
AmpGen::Tensor
Definition
Tensor.h:29
AmpGen::Vertex::Factory
Definition
Vertex.h:199
AmpGen::Vertex::Factory::getSpinFactor
static Tensor getSpinFactor(const Tensor &P, const Tensor &Q, const Tensor &V1, const Tensor &V2, const std::string &name, DebugSymbols *db=nullptr)
AmpGen::Vertex::Factory::getSpinFactorNBody
static Tensor getSpinFactorNBody(const std::vector< std::pair< Tensor, Tensor > > &tensors, const unsigned int &mL, DebugSymbols *db=nullptr)
AmpGen::Vertex::Factory::isVertex
static bool isVertex(const std::string &hash)
AmpGen::Spin2Projector
Tensor Spin2Projector(const Tensor &p)
Helper function that computes the projection operator onto a spin one state.
AmpGen::Orbital_DWave
Tensor Orbital_DWave(const Tensor &p, const Tensor &q)
Helper function that computes the orbital momentum operator.
DECLARE_VERTEX
#define DECLARE_VERTEX(NAME)
Macro to declare a vertex.
Definition
Vertex.h:26
AmpGen::Orbital_PWave
Tensor Orbital_PWave(const Tensor &p, const Tensor &q)
Helper function that computes the orbital momentum operator.
AmpGen::Spin1Projector
Tensor Spin1Projector(const Tensor &p)
Helper function that computes the projection operator onto a spin one state.
AmpGen::Spin1hProjector
Tensor Spin1hProjector(const Tensor &B)
Helper function that projects a spinor.
AmpGen::Vertex
Namespace that contains the base class for vertices, Vertex::Base, as well as the implementations of ...
Definition
Vertex.h:42
AmpGen
Definition
AddCPConjugate.h:2
AmpGen::Spin3hProjector
Tensor Spin3hProjector(const Tensor &A)
AmpGen::Spin3hbProjector
Tensor Spin3hbProjector(const Tensor &A)
AmpGen::Spin1hbProjector
Tensor Spin1hbProjector(const Tensor &B)
AmpGen::slash
Tensor slash(const Tensor &P)
AmpGen::Gamma4Vec
Tensor Gamma4Vec()
AmpGen::DebugSymbols
std::vector< DebugSymbol > DebugSymbols
Definition
Expression.h:111
AmpGen::Bar
Tensor Bar(const Tensor &P)
AmpGen::gamma_twiddle
Tensor gamma_twiddle(const Tensor &P)
AmpGen::Vertex::Base
Base class for all spin vertices.
Definition
Vertex.h:49
AmpGen::Vertex::Base::~Base
virtual ~Base()=default
AmpGen::Vertex::Base::operator()
virtual AmpGen::Tensor operator()(const AmpGen::Tensor &P, const AmpGen::Tensor &Q, const AmpGen::Tensor &V1, const AmpGen::Tensor &V2, AmpGen::DebugSymbols *db=nullptr)=0
Calculate the generalised current for this decay process, as a function of:
AmpGen::Vertex::Base::create
Base * create()
Definition
Vertex.h:63
AmpGen::Vertex::F_FS_P1::F_FS_P1
F_FS_P1()
Definition
Vertex.h:161
AmpGen::Vertex::F_FS_P::F_FS_P
F_FS_P()
Definition
Vertex.h:160
AmpGen::Vertex::F_FS_S1::F_FS_S1
F_FS_S1()
Definition
Vertex.h:159
AmpGen::Vertex::F_FS_S::F_FS_S
F_FS_S()
Definition
Vertex.h:158
AmpGen::Vertex::F_FS_SL::F_FS_SL
F_FS_SL()
Definition
Vertex.h:170
AmpGen::Vertex::F_FS_SR::F_FS_SR
F_FS_SR()
Definition
Vertex.h:171
AmpGen::Vertex::F_RS_D::F_RS_D
F_RS_D()
Definition
Vertex.h:184
AmpGen::Vertex::F_RS_P1::F_RS_P1
F_RS_P1()
Definition
Vertex.h:185
AmpGen::Vertex::F_RS_P::F_RS_P
F_RS_P()
Definition
Vertex.h:183
AmpGen::Vertex::F_TF_P::F_TF_P
F_TF_P()
Definition
Vertex.h:179
AmpGen::Vertex::F_VF_D1::F_VF_D1
F_VF_D1()
Definition
Vertex.h:177
AmpGen::Vertex::F_VF_D::F_VF_D
F_VF_D()
Definition
Vertex.h:176
AmpGen::Vertex::F_VF_P1::F_VF_P1
F_VF_P1()
Definition
Vertex.h:166
AmpGen::Vertex::F_VF_P2::F_VF_P2
F_VF_P2()
Definition
Vertex.h:167
AmpGen::Vertex::F_VF_P3::F_VF_P3
F_VF_P3()
Definition
Vertex.h:168
AmpGen::Vertex::F_VF_P::F_VF_P
F_VF_P()
Definition
Vertex.h:165
AmpGen::Vertex::F_VF_S1::F_VF_S1
F_VF_S1()
Definition
Vertex.h:164
AmpGen::Vertex::F_VF_S::F_VF_S
F_VF_S()
Definition
Vertex.h:163
AmpGen::Vertex::F_VF_SL::F_VF_SL
F_VF_SL()
Definition
Vertex.h:173
AmpGen::Vertex::F_VF_SR::F_VF_SR
F_VF_SR()
Definition
Vertex.h:174
AmpGen::Vertex::R_FS_D::R_FS_D
R_FS_D()
Definition
Vertex.h:182
AmpGen::Vertex::R_FS_P::R_FS_P
R_FS_P()
Definition
Vertex.h:181
AmpGen::Vertex::S_SS_S::S_SS_S
S_SS_S()
Definition
Vertex.h:67
AmpGen::Vertex::S_TS_D::S_TS_D
S_TS_D()
Definition
Vertex.h:99
AmpGen::Vertex::S_TT_S::S_TT_S
S_TT_S()
Definition
Vertex.h:103
AmpGen::Vertex::S_TV_D::S_TV_D
S_TV_D()
Definition
Vertex.h:95
AmpGen::Vertex::S_TV_P::S_TV_P
S_TV_P()
Definition
Vertex.h:91
AmpGen::Vertex::S_TV_rm::S_TV_rm
S_TV_rm()
Definition
Vertex.h:197
AmpGen::Vertex::S_TV_rp::S_TV_rp
S_TV_rp()
Definition
Vertex.h:196
AmpGen::Vertex::S_VS_P::S_VS_P
S_VS_P()
Definition
Vertex.h:87
AmpGen::Vertex::S_VV_D::S_VV_D
S_VV_D()
Definition
Vertex.h:83
AmpGen::Vertex::S_VV_P::S_VV_P
S_VV_P()
Definition
Vertex.h:79
AmpGen::Vertex::S_VV_S1::S_VV_S1
S_VV_S1()
Definition
Vertex.h:75
AmpGen::Vertex::S_VV_S::S_VV_S
S_VV_S()
Definition
Vertex.h:71
AmpGen::Vertex::S_VV_rm::S_VV_rm
S_VV_rm()
Definition
Vertex.h:195
AmpGen::Vertex::S_VV_rp::S_VV_rp
S_VV_rp()
Definition
Vertex.h:194
AmpGen::Vertex::S_fF_S1::S_fF_S1
S_fF_S1()
Definition
Vertex.h:188
AmpGen::Vertex::S_fF_S::S_fF_S
S_fF_S()
Definition
Vertex.h:187
AmpGen::Vertex::T_SS_D::T_SS_D
T_SS_D()
Definition
Vertex.h:125
AmpGen::Vertex::T_TS_D::T_TS_D
T_TS_D()
Definition
Vertex.h:126
AmpGen::Vertex::T_TS_S::T_TS_S
T_TS_S()
Definition
Vertex.h:127
AmpGen::Vertex::T_VS_D::T_VS_D
T_VS_D()
Definition
Vertex.h:123
AmpGen::Vertex::T_VS_P::T_VS_P
T_VS_P()
Definition
Vertex.h:124
AmpGen::Vertex::V_SS_P::V_SS_P
V_SS_P()
Definition
Vertex.h:107
AmpGen::Vertex::V_TS_D::V_TS_D
V_TS_D()
Definition
Vertex.h:116
AmpGen::Vertex::V_TS_P::V_TS_P
V_TS_P()
Definition
Vertex.h:115
AmpGen::Vertex::V_VS_D::V_VS_D
V_VS_D()
Definition
Vertex.h:114
AmpGen::Vertex::V_VS_P::V_VS_P
V_VS_P()
Definition
Vertex.h:109
AmpGen::Vertex::V_VS_S::V_VS_S
V_VS_S()
Definition
Vertex.h:113
AmpGen::Vertex::V_VV_P1::V_VV_P1
V_VV_P1()
Definition
Vertex.h:119
AmpGen::Vertex::V_VV_P2::V_VV_P2
V_VV_P2()
Definition
Vertex.h:120
AmpGen::Vertex::V_VV_P::V_VV_P
V_VV_P()
Definition
Vertex.h:118
AmpGen::Vertex::V_VV_S::V_VV_S
V_VV_S()
Definition
Vertex.h:121
AmpGen::Vertex::V_fF_PL::V_fF_PL
V_fF_PL()
Definition
Vertex.h:191
AmpGen::Vertex::V_fF_PR::V_fF_PR
V_fF_PR()
Definition
Vertex.h:192
AmpGen::Vertex::V_fF_S1::V_fF_S1
V_fF_S1()
Definition
Vertex.h:190
AmpGen::Vertex::V_fF_S::V_fF_S
V_fF_S()
Definition
Vertex.h:189
AmpGen::Vertex::f_Tf_P::f_Tf_P
f_Tf_P()
Definition
Vertex.h:150
AmpGen::Vertex::f_Vf_D1::f_Vf_D1
f_Vf_D1()
Definition
Vertex.h:148
AmpGen::Vertex::f_Vf_D::f_Vf_D
f_Vf_D()
Definition
Vertex.h:147
AmpGen::Vertex::f_Vf_P1::f_Vf_P1
f_Vf_P1()
Definition
Vertex.h:137
AmpGen::Vertex::f_Vf_P2::f_Vf_P2
f_Vf_P2()
Definition
Vertex.h:138
AmpGen::Vertex::f_Vf_P3::f_Vf_P3
f_Vf_P3()
Definition
Vertex.h:139
AmpGen::Vertex::f_Vf_P::f_Vf_P
f_Vf_P()
Definition
Vertex.h:136
AmpGen::Vertex::f_Vf_S1::f_Vf_S1
f_Vf_S1()
Definition
Vertex.h:135
AmpGen::Vertex::f_Vf_S::f_Vf_S
f_Vf_S()
Definition
Vertex.h:134
AmpGen::Vertex::f_Vf_SL::f_Vf_SL
f_Vf_SL()
Definition
Vertex.h:144
AmpGen::Vertex::f_Vf_SR::f_Vf_SR
f_Vf_SR()
Definition
Vertex.h:145
AmpGen::Vertex::f_fS_P1::f_fS_P1
f_fS_P1()
Definition
Vertex.h:132
AmpGen::Vertex::f_fS_P::f_fS_P
f_fS_P()
Definition
Vertex.h:131
AmpGen::Vertex::f_fS_S1::f_fS_S1
f_fS_S1()
Definition
Vertex.h:130
AmpGen::Vertex::f_fS_S::f_fS_S
f_fS_S()
Definition
Vertex.h:129
AmpGen::Vertex::f_fS_SL::f_fS_SL
f_fS_SL()
Definition
Vertex.h:141
AmpGen::Vertex::f_fS_SR::f_fS_SR
f_fS_SR()
Definition
Vertex.h:142
AmpGen::Vertex::f_rS_D::f_rS_D
f_rS_D()
Definition
Vertex.h:155
AmpGen::Vertex::f_rS_P1::f_rS_P1
f_rS_P1()
Definition
Vertex.h:156
AmpGen::Vertex::f_rS_P::f_rS_P
f_rS_P()
Definition
Vertex.h:154
AmpGen::Vertex::r_fS_D::r_fS_D
r_fS_D()
Definition
Vertex.h:153
AmpGen::Vertex::r_fS_P::r_fS_P
r_fS_P()
Definition
Vertex.h:152
AmpGen
Vertex.h
Generated on
for AmpGen by
1.17.0