32
31
INTEGER I_SQSO,I_LOOPGROUP,I_LIB
33
32
INTEGER NLOOPLINE, RANK
34
33
REAL*8 PL(0:3,NLOOPLINE)
35
REAL*8 PCT(0:3,0:NLOOPLINE-1)
34
REAL*8 PCT(0:3,0:NLOOPLINE-1),ABSPCT(0:3)
36
36
REAL*8 PDEN(0:3,NLOOPLINE-1)
37
37
COMPLEX*16 M2L(NLOOPLINE)
38
38
COMPLEX*16 M2LCT(0:NLOOPLINE-1)
46
LOGICAL CTINIT, TIRINIT, GOLEMINIT
47
COMMON/REDUCTIONCODEINIT/CTINIT,TIRINIT,GOLEMINIT
46
LOGICAL CTINIT, TIRINIT, GOLEMINIT, SAMURAIINIT, NINJAINIT
47
COMMON/REDUCTIONCODEINIT/CTINIT,TIRINIT,GOLEMINIT,SAMURAIINIT
49
50
C This variable will be used to detect changes in the TIR library
50
51
C used so as to force the reset of the TIR filter.
116
122
PCT(I,0)=PCT(I,0)+PL(I,J)
123
ABSPCT(I)=ABSPCT(I)+ABS(PL(I,J))
119
IF (CHECKPCONSERVATION) THEN
120
IF (PCT(0,0).GT.1.D-6) THEN
121
WRITE(*,*) 'energy is not conserved ',PCT(0,0)
122
STOP 'energy is not conserved'
123
ELSEIF (PCT(1,0).GT.1.D-6) THEN
124
WRITE(*,*) 'px is not conserved ',PCT(1,0)
125
STOP 'px is not conserved'
126
ELSEIF (PCT(2,0).GT.1.D-6) THEN
127
WRITE(*,*) 'py is not conserved ',PCT(2,0)
128
STOP 'py is not conserved'
129
ELSEIF (PCT(3,0).GT.1.D-6) THEN
130
WRITE(*,*) 'pz is not conserved ',PCT(3,0)
131
STOP 'pz is not conserved'
126
REF_P = MAX(ABSPCT(0), ABSPCT(1),ABSPCT(2),ABSPCT(3))
128
ABSPCT(I) = MAX(REF_P*1E-6, ABSPCT(I))
131
IF (CHECKPCONSERVATION.AND.REF_P.GT.1D-8) THEN
132
IF ((PCT(0,0)/ABSPCT(0)).GT.1.D-6) THEN
133
WRITE(*,*) 'energy is not conserved (flag: TIR)',PCT(0,0)
134
STOP 'energy is not conserved (flag: TIR)'
135
ELSEIF ((PCT(1,0)/ABSPCT(1)).GT.1.D-6) THEN
136
WRITE(*,*) 'px is not conserved (flag: TIR)',PCT(1,0)
137
STOP 'px is not conserved (flag: TIR)'
138
ELSEIF ((PCT(2,0)/ABSPCT(2)).GT.1.D-6) THEN
139
WRITE(*,*) 'py is not conserved (flag: TIR)',PCT(2,0)
140
STOP 'py is not conserved (flag: TIR)'
141
ELSEIF ((PCT(3,0)/ABSPCT(3)).GT.1.D-6) THEN
142
WRITE(*,*) 'pz is not conserved (flag: TIR)',PCT(3,0)
143
STOP 'pz is not conserved (flag: TIR)'
168
180
RES(1)=NORMALIZATION*2.0D0*DBLE(RES(1))
169
181
RES(2)=NORMALIZATION*2.0D0*DBLE(RES(2))
170
182
RES(3)=NORMALIZATION*2.0D0*DBLE(RES(3))
171
C WRITE(*,*) 'Loop ID',ID,' =',RES(1),RES(2),RES(3)
183
C IF(MLReductionLib(I_LIB).EQ.2) THEN
184
C WRITE(*,*) 'PJFry: Loop ID',ID,' =',RES(1),RES(2),RES(3)
185
C ELSEIF(MLReductionLib(I_LIB).EQ.3) THEN
186
C WRITE(*,*) 'Iregi: Loop ID',ID,' =',RES(1),RES(2),RES(3)
174
190
SUBROUTINE ML5_0_SWITCH_ORDER(CTMODE,NLOOPLINE,PL,PDEN,M2L)
188
IF (CTMODE.NE.2.AND.CTMODE.NE.4) THEN
204
IF (CTMODE.NE.2.AND.CTMODE.NE.5) THEN
208
IF (NLOOPLINE.LE.2) THEN
214
NEW_PDEN(J,NLOOPLINE-I) = PDEN(J,I)
219
PDEN(J,I) = NEW_PDEN(J,I)
224
NEW_M2L(I)=M2L(NLOOPLINE-I+2)
233
NEW_PL(J,I) = -PL(J,NLOOPLINE+1-I)
238
PL(J,I) = NEW_PL(J,I)
244
SUBROUTINE ML5_0_MP_SWITCH_ORDER(CTMODE,NLOOPLINE,PL,PDEN,M2L)
247
INTEGER CTMODE,NLOOPLINE
249
REAL*16 PL(0:3,NLOOPLINE)
250
REAL*16 PDEN(0:3,NLOOPLINE-1)
251
COMPLEX*32 M2L(NLOOPLINE)
252
REAL*16 NEW_PL(0:3,NLOOPLINE)
253
REAL*16 NEW_PDEN(0:3,NLOOPLINE-1)
254
COMPLEX*32 NEW_M2L(NLOOPLINE)
258
IF (CTMODE.NE.2.AND.CTMODE.NE.5) THEN
237
307
C GLOBAL VARIABLES
239
309
INCLUDE 'MadLoopParams.inc'
240
LOGICAL CTINIT, TIRINIT, GOLEMINIT
241
COMMON/REDUCTIONCODEINIT/CTINIT,TIRINIT,GOLEMINIT
310
LOGICAL CTINIT, TIRINIT, GOLEMINIT, SAMURAIINIT, NINJAINIT
311
COMMON/REDUCTIONCODEINIT/CTINIT,TIRINIT,GOLEMINIT,SAMURAIINIT
268
339
SUBROUTINE ML5_0_CHOOSE_LOOPLIB(LIBINDEX,NLOOPLINE,RANK
269
$ ,COMPLEX_MASS,DOING_QP,I_LIB)
340
$ ,COMPLEX_MASS,LOOP_ID,DOING_QP,I_LIB)
271
342
C CHOOSE THE CORRECT LOOP LIB
282
INTEGER NLOOPLIB,QP_NLOOPLIB
283
PARAMETER (NLOOPLIB=4,QP_NLOOPLIB=1)
354
PARAMETER (NLOOPLIB=4)
356
PARAMETER (QP_NLOOPLIB=1)
358
PARAMETER (NLOOPGROUPS=9)
287
INTEGER LIBINDEX,NLOOPLINE,RANK,I_LIB
362
INTEGER LIBINDEX,NLOOPLINE,RANK,I_LIB,LOOP_ID
288
363
LOGICAL COMPLEX_MASS,DOING_QP
290
365
C LOCAL VARIABLES
292
367
INTEGER I,J_LIB,LIBNUM,SELECT_LIBINDEX
369
C This list specifies what loop involve an Higgs effective vertex
370
C so that CutTools limitations can be correctly implemented
371
LOGICAL HAS_AN_HEFT_VERTEX(NLOOPGROUPS)
372
DATA (HAS_AN_HEFT_VERTEX(I),I= 1, 9) /.FALSE.,.FALSE.
373
$ ,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE./
295
375
C GLOBAL VARIABLES
297
377
INCLUDE 'MadLoopParams.inc'
298
C TILL NOW, ONLY CUTTOOLS PROVIDE QP
378
INCLUDE 'process_info.inc'
379
C Change the list 'LOOPLIBS_QPAVAILABLE' in loop_matrix_standalone.
380
C inc to change the list of QPTools availables
299
381
LOGICAL QP_TOOLS_AVAILABLE
300
INTEGER INDEX_QP_TOOLS(QP_NLOOPLIB)
382
INTEGER INDEX_QP_TOOLS(QP_NLOOPLIB+1)
301
383
COMMON/ML5_0_LOOP_TOOLS/QP_TOOLS_AVAILABLE,INDEX_QP_TOOLS
321
404
IF(J_LIB.EQ.0)THEN
322
405
SELECT_LIBINDEX=SELECT_LIBINDEX+1
323
406
IF(SELECT_LIBINDEX.GT.NLOOPLIB.OR.MLREDUCTIONLIB(SELECT_LIB
324
$ INDEX).EQ.0)SELECT_LIBINDEX=1
407
$INDEX).EQ.0)SELECT_LIBINDEX=1
328
411
I_LIB=SELECT_LIBINDEX
329
412
LIBNUM=MLREDUCTIONLIB(I_LIB)
331
CALL DETECT_LOOPLIB(LIBNUM,NLOOPLINE,RANK,COMPLEX_MASS,LPASS)
414
CALL DETECT_LOOPLIB(LIBNUM,NLOOPLINE,RANK,COMPLEX_MASS
415
$ ,HAS_AN_HEFT_VERTEX(LOOP_ID),MAX_SPIN_CONNECTED_TO_LOOP,LPASS)
334
418
IF(I.GT.QP_NLOOPLIB.AND.INDEX_QP_TOOLS(I).EQ.0)THEN
346
430
LIBNUM=MLREDUCTIONLIB(I_LIB)
348
CALL DETECT_LOOPLIB(LIBNUM,NLOOPLINE,RANK,COMPLEX_MASS,LPASS)
432
CALL DETECT_LOOPLIB(LIBNUM,NLOOPLINE,RANK,COMPLEX_MASS
433
$ ,HAS_AN_HEFT_VERTEX(LOOP_ID),MAX_SPIN_CONNECTED_TO_LOOP,LPASS)
351
436
IF(I_LIB.GT.NLOOPLIB.OR.MLREDUCTIONLIB(I_LIB).EQ.0)THEN