~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_gt_0_QEDAmpAndQEDsq_gt_2.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)
1103
1106
        IF((USERHEL.EQ.-1).OR.(USERHEL.EQ.HELPICKED)) THEN
1104
1107
C         Make sure that that no polarization constraint filters out
1105
1108
C          this helicity
1106
 
          IF (POLARIZATIONS(0,0).EQ.-1.OR.ML5_0_IS_HEL_SELECTED(HELPICK
1107
 
     $ED)) THEN
 
1109
          IF (POLARIZATIONS(0,0).EQ.
 
1110
     $     -1.OR.ML5_0_IS_HEL_SELECTED(HELPICKED)) THEN
1108
1111
C           TO KEEP TRACK OF THE FINAL ANSWER TO BE RETURNED DURING
1109
1112
C            CHECK PHASE
1110
1113
            DO I=0,NSQUAREDSO
1195
1198
C             Of course if it is one, then we do not need to do
1196
1199
C              anything (because with HELINITSTARTOVER=.FALSE. we only
1197
1200
C              support exactly identical Hels.)
1198
 
              IF(GOODHEL(HELPICKED).GT.-HELOFFSET.AND.GOODHEL(HELPICKED)
1199
 
     $         .NE.1) THEN
 
1201
              IF(GOODHEL(HELPICKED).GT.
 
1202
     $         -HELOFFSET.AND.GOODHEL(HELPICKED).NE.1) THEN
1200
1203
                NEWHELREF=-1
1201
1204
                DO H=1,NCOMB
1202
1205
                  IF (GOODHEL(H).EQ.(-HELOFFSET-HELPICKED)) THEN
1390
1393
 
1391
1394
        CTMODE=BASIC_CT_MODE
1392
1395
 
1393
 
        IF(.NOT.EVAL_DONE(3).AND. ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE
1394
 
     $.1).OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.1)) ) THEN
 
1396
        IF(.NOT.EVAL_DONE(3).AND.
 
1397
     $    ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE.1)
 
1398
     $   .OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.1)) ) THEN
1395
1399
          EVAL_DONE(3)=.TRUE.
1396
1400
          CALL ML5_0_ROTATE_PS(PS,P,1)
1397
1401
          IF (DOING_QP_EVALS) CALL ML5_0_MP_ROTATE_PS(MP_PS,MP_P,1)
1398
1402
          GOTO 200
1399
1403
        ENDIF
1400
1404
 
1401
 
        IF(.NOT.EVAL_DONE(4).AND. ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE
1402
 
     $.2).OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.2)) ) THEN
 
1405
        IF(.NOT.EVAL_DONE(4).AND.
 
1406
     $    ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE.2)
 
1407
     $   .OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.2)) ) THEN
1403
1408
          EVAL_DONE(4)=.TRUE.
1404
1409
          CALL ML5_0_ROTATE_PS(PS,P,2)
1405
1410
          IF (DOING_QP_EVALS) CALL ML5_0_MP_ROTATE_PS(MP_PS,MP_P,2)
1958
1963
C       When using COLLIER with the internal stability test, the first
1959
1964
C        evaluation is typically more reliable so we do not want to
1960
1965
C        use the average but rather the first evaluation.
1961
 
        IF (MLREDUCTIONLIB(I_LIB).EQ.7.AND.COLLIERUSEINTERNALSTABILITYT
1962
 
     $EST) THEN
 
1966
        IF (MLREDUCTIONLIB(I_LIB)
 
1967
     $   .EQ.7.AND.COLLIERUSEINTERNALSTABILITYTEST) THEN
1963
1968
          DO I=1,3
1964
1969
            ESTIMATE(I,K) = FULLLIST(I,K,1)
1965
1970
          ENDDO
2106
2111
 1009   CONTINUE
2107
2112
      ENDDO
2108
2113
 
2109
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5SOINDEX_FOR_SQUARE'
2110
 
     $ //'D_ORDERS'
 
2114
      WRITE(*,*) 'ERROR:: Stopping function'
 
2115
     $ //' ML5_0_ML5SOINDEX_FOR_SQUARED_ORDERS'
2111
2116
      WRITE(*,*) 'Could not find squared orders ',(ORDERS(I),I=1,NSO)
2112
2117
      STOP
2113
2118
 
2404
2409
C     BEGIN CODE
2405
2410
C     
2406
2411
      DO I=1,NSO
2407
 
        SQORDERS(I)=AMPSPLITORDERS(ORDERINDEXA,I)+AMPSPLITORDERS(ORDERI
2408
 
     $NDEXB,I)
 
2412
        SQORDERS(I)=AMPSPLITORDERS(ORDERINDEXA,I)
 
2413
     $   +AMPSPLITORDERS(ORDERINDEXB,I)
2409
2414
      ENDDO
2410
2415
      ML5_0_ML5SQSOINDEX=ML5_0_ML5SOINDEX_FOR_SQUARED_ORDERS(SQORDERS)
2411
2416
      END
2444
2449
        RETURN
2445
2450
      ENDIF
2446
2451
 
2447
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5GET_SQUARED_ORDERS'
2448
 
     $ //'_FOR_SOINDEX'
 
2452
      WRITE(*,*) 'ERROR:: Stopping function'
 
2453
     $ //' ML5_0_ML5GET_SQUARED_ORDERS_FOR_SOINDEX'
2449
2454
      WRITE(*,*) 'Could not find squared orders index ',SOINDEX
2450
2455
      STOP
2451
2456
 
2484
2489
        RETURN
2485
2490
      ENDIF
2486
2491
 
2487
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5GET_ORDERS_FOR_AMP'
2488
 
     $ //'SOINDEX'
 
2492
      WRITE(*,*) 'ERROR:: Stopping function'
 
2493
     $ //' ML5_0_ML5GET_ORDERS_FOR_AMPSOINDEX'
2489
2494
      WRITE(*,*) 'Could not find amplitude split orders index ',SOINDEX
2490
2495
      STOP
2491
2496
 
2528
2533
 1009   CONTINUE
2529
2534
      ENDDO
2530
2535
 
2531
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5SOINDEX_FOR_AMPORD'
2532
 
     $ //'ERS'
 
2536
      WRITE(*,*) 'ERROR:: Stopping function'
 
2537
     $ //' ML5_0_ML5SOINDEX_FOR_AMPORDERS'
2533
2538
      WRITE(*,*) 'Could not find squared orders ',(ORDERS(I),I=1,NSO)
2534
2539
      STOP
2535
2540
 
2551
2556
 
2552
2557
      LOGICAL FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
2553
2558
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2554
 
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE, COLLIER_IR_POLE_COMPU
2555
 
     $TATION_CHOICE
2556
 
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE/FORCED_CHOICE_OF_COLLIER_UV
2557
 
     $_POLE_COMPUTATION, FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2558
 
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE,COLLIER_IR_POLE_COMPUTATION_
2559
 
     $CHOICE
 
2559
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE,
 
2560
     $  COLLIER_IR_POLE_COMPUTATION_CHOICE
 
2561
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE
 
2562
     $ /FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
 
2563
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
 
2564
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE
 
2565
     $ ,COLLIER_IR_POLE_COMPUTATION_CHOICE
2560
2566
 
2561
2567
      COLLIERCOMPUTEUVPOLES                        = ONOFF
2562
2568
C     This is just so that if we read the param again, we don't
2578
2584
 
2579
2585
      LOGICAL FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
2580
2586
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2581
 
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE, COLLIER_IR_POLE_COMPU
2582
 
     $TATION_CHOICE
2583
 
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE/FORCED_CHOICE_OF_COLLIER_UV
2584
 
     $_POLE_COMPUTATION, FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2585
 
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE,COLLIER_IR_POLE_COMPUTATION_
2586
 
     $CHOICE
 
2587
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE,
 
2588
     $  COLLIER_IR_POLE_COMPUTATION_CHOICE
 
2589
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE
 
2590
     $ /FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
 
2591
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
 
2592
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE
 
2593
     $ ,COLLIER_IR_POLE_COMPUTATION_CHOICE
2587
2594
 
2588
2595
      COLLIERCOMPUTEIRPOLES         = ONOFF
2589
2596
C     This is just so that if we read the param again, we don't