47
47
C MadLoop internal ones.
48
48
INTEGER GOLEM_RUN_MODE
49
49
PARAMETER (GOLEM_RUN_MODE=1)
50
C The following is the acceptance threshold used for GOLEM_RUN_MODE
50
C The following is the acceptance threshold used for
52
52
REAL*8 COEF_CHECK_THRS
53
53
DATA COEF_CHECK_THRS/1.0D-13/
54
54
COMMON/MG5_1_COEF_CHECK_THRS/COEF_CHECK_THRS
60
60
INTEGER NLOOPLINE, RANK
61
61
REAL*8 PL(0:3,NLOOPLINE)
62
REAL*8 PCT(0:3,0:NLOOPLINE-1)
62
REAL*8 PCT(0:3,0:NLOOPLINE-1), ABSPCT(0:3)
63
64
REAL(KI) PGOLEM(NLOOPLINE,0:3)
64
65
COMPLEX*16 M2L(NLOOPLINE)
65
66
COMPLEX(KI) M2LGOLEM(NLOOPLINE)
105
106
INTEGER ID,SQSOINDEX,R
106
107
COMMON/MG5_1_LOOP/ID,SQSOINDEX,R
108
LOGICAL CTINIT, TIRINIT, GOLEMINIT
109
COMMON/REDUCTIONCODEINIT/CTINIT, TIRINIT,GOLEMINIT
109
LOGICAL CTINIT, TIRINIT, GOLEMINIT, SAMURAIINIT, NINJAINIT
110
COMMON/REDUCTIONCODEINIT/CTINIT, TIRINIT,GOLEMINIT,SAMURAIINIT
111
113
INTEGER NLOOPGROUPS
112
114
PARAMETER (NLOOPGROUPS=13)
114
PARAMETER (LOOPMAXCOEFS=15)
115
115
INTEGER NSQUAREDSO
116
116
PARAMETER (NSQUAREDSO=1)
117
INCLUDE 'loop_max_coefs.inc'
118
119
COMPLEX*16 LOOPCOEFS(0:LOOPMAXCOEFS-1,NSQUAREDSO,NLOOPGROUPS)
119
120
COMMON/MG5_1_LCOEFS/LOOPCOEFS
154
164
PCT(I,0)=PCT(I,0)+PL(I,J)
165
ABSPCT(I)=ABSPCT(I)+ABS(PL(I,J))
157
IF (CHECKPCONSERVATION) THEN
158
IF (PCT(0,0).GT.1.D-6) THEN
168
REF_P = MAX(ABSPCT(0), ABSPCT(1),ABSPCT(2),ABSPCT(3))
170
ABSPCT(I) = MAX(REF_P*1E-6, ABSPCT(I))
172
IF (CHECKPCONSERVATION.AND.REF_P.GT.1D-8) THEN
173
IF ((PCT(0,0)/ABSPCT(0)).GT.1.D-6) THEN
159
174
WRITE(*,*) 'energy is not conserved ',PCT(0,0)
160
175
STOP 'energy is not conserved'
161
ELSEIF (PCT(1,0).GT.1.D-6) THEN
176
ELSEIF ((PCT(1,0)/ABSPCT(1)).GT.1.D-6) THEN
162
177
WRITE(*,*) 'px is not conserved ',PCT(1,0)
163
178
STOP 'px is not conserved'
164
ELSEIF (PCT(2,0).GT.1.D-6) THEN
179
ELSEIF ((PCT(2,0)/ABSPCT(2)).GT.1.D-6) THEN
165
180
WRITE(*,*) 'py is not conserved ',PCT(2,0)
166
181
STOP 'py is not conserved'
167
ELSEIF (PCT(3,0).GT.1.D-6) THEN
182
ELSEIF ((PCT(3,0)/ABSPCT(3)).GT.1.D-6) THEN
168
183
WRITE(*,*) 'pz is not conserved ',PCT(3,0)
169
184
STOP 'pz is not conserved'
460
475
INTEGER NLOOPLINE
461
476
REAL(KI) PGOLEM(NLOOPLINE,0:3)
462
477
COMPLEX(KI) M2L(NLOOPLINE)
467
INCLUDE 'MadLoopParams.inc'
470
COMMON/MG5_1_CT/LSCALE,CTMODE
471
REAL*8 REF_NORMALIZATION
473
479
C LOCAL VARIABLES
482
COMPLEX*16 S_MAT_FROM_MG(NLOOPLINE,NLOOPLINE)
487
CALL MG5_1_BUILD_KINEMATIC_MATRIX(NLOOPLINE,PGOLEM,M2L
484
S_MAT(I,J)=-(M2L(I)+M2L(J))
486
DIFFSQ = (CMPLX(PGOLEM(I,0),0.0_KI,KIND=KI)-CMPLX(PGOLEM(J
487
$ ,0),0.0_KI,KIND=KI))**2
489
DIFFSQ = DIFFSQ-(CMPLX(PGOLEM(I,K),0.0_KI,KIND=KI)
490
$ -CMPLX(PGOLEM(J,K),0.0_KI,KIND=KI))**2
492
S_MAT(I,J)=DIFFSQ-M2L(I)-M2L(J)
493
IF(M2L(I).NE.0.0D0)THEN
494
IF(ABS((DIFFSQ-M2L(I))/M2L(I)).LT.OSTHRES)THEN
498
IF(M2L(J).NE.0.0D0)THEN
499
IF(ABS((DIFFSQ-M2L(J))/M2L(J)).LT.OSTHRES)THEN
503
C Chose what seems the most appropriate way to compare
504
C massless onshellness. (here we pick the energy component)
505
REF_NORMALIZATION=(PGOLEM(I,0)+PGOLEM(J,0))**2
506
IF(REF_NORMALIZATION.NE.0.0D0)THEN
507
IF(ABS(DIFFSQ/REF_NORMALIZATION).LT.OSTHRES)THEN
508
S_MAT(I,J)=-(M2L(I)+M2L(J))
492
S_MAT(I,J)=S_MAT_FROM_MG(I,J)
543
524
LOGICAL MG5_1_COMPARE_COEFS_1
545
526
NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
546
DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1
527
DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
549
530
IF(DENOM.GT.0D0)THEN
550
531
MG5_1_COMPARE_COEFS_1=((NUM/DENOM).LT.COEF_CHECK_THRS)
566
547
NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
567
548
$ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))
568
DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1
569
$ ))+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))
549
DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
550
$ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))
570
551
IF(DENOM.GT.0D0)THEN
571
552
MG5_1_COMPARE_COEFS_2=((NUM/DENOM).LT.COEF_CHECK_THRS)
587
568
NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
588
569
$ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
589
DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1
590
$ ))+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3
570
DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
571
$ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
592
573
IF(DENOM.GT.0D0)THEN
593
574
MG5_1_COMPARE_COEFS_3=((NUM/DENOM).LT.COEF_CHECK_THRS)
607
588
LOGICAL MG5_1_COMPARE_COEFS_4
609
590
NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
610
$ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)
611
$ )+SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
612
DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1
613
$ ))+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3
614
$ ))+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
591
$ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
592
$ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
593
DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
594
$ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
595
$ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
615
596
IF(DENOM.GT.0D0)THEN
616
597
MG5_1_COMPARE_COEFS_4=((NUM/DENOM).LT.COEF_CHECK_THRS)
630
611
LOGICAL MG5_1_COMPARE_COEFS_5
632
613
NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
633
$ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)
634
$ )+SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
635
DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1
636
$ ))+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3
637
$ ))+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
614
$ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
615
$ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
616
DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
617
$ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
618
$ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
638
619
IF(DENOM.GT.0D0)THEN
639
620
MG5_1_COMPARE_COEFS_5=((NUM/DENOM).LT.COEF_CHECK_THRS)
653
634
LOGICAL MG5_1_COMPARE_COEFS_6
655
636
NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
656
$ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)
657
$ )+SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
658
DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1
659
$ ))+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3
660
$ ))+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
637
$ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
638
$ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
639
DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
640
$ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
641
$ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
661
642
IF(DENOM.GT.0D0)THEN
662
643
MG5_1_COMPARE_COEFS_6=((NUM/DENOM).LT.COEF_CHECK_THRS)
670
651
SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_0(ML_COEFS,GOLEM_COEFS)
671
652
USE PRECISION_GOLEM, ONLY: KI
672
653
INCLUDE 'coef_specs.inc'
673
COMPLEX*16 ML_COEFS(0:LOOP_MAXCOEFS-1)
654
INCLUDE 'loop_max_coefs.inc'
655
COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
674
656
COMPLEX(KI) GOLEM_COEFS
675
657
GOLEM_COEFS=ML_COEFS(0)
678
660
SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_1(ML_COEFS,GOLEM_COEFS)
679
661
USE TENS_REC, ONLY: COEFF_TYPE_1
680
662
INCLUDE 'coef_specs.inc'
681
COMPLEX*16 ML_COEFS(0:LOOP_MAXCOEFS-1)
663
INCLUDE 'loop_max_coefs.inc'
664
COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
682
665
TYPE(COEFF_TYPE_1) GOLEM_COEFS
683
666
C Constant coefficient
684
667
GOLEM_COEFS%%C0=ML_COEFS(0)
695
678
SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_2(ML_COEFS,GOLEM_COEFS)
696
679
USE TENS_REC, ONLY: COEFF_TYPE_2
697
680
INCLUDE 'coef_specs.inc'
698
COMPLEX*16 ML_COEFS(0:LOOP_MAXCOEFS-1)
681
INCLUDE 'loop_max_coefs.inc'
682
COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
699
683
TYPE(COEFF_TYPE_2) GOLEM_COEFS
700
684
C Constant coefficient
701
685
GOLEM_COEFS%%C0=ML_COEFS(0)
732
716
SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_3(ML_COEFS,GOLEM_COEFS)
733
717
USE TENS_REC, ONLY: COEFF_TYPE_3
734
718
INCLUDE 'coef_specs.inc'
735
COMPLEX*16 ML_COEFS(0:LOOP_MAXCOEFS-1)
719
INCLUDE 'loop_max_coefs.inc'
720
COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
736
721
TYPE(COEFF_TYPE_3) GOLEM_COEFS
737
722
C Dummy routine for MG5_1_FILL_GOLEM_COEFS_3
738
723
STOP 'ERROR: 3 > 2'
741
726
SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_4(ML_COEFS,GOLEM_COEFS)
742
727
USE TENS_REC, ONLY: COEFF_TYPE_4
743
728
INCLUDE 'coef_specs.inc'
744
COMPLEX*16 ML_COEFS(0:LOOP_MAXCOEFS-1)
729
INCLUDE 'loop_max_coefs.inc'
730
COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
745
731
TYPE(COEFF_TYPE_4) GOLEM_COEFS
746
732
C Dummy routine for MG5_1_FILL_GOLEM_COEFS_4
747
733
STOP 'ERROR: 4 > 2'
750
736
SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_5(ML_COEFS,GOLEM_COEFS)
751
737
USE TENS_REC, ONLY: COEFF_TYPE_5
752
738
INCLUDE 'coef_specs.inc'
753
COMPLEX*16 ML_COEFS(0:LOOP_MAXCOEFS-1)
739
INCLUDE 'loop_max_coefs.inc'
740
COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
754
741
TYPE(COEFF_TYPE_5) GOLEM_COEFS
755
742
C Dummy routine for MG5_1_FILL_GOLEM_COEFS_5
756
743
STOP 'ERROR: 5 > 2'
759
746
SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_6(ML_COEFS,GOLEM_COEFS)
760
747
USE TENS_REC, ONLY: COEFF_TYPE_6
761
748
INCLUDE 'coef_specs.inc'
762
COMPLEX*16 ML_COEFS(0:LOOP_MAXCOEFS-1)
749
INCLUDE 'loop_max_coefs.inc'
750
COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
763
751
TYPE(COEFF_TYPE_6) GOLEM_COEFS
764
752
C Dummy routine for MG5_1_FILL_GOLEM_COEFS_6
765
753
STOP 'ERROR: 6 > 2'