-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
262 lines (236 loc) · 10.1 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
********************************************
* C Program for Feynman Diagram Generation
*
* XIAO Bo ([email protected]), and
* WANG Hao ([email protected])
*
* http://arxiv/abs/1209.0949
********************************************
*********************
* introduction *
*********************
This is the source code of a C program for automatic Feynman diagrams generation.
It is supposed to be used by the high energy particle physists.
Advantage of this program:
1. It is small in size and run fast:
3860 Feynman diagrams of 'u + ubar --> t + tbar' at two loop order in QCD model
can be generated in 0.015 seconds in a normal PC.
2. Yet it is a totally general Feynman diagram generator:
it receives arbitrary user defined model and arbitrary process as input and
generates Feynman diagrams at any order.
3. Symmetry factors from identical fields and signs from fermion exchanging can
be naturely generated.
The physical background and the algorithm adopted in this C program
can be found at its companion paper:
http://arxiv/abs/1209.0949
*********************
* how to use *
*********************
1. Compile the source code and get an excutable file.
2. Put the excutable file and the input file "input.txt" in the same directory.
3. Modify the "input.txt" according to your needs (see below).
3. Run the excutable file.
4. The results are contained in the generated output file "output-feynman-diagrams.txt" (see below).
*********************
* the input file *
*********************
The user needs to modify the input file, named "input.txt", to describe the
the physical model, scattering process, and the interaction order (loops).
For example, to generate the Feynman diagrams of the process of
u + ubar --> t + tbar
at 1-loop order under the physical model of QED, the input file goes like:
### input file begin ###
============================================================================
The physical model (i.e. the relevent interactions)
instructions:
'U' means a Boson having no charge, i.e. it has no antiparticle, e.g. photon
'C' means a Boson which has antiparticle, e.g. W+ and W-
'F' means a Fermion
============================================================================
total number of interactions >>>
2
list of the interactions >>>
3> F1 F-1 U1:1
3> F2 F-2 U1:1
============================================================================
The physical process
============================================================================
total number of incoming and outgoing particles >>>
4
the incoming and outgoing particles >>>
2> F1 F-1
2> F2 F-2
total loops >>>
1
### input file end ###
Explanations of the above input file:
1) The user needs to fill the informations under each label line "...>>>".
2) There are 2 interaction terms 'u-ubar-photon' and 't-tbar-photon'
for the scattering process of 'u + ubar --> t + tbar' under QED.
So, under the first label line "total number of interactions >>>" we
write a "2".
3) Under the "list of the interactions >>>", we list the 2 interaction terms
'u-ubar-photon' and 't-tbar-photon' one by one as "3> F1 F-1 U1:1" and
"3> F2 F-2 U1:1".
3.1) '?>' at the front of a line is a pre-information to tell the program
how many 'word's follow in this line.
3.2) 'F1' represents an u quark. The user can use an arbitary integer number
in 'F?' to represents the u quark, e.g. F888, F123.
'F-1' represents an anti u quark. The number in 'F-n' must be the same as
the number in its anti partner 'Fn'.
'F2' and 'F-2' represent t quark and anti t quark, where the number '2'
is also chosen at random.
3.3) 'U1' represents an photon, where the number '1' is chosen at random.
'Un' must be tightly followed by a ':m', where 'm' describe the multiplicity
of 'Un' in an interaction term. In the interaction term 'u-ubar-photon', the
multiplicity of the photon is '1', so 'Un:1' is written.
3.4) A fermion 'Fn' is not allowed to be followed by a ':m'.
If one wants to write an interaction term composed of multiple identical "fermion"s,
for example, 'e- e- mu+ mu+', one should write the input as
"4> F1 F1 F-2 F-2" instead of "2> F1:2 F-2:2".
See "http://arxiv/abs/1209.0949" for explanations.
4) After telling the program that there are totally 4 external particles under the
label line "total number of incoming and outgoing particles >>>",
the user should list the 4 incoming and outgoing particles under the label line
"the incoming and outgoing particles >>>".
The "2> F1 F-1" tells that there are two incoming particles u quark and anti u quark,
The "2> F2 F-2" tells that there are two outgoing particles t quark and anti t quark.
5) Finally, the number of loops is given.
For tree-level, the total loops are set to be '0'.
One more example.
Generating the Feynman diagrams of the process of
u + ubar --> t + tbar
at 2-loop order with the physical model of QCD. The input file is:
### input file begin ###
============================================================================
The physical model (i.e. the relevent interactions)
instructions:
'U' means a Boson having no charge, i.e. it has no antiparticle, e.g. photon
'C' means a Boson which has antiparticle, e.g. W+ and W-
'F' means a Fermion
============================================================================
total number of interactions >>>
9
list of the interactions >>>
3> F1 F-1 U1:1
3> F2 F-2 U1:1
3> F3 F-3 U1:1
3> F4 F-4 U1:1
3> F5 F-5 U1:1
3> F6 F-6 U1:1
1> U1:3
1> U1:4
3> U1:1 C1:1 C-1:1
============================================================================
The physical process
============================================================================
total number of incoming and outgoing particles >>>
4
the incoming and outgoing particles >>>
2> F1 F-1
2> F5 F-5
total loops >>>
2
### input file end ###
Explanations of the input file:
1) "1> U1:3" represents an three-gluon self interaction term.
2) "3> U1:1 C1:1 C-1:1" represents an 'gluon-ghost-ghost' interaction term.
3) The 9 interaction terms listed under "list of the interactions >>>"
can be put in random order.
4) We use F1 to present u quark and F5 to present t quark.
*********************
* the output file *
*********************
An output file corresponding to the second input file example above is
### output file begin ###
============================================================================
The physical model (i.e. the relevent interactions)
============================================================================
>>> the interactions
I1: (F1,F-1,U1:1)
I2: (F2,F-2,U1:1)
I3: (F3,F-3,U1:1)
I4: (F4,F-4,U1:1)
I5: (F5,F-5,U1:1)
I6: (F6,F-6,U1:1)
I7: (U1:3)
I8: (U1:4)
I9: (U1:1,C1:1,C-1:1)
============================================================================
The physical process
============================================================================
>>> the external particles
P1: (F-1)
P2: (F1)
P3: (F5)
P4: (F-5)
>>> the internal vertices
H1
H2
H3
H4
H5
H6
============================================================================
The Feynman diagrams
============================================================================
(1)
P1-->H1 (I1.leg[2])
P2-->H1 (I1.leg[1])
P3-->H2 (I5.leg[1])
P4-->H2 (I5.leg[2])
H1-->H3 (I1.leg[3]-->I1.leg[3])
H2-->H4 (I5.leg[3]-->I1.leg[3])
H3-->H4 (I1.leg[1]-->I1.leg[2])
H3-->H5 (I1.leg[2]-->I1.leg[1])
H4-->H5 (I1.leg[1]-->I1.leg[2])
H5-->H6 (I1.leg[3]-->I1.leg[3])
H6-->H6 (I1.leg[1]-->I1.leg[2])
symmetryFactor = 1
fermionSign=-1
------------------------------------------------
(2)
P1-->H1 (I1.leg[2])
P2-->H1 (I1.leg[1])
P3-->H2 (I5.leg[1])
P4-->H2 (I5.leg[2])
H1-->H3 (I1.leg[3]-->I1.leg[3])
H2-->H4 (I5.leg[3]-->I1.leg[3])
H3-->H4 (I1.leg[1]-->I1.leg[2])
H3-->H5 (I1.leg[2]-->I1.leg[1])
H4-->H5 (I1.leg[1]-->I1.leg[2])
H5-->H6 (I1.leg[3]-->I2.leg[3])
H6-->H6 (I2.leg[1]-->I2.leg[2])
symmetryFactor = 1
fermionSign=-1
------------------------------------------------
...
### output file end ###
Explanations of the output file:
1) Firstly, the input information is reshown,
and
each interaction term is labeled by 'I?',
each external particle is labeled by 'P?',
each internal vertex is labeled by 'H?'.
2) Then, all the Feynman diagrams are listed one by one.
The topology of a Feynman diagram is expressed by the relations of the
external particles and internal vertices.
For example, the gragh form of the topology of Feynman diagram '(1)' is
* P1 P3 *
* *
* * * * * * *
* * * *
* * * *
H1 ~ ~ ~ ~ ~ H3 H4 ~ ~ ~ ~ ~ H2
* * * *
* * * *
* * * H5* * *
* ~ *
* P2 ~ P4 *
~
* H6*
* *
* *
* * *
The "I[?].leg[?]" in the bracket represents the interaction type of the vertex
and the particle type of the line between the vertices.