File indexing completed on 2025-08-05 08:15:45
0001
0002
0003
0004 SUBROUTINE PYHITEST(MTEST)
0005
0006
0007
0008 COMMON/LUJETS/N,K(9000,5),P(9000,5),V(9000,5)
0009 SAVE /LUJETS/
0010 COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0011 SAVE /LUDAT1/
0012 COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
0013 SAVE /LUDAT2/
0014 COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5)
0015 SAVE /LUDAT3/
0016 COMMON/PYHISUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
0017 SAVE /PYHISUBS/
0018 COMMON/PYHIPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
0019 SAVE /PYHIPARS/
0020
0021
0022 MSTP(122)=1
0023 IF(MTEST.LE.0) MSTP(122)=0
0024 MDCY(LUCOMP(111),1)=0
0025 NERR=0
0026 DO 130 IPROC=1,7
0027
0028
0029 MSEL=0
0030 DO 100 ISUB=1,200
0031 100 MSUB(ISUB)=0
0032 CKIN(1)=2.
0033 CKIN(3)=0.
0034 MSTP(2)=1
0035 MSTP(33)=0
0036 MSTP(81)=1
0037 MSTP(82)=1
0038 MSTP(111)=1
0039 MSTP(131)=0
0040 MSTP(133)=0
0041 PARP(131)=0.01
0042
0043
0044 IF(IPROC.EQ.1) THEN
0045 PZSUM=300.
0046 PESUM=SQRT(PZSUM**2+ULMASS(211)**2)+ULMASS(2212)
0047 PQSUM=2.
0048 MSEL=10
0049 CKIN(3)=5.
0050 CALL PYHIINIT('FIXT','pi+','p',PZSUM)
0051
0052
0053 ELSEIF(IPROC.EQ.2) THEN
0054 PESUM=63.
0055 PZSUM=0.
0056 PQSUM=2.
0057 MSEL=1
0058 CKIN(3)=5.
0059 CALL PYHIINIT('CMS','p','p',PESUM)
0060
0061
0062 ELSEIF(IPROC.EQ.3) THEN
0063 PESUM=630.
0064 PZSUM=0.
0065 PQSUM=0.
0066 MSEL=12
0067 CKIN(1)=20.
0068 MSTP(82)=4
0069 MSTP(2)=2
0070 MSTP(33)=3
0071 CALL PYHIINIT('CMS','p','pbar',PESUM)
0072
0073
0074 ELSEIF(IPROC.EQ.4) THEN
0075 PESUM=1800.
0076 PZSUM=0.
0077 PQSUM=0.
0078 MSUB(22)=1
0079 MSUB(23)=1
0080 MSUB(25)=1
0081 CKIN(1)=200.
0082 MSTP(111)=0
0083 MSTP(131)=1
0084 MSTP(133)=2
0085 PARP(131)=0.04
0086 CALL PYHIINIT('CMS','p','pbar',PESUM)
0087
0088
0089 ELSEIF(IPROC.EQ.5) THEN
0090 PESUM=17000.
0091 PZSUM=0.
0092 PQSUM=0.
0093 MSEL=16
0094 PMAS(25,1)=300.
0095 CKIN(1)=200.
0096 MSTP(81)=0
0097 MSTP(111)=0
0098 CALL PYHIINIT('CMS','p','pbar',PESUM)
0099
0100
0101 ELSEIF(IPROC.EQ.6) THEN
0102 PESUM=40000.
0103 PZSUM=0.
0104 PQSUM=0.
0105 MSEL=21
0106 PMAS(32,1)=600.
0107 CKIN(1)=400.
0108 MSTP(81)=0
0109 MSTP(111)=0
0110 CALL PYHIINIT('CMS','p','pbar',PESUM)
0111
0112
0113 ELSEIF(IPROC.EQ.7) THEN
0114 PESUM=1000.
0115 PZSUM=0.
0116 PQSUM=0.
0117 MSUB(25)=1
0118 CALL PYHIINIT('CMS','e+','e-',PESUM)
0119 ENDIF
0120
0121
0122 DO 120 IEV=1,20
0123 CALL PYHITHIA
0124 PESUMM=PESUM
0125 IF(IPROC.EQ.4) PESUMM=MSTI(41)*PESUM
0126
0127
0128 MERR=0
0129 DEVE=ABS(PLU(0,4)-PESUMM)+ABS(PLU(0,3)-PZSUM)
0130 DEVT=ABS(PLU(0,1))+ABS(PLU(0,2))
0131 DEVQ=ABS(PLU(0,6)-PQSUM)
0132 IF(DEVE.GT.1E-3*PESUM.OR.DEVT.GT.MAX(0.01,1E-5*PESUM).OR.
0133 &DEVQ.GT.0.1) MERR=1
0134 IF(MERR.NE.0) WRITE(MSTU(11),1000) IPROC,IEV
0135
0136
0137
0138 DO 110 I=1,N
0139 IF(K(I,1).GT.20) GOTO 110
0140 IF(LUCOMP(K(I,2)).EQ.0) THEN
0141 WRITE(MSTU(11),1100) I
0142 MERR=MERR+1
0143 ENDIF
0144 PD=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2*
0145 &SIGN(1.,P(I,5))
0146 IF(ABS(PD).GT.MAX(0.1,0.002*P(I,4)**2,0.002*P(I,5)**2).OR.
0147 &(P(I,5).GE.0..AND.P(I,4).LT.0.)) THEN
0148 WRITE(MSTU(11),1200) I
0149 MERR=MERR+1
0150 ENDIF
0151 110 CONTINUE
0152
0153
0154 IF(MERR.GE.1) NERR=NERR+1
0155 IF(NERR.GE.10) THEN
0156 WRITE(MSTU(11),1300)
0157 CALL LULIST(1)
0158 STOP
0159 ENDIF
0160 IF(MTEST.GE.1.AND.(MERR.GE.1.OR.IEV.EQ.1)) THEN
0161 IF(MERR.GE.1) WRITE(MSTU(11),1400)
0162 CALL LULIST(1)
0163 ENDIF
0164 120 CONTINUE
0165
0166
0167 IF(MTEST.GE.1) CALL PYHISTAT(1)
0168 130 CONTINUE
0169
0170
0171 IF(NERR.EQ.0) WRITE(MSTU(11),1500)
0172 IF(NERR.GT.0) WRITE(MSTU(11),1600) NERR
0173 RETURN
0174
0175
0176 1000 FORMAT(/5X,'Energy/momentum/flavour nonconservation for process',
0177 &I2,', event',I4)
0178 1100 FORMAT(/5X,'Entry no.',I4,' in following event not known code')
0179 1200 FORMAT(/5X,'Entry no.',I4,' in following event has faulty ',
0180 &'kinematics')
0181 1300 FORMAT(/5X,'This is the tenth error experienced! Something is ',
0182 &'wrong.'/5X,'Execution will be stopped after listing of event.')
0183 1400 FORMAT(5X,'Faulty event follows:')
0184 1500 FORMAT(//5X,'End result of run: no errors detected.')
0185 1600 FORMAT(//5X,'End result of run:',I2,' errors detected.'/
0186 &5X,'This should not have happened!')
0187 END