~madteam/mg5amcnlo/series2.0

« back to all changes in this revision

Viewing changes to tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/loop_matrix.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.
878
879
     $ +P(2,2))**2-(P(3,1)+P(3,2))**2))
879
880
 
880
881
      CTCALL_REQ_SO_DONE=.FALSE.
881
 
      FILTER_SO = (.NOT.CHECKPHASE).AND.HELDOUBLECHECKED.AND.(SQSO_TARG
882
 
     $ET.NE.-1)
 
882
      FILTER_SO = (.NOT.CHECKPHASE)
 
883
     $ .AND.HELDOUBLECHECKED.AND.(SQSO_TARGET.NE.-1)
883
884
 
884
885
      DO I=1,NLOOPGROUPS
885
886
        DO J=0,LOOPMAXCOEFS-1
918
919
      ENDIF
919
920
 
920
921
      DO H=1,NCOMB
921
 
        IF ((HELPICKED.EQ.H).OR.((HELPICKED.EQ.-1).AND.(CHECKPHASE.OR.(
922
 
     $.NOT.HELDOUBLECHECKED).OR.(GOODHEL(H).GT.-HELOFFSET.AND.GOODHEL(H)
923
 
     $   .NE.0)))) THEN
 
922
        IF ((HELPICKED.EQ.H).OR.((HELPICKED.EQ.-1)
 
923
     $   .AND.(CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED).OR.(GOODHEL(H)
 
924
     $   .GT.-HELOFFSET.AND.GOODHEL(H).NE.0)))) THEN
924
925
 
925
926
C         Handle the possible requirement of specific polarizations
926
 
          IF ((.NOT.CHECKPHASE).AND.HELDOUBLECHECKED.AND.POLARIZATIONS(
927
 
     $0,0).EQ.0.AND.(.NOT.ML5_0_IS_HEL_SELECTED(H))) THEN
 
927
          IF ((.NOT.CHECKPHASE)
 
928
     $     .AND.HELDOUBLECHECKED.AND.POLARIZATIONS(0,0)
 
929
     $     .EQ.0.AND.(.NOT.ML5_0_IS_HEL_SELECTED(H))) THEN
928
930
            CYCLE
929
931
          ENDIF
930
932
 
965
967
            DO I=1,NCTAMPS
966
968
              CFTOT=DCMPLX(CF_N(I,J)/DBLE(ABS(CF_D(I,J))),0.0D0)
967
969
              IF(CF_D(I,J).LT.0) CFTOT=CFTOT*IMAG1
968
 
              ITEMP = ML5_0_ML5SQSOINDEX(ML5_0_ML5SOINDEX_FOR_LOOP_AMP(
969
 
     $I),ML5_0_ML5SOINDEX_FOR_BORN_AMP(J))
 
970
              ITEMP =
 
971
     $          ML5_0_ML5SQSOINDEX(ML5_0_ML5SOINDEX_FOR_LOOP_AMP(I)
 
972
     $         ,ML5_0_ML5SOINDEX_FOR_BORN_AMP(J))
970
973
              IF (.NOT.FILTER_SO.OR.SQSO_TARGET.EQ.ITEMP) THEN
971
974
                DO K=1,3
972
975
                  TEMP2 = DBLE(CFTOT*AMPL(K,I)*CTEMP)
1066
1069
        IF((USERHEL.EQ.-1).OR.(USERHEL.EQ.HELPICKED)) THEN
1067
1070
C         Make sure that that no polarization constraint filters out
1068
1071
C          this helicity
1069
 
          IF (POLARIZATIONS(0,0).EQ.-1.OR.ML5_0_IS_HEL_SELECTED(HELPICK
1070
 
     $ED)) THEN
 
1072
          IF (POLARIZATIONS(0,0).EQ.
 
1073
     $     -1.OR.ML5_0_IS_HEL_SELECTED(HELPICKED)) THEN
1071
1074
C           TO KEEP TRACK OF THE FINAL ANSWER TO BE RETURNED DURING
1072
1075
C            CHECK PHASE
1073
1076
            DO I=0,NSQUAREDSO
1158
1161
C             Of course if it is one, then we do not need to do
1159
1162
C              anything (because with HELINITSTARTOVER=.FALSE. we only
1160
1163
C              support exactly identical Hels.)
1161
 
              IF(GOODHEL(HELPICKED).GT.-HELOFFSET.AND.GOODHEL(HELPICKED)
1162
 
     $         .NE.1) THEN
 
1164
              IF(GOODHEL(HELPICKED).GT.
 
1165
     $         -HELOFFSET.AND.GOODHEL(HELPICKED).NE.1) THEN
1163
1166
                NEWHELREF=-1
1164
1167
                DO H=1,NCOMB
1165
1168
                  IF (GOODHEL(H).EQ.(-HELOFFSET-HELPICKED)) THEN
1353
1356
 
1354
1357
        CTMODE=BASIC_CT_MODE
1355
1358
 
1356
 
        IF(.NOT.EVAL_DONE(3).AND. ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE
1357
 
     $.1).OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.1)) ) THEN
 
1359
        IF(.NOT.EVAL_DONE(3).AND.
 
1360
     $    ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE.1)
 
1361
     $   .OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.1)) ) THEN
1358
1362
          EVAL_DONE(3)=.TRUE.
1359
1363
          CALL ML5_0_ROTATE_PS(PS,P,1)
1360
1364
          IF (DOING_QP_EVALS) CALL ML5_0_MP_ROTATE_PS(MP_PS,MP_P,1)
1361
1365
          GOTO 200
1362
1366
        ENDIF
1363
1367
 
1364
 
        IF(.NOT.EVAL_DONE(4).AND. ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE
1365
 
     $.2).OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.2)) ) THEN
 
1368
        IF(.NOT.EVAL_DONE(4).AND.
 
1369
     $    ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE.2)
 
1370
     $   .OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.2)) ) THEN
1366
1371
          EVAL_DONE(4)=.TRUE.
1367
1372
          CALL ML5_0_ROTATE_PS(PS,P,2)
1368
1373
          IF (DOING_QP_EVALS) CALL ML5_0_MP_ROTATE_PS(MP_PS,MP_P,2)
1917
1922
C       When using COLLIER with the internal stability test, the first
1918
1923
C        evaluation is typically more reliable so we do not want to
1919
1924
C        use the average but rather the first evaluation.
1920
 
        IF (MLREDUCTIONLIB(I_LIB).EQ.7.AND.COLLIERUSEINTERNALSTABILITYT
1921
 
     $EST) THEN
 
1925
        IF (MLREDUCTIONLIB(I_LIB)
 
1926
     $   .EQ.7.AND.COLLIERUSEINTERNALSTABILITYTEST) THEN
1922
1927
          DO I=1,3
1923
1928
            ESTIMATE(I,K) = FULLLIST(I,K,1)
1924
1929
          ENDDO
2063
2068
 1009   CONTINUE
2064
2069
      ENDDO
2065
2070
 
2066
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5SOINDEX_FOR_SQUARE'
2067
 
     $ //'D_ORDERS'
 
2071
      WRITE(*,*) 'ERROR:: Stopping function'
 
2072
     $ //' ML5_0_ML5SOINDEX_FOR_SQUARED_ORDERS'
2068
2073
      WRITE(*,*) 'Could not find squared orders ',(ORDERS(I),I=1,NSO)
2069
2074
      STOP
2070
2075
 
2162
2167
C     BEGIN CODE
2163
2168
C     
2164
2169
      DO I=1,NSO
2165
 
        SQORDERS(I)=AMPSPLITORDERS(ORDERINDEXA,I)+AMPSPLITORDERS(ORDERI
2166
 
     $NDEXB,I)
 
2170
        SQORDERS(I)=AMPSPLITORDERS(ORDERINDEXA,I)
 
2171
     $   +AMPSPLITORDERS(ORDERINDEXB,I)
2167
2172
      ENDDO
2168
2173
      ML5_0_ML5SQSOINDEX=ML5_0_ML5SOINDEX_FOR_SQUARED_ORDERS(SQORDERS)
2169
2174
      END
2202
2207
        RETURN
2203
2208
      ENDIF
2204
2209
 
2205
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5GET_SQUARED_ORDERS'
2206
 
     $ //'_FOR_SOINDEX'
 
2210
      WRITE(*,*) 'ERROR:: Stopping function'
 
2211
     $ //' ML5_0_ML5GET_SQUARED_ORDERS_FOR_SOINDEX'
2207
2212
      WRITE(*,*) 'Could not find squared orders index ',SOINDEX
2208
2213
      STOP
2209
2214
 
2242
2247
        RETURN
2243
2248
      ENDIF
2244
2249
 
2245
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5GET_ORDERS_FOR_AMP'
2246
 
     $ //'SOINDEX'
 
2250
      WRITE(*,*) 'ERROR:: Stopping function'
 
2251
     $ //' ML5_0_ML5GET_ORDERS_FOR_AMPSOINDEX'
2247
2252
      WRITE(*,*) 'Could not find amplitude split orders index ',SOINDEX
2248
2253
      STOP
2249
2254
 
2286
2291
 1009   CONTINUE
2287
2292
      ENDDO
2288
2293
 
2289
 
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5SOINDEX_FOR_AMPORD'
2290
 
     $ //'ERS'
 
2294
      WRITE(*,*) 'ERROR:: Stopping function'
 
2295
     $ //' ML5_0_ML5SOINDEX_FOR_AMPORDERS'
2291
2296
      WRITE(*,*) 'Could not find squared orders ',(ORDERS(I),I=1,NSO)
2292
2297
      STOP
2293
2298
 
2309
2314
 
2310
2315
      LOGICAL FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
2311
2316
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2312
 
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE, COLLIER_IR_POLE_COMPU
2313
 
     $TATION_CHOICE
2314
 
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE/FORCED_CHOICE_OF_COLLIER_UV
2315
 
     $_POLE_COMPUTATION, FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2316
 
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE,COLLIER_IR_POLE_COMPUTATION_
2317
 
     $CHOICE
 
2317
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE,
 
2318
     $  COLLIER_IR_POLE_COMPUTATION_CHOICE
 
2319
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE
 
2320
     $ /FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
 
2321
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
 
2322
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE
 
2323
     $ ,COLLIER_IR_POLE_COMPUTATION_CHOICE
2318
2324
 
2319
2325
      COLLIERCOMPUTEUVPOLES                        = ONOFF
2320
2326
C     This is just so that if we read the param again, we don't
2336
2342
 
2337
2343
      LOGICAL FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
2338
2344
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2339
 
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE, COLLIER_IR_POLE_COMPU
2340
 
     $TATION_CHOICE
2341
 
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE/FORCED_CHOICE_OF_COLLIER_UV
2342
 
     $_POLE_COMPUTATION, FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
2343
 
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE,COLLIER_IR_POLE_COMPUTATION_
2344
 
     $CHOICE
 
2345
      LOGICAL COLLIER_UV_POLE_COMPUTATION_CHOICE,
 
2346
     $  COLLIER_IR_POLE_COMPUTATION_CHOICE
 
2347
      COMMON/ML5_0_COLLIERPOLESFORCEDCHOICE
 
2348
     $ /FORCED_CHOICE_OF_COLLIER_UV_POLE_COMPUTATION,
 
2349
     $  FORCED_CHOICE_OF_COLLIER_IR_POLE_COMPUTATION
 
2350
     $ ,COLLIER_UV_POLE_COMPUTATION_CHOICE
 
2351
     $ ,COLLIER_IR_POLE_COMPUTATION_CHOICE
2345
2352
 
2346
2353
      COLLIERCOMPUTEIRPOLES         = ONOFF
2347
2354
C     This is just so that if we read the param again, we don't