~maddevelopers/mg5amcnlo/3.2.0

« back to all changes in this revision

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

  • Committer: olivier-mattelaer
  • Date: 2020-07-06 19:41:16 UTC
  • mfrom: (961.1.9 3.0.3)
  • Revision ID: olivier-mattelaer-20200706194116-pm8u0fi091uqpuon
pass to 3.0.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.
896
897
     $ +P(2,2))**2-(P(3,1)+P(3,2))**2))
897
898
 
898
899
      CTCALL_REQ_SO_DONE=.FALSE.
899
 
      FILTER_SO = (.NOT.CHECKPHASE).AND.HELDOUBLECHECKED.AND.(SQSO_TARG
900
 
     $ET.NE.-1)
 
900
      FILTER_SO = (.NOT.CHECKPHASE)
 
901
     $ .AND.HELDOUBLECHECKED.AND.(SQSO_TARGET.NE.-1)
901
902
 
902
903
      DO I=1,NLOOPGROUPS
903
904
        DO J=0,LOOPMAXCOEFS-1
936
937
      ENDIF
937
938
 
938
939
      DO H=1,NCOMB
939
 
        IF ((HELPICKED.EQ.H).OR.((HELPICKED.EQ.-1).AND.(CHECKPHASE.OR.(
940
 
     $.NOT.HELDOUBLECHECKED).OR.(GOODHEL(H).GT.-HELOFFSET.AND.GOODHEL(H)
941
 
     $   .NE.0)))) THEN
 
940
        IF ((HELPICKED.EQ.H).OR.((HELPICKED.EQ.-1)
 
941
     $   .AND.(CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED).OR.(GOODHEL(H)
 
942
     $   .GT.-HELOFFSET.AND.GOODHEL(H).NE.0)))) THEN
942
943
 
943
944
C         Handle the possible requirement of specific polarizations
944
 
          IF ((.NOT.CHECKPHASE).AND.HELDOUBLECHECKED.AND.POLARIZATIONS(
945
 
     $0,0).EQ.0.AND.(.NOT.ML5_0_IS_HEL_SELECTED(H))) THEN
 
945
          IF ((.NOT.CHECKPHASE)
 
946
     $     .AND.HELDOUBLECHECKED.AND.POLARIZATIONS(0,0)
 
947
     $     .EQ.0.AND.(.NOT.ML5_0_IS_HEL_SELECTED(H))) THEN
946
948
            CYCLE
947
949
          ENDIF
948
950
 
983
985
            DO I=1,NCTAMPS
984
986
              CFTOT=DCMPLX(CF_N(I,J)/DBLE(ABS(CF_D(I,J))),0.0D0)
985
987
              IF(CF_D(I,J).LT.0) CFTOT=CFTOT*IMAG1
986
 
              ITEMP = ML5_0_ML5SQSOINDEX(ML5_0_ML5SOINDEX_FOR_LOOP_AMP(
987
 
     $I),ML5_0_ML5SOINDEX_FOR_BORN_AMP(J))
 
988
              ITEMP =
 
989
     $          ML5_0_ML5SQSOINDEX(ML5_0_ML5SOINDEX_FOR_LOOP_AMP(I)
 
990
     $         ,ML5_0_ML5SOINDEX_FOR_BORN_AMP(J))
988
991
              IF (.NOT.FILTER_SO.OR.SQSO_TARGET.EQ.ITEMP) THEN
989
992
                DO K=1,3
990
993
                  TEMP2 = DBLE(CFTOT*AMPL(K,I)*CTEMP)
1111
1114
        IF((USERHEL.EQ.-1).OR.(USERHEL.EQ.HELPICKED)) THEN
1112
1115
C         Make sure that that no polarization constraint filters out
1113
1116
C          this helicity
1114
 
          IF (POLARIZATIONS(0,0).EQ.-1.OR.ML5_0_IS_HEL_SELECTED(HELPICK
1115
 
     $ED)) THEN
 
1117
          IF (POLARIZATIONS(0,0).EQ.
 
1118
     $     -1.OR.ML5_0_IS_HEL_SELECTED(HELPICKED)) THEN
1116
1119
C           TO KEEP TRACK OF THE FINAL ANSWER TO BE RETURNED DURING
1117
1120
C            CHECK PHASE
1118
1121
            DO I=0,NSQUAREDSO
1203
1206
C             Of course if it is one, then we do not need to do
1204
1207
C              anything (because with HELINITSTARTOVER=.FALSE. we only
1205
1208
C              support exactly identical Hels.)
1206
 
              IF(GOODHEL(HELPICKED).GT.-HELOFFSET.AND.GOODHEL(HELPICKED)
1207
 
     $         .NE.1) THEN
 
1209
              IF(GOODHEL(HELPICKED).GT.
 
1210
     $         -HELOFFSET.AND.GOODHEL(HELPICKED).NE.1) THEN
1208
1211
                NEWHELREF=-1
1209
1212
                DO H=1,NCOMB
1210
1213
                  IF (GOODHEL(H).EQ.(-HELOFFSET-HELPICKED)) THEN
1398
1401
 
1399
1402
        CTMODE=BASIC_CT_MODE
1400
1403
 
1401
 
        IF(.NOT.EVAL_DONE(3).AND. ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE
1402
 
     $.1).OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.1)) ) THEN
 
1404
        IF(.NOT.EVAL_DONE(3).AND.
 
1405
     $    ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE.1)
 
1406
     $   .OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.1)) ) THEN
1403
1407
          EVAL_DONE(3)=.TRUE.
1404
1408
          CALL ML5_0_ROTATE_PS(PS,P,1)
1405
1409
          IF (DOING_QP_EVALS) CALL ML5_0_MP_ROTATE_PS(MP_PS,MP_P,1)
1406
1410
          GOTO 200
1407
1411
        ENDIF
1408
1412
 
1409
 
        IF(.NOT.EVAL_DONE(4).AND. ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE
1410
 
     $.2).OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.2)) ) THEN
 
1413
        IF(.NOT.EVAL_DONE(4).AND.
 
1414
     $    ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE.2)
 
1415
     $   .OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.2)) ) THEN
1411
1416
          EVAL_DONE(4)=.TRUE.
1412
1417
          CALL ML5_0_ROTATE_PS(PS,P,2)
1413
1418
          IF (DOING_QP_EVALS) CALL ML5_0_MP_ROTATE_PS(MP_PS,MP_P,2)
1966
1971
C       When using COLLIER with the internal stability test, the first
1967
1972
C        evaluation is typically more reliable so we do not want to
1968
1973
C        use the average but rather the first evaluation.
1969
 
        IF (MLREDUCTIONLIB(I_LIB).EQ.7.AND.COLLIERUSEINTERNALSTABILITYT
1970
 
     $EST) THEN
 
1974
        IF (MLREDUCTIONLIB(I_LIB)
 
1975
     $   .EQ.7.AND.COLLIERUSEINTERNALSTABILITYTEST) THEN
1971
1976
          DO I=1,3
1972
1977
            ESTIMATE(I,K) = FULLLIST(I,K,1)
1973
1978
          ENDDO
2115
2120
 1009   CONTINUE
2116
2121
      ENDDO
2117
2122
 
2118
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5SOINDEX_FOR_SQUARE'
2119
 
     $ //'D_ORDERS'
 
2123
      WRITE(*,*) 'ERROR:: Stopping function'
 
2124
     $ //' ML5_0_ML5SOINDEX_FOR_SQUARED_ORDERS'
2120
2125
      WRITE(*,*) 'Could not find squared orders ',(ORDERS(I),I=1,NSO)
2121
2126
      STOP
2122
2127
 
2472
2477
C     BEGIN CODE
2473
2478
C     
2474
2479
      DO I=1,NSO
2475
 
        SQORDERS(I)=AMPSPLITORDERS(ORDERINDEXA,I)+AMPSPLITORDERS(ORDERI
2476
 
     $NDEXB,I)
 
2480
        SQORDERS(I)=AMPSPLITORDERS(ORDERINDEXA,I)
 
2481
     $   +AMPSPLITORDERS(ORDERINDEXB,I)
2477
2482
      ENDDO
2478
2483
      ML5_0_ML5SQSOINDEX=ML5_0_ML5SOINDEX_FOR_SQUARED_ORDERS(SQORDERS)
2479
2484
      END
2512
2517
        RETURN
2513
2518
      ENDIF
2514
2519
 
2515
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5GET_SQUARED_ORDERS'
2516
 
     $ //'_FOR_SOINDEX'
 
2520
      WRITE(*,*) 'ERROR:: Stopping function'
 
2521
     $ //' ML5_0_ML5GET_SQUARED_ORDERS_FOR_SOINDEX'
2517
2522
      WRITE(*,*) 'Could not find squared orders index ',SOINDEX
2518
2523
      STOP
2519
2524
 
2552
2557
        RETURN
2553
2558
      ENDIF
2554
2559
 
2555
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5GET_ORDERS_FOR_AMP'
2556
 
     $ //'SOINDEX'
 
2560
      WRITE(*,*) 'ERROR:: Stopping function'
 
2561
     $ //' ML5_0_ML5GET_ORDERS_FOR_AMPSOINDEX'
2557
2562
      WRITE(*,*) 'Could not find amplitude split orders index ',SOINDEX
2558
2563
      STOP
2559
2564
 
2596
2601
 1009   CONTINUE
2597
2602
      ENDDO
2598
2603
 
2599
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5SOINDEX_FOR_AMPORD'
2600
 
     $ //'ERS'
 
2604
      WRITE(*,*) 'ERROR:: Stopping function'
 
2605
     $ //' ML5_0_ML5SOINDEX_FOR_AMPORDERS'
2601
2606
      WRITE(*,*) 'Could not find squared orders ',(ORDERS(I),I=1,NSO)
2602
2607
      STOP
2603
2608
 
2619
2624
 
2620
2625
      LOGICAL FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
2621
2626
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2622
 
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE, COLLIER_IR_POLE_COMPU
2623
 
     $TATION_CHOICE
2624
 
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE/FORCED_CHOICE_OF_COLLIER_UV
2625
 
     $_POLE_COMPUTATION, FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2626
 
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE,COLLIER_IR_POLE_COMPUTATION_
2627
 
     $CHOICE
 
2627
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE,
 
2628
     $  COLLIER_IR_POLE_COMPUTATION_CHOICE
 
2629
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE
 
2630
     $ /FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
 
2631
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
 
2632
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE
 
2633
     $ ,COLLIER_IR_POLE_COMPUTATION_CHOICE
2628
2634
 
2629
2635
      COLLIERCOMPUTEUVPOLES                        = ONOFF
2630
2636
C     This is just so that if we read the param again, we don't
2646
2652
 
2647
2653
      LOGICAL FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
2648
2654
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2649
 
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE, COLLIER_IR_POLE_COMPU
2650
 
     $TATION_CHOICE
2651
 
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE/FORCED_CHOICE_OF_COLLIER_UV
2652
 
     $_POLE_COMPUTATION, FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2653
 
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE,COLLIER_IR_POLE_COMPUTATION_
2654
 
     $CHOICE
 
2655
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE,
 
2656
     $  COLLIER_IR_POLE_COMPUTATION_CHOICE
 
2657
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE
 
2658
     $ /FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
 
2659
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
 
2660
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE
 
2661
     $ ,COLLIER_IR_POLE_COMPUTATION_CHOICE
2655
2662
 
2656
2663
      COLLIERCOMPUTEIRPOLES         = ONOFF
2657
2664
C     This is just so that if we read the param again, we don't