~madteam/mg5amcnlo/series2.0

« back to all changes in this revision

Viewing changes to tests/input_files/IOTestsComparison/LoopSquaredOrder_IOTest/Loop_sqso_uux_ddx/loop_matrix_QEDpert_default.f

mwrge with 2.7.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
77
77
      INTEGER NSQUAREDSOP1
78
78
      PARAMETER (NSQUAREDSOP1=NSQUAREDSO+1)
79
79
C     The total number of loop reduction libraries
80
 
C     At present, there are only CutTools,PJFry++,IREGI,Golem95,Samurai
81
 
C     , Ninja and COLLIER
 
80
C     At present, there are only
 
81
C      CutTools,PJFry++,IREGI,Golem95,Samurai, Ninja and COLLIER
82
82
      INTEGER NLOOPLIB
83
83
      PARAMETER (NLOOPLIB=7)
84
84
C     Only CutTools or possibly Ninja (if installed with qp support)
403
403
C      reading the parameters
404
404
      LOGICAL FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
405
405
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
406
 
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE, COLLIER_IR_POLE_COMPU
407
 
     $TATION_CHOICE
 
406
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE,
 
407
     $  COLLIER_IR_POLE_COMPUTATION_CHOICE
408
408
      DATA  FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION
409
409
     $ ,FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION/.FALSE.,.FALSE./
410
 
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE/FORCED_CHOICE_OF_COLLIER_UV
411
 
     $_POLE_COMPUTATION, FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
412
 
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE,COLLIER_IR_POLE_COMPUTATION_
413
 
     $CHOICE
 
410
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE
 
411
     $ /FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
 
412
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
 
413
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE
 
414
     $ ,COLLIER_IR_POLE_COMPUTATION_CHOICE
414
415
 
415
416
C     This variable controls the general initialization which is
416
417
C      *common* between all MadLoop SubProcesses.
880
881
     $ +P(2,2))**2-(P(3,1)+P(3,2))**2))
881
882
 
882
883
      CTCALL_REQ_SO_DONE=.FALSE.
883
 
      FILTER_SO = (.NOT.CHECKPHASE).AND.HELDOUBLECHECKED.AND.(SQSO_TARG
884
 
     $ET.NE.-1)
 
884
      FILTER_SO = (.NOT.CHECKPHASE)
 
885
     $ .AND.HELDOUBLECHECKED.AND.(SQSO_TARGET.NE.-1)
885
886
 
886
887
      DO I=1,NLOOPGROUPS
887
888
        DO J=0,LOOPMAXCOEFS-1
920
921
      ENDIF
921
922
 
922
923
      DO H=1,NCOMB
923
 
        IF ((HELPICKED.EQ.H).OR.((HELPICKED.EQ.-1).AND.(CHECKPHASE.OR.(
924
 
     $.NOT.HELDOUBLECHECKED).OR.(GOODHEL(H).GT.-HELOFFSET.AND.GOODHEL(H)
925
 
     $   .NE.0)))) THEN
 
924
        IF ((HELPICKED.EQ.H).OR.((HELPICKED.EQ.-1)
 
925
     $   .AND.(CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED).OR.(GOODHEL(H)
 
926
     $   .GT.-HELOFFSET.AND.GOODHEL(H).NE.0)))) THEN
926
927
 
927
928
C         Handle the possible requirement of specific polarizations
928
 
          IF ((.NOT.CHECKPHASE).AND.HELDOUBLECHECKED.AND.POLARIZATIONS(
929
 
     $0,0).EQ.0.AND.(.NOT.ML5_0_IS_HEL_SELECTED(H))) THEN
 
929
          IF ((.NOT.CHECKPHASE)
 
930
     $     .AND.HELDOUBLECHECKED.AND.POLARIZATIONS(0,0)
 
931
     $     .EQ.0.AND.(.NOT.ML5_0_IS_HEL_SELECTED(H))) THEN
930
932
            CYCLE
931
933
          ENDIF
932
934
 
967
969
            DO I=1,NCTAMPS
968
970
              CFTOT=DCMPLX(CF_N(I,J)/DBLE(ABS(CF_D(I,J))),0.0D0)
969
971
              IF(CF_D(I,J).LT.0) CFTOT=CFTOT*IMAG1
970
 
              ITEMP = ML5_0_ML5SQSOINDEX(ML5_0_ML5SOINDEX_FOR_LOOP_AMP(
971
 
     $I),ML5_0_ML5SOINDEX_FOR_BORN_AMP(J))
 
972
              ITEMP =
 
973
     $          ML5_0_ML5SQSOINDEX(ML5_0_ML5SOINDEX_FOR_LOOP_AMP(I)
 
974
     $         ,ML5_0_ML5SOINDEX_FOR_BORN_AMP(J))
972
975
              IF (.NOT.FILTER_SO.OR.SQSO_TARGET.EQ.ITEMP) THEN
973
976
                DO K=1,3
974
977
                  TEMP2 = DBLE(CFTOT*AMPL(K,I)*CTEMP)
1072
1075
        IF((USERHEL.EQ.-1).OR.(USERHEL.EQ.HELPICKED)) THEN
1073
1076
C         Make sure that that no polarization constraint filters out
1074
1077
C          this helicity
1075
 
          IF (POLARIZATIONS(0,0).EQ.-1.OR.ML5_0_IS_HEL_SELECTED(HELPICK
1076
 
     $ED)) THEN
 
1078
          IF (POLARIZATIONS(0,0).EQ.
 
1079
     $     -1.OR.ML5_0_IS_HEL_SELECTED(HELPICKED)) THEN
1077
1080
C           TO KEEP TRACK OF THE FINAL ANSWER TO BE RETURNED DURING
1078
1081
C            CHECK PHASE
1079
1082
            DO I=0,NSQUAREDSO
1164
1167
C             Of course if it is one, then we do not need to do
1165
1168
C              anything (because with HELINITSTARTOVER=.FALSE. we only
1166
1169
C              support exactly identical Hels.)
1167
 
              IF(GOODHEL(HELPICKED).GT.-HELOFFSET.AND.GOODHEL(HELPICKED)
1168
 
     $         .NE.1) THEN
 
1170
              IF(GOODHEL(HELPICKED).GT.
 
1171
     $         -HELOFFSET.AND.GOODHEL(HELPICKED).NE.1) THEN
1169
1172
                NEWHELREF=-1
1170
1173
                DO H=1,NCOMB
1171
1174
                  IF (GOODHEL(H).EQ.(-HELOFFSET-HELPICKED)) THEN
1359
1362
 
1360
1363
        CTMODE=BASIC_CT_MODE
1361
1364
 
1362
 
        IF(.NOT.EVAL_DONE(3).AND. ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE
1363
 
     $.1).OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.1)) ) THEN
 
1365
        IF(.NOT.EVAL_DONE(3).AND.
 
1366
     $    ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE.1)
 
1367
     $   .OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.1)) ) THEN
1364
1368
          EVAL_DONE(3)=.TRUE.
1365
1369
          CALL ML5_0_ROTATE_PS(PS,P,1)
1366
1370
          IF (DOING_QP_EVALS) CALL ML5_0_MP_ROTATE_PS(MP_PS,MP_P,1)
1367
1371
          GOTO 200
1368
1372
        ENDIF
1369
1373
 
1370
 
        IF(.NOT.EVAL_DONE(4).AND. ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE
1371
 
     $.2).OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.2)) ) THEN
 
1374
        IF(.NOT.EVAL_DONE(4).AND.
 
1375
     $    ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE.2)
 
1376
     $   .OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.2)) ) THEN
1372
1377
          EVAL_DONE(4)=.TRUE.
1373
1378
          CALL ML5_0_ROTATE_PS(PS,P,2)
1374
1379
          IF (DOING_QP_EVALS) CALL ML5_0_MP_ROTATE_PS(MP_PS,MP_P,2)
1927
1932
C       When using COLLIER with the internal stability test, the first
1928
1933
C        evaluation is typically more reliable so we do not want to
1929
1934
C        use the average but rather the first evaluation.
1930
 
        IF (MLREDUCTIONLIB(I_LIB).EQ.7.AND.COLLIERUSEINTERNALSTABILITYT
1931
 
     $EST) THEN
 
1935
        IF (MLREDUCTIONLIB(I_LIB)
 
1936
     $   .EQ.7.AND.COLLIERUSEINTERNALSTABILITYTEST) THEN
1932
1937
          DO I=1,3
1933
1938
            ESTIMATE(I,K) = FULLLIST(I,K,1)
1934
1939
          ENDDO
2073
2078
 1009   CONTINUE
2074
2079
      ENDDO
2075
2080
 
2076
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5SOINDEX_FOR_SQUARE'
2077
 
     $ //'D_ORDERS'
 
2081
      WRITE(*,*) 'ERROR:: Stopping function'
 
2082
     $ //' ML5_0_ML5SOINDEX_FOR_SQUARED_ORDERS'
2078
2083
      WRITE(*,*) 'Could not find squared orders ',(ORDERS(I),I=1,NSO)
2079
2084
      STOP
2080
2085
 
2179
2184
C     BEGIN CODE
2180
2185
C     
2181
2186
      DO I=1,NSO
2182
 
        SQORDERS(I)=AMPSPLITORDERS(ORDERINDEXA,I)+AMPSPLITORDERS(ORDERI
2183
 
     $NDEXB,I)
 
2187
        SQORDERS(I)=AMPSPLITORDERS(ORDERINDEXA,I)
 
2188
     $   +AMPSPLITORDERS(ORDERINDEXB,I)
2184
2189
      ENDDO
2185
2190
      ML5_0_ML5SQSOINDEX=ML5_0_ML5SOINDEX_FOR_SQUARED_ORDERS(SQORDERS)
2186
2191
      END
2219
2224
        RETURN
2220
2225
      ENDIF
2221
2226
 
2222
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5GET_SQUARED_ORDERS'
2223
 
     $ //'_FOR_SOINDEX'
 
2227
      WRITE(*,*) 'ERROR:: Stopping function'
 
2228
     $ //' ML5_0_ML5GET_SQUARED_ORDERS_FOR_SOINDEX'
2224
2229
      WRITE(*,*) 'Could not find squared orders index ',SOINDEX
2225
2230
      STOP
2226
2231
 
2259
2264
        RETURN
2260
2265
      ENDIF
2261
2266
 
2262
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5GET_ORDERS_FOR_AMP'
2263
 
     $ //'SOINDEX'
 
2267
      WRITE(*,*) 'ERROR:: Stopping function'
 
2268
     $ //' ML5_0_ML5GET_ORDERS_FOR_AMPSOINDEX'
2264
2269
      WRITE(*,*) 'Could not find amplitude split orders index ',SOINDEX
2265
2270
      STOP
2266
2271
 
2303
2308
 1009   CONTINUE
2304
2309
      ENDDO
2305
2310
 
2306
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5SOINDEX_FOR_AMPORD'
2307
 
     $ //'ERS'
 
2311
      WRITE(*,*) 'ERROR:: Stopping function'
 
2312
     $ //' ML5_0_ML5SOINDEX_FOR_AMPORDERS'
2308
2313
      WRITE(*,*) 'Could not find squared orders ',(ORDERS(I),I=1,NSO)
2309
2314
      STOP
2310
2315
 
2326
2331
 
2327
2332
      LOGICAL FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
2328
2333
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2329
 
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE, COLLIER_IR_POLE_COMPU
2330
 
     $TATION_CHOICE
2331
 
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE/FORCED_CHOICE_OF_COLLIER_UV
2332
 
     $_POLE_COMPUTATION, FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2333
 
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE,COLLIER_IR_POLE_COMPUTATION_
2334
 
     $CHOICE
 
2334
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE,
 
2335
     $  COLLIER_IR_POLE_COMPUTATION_CHOICE
 
2336
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE
 
2337
     $ /FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
 
2338
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
 
2339
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE
 
2340
     $ ,COLLIER_IR_POLE_COMPUTATION_CHOICE
2335
2341
 
2336
2342
      COLLIERCOMPUTEUVPOLES                        = ONOFF
2337
2343
C     This is just so that if we read the param again, we don't
2353
2359
 
2354
2360
      LOGICAL FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
2355
2361
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2356
 
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE, COLLIER_IR_POLE_COMPU
2357
 
     $TATION_CHOICE
2358
 
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE/FORCED_CHOICE_OF_COLLIER_UV
2359
 
     $_POLE_COMPUTATION, FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2360
 
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE,COLLIER_IR_POLE_COMPUTATION_
2361
 
     $CHOICE
 
2362
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE,
 
2363
     $  COLLIER_IR_POLE_COMPUTATION_CHOICE
 
2364
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE
 
2365
     $ /FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
 
2366
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
 
2367
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE
 
2368
     $ ,COLLIER_IR_POLE_COMPUTATION_CHOICE
2362
2369
 
2363
2370
      COLLIERCOMPUTEIRPOLES         = ONOFF
2364
2371
C     This is just so that if we read the param again, we don't