Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions Template/loop_material/StandAlone/Cards/MadLoopParams.dat
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,28 @@
#MLStabThres
!1.0d-3
! Default :: 1.0d-3

! Relative threshold above which a non-vanishing pole of a *loop-induced*
! process is considered an error and stops the run.
! A loop-induced amplitude is finite, so its single and double poles must
! cancel; anything else means the result is wrong. This has no effect on
! processes with a Born, whose poles are not supposed to vanish.
! Set it to a negative value to disable the check.
! Note that the check is inactive when the reduction tool in use does not
! compute the poles at all (COLLIER with COLLIERComputeUV/IRpoles off).
! The default comes from the measured size of (|1eps|+|2eps|)/|finite| over
! ~800 phase-space points of g g > z z / h h / z z g / h h g, whose ceiling
! is 6.0d-5, leaving a factor ~20 of headroom. At 1.0d-3 an error of 0.7%
! or more on one of the *dominant* pole contributions is caught; an error
! on a subdominant amplitude is not, at any usable threshold.
! Points sitting on a soft or collinear singularity can legitimately reach
! 5.0d-2. A madevent run never sees them, since the cuts are applied before
! the matrix element, but check_sa and launch feed uncut phase-space points,
! so raise this value if you hit it there.
#MLPoleCheckThres
!1.0d-3
! Default :: 1.0d-3

! You can add other evaluation method to check for the stability in DP and QP.
! Below you can chose if you want to use zero, one or two rotations of the PS point
! in QP.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ subroutine MadLoopParamReader(filename, printParam)
stop 'MLStabThres must be >= 0'
endif

else if (buff .eq. '#MLPoleCheckThres') then
read(666,*,end=999) MLPoleCheckThres

else if (buff .eq. '#COLLIERRequiredAccuracy') then
read(666,*,end=999) COLLIERRequiredAccuracy
if (COLLIERRequiredAccuracy.le.0.0d0.and.
Expand Down Expand Up @@ -256,6 +259,7 @@ subroutine MadLoopParamReader(filename, printParam)
$ //TRIM(MLReductionLib_str_save)
write(*,*) ' > CTModeRun = ',CTModeRun
write(*,*) ' > MLStabThres = ',MLStabThres
write(*,*) ' > MLPoleCheckThres = ',MLPoleCheckThres
write(*,*) ' > NRotations_DP = ',NRotations_DP
write(*,*) ' > NRotations_QP = ',NRotations_QP
write(*,*) ' > CTStabThres = ',CTStabThres
Expand Down Expand Up @@ -324,6 +328,7 @@ subroutine DefaultParam()
NRotations_DP=0
NRotations_QP=0
MLStabThres=1.0d-3
MLPoleCheckThres=1.0d-3
CTStabThres=1.0d-2
CTLoopLibrary=3
CheckCycle=3
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
&COLLIERGlobalCache

real*8 MLStabThres,CTStabThres,ZeroThres,OSThres,COLLIERRequiredAccuracy
real*8 MLPoleCheckThres

logical UseLoopFilter,LoopInitStartOver,DoubleCheckHelicityFilter,
&COLLIERComputeIRpoles,COLLIERComputeUVpoles,COLLIERCanOutput
Expand All @@ -21,6 +22,7 @@
common /MADLOOP/CTModeInit,CTModeRun,NRotations_DP,NRotations_QP,
&COLLIERMode,COLLIERGlobalCache,
&ImprovePSPoint,CheckCycle, MaxAttempts,UseLoopFilter,MLStabThres,
&MLPoleCheckThres,
&COLLIERRequiredAccuracy,
&CTStabThres,CTLoopLibrary,LoopInitStartOver,
&COLLIERComputeIRpoles,COLLIERComputeUVpoles,COLLIERCanOutput,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ c the previous points
LOGICAL FOUND_VALID_REDUCTION_METHOD
DATA FOUND_VALID_REDUCTION_METHOD/.FALSE./

%(real_dp_format)s ACC
%(real_dp_format)s ACC%(loop_induced_pole_check_decl)s
%(real_dp_format)s DP_RES(3,MAXSTABILITYLENGTH)
C QP_RES STORES THE QUADRUPLE PRECISION RESULT OBTAINED FROM DIFFERENT EVALUATION METHODS IN ORDER TO ASSESS STABILITY.
%(real_dp_format)s QP_RES(3,MAXSTABILITYLENGTH)
Expand Down Expand Up @@ -689,10 +689,7 @@ IF(SKIPLOOPEVAL) THEN
GOTO 1226
ENDIF

%(loop_helas_calls)s

%(actualize_ans)s

%(loop_helas_calls)s%(actualize_ans)s
1226 CONTINUE

IF (CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED)) THEN
Expand Down Expand Up @@ -927,7 +924,7 @@ ANSRETURNED(0,0)=ANS(0)
ANSRETURNED(1,0)=ANS(1)
ANSRETURNED(2,0)=ANS(2)
ANSRETURNED(3,0)=ANS(3)

%(loop_induced_pole_check)s
C Reinitialize the check phase logicals and the filters if check bypassed
IF (BYPASS_CHECK) THEN
CHECKPHASE = OLD_CHECKPHASE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,9 @@ C QP_RES STORES THE QUADRUPLE PRECISION RESULT OBTAINED FROM DIFFERENT EVALUATIO
INTEGER ITEMP
LOGICAL LTEMP
%(real_dp_format)s BORNBUFF(0:NSQSO_BORN),TMPR
## if(LoopInduced){
LOGICAL POLES_COMPUTED, DO_POLE_CHECK
## }
%(real_dp_format)s BUFFR(3,0:NSQUAREDSO),BUFFR_BIS(3,0:NSQUAREDSO),TEMP(0:3,0:NSQUAREDSO),TEMP1(0:NSQUAREDSO)
%(complex_dp_format)s CTEMP
## if(not AmplitudeReduction){
Expand Down Expand Up @@ -534,6 +537,12 @@ C SKIP THE ONES THAT NOT AVAILABLE
IF(MLReductionLib(1).EQ.0)THEN
STOP "No available loop reduction lib is provided. Make sure MLReductionLib is correct."
ENDIF
## if(LoopInduced){
C The poles must vanish here, but COLLIER can be asked not to compute them at all.
IF (MLPoleCheckThres.GT.0.0d0.AND.MLReductionLib(1).EQ.7.AND.(.NOT.COLLIERComputeUVpoles.OR..NOT.COLLIERComputeIRpoles)) THEN
WRITE(*,*) '##INFO: The vanishing-pole check of this loop-induced process is inactive because COLLIER is not computing the poles. A madevent run turns them off on purpose and the card cannot override that; in a standalone run, set COLLIERComputeUVpoles and COLLIERComputeIRpoles to .TRUE. in MadLoopParams.dat.'
ENDIF
## }
J=0
DO I=1,NLOOPLIB
IF(LOOPLIBS_QPAVAILABLE(MLReductionLib(I)))THEN
Expand Down Expand Up @@ -1879,6 +1888,29 @@ DO I=1,NSQUAREDSO
ENDDO
ENDIF
ENDDO
## if(LoopInduced){
C A loop-induced amplitude is finite: its poles must cancel.
C Nothing to compare against if the reduction tool does not compute them.
POLES_COMPUTED = .NOT.(MLReductionLib(I_LIB).EQ.7.AND.(.NOT.COLLIERComputeUVpoles.OR..NOT.COLLIERComputeIRpoles))
DO_POLE_CHECK = MLPoleCheckThres.GT.0.0d0.AND.POLES_COMPUTED.AND.NTRY.GT.0
DO_POLE_CHECK = DO_POLE_CHECK.AND..NOT.CHECKPHASE.AND.HELDOUBLECHECKED
DO_POLE_CHECK = DO_POLE_CHECK.AND.RET_CODE_H.NE.4.AND.ANS(1,0).NE.0.0d0
IF (DO_POLE_CHECK) THEN
TMPR = (ABS(ANS(2,0))+ABS(ANS(3,0)))/ABS(ANS(1,0))
IF (TMPR.GT.MLPoleCheckThres) THEN
WRITE(*,*) '##E03 ERROR The poles of this loop-induced process do not cancel.'
WRITE(*,*) 'Finite contribution = ',ANS(1,0)
WRITE(*,*) 'single pole contribution = ',ANS(2,0)
WRITE(*,*) 'double pole contribution = ',ANS(3,0)
WRITE(*,*) 'relative size of the poles = ',TMPR
WRITE(*,*) 'tolerated = ',MLPoleCheckThres
WRITE(*,*) 'The finite part returned here cannot be trusted, so the run is stopped.'
WRITE(*,*) 'Edit MLPoleCheckThres in MadLoopParams.dat to change this tolerance; a negative value disables the check.'
CALL %(proc_prefix)sWRITE_MOM(P)
STOP 1
ENDIF
ENDIF
## }

C Reinitialize the default threshold if it was specified by the user
IF (USER_STAB_PREC.GT.0.0d0) THEN
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -415,11 +415,11 @@ c ----
return
endif

IF (U.NE.7.AND.((OneEps+TwoEps)/finite).gt.(1000d0*PREC).AND.(((OneEps+TwoEps)/finite).gt.1.0d-5)) THEN
IF (U.NE.7.AND.((ABS(OneEps)+ABS(TwoEps))/ABS(finite)).gt.(1000d0*PREC).AND.(((ABS(OneEps)+ABS(TwoEps))/ABS(finite)).gt.1.0d-5)) THEN
WARNING_COUNTERS(2) = WARNING_COUNTERS(2) + 1
IF (WARNING_COUNTERS(2).le.10) THEN
WRITE(*,*) "WARNING : The residue of the single and double pole of the loop matrix element being integrated does not seem to vanish."
WRITE(*,*) " Its contribution relative to the finite part is : ",((OneEps+TwoEps)/finite)
WRITE(*,*) " Its contribution relative to the finite part is : ",((ABS(OneEps)+ABS(TwoEps))/ABS(finite))
WRITE(*,*) " while the estimated numerical accuracy is : ",PREC
WRITE(*,*) " MadLoop results (fin, 1eps, 2eps) : ",finite, OneEps, TwoEps
WRITE(*,*) " The warning above was triggered when processing the following phase space point:"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -425,11 +425,11 @@ c ----
return
endif

IF (U.NE.7.and.((OneEps+TwoEps)/finite).gt.(1000d0*PREC).AND.(((OneEps+TwoEps)/finite).gt.1.0d-5)) THEN
IF (U.NE.7.and.((ABS(OneEps)+ABS(TwoEps))/ABS(finite)).gt.(1000d0*PREC).AND.(((ABS(OneEps)+ABS(TwoEps))/ABS(finite)).gt.1.0d-5)) THEN
WARNING_COUNTERS(2) = WARNING_COUNTERS(2) + 1
IF (WARNING_COUNTERS(2).le.10) THEN
WRITE(*,*) "WARNING : The residue of the single and double pole of the loop matrix element being integrated does not seem to vanish."
WRITE(*,*) " Its contribution relative to the finite part is : ",((OneEps+TwoEps)/finite)
WRITE(*,*) " Its contribution relative to the finite part is : ",((ABS(OneEps)+ABS(TwoEps))/ABS(finite))
WRITE(*,*) " while the estimated numerical accuracy is : ",PREC
WRITE(*,*) " MadLoop results (fin, 1eps, 2eps) : ",finite, OneEps, TwoEps
WRITE(*,*) " The warning above was triggered when processing the following phase space point:"
Expand Down
61 changes: 35 additions & 26 deletions madgraph/loop/loop_exporters.py
Original file line number Diff line number Diff line change
Expand Up @@ -267,13 +267,10 @@ def finalize(self, matrix_element, cmdhistory, MG5options, outputflag):
# (which is the default for standalone usage), COLLIER is faster than Ninja.
if self.has_loop_induced:
MLCard['MLReductionLib'] = "7|6|1"
# Computing the poles with COLLIER also unnecessarily slows down the code
# It should only be set to True for checks and it's acceptable to remove them
# here because for loop-induced processes they should be zero anyway.
# We keep it active for non-loop induced processes because COLLIER is not the
# main reduction tool in that case, and the poles wouldn't be zero then
MLCard['COLLIERComputeUVpoles'] = False
MLCard['COLLIERComputeIRpoles'] = False
# The COLLIER pole computation is left on here: the poles must vanish
# for a loop-induced process and MadLoop only checks that when they are
# computed. 'check timing'/'check stability' turn them off themselves,
# and so does the madevent event loop, where the cost is not worth it.

MLCard.write(pjoin(self.dir_path, 'Cards', 'MadLoopParams_default.dat'))
MLCard.write(pjoin(self.dir_path, 'Cards', 'MadLoopParams.dat'))
Expand Down Expand Up @@ -1578,12 +1575,6 @@ def write_loopmatrix(self, writer, matrix_element, fortran_model,
WRITE(*,*) '##W03 WARNING Contribution ',I
WRITE(*,*) ' is unstable for helicity ',H
ENDIF
C IF(.NOT.%(proc_prefix)sISZERO(ABS(AMPL(2,I))+ABS(AMPL(3,I)),REF,-1,H)) THEN
C WRITE(*,*) '##W04 WARNING Contribution ',I,' for helicity ',H,' has a contribution to the poles.'
C WRITE(*,*) 'Finite contribution = ',AMPL(1,I)
C WRITE(*,*) 'single pole contribution = ',AMPL(2,I)
C WRITE(*,*) 'double pole contribution = ',AMPL(3,I)
C ENDIF
ENDDO
1227 CONTINUE
HELPICKED=HELPICKED_BU""")%replace_dict
Expand All @@ -1592,10 +1583,9 @@ def write_loopmatrix(self, writer, matrix_element, fortran_model,
replace_dict['nbornamps_or_nloopamps']='nloopamps'
replace_dict['squaring']=\
"""ANS(1)=ANS(1)+DBLE(CFTOT*AMPL(1,I)*DCONJG(AMPL(1,J)))
IF (J.EQ.1) THEN
ANS(2)=ANS(2)+DBLE(CFTOT*AMPL(2,I))+DIMAG(CFTOT*AMPL(2,I))
ANS(3)=ANS(3)+DBLE(CFTOT*AMPL(3,I))+DIMAG(CFTOT*AMPL(3,I))
ENDIF"""
C The poles below must cancel: the loop-induced amplitude is finite.
ANS(2)=ANS(2)+DBLE(CFTOT*(AMPL(2,I)*DCONJG(AMPL(1,J))+AMPL(1,I)*DCONJG(AMPL(2,J))))
ANS(3)=ANS(3)+DBLE(CFTOT*(AMPL(3,I)*DCONJG(AMPL(1,J))+AMPL(1,I)*DCONJG(AMPL(3,J))+AMPL(2,I)*DCONJG(AMPL(2,J))))"""
else:
replace_dict['compute_born']=\
"""C Compute the born, for a specific helicity if asked so.
Expand Down Expand Up @@ -1632,16 +1622,35 @@ def write_loopmatrix(self, writer, matrix_element, fortran_model,
actualize_ans.append(\
"WRITE(*,*) '##W03 WARNING Contribution ',I,' is unstable.'")
actualize_ans.extend(["ENDIF","ENDDO"])
replace_dict['actualize_ans']='\n'.join(actualize_ans)
replace_dict['actualize_ans']='\n\n'+'\n'.join(actualize_ans)+'\n'
replace_dict['loop_induced_pole_check'] = ""
replace_dict['loop_induced_pole_check_decl'] = ""
else:
replace_dict['actualize_ans']=\
("""C We add five powers to the reference value to loosen a bit the vanishing pole check.
C IF(.NOT.(CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED)).AND..NOT.%(proc_prefix)sISZERO(ABS(ANS(2))+ABS(ANS(3)),ABS(ANS(1))*(10.0d0**5),-1,H)) THEN
C WRITE(*,*) '##W05 WARNING Found a PS point with a contribution to the single pole.'
C WRITE(*,*) 'Finite contribution = ',ANS(1)
C WRITE(*,*) 'single pole contribution = ',ANS(2)
C WRITE(*,*) 'double pole contribution = ',ANS(3)
C ENDIF""")%replace_dict
replace_dict['actualize_ans']=""
# A loop-induced amplitude is finite: a surviving pole means the
# result is wrong, so refuse to return it. This output only ever
# reduces with CutTools, which always computes the poles.
replace_dict['loop_induced_pole_check_decl']=\
("\n\t %(real_dp_format)s TMPPOLE"
"\n\t LOGICAL DO_POLE_CHECK")%replace_dict
replace_dict['loop_induced_pole_check']=("""DO_POLE_CHECK = MLPoleCheckThres.GT.0.0d0.AND.NTRY.GT.0
DO_POLE_CHECK = DO_POLE_CHECK.AND..NOT.CHECKPHASE.AND.HELDOUBLECHECKED
DO_POLE_CHECK = DO_POLE_CHECK.AND.RET_CODE_H.NE.4.AND.ANS(1).NE.0.0d0
IF (DO_POLE_CHECK) THEN
TMPPOLE = (ABS(ANS(2))+ABS(ANS(3)))/ABS(ANS(1))
IF (TMPPOLE.GT.MLPoleCheckThres) THEN
WRITE(*,*) '##E03 ERROR The poles of this loop-induced process do not cancel.'
WRITE(*,*) 'Finite contribution = ',ANS(1)
WRITE(*,*) 'single pole contribution = ',ANS(2)
WRITE(*,*) 'double pole contribution = ',ANS(3)
WRITE(*,*) 'relative size of the poles = ',TMPPOLE
WRITE(*,*) 'tolerated = ',MLPoleCheckThres
WRITE(*,*) 'The finite part returned here cannot be trusted, so the run is stopped.'
WRITE(*,*) 'Edit MLPoleCheckThres in MadLoopParams.dat to change this tolerance; a negative value disables the check.'
CALL %(proc_prefix)sWRITE_MOM(P)
STOP 1
ENDIF
ENDIF""")%replace_dict

# Write out the color matrix
(CMNum,CMDenom) = self.get_color_matrix(matrix_element)
Expand Down
1 change: 1 addition & 0 deletions madgraph/various/banner.py
Original file line number Diff line number Diff line change
Expand Up @@ -7414,6 +7414,7 @@ def default_setup(self):
self.add_param("IREGIRECY", True)
self.add_param("CTModeRun", -1)
self.add_param("MLStabThres", 1e-3)
self.add_param("MLPoleCheckThres", 1e-3)
self.add_param("NRotations_DP", 0)
self.add_param("NRotations_QP", 0)
self.add_param("ImprovePSPoint", 2)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,8 @@ SUBROUTINE ML5_0_SLOOPMATRIX(P_USER,ANSRETURNED)
DATA FOUND_VALID_REDUCTION_METHOD/.FALSE./

REAL*8 ACC
REAL*8 TMPPOLE
LOGICAL DO_POLE_CHECK
REAL*8 DP_RES(3,MAXSTABILITYLENGTH)
C QP_RES STORES THE QUADRUPLE PRECISION RESULT OBTAINED FROM
C DIFFERENT EVALUATION METHODS IN ORDER TO ASSESS STABILITY.
Expand Down Expand Up @@ -871,14 +873,6 @@ SUBROUTINE ML5_0_SLOOPMATRIX(P_USER,ANSRETURNED)
WRITE(*,*) '##W03 WARNING Contribution ',I
WRITE(*,*) ' is unstable for helicity ',H
ENDIF
C IF(.NOT.ML5_0_ISZERO(ABS(AMPL(2,I))+ABS(AMPL(3,I)),REF,-1,H)
C ) THEN
C WRITE(*,*) '##W04 WARNING Contribution ',I,' for helicity'
C //' ',H,' has a contribution to the poles.'
C WRITE(*,*) 'Finite contribution = ',AMPL(1,I)
C WRITE(*,*) 'single pole contribution = ',AMPL(2,I)
C WRITE(*,*) 'double pole contribution = ',AMPL(3,I)
C ENDIF
ENDDO
1227 CONTINUE
HELPICKED=HELPICKED_BU
Expand All @@ -887,12 +881,13 @@ SUBROUTINE ML5_0_SLOOPMATRIX(P_USER,ANSRETURNED)
CFTOT=DCMPLX(CF_N(I,J)/DBLE(ABS(CF_D(I,J))),0.0D0)
IF(CF_D(I,J).LT.0) CFTOT=CFTOT*IMAG1
ANS(1)=ANS(1)+DBLE(CFTOT*AMPL(1,I)*DCONJG(AMPL(1,J)))
IF (J.EQ.1) THEN
ANS(2)=ANS(2)+DBLE(CFTOT*AMPL(2,I))+DIMAG(CFTOT*AMPL(2
$ ,I))
ANS(3)=ANS(3)+DBLE(CFTOT*AMPL(3,I))+DIMAG(CFTOT*AMPL(3
$ ,I))
ENDIF
C The poles below must cancel: the loop-induced amplitude
C is finite.
ANS(2)=ANS(2)+DBLE(CFTOT*(AMPL(2,I)*DCONJG(AMPL(1,J))
$ +AMPL(1,I)*DCONJG(AMPL(2,J))))
ANS(3)=ANS(3)+DBLE(CFTOT*(AMPL(3,I)*DCONJG(AMPL(1,J))
$ +AMPL(1,I)*DCONJG(AMPL(3,J))+AMPL(2,I)*DCONJG(AMPL(2,J))
$ ))
ENDDO
ENDDO
ENDIF
Expand All @@ -909,18 +904,6 @@ SUBROUTINE ML5_0_SLOOPMATRIX(P_USER,ANSRETURNED)
ENDIF



C We add five powers to the reference value to loosen a bit the
C vanishing pole check.
C IF(.NOT.(CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED)).AND..NOT.ML5_0_IS
C ZERO(ABS(ANS(2))+ABS(ANS(3)),ABS(ANS(1))*(10.0d0**5),-1,H)) THEN
C WRITE(*,*) '##W05 WARNING Found a PS point with a contribution'
C //' to the single pole.'
C WRITE(*,*) 'Finite contribution = ',ANS(1)
C WRITE(*,*) 'single pole contribution = ',ANS(2)
C WRITE(*,*) 'double pole contribution = ',ANS(3)
C ENDIF

1226 CONTINUE

IF (CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED)) THEN
Expand Down Expand Up @@ -1193,7 +1176,30 @@ SUBROUTINE ML5_0_SLOOPMATRIX(P_USER,ANSRETURNED)
ANSRETURNED(1,0)=ANS(1)
ANSRETURNED(2,0)=ANS(2)
ANSRETURNED(3,0)=ANS(3)

DO_POLE_CHECK = MLPOLECHECKTHRES.GT.0.0D0.AND.NTRY.GT.0
DO_POLE_CHECK =
$ DO_POLE_CHECK.AND..NOT.CHECKPHASE.AND.HELDOUBLECHECKED
DO_POLE_CHECK = DO_POLE_CHECK.AND.RET_CODE_H.NE.4.AND.ANS(1)
$ .NE.0.0D0
IF (DO_POLE_CHECK) THEN
TMPPOLE = (ABS(ANS(2))+ABS(ANS(3)))/ABS(ANS(1))
IF (TMPPOLE.GT.MLPOLECHECKTHRES) THEN
WRITE(*,*) '##E03 ERROR The poles of this loop-induced'
$ //' process do not cancel.'
WRITE(*,*) 'Finite contribution = ',ANS(1)
WRITE(*,*) 'single pole contribution = ',ANS(2)
WRITE(*,*) 'double pole contribution = ',ANS(3)
WRITE(*,*) 'relative size of the poles = ',TMPPOLE
WRITE(*,*) 'tolerated = ',MLPOLECHECKTHRES
WRITE(*,*) 'The finite part returned here cannot be trusted,'
$ //' so the run is stopped.'
WRITE(*,*) 'Edit MLPoleCheckThres in MadLoopParams.dat to'
$ //' change this tolerance; a negative value disables the'
$ //' check.'
CALL ML5_0_WRITE_MOM(P)
STOP 1
ENDIF
ENDIF
C Reinitialize the check phase logicals and the filters if check
C bypassed
IF (BYPASS_CHECK) THEN
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
c written by the UFO converter
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

MP__MU_R=MU_R
MP__AS=AS
MP__G=G
Loading
Loading