107
107
IF (ERRCODE.NE.0) THEN
108
108
IF (WARNED.LT.20) THEN
109
WRITE(*,*) 'INFO:: Attempting to rescue the precisio'
110
$ //'n improvement with an alternative method.'
109
WRITE(*,*) 'INFO:: Attempting to rescue the precision'
110
$ //' improvement with an alternative method.'
113
113
IF (IMPROVEPSPOINT.EQ.1) THEN
114
CALL MG5_1_MP_ORIG_IMPROVE_PS_POINT_PRECISION(NEWP,ERRCODETMP
114
CALL MG5_1_MP_ORIG_IMPROVE_PS_POINT_PRECISION(NEWP
115
$ ,ERRCODETMP,WARNED)
116
116
ELSEIF((IMPROVEPSPOINT.EQ.2).OR.(IMPROVEPSPOINT.LE.0)) THEN
117
CALL MG5_1_MP_PSMC_IMPROVE_PS_POINT_PRECISION(NEWP,ERRCODETMP
117
CALL MG5_1_MP_PSMC_IMPROVE_PS_POINT_PRECISION(NEWP
118
$ ,ERRCODETMP,WARNED)
120
120
IF (ERRCODETMP.NE.0) GOTO 100
127
127
IF (WARNED.LT.20) THEN
128
WRITE(*,*) 'WARNING:: This PS point could not be improved'
129
$ //'. Error code = ',ERRCODE,ERRCODETMP
128
WRITE(*,*) 'WARNING:: This PS point could not be improved.'
129
$ //' Error code = ',ERRCODE,ERRCODETMP
130
130
CALL MG5_1_MP_WRITE_MOM(P)
131
131
WARNED = WARNED +1
142
142
IF (WARNED.GE.20.AND..NOT.TOLD_SUPPRESS) THEN
143
WRITE(*,*) 'INFO:: Further warnings from the improve_p'
144
$ //'s routine will now be supressed.'
143
WRITE(*,*) 'INFO:: Further warnings from the improve_ps'
144
$ //' routine will now be supressed.'
145
145
TOLD_SUPPRESS=.TRUE.
188
188
MG5_1_MP_IS_CLOSE = .FALSE.
189
189
IF (WARNED.LT.20) THEN
190
190
BUFFDP = (REF/REF2)
191
WRITE(*,*) 'WARNING:: The improved PS point is too far fro'
192
$ //'m the original one',BUFFDP
191
WRITE(*,*) 'WARNING:: The improved PS point is too far from'
192
$ //' the original one',BUFFDP
263
263
IF ((BUFF/REF).GT.THRES_FOURMOM) THEN
264
264
IF (WARNED.LT.20) THEN
265
265
BUFFDPA = (BUFF/REF)
266
WRITE(*,*) 'ERROR:: Four-momentum conservation is no'
267
$ //'t accurate enough, ',BUFFDPA
266
WRITE(*,*) 'ERROR:: Four-momentum conservation is not'
267
$ //' accurate enough, ',BUFFDPA
268
268
CALL MG5_1_MP_WRITE_MOM(P)
274
274
REF = REF / (ONE*NEXTERNAL)
276
276
REF=ABS(P(0,I))+ABS(P(1,I))+ABS(P(2,I))+ABS(P(3,I))
277
IF ((SQRT(ABS(P(0,I)**2-P(1,I)**2-P(2,I)**2-P(3,I)**2
278
$ -MASSES(I)**2))/REF).GT.THRES_ONSHELL) THEN
277
IF ((SQRT(ABS(P(0,I)**2-P(1,I)**2-P(2,I)**2-P(3,I)**2-MASSES(I)
278
$ **2))/REF).GT.THRES_ONSHELL) THEN
279
279
IF (WARNED.LT.20) THEN
280
280
BUFFDPA=MASSES(I)
281
281
BUFFDPB=(SQRT(ABS(P(0,I)**2-P(1,I)**2-P(2,I)**2-P(3,I)**2
282
282
$ -MASSES(I)**2))/REF)
283
WRITE(*,*) 'ERROR:: Onshellness of the momentum o'
284
$ //'f particle ',I,' of mass ',BUFFDPA,' is not accurat'
285
$ //'e enough, ',BUFFDPB
283
WRITE(*,*) 'ERROR:: Onshellness of the momentum of'
284
$ //' particle ',I,' of mass ',BUFFDPA,' is not accurate'
285
$ //' enough, ',BUFFDPB
286
286
CALL MG5_1_MP_WRITE_MOM(P)
321
321
WRITE (*,*) ' ---------------------'
322
322
WRITE (*,*) ' E | px | py | pz | m '
324
WRITE (*,'(1x,5e27.17)') P(0,I),P(1,I),P(2,I),P(3,I),SQRT(ABS(M
325
$ G5_1_MDOT(P(0,I),P(0,I))))
324
WRITE (*,'(1x,5e27.17)') P(0,I),P(1,I),P(2,I),P(3,I)
325
$ ,SQRT(ABS(MG5_1_MDOT(P(0,I),P(0,I))))
327
327
WRITE (*,*) ' Four-momentum conservation sum:'
328
328
WRITE (*,'(1x,4e27.17)') PSUM(0),PSUM(1),PSUM(2),PSUM(3)
564
564
IF (NINITIAL.NE.2) ERRCODE = 100
566
IF (ABS(P(1,1)/REF).GT.THRS_TEST.OR.ABS(P(2,1)/REF).GT.THRS_TEST.
567
$ OR.ABS(P(1,2)/REF).GT.THRS_TEST.OR.ABS(P(2,2)/REF).GT.THRS_TEST
566
IF (ABS(P(1,1)/REF).GT.THRS_TEST.OR.ABS(P(2,1)/REF)
567
$ .GT.THRS_TEST.OR.ABS(P(1,2)/REF).GT.THRS_TEST.OR.ABS(P(2,2)/REF)
568
$ .GT.THRS_TEST) ERRCODE = 200
570
570
IF (MASSES(1).NE.ZERO.OR.MASSES(2).NE.ZERO) ERRCODE = 300
622
622
DISCR = -PT(0)**2 + PT(1)**2 + PT(2)**2 + PT(3)**2
623
623
IF (DISCR.LT.ZERO) DISCR = -DISCR
625
SHIFTE(1) = (PT(0)*(-TWO*P(0,P1)*PT(0) + PT(0)**2 + PT(1)**2
626
$ + PT(2)**2) + (TWO*P(0,P1) - PT(0))*PT(3)**2 + PT(3)*DISCR)
627
$ /(TWO*(PT(0) - PT(3))*(PT(0) + PT(3)))
628
SHIFTE(2) = -(PT(0)*(TWO*P(0,P2)*PT(0) - PT(0)**2 + PT(1)**2
629
$ + PT(2)**2) + (-TWO*P(0,P2) + PT(0))*PT(3)**2 + PT(3)*DISCR)
625
SHIFTE(1) = (PT(0)*(-TWO*P(0,P1)*PT(0) + PT(0)**2 + PT(1)**2 +
626
$ PT(2)**2) + (TWO*P(0,P1) - PT(0))*PT(3)**2 + PT(3)*DISCR)/(TWO
627
$ *(PT(0) - PT(3))*(PT(0) + PT(3)))
628
SHIFTE(2) = -(PT(0)*(TWO*P(0,P2)*PT(0) - PT(0)**2 + PT(1)**2 +
629
$ PT(2)**2) + (-TWO*P(0,P2) + PT(0))*PT(3)**2 + PT(3)*DISCR)
630
630
$ /(TWO*(PT(0) - PT(3))*(PT(0) + PT(3)))
631
631
SHIFTZ(1) = (-TWO*P(3,P1)*(PT(0)**2 - PT(3)**2) + PT(3)*(PT(0)*
632
632
$ *2 + PT(1)**2 + PT(2)**2 - PT(3)**2) + PT(0)*DISCR)/(TWO*(PT(0)
633
633
$ **2 - PT(3)**2))
634
SHIFTZ(2) = -(TWO*P(3,P2)*(PT(0)**2 - PT(3)**2) + PT(3)*(
635
$ -PT(0)**2 + PT(1)**2 + PT(2)**2 + PT(3)**2) + PT(0)*DISCR)/(TWO
636
$ *(PT(0)**2 - PT(3)**2))
634
SHIFTZ(2) = -(TWO*P(3,P2)*(PT(0)**2 - PT(3)**2) + PT(3)*(-PT(0)*
635
$ *2 + PT(1)**2 + PT(2)**2 + PT(3)**2) + PT(0)*DISCR)/(TWO*(PT(0)
637
637
NEWP(0,P1) = P(0,P1)+SHIFTE(1)
638
638
NEWP(3,P1) = P(3,P1)+SHIFTZ(1)
639
639
NEWP(0,P2) = P(0,P2)+SHIFTE(2)
767
767
IF (WARNED.LT.20) THEN
768
WRITE(*,*) 'WARNING:: Could not find the proper rescalin'
769
$ //'g factor x. Restoring precision ala PSMC will therefor'
768
WRITE(*,*) 'WARNING:: Could not find the proper rescaling'
769
$ //' factor x. Restoring precision ala PSMC will therefore not'
773
773
IF (ERRCODE.LT.1000) THEN
807
807
IF ((ABS(BUFF)/BUFF2).GT.CONSISTENCY_THRES) THEN
808
808
IF (WARNED.LT.20) THEN
809
WRITE(*,*) 'WARNING:: The consistency check in the a la PSM'
810
$ //'C precision restoring algorithm failed. The result wil'
811
$ //'l therefore not be used.'
809
WRITE(*,*) 'WARNING:: The consistency check in the a la PSMC'
810
$ //' precision restoring algorithm failed. The result will'
811
$ //' therefore not be used.'