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 from __future__ import division
33 import aloha.aloha_lib as aloha_lib
34
35
36
37
38 -class P(aloha_lib.LorentzObject):
39 """ Helas Object for an Impulsion """
40
41 contract_first = 1
42
43 - def __init__(self, lorentz1, particle, prefactor=1):
48
49
60
61
62
63
64 -class PSlash(aloha_lib.LorentzObject):
65 """ Gamma Matrices """
66
67
68
69
70
71
72
73
74
75 - def __init__(self, spin1, spin2, particle, prefactor=1):
80
82 """create representation"""
83 p0 = aloha_lib.ScalarVariable('P%s_0' % self.particle)
84 p1 = aloha_lib.ScalarVariable('P%s_1' % self.particle)
85 p2 = aloha_lib.ScalarVariable('P%s_2' % self.particle)
86 p3 = aloha_lib.ScalarVariable('P%s_3' % self.particle)
87
88
89 gamma = {
90 (0, 0): 0, (0, 1): 0, (0, 2): p0-p3, (0, 3): -1*p1+1j*p2,
91 (1, 0): 0, (1, 1): 0, (1, 2): -1*p1-1j*p2, (1, 3): p0+p3,
92 (2, 0): p0+p3, (2, 1): p1-1j*p2, (2, 2): 0, (2, 3): 0,
93 (3, 0): p1+1j*p2, (3, 1): p0-p3, (3, 2): 0, (3, 3): 0}
94
95
96 self.representation = aloha_lib.LorentzObjectRepresentation(gamma,
97 self.lorentz_ind,self.spin_ind)
98
99
100
101
102 -class Mass(aloha_lib.LorentzObject):
103 """ Helas Object for a Mass"""
104
105 - def __init__(self, particle, prefactor=1):
109
110
116
117
118
119
121 """ Helas Object for 1/M**2 """
122
123 - def __init__(self, particle, prefactor=1):
129
130
136
137
138
139
140 -class Width(aloha_lib.LorentzObject):
141 """ Helas Object for an Impulsion """
142
143 - def __init__(self, particle, prefactor=1):
147
153
154
155
156
157 -class Scalar(aloha_lib.LorentzObject):
158 """ Helas Object for a Spinor"""
159
160 - def __init__(self, particle, prefactor=1):
164
165
170
171
172
173
174
175 -class Spinor(aloha_lib.LorentzObject):
176 """ Helas Object for a Spinor"""
177
178 contract_first = 1
179
180 - def __init__(self, spin1, particle, prefactor=1):
184
185
196
197
198
199
200 -class Vector(aloha_lib.LorentzObject):
201 """ Helas Object for a Vector"""
202
203 contract_first = 1
204
205 - def __init__(self, lorentz, particle, prefactor=1):
209
210
221
222
223
224
225 -class Spin2(aloha_lib.LorentzObject):
226 """ Helas Object for a Spin2"""
227
228 - def __init__(self, lorentz, spin, particle, prefactor=1):
234
236
237 self.sub00 = aloha_lib.ScalarVariable('R%s_1' % self.particle)
238 self.sub01 = aloha_lib.ScalarVariable('R%s_2' % self.particle)
239 self.sub02 = aloha_lib.ScalarVariable('R%s_3' % self.particle)
240 self.sub03 = aloha_lib.ScalarVariable('R%s_4' % self.particle)
241
242 self.sub10 = aloha_lib.ScalarVariable('R%s_5' % self.particle)
243 self.sub11 = aloha_lib.ScalarVariable('R%s_6' % self.particle)
244 self.sub12 = aloha_lib.ScalarVariable('R%s_7' % self.particle)
245 self.sub13 = aloha_lib.ScalarVariable('R%s_8' % self.particle)
246
247 self.sub20 = aloha_lib.ScalarVariable('R%s_9' % self.particle)
248 self.sub21 = aloha_lib.ScalarVariable('R%s_10' % self.particle)
249 self.sub22 = aloha_lib.ScalarVariable('R%s_11' % self.particle)
250 self.sub23 = aloha_lib.ScalarVariable('R%s_12' % self.particle)
251
252 self.sub30 = aloha_lib.ScalarVariable('R%s_13' % self.particle)
253 self.sub31 = aloha_lib.ScalarVariable('R%s_14' % self.particle)
254 self.sub32 = aloha_lib.ScalarVariable('R%s_15' % self.particle)
255 self.sub33 = aloha_lib.ScalarVariable('R%s_16' % self.particle)
256
257 rep = {(0,0): self.sub00, (0,1): self.sub01, (0,2): self.sub02, (0,3): self.sub03,
258 (1,0): self.sub10, (1,1): self.sub11, (1,2): self.sub12, (1,3): self.sub13,
259 (2,0): self.sub20, (2,1): self.sub21, (2,2): self.sub22, (2,3): self.sub23,
260 (3,0): self.sub30, (3,1): self.sub31, (3,2): self.sub32, (3,3): self.sub33}
261
262
263 self.representation= aloha_lib.LorentzObjectRepresentation( rep, \
264 self.lorentz_ind, self.spin_ind)
265
266
267
268
269
270 -class Spin2(aloha_lib.LorentzObject):
271 """ Helas Object for a Spin2"""
272
273 - def __init__(self, lorentz1, lorentz2, particle, prefactor=1):
281
283
284 self.sub00 = aloha_lib.ScalarVariable('T%s_1' % self.particle)
285 self.sub01 = aloha_lib.ScalarVariable('T%s_2' % self.particle)
286 self.sub02 = aloha_lib.ScalarVariable('T%s_3' % self.particle)
287 self.sub03 = aloha_lib.ScalarVariable('T%s_4' % self.particle)
288
289 self.sub10 = aloha_lib.ScalarVariable('T%s_5' % self.particle)
290 self.sub11 = aloha_lib.ScalarVariable('T%s_6' % self.particle)
291 self.sub12 = aloha_lib.ScalarVariable('T%s_7' % self.particle)
292 self.sub13 = aloha_lib.ScalarVariable('T%s_8' % self.particle)
293
294 self.sub20 = aloha_lib.ScalarVariable('T%s_9' % self.particle)
295 self.sub21 = aloha_lib.ScalarVariable('T%s_10' % self.particle)
296 self.sub22 = aloha_lib.ScalarVariable('T%s_11' % self.particle)
297 self.sub23 = aloha_lib.ScalarVariable('T%s_12' % self.particle)
298
299 self.sub30 = aloha_lib.ScalarVariable('T%s_13' % self.particle)
300 self.sub31 = aloha_lib.ScalarVariable('T%s_14' % self.particle)
301 self.sub32 = aloha_lib.ScalarVariable('T%s_15' % self.particle)
302 self.sub33 = aloha_lib.ScalarVariable('T%s_16' % self.particle)
303
304 rep = {(0,0): self.sub00, (0,1): self.sub01, (0,2): self.sub02, (0,3): self.sub03,
305 (1,0): self.sub10, (1,1): self.sub11, (1,2): self.sub12, (1,3): self.sub13,
306 (2,0): self.sub20, (2,1): self.sub21, (2,2): self.sub22, (2,3): self.sub23,
307 (3,0): self.sub30, (3,1): self.sub31, (3,2): self.sub32, (3,3): self.sub33}
308
309
310 self.representation= aloha_lib.LorentzObjectRepresentation( rep, \
311 self.lorentz_ind, [])
312
313
314
315
316 -class Gamma(aloha_lib.LorentzObject):
317 """ Gamma Matrices """
318
319
320
321
322
323
324
325
326 gamma = {
327 (0, 0, 0): 0, (0, 0, 1): 0, (0, 0, 2): 1, (0, 0, 3): 0,
328 (0, 1, 0): 0, (0, 1, 1): 0, (0, 1, 2): 0, (0, 1, 3): 1,
329 (0, 2, 0): 1, (0, 2, 1): 0, (0, 2, 2): 0, (0, 2, 3): 0,
330 (0, 3, 0): 0, (0, 3, 1): 1, (0, 3, 2): 0, (0, 3, 3): 0,
331
332 (1, 0, 0): 0, (1, 0, 1): 0, (1, 0, 2): 0, (1, 0, 3): 1,
333 (1, 1, 0): 0, (1, 1, 1): 0, (1, 1, 2): 1, (1, 1, 3): 0,
334 (1, 2, 0): 0, (1, 2, 1): -1, (1, 2, 2): 0, (1, 2, 3): 0,
335 (1, 3, 0): -1, (1, 3, 1): 0, (1, 3, 2): 0, (1, 3, 3): 0,
336
337 (2, 0, 0): 0, (2, 0, 1): 0, (2, 0, 2): 0, (2, 0, 3): -1j,
338 (2, 1, 0): 0, (2, 1, 1): 0, (2, 1, 2): 1j, (2, 1, 3): 0,
339 (2, 2, 0): 0, (2, 2, 1): 1j, (2, 2, 2): 0, (2, 2, 3): 0,
340 (2, 3, 0): -1j, (2, 3, 1): 0, (2, 3, 2): 0, (2, 3, 3): 0,
341
342 (3, 0, 0): 0, (3, 0, 1): 0, (3, 0, 2): 1, (3, 0, 3): 0,
343 (3, 1, 0): 0, (3, 1, 1): 0, (3, 1, 2): 0, (3, 1, 3): -1,
344 (3, 2, 0): -1, (3, 2, 1): 0, (3, 2, 2): 0, (3, 2, 3): 0,
345 (3, 3, 0): 0, (3, 3, 1): 1, (3, 3, 2): 0, (3, 3, 3): 0
346 }
347
348
349
350
351
352 - def __init__(self, lorentz, spin1, spin2, prefactor=1):
355
360
361
362
363
364 -class Sigma(aloha_lib.LorentzObject):
365 """ Sigma Matrices """
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391 sigma={(0, 2, 0, 1): -0.5, (3, 1, 2, 0): 0, (3, 2, 3, 1): 0, (1, 3, 1, 3): 0,
392 (2, 3, 3, 2): 0.5, (2, 1, 3, 1): 0, (0, 2, 2, 1): 0, (3, 1, 0, 0): 0,
393 (2, 3, 3, 1): 0, (3, 3, 1, 2): 0, (3, 1, 0, 3): 0, (1, 1, 0, 3): 0,
394 (0, 1, 2, 2): 0, (3, 2, 3, 2): -0.5, (2, 1, 0, 1): 0, (3, 3, 3, 3): 0,
395 (1, 1, 2, 2): 0, (2, 2, 3, 2): 0, (2, 1, 2, 1): 0, (0, 1, 0, 3): 0,
396 (2, 1, 2, 2): -0.5, (1, 2, 2, 1): 0, (2, 2, 1, 3): 0, (0, 3, 1, 3): 0,
397 (3, 0, 3, 2): 0, (1, 2, 0, 1): 0, (3, 0, 3, 1): 0, (0, 0, 2, 2): 0,
398 (1, 2, 0, 2): 0, (2, 0, 0, 3): 0, (0, 0, 2, 1): 0, (0, 3, 3, 2): 0,
399 (3, 0, 1, 1): -0.5j, (3, 2, 0, 1): -0.5, (1, 0, 1, 0): 0.5j, (0, 0, 0, 1): 0,
400 (0, 2, 1, 1): 0, (3, 1, 3, 2): 0.5j, (3, 2, 2, 1): 0, (1, 3, 2, 3): 0.5j,
401 (1, 0, 3, 0): 0, (3, 2, 2, 2): 0, (0, 2, 3, 1): 0, (1, 0, 3, 3): 0,
402 (2, 3, 2, 1): 0, (0, 2, 3, 2): -0.5, (3, 1, 1, 3): 0, (1, 1, 1, 3): 0,
403 (1, 3, 0, 2): 0, (2, 3, 0, 1): 0.5, (1, 1, 1, 0): 0, (2, 3, 0, 2): 0,
404 (3, 3, 0, 3): 0, (1, 1, 3, 0): 0, (0, 1, 3, 3): 0, (2, 2, 0, 1): 0,
405 (2, 1, 1, 0): 0, (3, 3, 2, 2): 0, (2, 3, 1, 0): 0.5, (2, 2, 2, 3): 0,
406 (0, 3, 0, 3): 0, (0, 1, 1, 2): 0, (0, 3, 0, 0): -0.5j, (2, 3, 1, 1): 0,
407 (1, 2, 3, 0): 0, (2, 0, 1, 3): 0, (0, 0, 3, 1): 0, (0, 3, 2, 0): 0,
408 (2, 3, 1, 2): 0, (2, 0, 1, 0): -0.5, (1, 2, 1, 0): 0, (3, 0, 0, 2): 0,
409 (1, 0, 0, 2): 0, (0, 0, 1, 1): 0, (1, 2, 1, 3): 0, (2, 3, 1, 3): 0,
410 (2, 0, 3, 0): 0, (0, 0, 1, 2): 0, (1, 3, 3, 3): 0, (3, 2, 1, 0): -0.5,
411 (1, 3, 3, 0): 0, (1, 0, 2, 3): -0.5j, (0, 2, 0, 0): 0, (3, 1, 2, 3): -0.5j,
412 (3, 2, 3, 0): 0, (1, 3, 1, 0): -0.5j, (3, 2, 3, 3): 0, (0, 2, 2, 0): 0,
413 (2, 3, 3, 0): 0, (3, 3, 1, 3): 0, (0, 2, 2, 3): 0.5, (3, 1, 0, 2): 0,
414 (1, 1, 0, 2): 0, (3, 3, 1, 0): 0, (0, 1, 2, 3): 0.5j, (1, 1, 0, 1): 0,
415 (2, 1, 0, 2): 0, (0, 1, 2, 0): 0, (3, 3, 3, 0): 0, (1, 1, 2, 1): 0,
416 (2, 2, 3, 3): 0, (0, 1, 0, 0): 0, (2, 2, 3, 0): 0, (2, 1, 2, 3): 0,
417 (1, 2, 2, 2): 0.5, (2, 2, 1, 0): 0, (0, 3, 1, 2): 0, (0, 3, 1, 1): 0.5j,
418 (3, 0, 3, 0): 0, (1, 2, 0, 3): 0, (2, 0, 0, 2): 0, (0, 0, 2, 0): 0,
419 (0, 3, 3, 1): 0, (3, 0, 1, 0): 0, (2, 0, 0, 1): 0.5, (3, 2, 0, 2): 0,
420 (3, 0, 1, 3): 0, (1, 0, 1, 3): 0, (0, 0, 0, 0): 0, (0, 2, 1, 2): 0,
421 (3, 1, 3, 3): 0, (0, 0, 0, 3): 0, (1, 3, 2, 2): 0, (3, 1, 3, 0): 0,
422 (3, 2, 2, 3): -0.5, (1, 3, 2, 1): 0, (1, 0, 3, 2): -0.5j, (2, 3, 2, 2): 0,
423 (0, 2, 3, 3): 0, (3, 1, 1, 0): 0.5j, (1, 3, 0, 1): 0.5j, (1, 1, 1, 1): 0,
424 (2, 1, 3, 2): 0, (2, 3, 0, 3): 0, (3, 3, 0, 2): 0, (1, 1, 3, 1): 0,
425 (3, 3, 0, 1): 0, (2, 1, 3, 3): 0.5, (0, 1, 3, 2): 0.5j, (1, 1, 3, 2): 0,
426 (2, 1, 1, 3): 0, (3, 0, 2, 1): 0, (0, 1, 3, 1): 0, (3, 3, 2, 1): 0,
427 (2, 2, 2, 2): 0, (0, 1, 1, 1): 0, (2, 2, 2, 1): 0, (0, 3, 0, 1): 0,
428 (3, 0, 2, 2): -0.5j, (1, 2, 3, 3): -0.5, (0, 0, 3, 2): 0, (0, 3, 2, 1): 0,
429 (2, 0, 1, 1): 0, (2, 2, 0, 0): 0, (0, 3, 2, 2): 0.5j, (3, 0, 0, 3): 0,
430 (1, 0, 0, 3): 0, (1, 2, 1, 2): 0, (2, 0, 3, 1): 0, (1, 0, 0, 0): 0,
431 (0, 0, 1, 3): 0, (2, 0, 3, 2): 0.5, (3, 2, 1, 3): 0, (1, 3, 3, 1): 0,
432 (1, 0, 2, 0): 0, (2, 2, 0, 2): 0, (0, 2, 0, 3): 0, (3, 1, 2, 2): 0,
433 (1, 3, 1, 1): 0, (3, 1, 2, 1): 0, (2, 2, 0, 3): 0, (3, 0, 0, 1): 0,
434 (1, 3, 1, 2): 0, (2, 3, 3, 3): 0, (0, 2, 2, 2): 0, (3, 1, 0, 1): -0.5j,
435 (3, 3, 1, 1): 0, (1, 1, 0, 0): 0, (2, 1, 0, 3): 0, (0, 1, 2, 1): 0,
436 (3, 3, 3, 1): 0, (2, 1, 0, 0): -0.5, (1, 1, 2, 0): 0, (3, 3, 3, 2): 0,
437 (0, 1, 0, 1): -0.5j, (1, 1, 2, 3): 0, (2, 2, 3, 1): 0, (2, 1, 2, 0): 0,
438 (0, 1, 0, 2): 0, (1, 2, 2, 3): 0, (2, 0, 2, 1): 0, (2, 2, 1, 1): 0,
439 (1, 2, 2, 0): 0, (2, 2, 1, 2): 0, (0, 3, 1, 0): 0, (3, 0, 3, 3): 0.5j,
440 (2, 1, 3, 0): 0, (1, 2, 0, 0): 0.5, (0, 0, 2, 3): 0, (0, 3, 3, 0): 0,
441 (2, 0, 0, 0): 0, (3, 2, 0, 3): 0, (0, 3, 3, 3): -0.5j, (3, 0, 1, 2): 0,
442 (1, 0, 1, 2): 0, (3, 2, 0, 0): 0, (0, 2, 1, 3): 0, (1, 0, 1, 1): 0,
443 (0, 0, 0, 2): 0, (0, 2, 1, 0): 0.5, (3, 1, 3, 1): 0, (3, 2, 2, 0): 0,
444 (1, 3, 2, 0): 0, (1, 0, 3, 1): 0, (2, 3, 2, 3): 0.5, (0, 2, 3, 0): 0,
445 (3, 1, 1, 1): 0, (2, 3, 2, 0): 0, (1, 3, 0, 0): 0, (3, 1, 1, 2): 0,
446 (1, 1, 1, 2): 0, (1, 3, 0, 3): 0, (2, 3, 0, 0): 0, (2, 0, 2, 0): 0,
447 (3, 3, 0, 0): 0, (1, 1, 3, 3): 0, (2, 1, 1, 2): 0, (0, 1, 3, 0): 0,
448 (3, 3, 2, 0): 0, (2, 1, 1, 1): 0.5, (2, 0, 2, 2): 0, (3, 3, 2, 3): 0,
449 (0, 1, 1, 0): -0.5j, (2, 2, 2, 0): 0, (0, 3, 0, 2): 0, (3, 0, 2, 3): 0,
450 (0, 1, 1, 3): 0, (2, 0, 2, 3): -0.5, (1, 2, 3, 2): 0, (3, 0, 2, 0): 0,
451 (0, 0, 3, 3): 0, (1, 2, 3, 1): 0, (2, 0, 1, 2): 0, (0, 0, 3, 0): 0,
452 (0, 3, 2, 3): 0, (3, 0, 0, 0): 0.5j, (1, 2, 1, 1): -0.5, (1, 0, 0, 1): 0.5j,
453 (0, 0, 1, 0): 0, (2, 0, 3, 3): 0, (3, 2, 1, 2): 0, (1, 3, 3, 2): -0.5j,
454 (1, 0, 2, 1): 0, (3, 2, 1, 1): 0, (0, 2, 0, 2): 0, (1, 0, 2, 2): 0}
455
456 - def __init__(self, lorentz1, lorentz2, spin1, spin2, prefactor=1):
457 if lorentz1 < lorentz2:
458 aloha_lib.LorentzObject.__init__(self,[lorentz1, lorentz2], \
459 [spin1, spin2], prefactor=prefactor)
460 else:
461 aloha_lib.LorentzObject.__init__(self,[lorentz2, lorentz1],
462 [spin1, spin2], prefactor=-prefactor)
463
468
469
470
471
472 -class Gamma5(aloha_lib.LorentzObject):
473
474
475 gamma5 = {(0,0): -1, (0,1): 0, (0,2): 0, (0,3): 0,\
476 (1,0): 0, (1,1): -1, (1,2): 0, (1,3): 0,\
477 (2,0): 0, (2,1): 0, (2,2): 1, (2,3): 0,\
478 (3,0): 0, (3,1): 0, (3,2): 0, (3,3): 1}
479
480 - def __init__(self, spin1, spin2, prefactor=1):
485
490
491
492
493
494 -class C(aloha_lib.LorentzObject):
495
496
497
498 Cmetrix = {(0,0): 0, (0,1): -1, (0,2): 0, (0,3): 0,\
499 (1,0): 1, (1,1): 0, (1,2): 0, (1,3): 0,\
500 (2,0): 0, (2,1): 0, (2,2): 0, (2,3): 1,\
501 (3,0): 0, (3,1): 0, (3,2): -1, (3,3): 0}
502
503 - def __init__(self, spin1, spin2, prefactor=1):
509
513
514
515
516
517
518
519
521 """Check if 2 permutations are of equal parity.
522
523 Assume that both permutation lists are of equal length
524 and have the same elements. No need to check for these
525 conditions.
526 """
527 assert len(perm0) == len(perm1)
528
529 perm1 = list(perm1)
530 perm1_map = dict((v, i) for i,v in enumerate(perm1))
531
532 transCount = 0
533 for loc, p0 in enumerate(perm0):
534 p1 = perm1[loc]
535 if p0 != p1:
536 sloc = perm1_map[p0]
537 perm1[loc], perm1[sloc] = p0, p1
538 perm1_map[p0], perm1_map[p1] = loc, sloc
539 transCount += 1
540
541
542 return -2 * (transCount % 2) + 1
543
544
545 -class Epsilon(aloha_lib.LorentzObject):
546 """ The fully anti-symmetric object in Lorentz-Space """
547
549 """return the parity of the permutation"""
550 assert set(perm) == set([0,1,2,3])
551
552 i1 , i2, i3, i4 = perm
553
554 return -1 * ((i2-i1) * (i3-i1) *(i4-i1) * (i3-i2) * (i4-i2) *(i4-i3))/12
555
556
557
558 - def __init__(self, lorentz1, lorentz2, lorentz3, lorentz4, prefactor=1):
568
569
571
572 if not hasattr(self, 'epsilon'):
573
574 epsilon = dict( ((l1, l2, l3, l4), 0)
575 for l1 in range(4) \
576 for l2 in range(4) \
577 for l3 in range(4) \
578 for l4 in range(4))
579
580 epsilon.update(dict(
581 ((l1, l2, l3, l4), self.give_parity((l1,l2,l3,l4)))
582 for l1 in range(4) \
583 for l2 in range(4) if l2 != l1\
584 for l3 in range(4) if l3 not in [l1,l2]\
585 for l4 in range(4) if l4 not in [l1,l2,l3]))
586
587 Epsilon.epsilon = epsilon
588
589
590
591 self.representation = aloha_lib.LorentzObjectRepresentation(self.epsilon,
592 self.lorentz_ind,self.spin_ind)
593
594
595
596
597
598
599 -class Metric(aloha_lib.LorentzObject):
600
601 metric = {(0,0): 1, (0,1): 0, (0,2): 0, (0,3): 0,\
602 (1,0): 0, (1,1): -1, (1,2): 0, (1,3): 0,\
603 (2,0): 0, (2,1): 0, (2,2): -1, (2,3): 0,\
604 (3,0): 0, (3,1): 0, (3,2): 0, (3,3): -1}
605
606
607
608
609 - def __init__(self, lorentz1, lorentz2, prefactor=1):
614
619
621 """Expand the content information. We overload the basic rules in order
622 to avoid the computation of Metric(1,2) * Metric(1,2) = 4"""
623
624 if self.power == 2:
625 return aloha_lib.ConstantObject(4)
626 else:
627 try:
628 return self.prefactor * self.representation
629 except:
630 self.create_representation()
631 return self.prefactor * self.representation
632
634 """Return the Denominator in a abstract way"""
635
636 if self.power == 2:
637 return aloha_lib.ConstantObject(4)
638 else:
639 return self
640
641
642
643
644
645
646 -class Identity(aloha_lib.LorentzObject):
647
648
649 identity = {(0,0): 1, (0,1): 0, (0,2): 0, (0,3): 0,\
650 (1,0): 0, (1,1): 1, (1,2): 0, (1,3): 0,\
651 (2,0): 0, (2,1): 0, (2,2): 1, (2,3): 0,\
652 (3,0): 0, (3,1): 0, (3,2): 0, (3,3): 1}
653
654 - def __init__(self, spin1, spin2, prefactor=1):
659
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685 -class ProjM(aloha_lib.LorentzObject):
686 """ A object for (1-gamma5)/2 """
687
688
689 projm= {(0,0): 1, (0,1): 0, (0,2): 0, (0,3): 0,\
690 (1,0): 0, (1,1): 1, (1,2): 0, (1,3): 0,\
691 (2,0): 0, (2,1): 0, (2,2): 0, (2,3): 0,\
692 (3,0): 0, (3,1): 0, (3,2): 0, (3,3): 0}
693
694 - def __init__(self,spin1, spin2, prefactor=1):
700
701
706
707
708
709
710
711 -class ProjP(aloha_lib.LorentzObject):
712 """A object for (1+gamma5)/2 """
713
714
715 projp = {(0,0): 0, (0,1): 0, (0,2): 0, (0,3): 0,\
716 (1,0): 0, (1,1): 0, (1,2): 0, (1,3): 0,\
717 (2,0): 0, (2,1): 0, (2,2): 1, (2,3): 0,\
718 (3,0): 0, (3,1): 0, (3,2): 0, (3,3): 1}
719
720 - def __init__(self,spin1, spin2, prefactor=1):
726
727
732
733
734
735
737 """The Denominator of the Propagator"""
738
739 - def __init__(self, particle, prefactor=1):
745
747 """Return the Denominator in a abstract way"""
748
749 mass = Mass(self.particle)
750 width = Width(self.particle)
751 denominator = P('i1', self.particle) * P('i1', self.particle) - \
752 mass * mass + complex(0,1) * mass* width
753
754 return denominator
755
757 """Create the representation for the Vector propagator"""
758
759 object = self.simplify()
760 self.representation = object.expand()
761
762
763
764
765
766
767
768
769 SpinorPropagator = lambda spin1, spin2, particle: complex(0,1) * (Gamma('mu', spin1, spin2) * \
770 P('mu', particle) + Mass(particle) * Identity(spin1, spin2))
771
772 VectorPropagator = lambda l1, l2, part: complex(0,1) * (-1 * Metric(l1, l2) + OverMass2(part) * \
773 Metric(l1,'I3')* P('I3', part) * P(l2, part))
774
775
776
777
778
779
780
781 Spin3halfPropagator = lambda mu, nu, s1, s2, part: - 1/3 * (Gamma(mu,s1,-2) + Identity(s1, -2) * P(mu, part) * Mass(part) * OverMass2(part))* \
782 (PSlash(-2,-3, part) - Identity(-2,-3) * Mass(part)) * \
783 ( Gamma(nu, -3, s2)+ Mass(part) * OverMass2(part) * Identity(-3, s2) * P(nu, part) )
784
785 Spin3halfPropagator = lambda mu, nu, s1, s2, part: - 1/3 * (Gamma(mu,s1,-2) + Identity(s1, -2) * P(mu, part) * Mass(part) * OverMass2(part))* \
786 (PSlash(-2,-3, part) - Identity(-2,-3) * Mass(part)) * \
787 ( Gamma(nu, -3, s2)+ Mass(part) * OverMass2(part) * Identity(-3, s2) * P(nu, part) )
788
789
790 Spin2masslessPropagator = lambda mu, nu, alpha, beta: complex(0,1/2)*( Metric(mu, alpha)* Metric(nu, beta) +\
791 Metric(mu, beta) * Metric(nu, alpha) - Metric(mu, nu) * Metric(alpha, beta))
792
793
794
795 Spin2Propagator = lambda mu, nu, alpha, beta, part: Spin2masslessPropagator(mu, nu, alpha, beta) + \
796 -complex(0, 1/2) * OverMass2(part) * (Metric(mu,alpha)* P(nu, part) * P(beta, part) + \
797 Metric(nu, beta) * P(mu, part) * P(alpha, part) + \
798 Metric(mu, beta) * P(nu, part) * P(alpha, part) + \
799 Metric(nu, alpha) * P(mu, part) * P(beta , part) )+ \
800 complex(0, 1/6) * (Metric(mu,nu) + 2 * OverMass2(part) * P(mu, part) * P(nu, part)) * \
801 (Metric(alpha,beta) + 2 * OverMass2(part) * P(alpha, part) * P(beta, part))
802