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 import aloha
35 import cmath
36
37
38
39
40 -class L_P(aloha_lib.LorentzObject):
41 """ Helas Object for an Impulsion """
42
43 contract_first = 1
44
45 - def __init__(self, name, lorentz1, particle):
49
60
61
62 -class P(aloha_lib.FactoryLorentz):
63 """ Helas Object for an Impulsion """
64
65 object_class = L_P
66
67
68 @classmethod
70 return '_P^%s_%s' % (particle, lorentz1)
71
72
73
74
75
76
77 -class L_PBar(aloha_lib.LorentzObject):
78 """ Helas Object for an Impulsion """
79
80 contract_first = 1
81
82 - def __init__(self, name, lorentz1, particle):
86
97
98
99 -class PBar(aloha_lib.FactoryLorentz):
100 """ Helas Object for an Impulsion """
101
102 object_class = L_PBar
103
104
105 @classmethod
107 return '_PB^%s_%s' % (particle, lorentz1)
108
109
110
111
112 -class L_PVec(aloha_lib.LorentzObject):
113 """ Helas Object for an Impulsion """
114
115 contract_first = 1
116
117 - def __init__(self, name, lorentz1, particle):
121
132
133
134 -class PVec(aloha_lib.FactoryLorentz):
135 """ Helas Object for an Impulsion """
136
137 object_class = L_PVec
138
139
140 @classmethod
142 return '_Pvec^%s_%s' % (particle, lorentz1)
143
144
145
146
147
148
149 -class L_Tnorm(aloha_lib.LorentzObject):
150 """ Helas Object for DSQRT(Px^2+Py^2+pz^2) """
151
155
161
162 -class Tnorm(aloha_lib.FactoryLorentz):
163
164 object_class = L_Tnorm
165
166 @classmethod
168 return '_tnorm_%s' % particle
169
170
171
172
173 -class L_TnormZ(aloha_lib.LorentzObject):
174 """ Helas Object for DSQRT(Px^2+Py^2+pz^2) + PZ """
175
179
185
186 -class TnormZ(aloha_lib.FactoryLorentz):
187
188 object_class = L_TnormZ
189
190 @classmethod
192 return '_tnormz_%s' % particle
193
194
195
196
197 -class L_FermionWP(aloha_lib.LorentzObject):
198 """ Helas Object for DSQRT(Px^2+Py^2+pz^2) """
199
203
209
211
212 object_class = L_FermionWP
213
214 @classmethod
216 return '_FermionWP_%s' % particle
217
218
219
220
221 -class L_FermionWM(aloha_lib.LorentzObject):
222 """ Helas Object for DSQRT(Px^2+Py^2+pz^2) """
223
227
233
235
236 object_class = L_FermionWM
237
238 @classmethod
240 return '_FermionWM_%s' % particle
241
242
243
244
245
246 -class L_PSlash(aloha_lib.LorentzObject):
247 """ Gamma Matrices """
248
249
250
251
252
253
254
255
256
257 - def __init__(self, name, spin1, spin2, particle):
261
263 """create representation"""
264 p0 = aloha_lib.DVariable('P%s_0' % self.particle)
265 p1 = aloha_lib.DVariable('P%s_1' % self.particle)
266 p2 = aloha_lib.DVariable('P%s_2' % self.particle)
267 p3 = aloha_lib.DVariable('P%s_3' % self.particle)
268
269
270 gamma = {
271 (0, 0): 0, (0, 1): 0, (0, 2): p0-p3, (0, 3): -1*p1+1j*p2,
272 (1, 0): 0, (1, 1): 0, (1, 2): -1*p1-1j*p2, (1, 3): p0+p3,
273 (2, 0): p0+p3, (2, 1): p1-1j*p2, (2, 2): 0, (2, 3): 0,
274 (3, 0): p1+1j*p2, (3, 1): p0-p3, (3, 2): 0, (3, 3): 0}
275
276
277 self.representation = aloha_lib.LorentzObjectRepresentation(gamma,
278 self.lorentz_ind,self.spin_ind)
279
280 -class PSlash(aloha_lib.FactoryLorentz):
281
282 object_class = L_PSlash
283
284 @classmethod
286 return '_P%s/_%s_%s' % (particle, spin1,spin2)
287
288
289
290
291
292 -class L_Mass(aloha_lib.LorentzObject):
293 """ Helas Object for a Mass"""
294
295
299
305
306 -class Mass(aloha_lib.FactoryLorentz):
307
308 object_class = L_Mass
309
310 @classmethod
312 return '_M%s' % particle
313
314
315
316
317 -class L_Coup(aloha_lib.LorentzObject):
318 """ Helas Object for a Mass"""
319
320
324
330
331 -class Coup(aloha_lib.FactoryLorentz):
332
333 object_class = L_Coup
334
335 @classmethod
338
339
340
341
342
343 -class L_FCT(aloha_lib.LorentzObject):
344 """ Helas Object for a Mass"""
345
346
350
356
357 -class FCT(aloha_lib.FactoryLorentz):
358
359 object_class = L_FCT
360
361 @classmethod
363
364 return '_FCT%s' % name
365
366
367
368
369
370 -class L_OverMass2(aloha_lib.LorentzObject):
371 """ Helas Object for 1/M**2 """
372
376
382
384
385 object_class = L_OverMass2
386
387 @classmethod
389 return '_OM2_%s' % particle
390
391
392
393
394
395 -class L_PT(aloha_lib.LorentzObject):
396 """ Helas Object for an Impulsion """
397
398 contract_first = 1
399
400 - def __init__(self, name, lorentz1, particle):
404
415
416
417 -class PT(aloha_lib.FactoryLorentz):
418 """ Helas Object for an Impulsion """
419
420 object_class = L_PT
421
422
423 @classmethod
425 return '_PT^%s_%s' % (particle, lorentz1)
426
427
428
429
430
431
432
433 -class L_Width(aloha_lib.LorentzObject):
434 """ Helas Object for an Impulsion """
435
436
440
446
447 -class Width(aloha_lib.FactoryLorentz):
448
449 object_class = L_Width
450
451 @classmethod
453 return '_W%s' % particle
454
455
456
457
458 -class L_Param(aloha_lib.LorentzObject):
459 """ Object for a Model Parameter """
460
461
465
471
472 -class Param(aloha_lib.FactoryLorentz):
473
474 object_class = L_Param
475
476 @classmethod
478 if name == 'Pi':
479 KERNEL.has_pi = True
480 return 'Param_%s' % name
481
482
483
484
485 -class L_Scalar(aloha_lib.LorentzObject):
486 """ Helas Object for a Spinor"""
487
488
492
493
494
499
500 -class Scalar(aloha_lib.FactoryLorentz):
501
502 object_class = L_Scalar
503
504 @classmethod
506 return '_S%s' % particle
507
508
509
510 -class L_Spinor(aloha_lib.LorentzObject):
518
529
530 -class Spinor(aloha_lib.FactoryLorentz):
531 """ Helas Object for a Spinor"""
532
533 object_class = L_Spinor
534
535 @classmethod
537 return '_F%s_%s' % (particle,spin1)
538
539
540
541
542 -class L_Vector(aloha_lib.LorentzObject):
543 """ Helas Object for a Vector"""
544
545 contract_first = 1
546
547 - def __init__(self, name, lorentz, particle):
551
562
563 -class Vector(aloha_lib.FactoryLorentz):
564
565 object_class = L_Vector
566
567 @classmethod
569 return '_V%s_%s' % (particle, lor)
570
571
572
573
574 -class L_Spin3Half(aloha_lib.LorentzObject):
575 """ Helas Object for a Spin2"""
576
577 - def __init__(self, name, lorentz, spin, particle):
581
582
584
585 self.sub00 = aloha_lib.Variable('R%s_1' % self.particle)
586 self.sub01 = aloha_lib.Variable('R%s_2' % self.particle)
587 self.sub02 = aloha_lib.Variable('R%s_3' % self.particle)
588 self.sub03 = aloha_lib.Variable('R%s_4' % self.particle)
589
590 self.sub10 = aloha_lib.Variable('R%s_5' % self.particle)
591 self.sub11 = aloha_lib.Variable('R%s_6' % self.particle)
592 self.sub12 = aloha_lib.Variable('R%s_7' % self.particle)
593 self.sub13 = aloha_lib.Variable('R%s_8' % self.particle)
594
595 self.sub20 = aloha_lib.Variable('R%s_9' % self.particle)
596 self.sub21 = aloha_lib.Variable('R%s_10' % self.particle)
597 self.sub22 = aloha_lib.Variable('R%s_11' % self.particle)
598 self.sub23 = aloha_lib.Variable('R%s_12' % self.particle)
599
600 self.sub30 = aloha_lib.Variable('R%s_13' % self.particle)
601 self.sub31 = aloha_lib.Variable('R%s_14' % self.particle)
602 self.sub32 = aloha_lib.Variable('R%s_15' % self.particle)
603 self.sub33 = aloha_lib.Variable('R%s_16' % self.particle)
604
605 rep = {(0,0): self.sub00, (0,1): self.sub01, (0,2): self.sub02, (0,3): self.sub03,
606 (1,0): self.sub10, (1,1): self.sub11, (1,2): self.sub12, (1,3): self.sub13,
607 (2,0): self.sub20, (2,1): self.sub21, (2,2): self.sub22, (2,3): self.sub23,
608 (3,0): self.sub30, (3,1): self.sub31, (3,2): self.sub32, (3,3): self.sub33}
609
610
611 self.representation= aloha_lib.LorentzObjectRepresentation( rep, \
612 self.lorentz_ind, self.spin_ind)
613
615
616 object_class = L_Spin3Half
617
618 @classmethod
620 return 'Spin3Half%s^%s_%s' % (part, lor, spin)
621
622
623
624
625 -class L_Spin2(aloha_lib.LorentzObject):
626 """ Helas Object for a Spin2"""
627
628
629 - def __init__(self, name, lorentz1, lorentz2, particle):
633
635
636 self.sub00 = aloha_lib.Variable('T%s_1' % self.particle)
637 self.sub01 = aloha_lib.Variable('T%s_2' % self.particle)
638 self.sub02 = aloha_lib.Variable('T%s_3' % self.particle)
639 self.sub03 = aloha_lib.Variable('T%s_4' % self.particle)
640
641 self.sub10 = aloha_lib.Variable('T%s_5' % self.particle)
642 self.sub11 = aloha_lib.Variable('T%s_6' % self.particle)
643 self.sub12 = aloha_lib.Variable('T%s_7' % self.particle)
644 self.sub13 = aloha_lib.Variable('T%s_8' % self.particle)
645
646 self.sub20 = aloha_lib.Variable('T%s_9' % self.particle)
647 self.sub21 = aloha_lib.Variable('T%s_10' % self.particle)
648 self.sub22 = aloha_lib.Variable('T%s_11' % self.particle)
649 self.sub23 = aloha_lib.Variable('T%s_12' % self.particle)
650
651 self.sub30 = aloha_lib.Variable('T%s_13' % self.particle)
652 self.sub31 = aloha_lib.Variable('T%s_14' % self.particle)
653 self.sub32 = aloha_lib.Variable('T%s_15' % self.particle)
654 self.sub33 = aloha_lib.Variable('T%s_16' % self.particle)
655
656 rep = {(0,0): self.sub00, (0,1): self.sub01, (0,2): self.sub02, (0,3): self.sub03,
657 (1,0): self.sub10, (1,1): self.sub11, (1,2): self.sub12, (1,3): self.sub13,
658 (2,0): self.sub20, (2,1): self.sub21, (2,2): self.sub22, (2,3): self.sub23,
659 (3,0): self.sub30, (3,1): self.sub31, (3,2): self.sub32, (3,3): self.sub33}
660
661
662 self.representation= aloha_lib.LorentzObjectRepresentation( rep, \
663 self.lorentz_ind, [])
664
665 -class Spin2(aloha_lib.FactoryLorentz):
666
667 object_class = L_Spin2
668
669 @classmethod
671 return 'Spin2^%s_%s_%s' % (part, lor1, lor2)
672
673
674
675
676 -class L_Gamma(aloha_lib.LorentzObject):
677 """ Gamma Matrices """
678
679
680
681
682
683
684
685
686 gamma = {
687 (0, 0, 0): 0, (0, 0, 1): 0, (0, 0, 2): 1, (0, 0, 3): 0,
688 (0, 1, 0): 0, (0, 1, 1): 0, (0, 1, 2): 0, (0, 1, 3): 1,
689 (0, 2, 0): 1, (0, 2, 1): 0, (0, 2, 2): 0, (0, 2, 3): 0,
690 (0, 3, 0): 0, (0, 3, 1): 1, (0, 3, 2): 0, (0, 3, 3): 0,
691
692 (1, 0, 0): 0, (1, 0, 1): 0, (1, 0, 2): 0, (1, 0, 3): 1,
693 (1, 1, 0): 0, (1, 1, 1): 0, (1, 1, 2): 1, (1, 1, 3): 0,
694 (1, 2, 0): 0, (1, 2, 1): -1, (1, 2, 2): 0, (1, 2, 3): 0,
695 (1, 3, 0): -1, (1, 3, 1): 0, (1, 3, 2): 0, (1, 3, 3): 0,
696
697 (2, 0, 0): 0, (2, 0, 1): 0, (2, 0, 2): 0, (2, 0, 3): -1j,
698 (2, 1, 0): 0, (2, 1, 1): 0, (2, 1, 2): 1j, (2, 1, 3): 0,
699 (2, 2, 0): 0, (2, 2, 1): 1j, (2, 2, 2): 0, (2, 2, 3): 0,
700 (2, 3, 0): -1j, (2, 3, 1): 0, (2, 3, 2): 0, (2, 3, 3): 0,
701
702 (3, 0, 0): 0, (3, 0, 1): 0, (3, 0, 2): 1, (3, 0, 3): 0,
703 (3, 1, 0): 0, (3, 1, 1): 0, (3, 1, 2): 0, (3, 1, 3): -1,
704 (3, 2, 0): -1, (3, 2, 1): 0, (3, 2, 2): 0, (3, 2, 3): 0,
705 (3, 3, 0): 0, (3, 3, 1): 1, (3, 3, 2): 0, (3, 3, 3): 0
706 }
707
708 - def __init__(self, name, lorentz, spin1, spin2):
710
715
716 -class Gamma(aloha_lib.FactoryLorentz):
717
718 object_class = L_Gamma
719
720 @classmethod
722 return 'Gamma^%s_%s_%s' % (lor, spin1, spin2)
723
724
725
726
727
728 -class L_Sigma(aloha_lib.LorentzObject):
729 """ Sigma Matrices """
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755 sigma={(0, 2, 0, 1): -0.5, (3, 1, 2, 0): 0, (3, 2, 3, 1): 0, (1, 3, 1, 3): 0,
756 (2, 3, 3, 2): 0.5, (2, 1, 3, 1): 0, (0, 2, 2, 1): 0, (3, 1, 0, 0): 0,
757 (2, 3, 3, 1): 0, (3, 3, 1, 2): 0, (3, 1, 0, 3): 0, (1, 1, 0, 3): 0,
758 (0, 1, 2, 2): 0, (3, 2, 3, 2): -0.5, (2, 1, 0, 1): 0, (3, 3, 3, 3): 0,
759 (1, 1, 2, 2): 0, (2, 2, 3, 2): 0, (2, 1, 2, 1): 0, (0, 1, 0, 3): 0,
760 (2, 1, 2, 2): -0.5, (1, 2, 2, 1): 0, (2, 2, 1, 3): 0, (0, 3, 1, 3): 0,
761 (3, 0, 3, 2): 0, (1, 2, 0, 1): 0, (3, 0, 3, 1): 0, (0, 0, 2, 2): 0,
762 (1, 2, 0, 2): 0, (2, 0, 0, 3): 0, (0, 0, 2, 1): 0, (0, 3, 3, 2): 0,
763 (3, 0, 1, 1): -0.5j, (3, 2, 0, 1): -0.5, (1, 0, 1, 0): 0.5j, (0, 0, 0, 1): 0,
764 (0, 2, 1, 1): 0, (3, 1, 3, 2): 0.5j, (3, 2, 2, 1): 0, (1, 3, 2, 3): 0.5j,
765 (1, 0, 3, 0): 0, (3, 2, 2, 2): 0, (0, 2, 3, 1): 0, (1, 0, 3, 3): 0,
766 (2, 3, 2, 1): 0, (0, 2, 3, 2): -0.5, (3, 1, 1, 3): 0, (1, 1, 1, 3): 0,
767 (1, 3, 0, 2): 0, (2, 3, 0, 1): 0.5, (1, 1, 1, 0): 0, (2, 3, 0, 2): 0,
768 (3, 3, 0, 3): 0, (1, 1, 3, 0): 0, (0, 1, 3, 3): 0, (2, 2, 0, 1): 0,
769 (2, 1, 1, 0): 0, (3, 3, 2, 2): 0, (2, 3, 1, 0): 0.5, (2, 2, 2, 3): 0,
770 (0, 3, 0, 3): 0, (0, 1, 1, 2): 0, (0, 3, 0, 0): -0.5j, (2, 3, 1, 1): 0,
771 (1, 2, 3, 0): 0, (2, 0, 1, 3): 0, (0, 0, 3, 1): 0, (0, 3, 2, 0): 0,
772 (2, 3, 1, 2): 0, (2, 0, 1, 0): -0.5, (1, 2, 1, 0): 0, (3, 0, 0, 2): 0,
773 (1, 0, 0, 2): 0, (0, 0, 1, 1): 0, (1, 2, 1, 3): 0, (2, 3, 1, 3): 0,
774 (2, 0, 3, 0): 0, (0, 0, 1, 2): 0, (1, 3, 3, 3): 0, (3, 2, 1, 0): -0.5,
775 (1, 3, 3, 0): 0, (1, 0, 2, 3): -0.5j, (0, 2, 0, 0): 0, (3, 1, 2, 3): -0.5j,
776 (3, 2, 3, 0): 0, (1, 3, 1, 0): -0.5j, (3, 2, 3, 3): 0, (0, 2, 2, 0): 0,
777 (2, 3, 3, 0): 0, (3, 3, 1, 3): 0, (0, 2, 2, 3): 0.5, (3, 1, 0, 2): 0,
778 (1, 1, 0, 2): 0, (3, 3, 1, 0): 0, (0, 1, 2, 3): 0.5j, (1, 1, 0, 1): 0,
779 (2, 1, 0, 2): 0, (0, 1, 2, 0): 0, (3, 3, 3, 0): 0, (1, 1, 2, 1): 0,
780 (2, 2, 3, 3): 0, (0, 1, 0, 0): 0, (2, 2, 3, 0): 0, (2, 1, 2, 3): 0,
781 (1, 2, 2, 2): 0.5, (2, 2, 1, 0): 0, (0, 3, 1, 2): 0, (0, 3, 1, 1): 0.5j,
782 (3, 0, 3, 0): 0, (1, 2, 0, 3): 0, (2, 0, 0, 2): 0, (0, 0, 2, 0): 0,
783 (0, 3, 3, 1): 0, (3, 0, 1, 0): 0, (2, 0, 0, 1): 0.5, (3, 2, 0, 2): 0,
784 (3, 0, 1, 3): 0, (1, 0, 1, 3): 0, (0, 0, 0, 0): 0, (0, 2, 1, 2): 0,
785 (3, 1, 3, 3): 0, (0, 0, 0, 3): 0, (1, 3, 2, 2): 0, (3, 1, 3, 0): 0,
786 (3, 2, 2, 3): -0.5, (1, 3, 2, 1): 0, (1, 0, 3, 2): -0.5j, (2, 3, 2, 2): 0,
787 (0, 2, 3, 3): 0, (3, 1, 1, 0): 0.5j, (1, 3, 0, 1): 0.5j, (1, 1, 1, 1): 0,
788 (2, 1, 3, 2): 0, (2, 3, 0, 3): 0, (3, 3, 0, 2): 0, (1, 1, 3, 1): 0,
789 (3, 3, 0, 1): 0, (2, 1, 3, 3): 0.5, (0, 1, 3, 2): 0.5j, (1, 1, 3, 2): 0,
790 (2, 1, 1, 3): 0, (3, 0, 2, 1): 0, (0, 1, 3, 1): 0, (3, 3, 2, 1): 0,
791 (2, 2, 2, 2): 0, (0, 1, 1, 1): 0, (2, 2, 2, 1): 0, (0, 3, 0, 1): 0,
792 (3, 0, 2, 2): -0.5j, (1, 2, 3, 3): -0.5, (0, 0, 3, 2): 0, (0, 3, 2, 1): 0,
793 (2, 0, 1, 1): 0, (2, 2, 0, 0): 0, (0, 3, 2, 2): 0.5j, (3, 0, 0, 3): 0,
794 (1, 0, 0, 3): 0, (1, 2, 1, 2): 0, (2, 0, 3, 1): 0, (1, 0, 0, 0): 0,
795 (0, 0, 1, 3): 0, (2, 0, 3, 2): 0.5, (3, 2, 1, 3): 0, (1, 3, 3, 1): 0,
796 (1, 0, 2, 0): 0, (2, 2, 0, 2): 0, (0, 2, 0, 3): 0, (3, 1, 2, 2): 0,
797 (1, 3, 1, 1): 0, (3, 1, 2, 1): 0, (2, 2, 0, 3): 0, (3, 0, 0, 1): 0,
798 (1, 3, 1, 2): 0, (2, 3, 3, 3): 0, (0, 2, 2, 2): 0, (3, 1, 0, 1): -0.5j,
799 (3, 3, 1, 1): 0, (1, 1, 0, 0): 0, (2, 1, 0, 3): 0, (0, 1, 2, 1): 0,
800 (3, 3, 3, 1): 0, (2, 1, 0, 0): -0.5, (1, 1, 2, 0): 0, (3, 3, 3, 2): 0,
801 (0, 1, 0, 1): -0.5j, (1, 1, 2, 3): 0, (2, 2, 3, 1): 0, (2, 1, 2, 0): 0,
802 (0, 1, 0, 2): 0, (1, 2, 2, 3): 0, (2, 0, 2, 1): 0, (2, 2, 1, 1): 0,
803 (1, 2, 2, 0): 0, (2, 2, 1, 2): 0, (0, 3, 1, 0): 0, (3, 0, 3, 3): 0.5j,
804 (2, 1, 3, 0): 0, (1, 2, 0, 0): 0.5, (0, 0, 2, 3): 0, (0, 3, 3, 0): 0,
805 (2, 0, 0, 0): 0, (3, 2, 0, 3): 0, (0, 3, 3, 3): -0.5j, (3, 0, 1, 2): 0,
806 (1, 0, 1, 2): 0, (3, 2, 0, 0): 0, (0, 2, 1, 3): 0, (1, 0, 1, 1): 0,
807 (0, 0, 0, 2): 0, (0, 2, 1, 0): 0.5, (3, 1, 3, 1): 0, (3, 2, 2, 0): 0,
808 (1, 3, 2, 0): 0, (1, 0, 3, 1): 0, (2, 3, 2, 3): 0.5, (0, 2, 3, 0): 0,
809 (3, 1, 1, 1): 0, (2, 3, 2, 0): 0, (1, 3, 0, 0): 0, (3, 1, 1, 2): 0,
810 (1, 1, 1, 2): 0, (1, 3, 0, 3): 0, (2, 3, 0, 0): 0, (2, 0, 2, 0): 0,
811 (3, 3, 0, 0): 0, (1, 1, 3, 3): 0, (2, 1, 1, 2): 0, (0, 1, 3, 0): 0,
812 (3, 3, 2, 0): 0, (2, 1, 1, 1): 0.5, (2, 0, 2, 2): 0, (3, 3, 2, 3): 0,
813 (0, 1, 1, 0): -0.5j, (2, 2, 2, 0): 0, (0, 3, 0, 2): 0, (3, 0, 2, 3): 0,
814 (0, 1, 1, 3): 0, (2, 0, 2, 3): -0.5, (1, 2, 3, 2): 0, (3, 0, 2, 0): 0,
815 (0, 0, 3, 3): 0, (1, 2, 3, 1): 0, (2, 0, 1, 2): 0, (0, 0, 3, 0): 0,
816 (0, 3, 2, 3): 0, (3, 0, 0, 0): 0.5j, (1, 2, 1, 1): -0.5, (1, 0, 0, 1): 0.5j,
817 (0, 0, 1, 0): 0, (2, 0, 3, 3): 0, (3, 2, 1, 2): 0, (1, 3, 3, 2): -0.5j,
818 (1, 0, 2, 1): 0, (3, 2, 1, 1): 0, (0, 2, 0, 2): 0, (1, 0, 2, 2): 0}
819
820 - def __init__(self, name, lorentz1, lorentz2, spin1, spin2):
823
828
829 -class Sigma(aloha_lib.FactoryLorentz):
830
831 object_class = L_Sigma
832
833 @classmethod
835 return 'Sigma_[%s,%s]^[%s,%s]' % (spin1, spin2, lorentz1, lorentz2)
836
837
838
839
840
841 -class L_Gamma5(aloha_lib.LorentzObject):
842
843
844 gamma5 = {(0,0): -1, (0,1): 0, (0,2): 0, (0,3): 0,\
845 (1,0): 0, (1,1): -1, (1,2): 0, (1,3): 0,\
846 (2,0): 0, (2,1): 0, (2,2): 1, (2,3): 0,\
847 (3,0): 0, (3,1): 0, (3,2): 0, (3,3): 1}
848
849 - def __init__(self, name, spin1, spin2):
851
856
857 -class Gamma5(aloha_lib.FactoryLorentz):
858
859 object_class = L_Gamma5
860
861 @classmethod
863 return 'Gamma5_%s_%s' % (spin1, spin2)
864
865
866
867
868 -class L_C(aloha_lib.LorentzObject):
869
870
871
872 Cmetrix = {(0,0): 0, (0,1): -1, (0,2): 0, (0,3): 0,\
873 (1,0): 1, (1,1): 0, (1,2): 0, (1,3): 0,\
874 (2,0): 0, (2,1): 0, (2,2): 0, (2,3): 1,\
875 (3,0): 0, (3,1): 0, (3,2): -1, (3,3): 0}
876
882
883
887
888 -class C(aloha_lib.FactoryLorentz):
889
890 object_class = L_C
891
904
905 @classmethod
907 return "C_%s_%s" % tuple(spin_list)
908
914 """Check if 2 permutations are of equal parity.
915
916 Assume that both permutation lists are of equal length
917 and have the same elements. No need to check for these
918 conditions.
919 """
920 assert len(perm0) == len(perm1)
921
922 perm1 = list(perm1)
923 perm1_map = dict((v, i) for i,v in enumerate(perm1))
924
925 transCount = 0
926 for loc, p0 in enumerate(perm0):
927 p1 = perm1[loc]
928 if p0 != p1:
929 sloc = perm1_map[p0]
930 perm1[loc], perm1[sloc] = p0, p1
931 perm1_map[p0], perm1_map[p1] = loc, sloc
932 transCount += 1
933
934
935 return -2 * (transCount % 2) + 1
936
937
938 -class L_Epsilon(aloha_lib.LorentzObject):
939 """ The fully anti-symmetric object in Lorentz-Space """
940
942 """return the parity of the permutation"""
943 assert set(perm) == set([0,1,2,3])
944
945 i1 , i2, i3, i4 = perm
946
947 return -self.sign * ((i2-i1) * (i3-i1) *(i4-i1) * (i3-i2) * (i4-i2) *(i4-i3))/12
948
949
950
951 - def __init__(self, name, lorentz1, lorentz2, lorentz3, lorentz4):
960
961
963
964 if not hasattr(self, 'epsilon'):
965
966 epsilon = dict( ((l1, l2, l3, l4), 0)
967 for l1 in range(4) \
968 for l2 in range(4) \
969 for l3 in range(4) \
970 for l4 in range(4))
971
972 epsilon.update(dict(
973 ((l1, l2, l3, l4), self.give_parity((l1,l2,l3,l4)))
974 for l1 in range(4) \
975 for l2 in range(4) if l2 != l1\
976 for l3 in range(4) if l3 not in [l1,l2]\
977 for l4 in range(4) if l4 not in [l1,l2,l3]))
978
979 L_Epsilon.epsilon = epsilon
980
981 self.representation = aloha_lib.LorentzObjectRepresentation(self.epsilon,
982 self.lorentz_ind,self.spin_ind)
983
984
985 -class Epsilon(aloha_lib.FactoryLorentz):
986
987 object_class = L_Epsilon
988
989 @classmethod
991 return '_EPSILON_%s_%s_%s_%s' % (l1,l2,l3,l4)
992
993
994
995
996
997 -class L_Metric(aloha_lib.LorentzObject):
998
999 metric = {(0,0): 1, (0,1): 0, (0,2): 0, (0,3): 0,\
1000 (1,0): 0, (1,1): -1, (1,2): 0, (1,3): 0,\
1001 (2,0): 0, (2,1): 0, (2,2): -1, (2,3): 0,\
1002 (3,0): 0, (3,1): 0, (3,2): 0, (3,3): -1}
1003
1004
1005
1006
1007 - def __init__(self, name, lorentz1, lorentz2):
1009
1014
1015 -class Metric(aloha_lib.FactoryLorentz):
1016
1017 object_class = L_Metric
1018
1019 @classmethod
1021 if l1<l2:
1022 return '_ETA_%s_%s' % (l1,l2)
1023 else:
1024 return '_ETA_%s_%s' % (l2,l1)
1025
1026
1027
1028 -class L_Identity(aloha_lib.LorentzObject):
1029
1030
1031 identity = {(0,0): 1, (0,1): 0, (0,2): 0, (0,3): 0,\
1032 (1,0): 0, (1,1): 1, (1,2): 0, (1,3): 0,\
1033 (2,0): 0, (2,1): 0, (2,2): 1, (2,3): 0,\
1034 (3,0): 0, (3,1): 0, (3,2): 0, (3,3): 1}
1035
1036
1037 - def __init__(self, name, spin1, spin2):
1039
1044
1045 -class Identity(aloha_lib.FactoryLorentz):
1046
1047 object_class = L_Identity
1048
1049 @classmethod
1051 return 'Id_%s_%s' % (spin1, spin2)
1052
1053
1054
1055
1056 -class L_IdentityL(aloha_lib.LorentzObject):
1057
1058
1059 identity = {(0,0): 1, (0,1): 0, (0,2): 0, (0,3): 0,\
1060 (1,0): 0, (1,1): 1, (1,2): 0, (1,3): 0,\
1061 (2,0): 0, (2,1): 0, (2,2): 1, (2,3): 0,\
1062 (3,0): 0, (3,1): 0, (3,2): 0, (3,3): 1}
1063
1064
1067
1072
1074
1075 object_class = L_IdentityL
1076
1077 @classmethod
1079 return 'IdL_%s_%s' % (l1, l2)
1080
1081
1082
1083
1084 -class L_ProjM(aloha_lib.LorentzObject):
1085 """ A object for (1-gamma5)/2 """
1086
1087
1088 projm= {(0,0): 1, (0,1): 0, (0,2): 0, (0,3): 0,\
1089 (1,0): 0, (1,1): 1, (1,2): 0, (1,3): 0,\
1090 (2,0): 0, (2,1): 0, (2,2): 0, (2,3): 0,\
1091 (3,0): 0, (3,1): 0, (3,2): 0, (3,3): 0}
1092
1093 - def __init__(self,name, spin1, spin2):
1096
1101
1102 -class ProjM(aloha_lib.FactoryLorentz):
1103
1104 object_class = L_ProjM
1105
1106 @classmethod
1108 return 'PROJM_%s_%s' % (spin1, spin2)
1109
1110
1111
1112 -class L_ProjP(aloha_lib.LorentzObject):
1113 """A object for (1+gamma5)/2 """
1114
1115
1116 projp = {(0,0): 0, (0,1): 0, (0,2): 0, (0,3): 0,\
1117 (1,0): 0, (1,1): 0, (1,2): 0, (1,3): 0,\
1118 (2,0): 0, (2,1): 0, (2,2): 1, (2,3): 0,\
1119 (3,0): 0, (3,1): 0, (3,2): 0, (3,3): 1}
1120
1121 - def __init__(self,name, spin1, spin2):
1124
1125
1130
1131 -class ProjP(aloha_lib.FactoryLorentz):
1132
1133 object_class = L_ProjP
1134
1135 @classmethod
1137
1138 return 'PROJP_%s_%s' % (spin1, spin2)
1139
1140
1141
1142
1143 -class L_EPSL(aloha_lib.LorentzObject):
1144 """ eps^mu_L (polarization vector)
1145 (kx**2+ky**2+kz**2, E*kz, E*ky, E*kz)
1146 the normalization 1/m *|\vec{k} is NOT include
1147
1148 """
1149
1150 - def __init__(self, name, lor1, particle):
1154
1156 """create representation"""
1157 E = aloha_lib.DVariable('P%s_0' % self.particle)
1158 m = aloha_lib.DVariable('M%s' % self.particle)
1159 p1 = aloha_lib.DVariable('P%s_1' % self.particle)
1160 p2 = aloha_lib.DVariable('P%s_2' % self.particle)
1161 p3 = aloha_lib.DVariable('P%s_3' % self.particle)
1162
1163
1164 norm = (p1**2+p2**2+p3**2)
1165 eps = {
1166 (0,): norm,
1167 (1,): p1*E,
1168 (2,): p2*E ,
1169 (3,): p3*E ,
1170 }
1171
1172
1173
1174
1175
1176
1177
1178 self.representation = aloha_lib.LorentzObjectRepresentation(eps,
1179 self.lorentz_ind,self.spin_ind)
1180
1181 -class EPSL(aloha_lib.FactoryLorentz):
1182
1183 object_class = L_EPSL
1184
1185 @classmethod
1187 return '_EPSL%s_%s_' % (particle, lor1)
1188
1189
1190
1191
1192
1193 -class L_EPST1(aloha_lib.LorentzObject):
1194 """ eps^mu_1 (polarization vector)
1195 (0, kx kz , ky kz, -k_T^2)
1196 the normalization 1/k_T / norm(k) is NOT include
1197
1198 """
1199
1200 - def __init__(self, name, lor1, particle):
1204
1206 """create representation"""
1207
1208 p1 = aloha_lib.DVariable('P%s_1' % self.particle)
1209 p2 = aloha_lib.DVariable('P%s_2' % self.particle)
1210 p3 = aloha_lib.DVariable('P%s_3' % self.particle)
1211
1212
1213 kT = (p1**2+p2**2)
1214
1215 eps = {
1216 (0,): 0,
1217 (1,): (p1)*(p3),
1218 (2,): p2*(p3),
1219 (3,): -kT ,
1220 }
1221
1222
1223
1224
1225
1226
1227
1228 self.representation = aloha_lib.LorentzObjectRepresentation(eps,
1229 self.lorentz_ind,self.spin_ind)
1230
1231 -class EPST1(aloha_lib.FactoryLorentz):
1232
1233 object_class = L_EPST1
1234
1235 @classmethod
1237 return '_EPST1%s_%s_' % (particle, lor1)
1238
1239
1240
1241
1242
1243
1244 -class L_EPST2(aloha_lib.LorentzObject):
1245 """ eps^mu_+ (polarization vector)
1246 (0, ky k_T , -i kx k_T, 0)
1247
1248 the normalization 1/(kT*norm(k)) is NOT include here
1249 as well as the k_T term (to avoid the square-root)
1250
1251 """
1252
1253 - def __init__(self, name, lor1, particle):
1257
1259 """create representation"""
1260
1261
1262 p1 = aloha_lib.DVariable('P%s_1' % self.particle)
1263 p2 = aloha_lib.DVariable('P%s_2' % self.particle)
1264
1265
1266
1267 eps = {
1268 (0,): 0,
1269 (1,): -p2,
1270 (2,): (p1),
1271 (3,): 0 ,
1272 }
1273
1274
1275
1276
1277
1278
1279
1280 self.representation = aloha_lib.LorentzObjectRepresentation(eps,
1281 self.lorentz_ind,self.spin_ind)
1282
1283 -class EPST2(aloha_lib.FactoryLorentz):
1284
1285 object_class = L_EPST2
1286
1287 @classmethod
1289 return '_EPST2%s_%s_' % (particle, lor1)
1290
1291
1292
1293
1294 fsign = -1
1295
1296 -class L_UFP(aloha_lib.LorentzObject):
1297 """
1298
1299 """
1300
1301 - def __init__(self, name, spin1, particle):
1302
1303 self.particle = particle
1304 aloha_lib.LorentzObject.__init__(self,name, [], [spin1],
1305 tags=['|p%s|_z' % particle,
1306 'FWP%s' % particle,
1307 'FWM%s' % particle])
1308
1310 """create representation"""
1311
1312 p1 = aloha_lib.DVariable('P%s_1' % self.particle)
1313 p2 = aloha_lib.DVariable('P%s_2' % self.particle)
1314
1315 normz = aloha_lib.DVariable('TnormZ%s' % self.particle)
1316 fwp = aloha_lib.DVariable('FWP%s' % self.particle)
1317 fwm = aloha_lib.DVariable('FWM%s' % self.particle)
1318
1319
1320 u = {
1321 (0,): fwm * normz,
1322 (1,): fwm * (fsign * p1 + complex(0,fsign)*p2),
1323 (2,): fwp * normz,
1324 (3,): fwp * (fsign* p1 + complex(0,fsign)*p2),
1325 }
1326
1327
1328 self.representation = aloha_lib.LorentzObjectRepresentation(u,
1329 self.lorentz_ind,self.spin_ind)
1330
1331
1332 -class UFP(aloha_lib.FactoryLorentz):
1333
1334 object_class = L_UFP
1335
1336 @classmethod
1338 return '_UFP%s_%s_' % (particle, spin1)
1339
1340 -class L_UFM(aloha_lib.LorentzObject):
1341 """
1342
1343 """
1344
1345 - def __init__(self, name, spin1, particle):
1346
1347 self.particle = particle
1348 aloha_lib.LorentzObject.__init__(self,name, [], [spin1],
1349 tags=['|p%s|_z' % particle,
1350 'FWP%s' % particle,
1351 'FWM%s' % particle])
1352
1354 """create representation"""
1355
1356 p1 = aloha_lib.DVariable('P%s_1' % self.particle)
1357 p2 = aloha_lib.DVariable('P%s_2' % self.particle)
1358
1359 normz = aloha_lib.DVariable('TnormZ%s' % self.particle)
1360 fwp = aloha_lib.DVariable('FWP%s' % self.particle)
1361 fwm = aloha_lib.DVariable('FWM%s' % self.particle)
1362
1363
1364 u = {
1365 (0,): fwp * (-1*fsign*p1 + complex(0,fsign)*p2),
1366 (1,): fwp * normz,
1367 (2,): fwm * (-1*fsign*p1 + complex(0,fsign)*p2),
1368 (3,): fwm * normz,
1369 }
1370
1371
1372 self.representation = aloha_lib.LorentzObjectRepresentation(u,
1373 self.lorentz_ind,self.spin_ind)
1374
1375 -class UFM(aloha_lib.FactoryLorentz):
1376
1377 object_class = L_UFM
1378
1379 @classmethod
1381 return '_UFM%s_%s_' % (particle, spin1)
1382
1383 -class L_UFPC(aloha_lib.LorentzObject):
1384 """
1385
1386 """
1387
1388 - def __init__(self, name, spin1, particle):
1389
1390 self.particle = particle
1391 aloha_lib.LorentzObject.__init__(self,name, [], [spin1],
1392 tags=['|p%s|_z' % particle,
1393 'FWP%s' % particle,
1394 'FWM%s' % particle])
1395
1397 """create representation"""
1398
1399 p1 = aloha_lib.DVariable('P%s_1' % self.particle)
1400 p2 = aloha_lib.DVariable('P%s_2' % self.particle)
1401
1402 normz = aloha_lib.DVariable('TnormZ%s' % self.particle)
1403 fwp = aloha_lib.DVariable('FWP%s' % self.particle)
1404 fwm = aloha_lib.DVariable('FWM%s' % self.particle)
1405
1406
1407 u = {
1408 (0,): fwp * normz,
1409 (1,): fwp * (fsign* p1 + complex(0,-fsign)*p2),
1410 (2,): fwm * normz,
1411 (3,): fwm * (fsign* p1 + complex(0,-fsign)*p2),
1412 }
1413
1414
1415 self.representation = aloha_lib.LorentzObjectRepresentation(u,
1416 self.lorentz_ind,self.spin_ind)
1417
1418 -class UFPC(aloha_lib.FactoryLorentz):
1419
1420 object_class = L_UFPC
1421
1422 @classmethod
1424 return '_UFPC%s_%s_' % (particle, spin1)
1425
1426 -class L_UFMC(aloha_lib.LorentzObject):
1427 """
1428
1429 """
1430
1431 - def __init__(self, name, spin1, particle):
1432
1433 self.particle = particle
1434 aloha_lib.LorentzObject.__init__(self,name, [], [spin1],
1435 tags=['|p%s|_z' % particle,
1436 'FWP%s' % particle,
1437 'FWM%s' % particle])
1438
1440 """create representation"""
1441
1442 p1 = aloha_lib.DVariable('P%s_1' % self.particle)
1443 p2 = aloha_lib.DVariable('P%s_2' % self.particle)
1444
1445 normz = aloha_lib.DVariable('TnormZ%s' % self.particle)
1446 fwp = aloha_lib.DVariable('FWP%s' % self.particle)
1447 fwm = aloha_lib.DVariable('FWM%s' % self.particle)
1448
1449
1450 u = {
1451 (0,): fwm * (-fsign*p1 + complex(0,-fsign)*p2),
1452 (1,): fwm * normz,
1453 (2,): fwp * (-fsign*p1 + complex(0,-fsign)*p2),
1454 (3,): fwp * normz,
1455 }
1456
1457
1458 self.representation = aloha_lib.LorentzObjectRepresentation(u,
1459 self.lorentz_ind,self.spin_ind)
1460
1461 -class UFMC(aloha_lib.FactoryLorentz):
1462
1463 object_class = L_UFMC
1464
1465 @classmethod
1467 return '_UFMC%s_%s_' % (particle, spin1)
1468
1469 -class L_VFP(aloha_lib.LorentzObject):
1470 """
1471
1472 """
1473
1474 - def __init__(self, name, spin1, particle):
1475
1476 self.particle = particle
1477 aloha_lib.LorentzObject.__init__(self,name, [], [spin1],
1478 tags=['|p%s|_z' % particle,
1479 'FWP%s' % particle,
1480 'FWM%s' % particle])
1481
1483 """create representation"""
1484
1485 p1 = aloha_lib.DVariable('P%s_1' % self.particle)
1486 p2 = aloha_lib.DVariable('P%s_2' % self.particle)
1487
1488 normz = aloha_lib.DVariable('TnormZ%s' % self.particle)
1489 fwp = aloha_lib.DVariable('FWP%s' % self.particle)
1490 fwm = aloha_lib.DVariable('FWM%s' % self.particle)
1491
1492
1493 u = {
1494 (0,): -1*fwp * (-1 *fsign * p1 + complex(0,fsign)*p2),
1495 (1,): -1*fwp * normz,
1496 (2,): 1*fwm * (-1 *fsign * p1 + complex(0,fsign)*p2),
1497 (3,): 1*fwm * normz,
1498 }
1499
1500
1501 self.representation = aloha_lib.LorentzObjectRepresentation(u,
1502 self.lorentz_ind,self.spin_ind)
1503
1504
1505 -class VFP(aloha_lib.FactoryLorentz):
1506
1507 object_class = L_VFP
1508
1509 @classmethod
1511 return '_VFP%s_%s_' % (particle, spin1)
1512
1513 -class L_VFPC(aloha_lib.LorentzObject):
1514 """
1515
1516 """
1517
1518 - def __init__(self, name, spin1, particle):
1519
1520 self.particle = particle
1521 aloha_lib.LorentzObject.__init__(self,name, [], [spin1],
1522 tags=['|p%s|_z' % particle,
1523 'FWP%s' % particle,
1524 'FWM%s' % particle])
1525
1527 """create representation"""
1528
1529 p1 = aloha_lib.DVariable('P%s_1' % self.particle)
1530 p2 = aloha_lib.DVariable('P%s_2' % self.particle)
1531
1532 normz = aloha_lib.DVariable('TnormZ%s' % self.particle)
1533 fwp = aloha_lib.DVariable('FWP%s' % self.particle)
1534 fwm = aloha_lib.DVariable('FWM%s' % self.particle)
1535
1536
1537 u = {
1538 (0,): fwm * (-1 *fsign * p1 + complex(0,-1*fsign)*p2),
1539 (1,): fwm * normz,
1540 (2,): -1*fwp * (-1 *fsign * p1 + complex(0,-1*fsign)*p2),
1541 (3,): -1*fwp * normz,
1542 }
1543
1544
1545 self.representation = aloha_lib.LorentzObjectRepresentation(u,
1546 self.lorentz_ind,self.spin_ind)
1547
1548
1549 -class VFPC(aloha_lib.FactoryLorentz):
1550
1551 object_class = L_VFPC
1552
1553 @classmethod
1555 return '_VFPC%s_%s_' % (particle, spin1)
1556
1557
1558 -class L_VFM(aloha_lib.LorentzObject):
1559 """
1560
1561 """
1562
1563 - def __init__(self, name, spin1, particle):
1564
1565 self.particle = particle
1566 aloha_lib.LorentzObject.__init__(self,name, [], [spin1],
1567 tags=['|p%s|_z' % particle,
1568 'FWP%s' % particle,
1569 'FWM%s' % particle])
1570
1572 """create representation"""
1573
1574 p1 = aloha_lib.DVariable('P%s_1' % self.particle)
1575 p2 = aloha_lib.DVariable('P%s_2' % self.particle)
1576
1577 normz = aloha_lib.DVariable('TnormZ%s' % self.particle)
1578 fwp = aloha_lib.DVariable('FWP%s' % self.particle)
1579 fwm = aloha_lib.DVariable('FWM%s' % self.particle)
1580
1581
1582 u = {
1583 (0,): fwm * normz,
1584 (1,): fwm * (fsign * p1 + complex(0,fsign)*p2),
1585 (2,): -1*fwp * normz,
1586 (3,): -1*fwp * (fsign * p1 + complex(0,fsign)*p2),
1587 }
1588
1589
1590 self.representation = aloha_lib.LorentzObjectRepresentation(u,
1591 self.lorentz_ind,self.spin_ind)
1592
1593
1594 -class VFM(aloha_lib.FactoryLorentz):
1595
1596 object_class = L_VFM
1597
1598 @classmethod
1600 return '_VFM%s_%s_' % (particle, spin1)
1601
1602 -class L_VFMC(aloha_lib.LorentzObject):
1603 """
1604
1605 """
1606
1607 - def __init__(self, name, spin1, particle):
1608
1609 self.particle = particle
1610 aloha_lib.LorentzObject.__init__(self,name, [], [spin1],
1611 tags=['|p%s|_z' % particle,
1612 'FWP%s' % particle,
1613 'FWM%s' % particle])
1614
1616 """create representation"""
1617
1618 p1 = aloha_lib.DVariable('P%s_1' % self.particle)
1619 p2 = aloha_lib.DVariable('P%s_2' % self.particle)
1620
1621 normz = aloha_lib.DVariable('TnormZ%s' % self.particle)
1622 fwp = aloha_lib.DVariable('FWP%s' % self.particle)
1623 fwm = aloha_lib.DVariable('FWM%s' % self.particle)
1624
1625
1626 u = {
1627 (0,): -1*fwp * normz,
1628 (1,): -1*fwp * (fsign * p1 + complex(0,-1*fsign)*p2),
1629 (2,): fwm * normz,
1630 (3,): fwm * (fsign * p1 + complex(0,-1*fsign)*p2),
1631
1632 }
1633
1634
1635 self.representation = aloha_lib.LorentzObjectRepresentation(u,
1636 self.lorentz_ind,self.spin_ind)
1637
1638
1639 -class VFMC(aloha_lib.FactoryLorentz):
1640
1641 object_class = L_VFMC
1642
1643 @classmethod
1645 return '_VFMC%s_%s_' % (particle, spin1)
1646
1651 """The Denominator of the Propagator"""
1652
1657
1663
1665 return 'DenomP%s' % self.particle
1666
1667
1669 """Return the Denominator in a abstract way"""
1670
1671 mass = Mass(self.particle)
1672 width = Width(self.particle)
1673 denominator = P('i1', self.particle) * P('i1', self.particle) - \
1674 mass * mass + complex(0,1) * mass* width
1675
1676 return denominator
1677
1679 """Create the representation for the Vector propagator"""
1680
1681 object = self.simplify()
1682 self.representation = object.expand()
1683
1684
1685
1686
1687
1688
1689
1690 SpinorPropagatorout = lambda spin1, spin2, particle: -1 * (Gamma('mu', spin1, spin2) * \
1691 P('mu', particle) - Mass(particle) * Identity(spin1, spin2))
1692
1693 SpinorPropagatorin = lambda spin1, spin2, particle: (Gamma('mu', spin1, spin2) * \
1694 P('mu', particle) + Mass(particle) * Identity(spin1, spin2))
1695
1696
1697 VectorPropagator = lambda l1, l2, part: complex(0,1)*(-1 * Metric(l1, l2) + OverMass2(part) * \
1698 Metric(l1,'I3')* P('I3', part) * P(l2, part))
1699
1700 VectorPropagatorMassless= lambda l1, l2, part: complex(0,-1) * Metric(l1, l2)
1701
1702
1703 Spin3halfPropagatorin = lambda mu, nu, s1, s2, part: (\
1704 -1/3 * (Gamma(mu,s1,-2) + Identity(s1, -2) * P(mu, part) * Mass(part) * OverMass2(part))* \
1705 (PSlash(-2,-3, part) - Identity(-2,-3) * Mass(part)) * \
1706 ( Gamma(nu, -3, s2)+ Mass(part) * OverMass2(part) * Identity(-3, s2) * P(nu, part) ) - \
1707 (PSlash(s1,s2, part) + Mass(part) * Identity(s1,s2)) * (Metric(mu, nu) - OverMass2(part) * P(mu, part) * P(nu,part)))
1708
1709
1710 Spin3halfPropagatorout = lambda mu, nu, s1, s2, part: ( \
1711 -1/3 * (Gamma(mu,s1,-2) - Identity(s1, -2) * P(mu, part) * Mass(part) * OverMass2(part))* \
1712 (-1*PSlash(-2,-3, part) - Identity(-2,-3) * Mass(part)) * \
1713 ( Gamma(nu, -3, s2)- Mass(part) * OverMass2(part) * Identity(-3, s2) * P(nu, part) ) - \
1714 (-1*PSlash(s1,s2, part)
1715 + Mass(part) * Identity(s1,s2)) * (Metric(mu, nu) - OverMass2(part) * P(mu, part) * P(nu,part)))
1716
1717
1718 Spin3halfPropagatorMasslessOut = lambda mu, nu, s1, s2, part: Gamma(nu, s1,-1) * PSlash(-1,-2, part) * Gamma(mu,-2, s2)
1719 Spin3halfPropagatorMasslessIn = lambda mu, nu, s1, s2, part: -1 * Gamma(mu, s1,-1) * PSlash(-1,-2, part) * Gamma(nu,-2, s2)
1720
1721
1722 Spin2masslessPropagator = lambda mu, nu, alpha, beta: 1/2 *( Metric(mu, alpha)* Metric(nu, beta) +\
1723 Metric(mu, beta) * Metric(nu, alpha) - Metric(mu, nu) * Metric(alpha, beta))
1724
1725
1726
1727 Spin2Propagator = lambda mu, nu, alpha, beta, part: Spin2masslessPropagator(mu, nu, alpha, beta) + \
1728 - 1/2 * OverMass2(part) * (Metric(mu,alpha)* P(nu, part) * P(beta, part) + \
1729 Metric(nu, beta) * P(mu, part) * P(alpha, part) + \
1730 Metric(mu, beta) * P(nu, part) * P(alpha, part) + \
1731 Metric(nu, alpha) * P(mu, part) * P(beta , part) )+ \
1732 1/6 * (Metric(mu,nu) + 2 * OverMass2(part) * P(mu, part) * P(nu, part)) * \
1733 (Metric(alpha,beta) + 2 * OverMass2(part) * P(alpha, part) * P(beta, part))
1734