~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_QCDQEDpert_QCDsq_eq_4.f

mwrge with 2.7.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
83
83
      INTEGER NSQUAREDSOP1
84
84
      PARAMETER (NSQUAREDSOP1=NSQUAREDSO+1)
85
85
C     The total number of loop reduction libraries
86
 
C     At present, there are only CutTools,PJFry++,IREGI,Golem95,Samurai
87
 
C     , Ninja and COLLIER
 
86
C     At present, there are only
 
87
C      CutTools,PJFry++,IREGI,Golem95,Samurai, Ninja and COLLIER
88
88
      INTEGER NLOOPLIB
89
89
      PARAMETER (NLOOPLIB=7)
90
90
C     Only CutTools or possibly Ninja (if installed with qp support)
411
411
C      reading the parameters
412
412
      LOGICAL FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
413
413
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
414
 
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE, COLLIER_IR_POLE_COMPU
415
 
     $TATION_CHOICE
 
414
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE,
 
415
     $  COLLIER_IR_POLE_COMPUTATION_CHOICE
416
416
      DATA  FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION
417
417
     $ ,FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION/.FALSE.,.FALSE./
418
 
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE/FORCED_CHOICE_OF_COLLIER_UV
419
 
     $_POLE_COMPUTATION, FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
420
 
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE,COLLIER_IR_POLE_COMPUTATION_
421
 
     $CHOICE
 
418
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE
 
419
     $ /FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
 
420
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
 
421
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE
 
422
     $ ,COLLIER_IR_POLE_COMPUTATION_CHOICE
422
423
 
423
424
C     This variable controls the general initialization which is
424
425
C      *common* between all MadLoop SubProcesses.
888
889
     $ +P(2,2))**2-(P(3,1)+P(3,2))**2))
889
890
 
890
891
      CTCALL_REQ_SO_DONE=.FALSE.
891
 
      FILTER_SO = (.NOT.CHECKPHASE).AND.HELDOUBLECHECKED.AND.(SQSO_TARG
892
 
     $ET.NE.-1)
 
892
      FILTER_SO = (.NOT.CHECKPHASE)
 
893
     $ .AND.HELDOUBLECHECKED.AND.(SQSO_TARGET.NE.-1)
893
894
 
894
895
      DO I=1,NLOOPGROUPS
895
896
        DO J=0,LOOPMAXCOEFS-1
928
929
      ENDIF
929
930
 
930
931
      DO H=1,NCOMB
931
 
        IF ((HELPICKED.EQ.H).OR.((HELPICKED.EQ.-1).AND.(CHECKPHASE.OR.(
932
 
     $.NOT.HELDOUBLECHECKED).OR.(GOODHEL(H).GT.-HELOFFSET.AND.GOODHEL(H)
933
 
     $   .NE.0)))) THEN
 
932
        IF ((HELPICKED.EQ.H).OR.((HELPICKED.EQ.-1)
 
933
     $   .AND.(CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED).OR.(GOODHEL(H)
 
934
     $   .GT.-HELOFFSET.AND.GOODHEL(H).NE.0)))) THEN
934
935
 
935
936
C         Handle the possible requirement of specific polarizations
936
 
          IF ((.NOT.CHECKPHASE).AND.HELDOUBLECHECKED.AND.POLARIZATIONS(
937
 
     $0,0).EQ.0.AND.(.NOT.ML5_0_IS_HEL_SELECTED(H))) THEN
 
937
          IF ((.NOT.CHECKPHASE)
 
938
     $     .AND.HELDOUBLECHECKED.AND.POLARIZATIONS(0,0)
 
939
     $     .EQ.0.AND.(.NOT.ML5_0_IS_HEL_SELECTED(H))) THEN
938
940
            CYCLE
939
941
          ENDIF
940
942
 
975
977
            DO I=1,NCTAMPS
976
978
              CFTOT=DCMPLX(CF_N(I,J)/DBLE(ABS(CF_D(I,J))),0.0D0)
977
979
              IF(CF_D(I,J).LT.0) CFTOT=CFTOT*IMAG1
978
 
              ITEMP = ML5_0_ML5SQSOINDEX(ML5_0_ML5SOINDEX_FOR_LOOP_AMP(
979
 
     $I),ML5_0_ML5SOINDEX_FOR_BORN_AMP(J))
 
980
              ITEMP =
 
981
     $          ML5_0_ML5SQSOINDEX(ML5_0_ML5SOINDEX_FOR_LOOP_AMP(I)
 
982
     $         ,ML5_0_ML5SOINDEX_FOR_BORN_AMP(J))
980
983
              IF (.NOT.FILTER_SO.OR.SQSO_TARGET.EQ.ITEMP) THEN
981
984
                DO K=1,3
982
985
                  TEMP2 = DBLE(CFTOT*AMPL(K,I)*CTEMP)
1102
1105
        IF((USERHEL.EQ.-1).OR.(USERHEL.EQ.HELPICKED)) THEN
1103
1106
C         Make sure that that no polarization constraint filters out
1104
1107
C          this helicity
1105
 
          IF (POLARIZATIONS(0,0).EQ.-1.OR.ML5_0_IS_HEL_SELECTED(HELPICK
1106
 
     $ED)) THEN
 
1108
          IF (POLARIZATIONS(0,0).EQ.
 
1109
     $     -1.OR.ML5_0_IS_HEL_SELECTED(HELPICKED)) THEN
1107
1110
C           TO KEEP TRACK OF THE FINAL ANSWER TO BE RETURNED DURING
1108
1111
C            CHECK PHASE
1109
1112
            DO I=0,NSQUAREDSO
1194
1197
C             Of course if it is one, then we do not need to do
1195
1198
C              anything (because with HELINITSTARTOVER=.FALSE. we only
1196
1199
C              support exactly identical Hels.)
1197
 
              IF(GOODHEL(HELPICKED).GT.-HELOFFSET.AND.GOODHEL(HELPICKED)
1198
 
     $         .NE.1) THEN
 
1200
              IF(GOODHEL(HELPICKED).GT.
 
1201
     $         -HELOFFSET.AND.GOODHEL(HELPICKED).NE.1) THEN
1199
1202
                NEWHELREF=-1
1200
1203
                DO H=1,NCOMB
1201
1204
                  IF (GOODHEL(H).EQ.(-HELOFFSET-HELPICKED)) THEN
1389
1392
 
1390
1393
        CTMODE=BASIC_CT_MODE
1391
1394
 
1392
 
        IF(.NOT.EVAL_DONE(3).AND. ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE
1393
 
     $.1).OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.1)) ) THEN
 
1395
        IF(.NOT.EVAL_DONE(3).AND.
 
1396
     $    ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE.1)
 
1397
     $   .OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.1)) ) THEN
1394
1398
          EVAL_DONE(3)=.TRUE.
1395
1399
          CALL ML5_0_ROTATE_PS(PS,P,1)
1396
1400
          IF (DOING_QP_EVALS) CALL ML5_0_MP_ROTATE_PS(MP_PS,MP_P,1)
1397
1401
          GOTO 200
1398
1402
        ENDIF
1399
1403
 
1400
 
        IF(.NOT.EVAL_DONE(4).AND. ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE
1401
 
     $.2).OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.2)) ) THEN
 
1404
        IF(.NOT.EVAL_DONE(4).AND.
 
1405
     $    ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE.2)
 
1406
     $   .OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.2)) ) THEN
1402
1407
          EVAL_DONE(4)=.TRUE.
1403
1408
          CALL ML5_0_ROTATE_PS(PS,P,2)
1404
1409
          IF (DOING_QP_EVALS) CALL ML5_0_MP_ROTATE_PS(MP_PS,MP_P,2)
1957
1962
C       When using COLLIER with the internal stability test, the first
1958
1963
C        evaluation is typically more reliable so we do not want to
1959
1964
C        use the average but rather the first evaluation.
1960
 
        IF (MLREDUCTIONLIB(I_LIB).EQ.7.AND.COLLIERUSEINTERNALSTABILITYT
1961
 
     $EST) THEN
 
1965
        IF (MLREDUCTIONLIB(I_LIB)
 
1966
     $   .EQ.7.AND.COLLIERUSEINTERNALSTABILITYTEST) THEN
1962
1967
          DO I=1,3
1963
1968
            ESTIMATE(I,K) = FULLLIST(I,K,1)
1964
1969
          ENDDO
2105
2110
 1009   CONTINUE
2106
2111
      ENDDO
2107
2112
 
2108
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5SOINDEX_FOR_SQUARE'
2109
 
     $ //'D_ORDERS'
 
2113
      WRITE(*,*) 'ERROR:: Stopping function'
 
2114
     $ //' ML5_0_ML5SOINDEX_FOR_SQUARED_ORDERS'
2110
2115
      WRITE(*,*) 'Could not find squared orders ',(ORDERS(I),I=1,NSO)
2111
2116
      STOP
2112
2117
 
2233
2238
C     BEGIN CODE
2234
2239
C     
2235
2240
      DO I=1,NSO
2236
 
        SQORDERS(I)=AMPSPLITORDERS(ORDERINDEXA,I)+AMPSPLITORDERS(ORDERI
2237
 
     $NDEXB,I)
 
2241
        SQORDERS(I)=AMPSPLITORDERS(ORDERINDEXA,I)
 
2242
     $   +AMPSPLITORDERS(ORDERINDEXB,I)
2238
2243
      ENDDO
2239
2244
      ML5_0_ML5SQSOINDEX=ML5_0_ML5SOINDEX_FOR_SQUARED_ORDERS(SQORDERS)
2240
2245
      END
2273
2278
        RETURN
2274
2279
      ENDIF
2275
2280
 
2276
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5GET_SQUARED_ORDERS'
2277
 
     $ //'_FOR_SOINDEX'
 
2281
      WRITE(*,*) 'ERROR:: Stopping function'
 
2282
     $ //' ML5_0_ML5GET_SQUARED_ORDERS_FOR_SOINDEX'
2278
2283
      WRITE(*,*) 'Could not find squared orders index ',SOINDEX
2279
2284
      STOP
2280
2285
 
2313
2318
        RETURN
2314
2319
      ENDIF
2315
2320
 
2316
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5GET_ORDERS_FOR_AMP'
2317
 
     $ //'SOINDEX'
 
2321
      WRITE(*,*) 'ERROR:: Stopping function'
 
2322
     $ //' ML5_0_ML5GET_ORDERS_FOR_AMPSOINDEX'
2318
2323
      WRITE(*,*) 'Could not find amplitude split orders index ',SOINDEX
2319
2324
      STOP
2320
2325
 
2357
2362
 1009   CONTINUE
2358
2363
      ENDDO
2359
2364
 
2360
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5SOINDEX_FOR_AMPORD'
2361
 
     $ //'ERS'
 
2365
      WRITE(*,*) 'ERROR:: Stopping function'
 
2366
     $ //' ML5_0_ML5SOINDEX_FOR_AMPORDERS'
2362
2367
      WRITE(*,*) 'Could not find squared orders ',(ORDERS(I),I=1,NSO)
2363
2368
      STOP
2364
2369
 
2380
2385
 
2381
2386
      LOGICAL FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
2382
2387
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2383
 
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE, COLLIER_IR_POLE_COMPU
2384
 
     $TATION_CHOICE
2385
 
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE/FORCED_CHOICE_OF_COLLIER_UV
2386
 
     $_POLE_COMPUTATION, FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2387
 
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE,COLLIER_IR_POLE_COMPUTATION_
2388
 
     $CHOICE
 
2388
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE,
 
2389
     $  COLLIER_IR_POLE_COMPUTATION_CHOICE
 
2390
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE
 
2391
     $ /FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
 
2392
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
 
2393
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE
 
2394
     $ ,COLLIER_IR_POLE_COMPUTATION_CHOICE
2389
2395
 
2390
2396
      COLLIERCOMPUTEUVPOLES                        = ONOFF
2391
2397
C     This is just so that if we read the param again, we don't
2407
2413
 
2408
2414
      LOGICAL FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
2409
2415
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2410
 
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE, COLLIER_IR_POLE_COMPU
2411
 
     $TATION_CHOICE
2412
 
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE/FORCED_CHOICE_OF_COLLIER_UV
2413
 
     $_POLE_COMPUTATION, FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2414
 
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE,COLLIER_IR_POLE_COMPUTATION_
2415
 
     $CHOICE
 
2416
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE,
 
2417
     $  COLLIER_IR_POLE_COMPUTATION_CHOICE
 
2418
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE
 
2419
     $ /FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
 
2420
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
 
2421
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE
 
2422
     $ ,COLLIER_IR_POLE_COMPUTATION_CHOICE
2416
2423
 
2417
2424
      COLLIERCOMPUTEIRPOLES         = ONOFF
2418
2425
C     This is just so that if we read the param again, we don't