+++ /dev/null
-
-C***********************************************************************
-
- SUBROUTINE PYTEST(MTEST)
-
-C...Purpose: to provide a simple program (disguised as a subroutine) to
-C...run at installation as a check that the program works as intended.
- COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
- COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
- COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
- COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5)
- COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
- COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
- SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/
- SAVE /PYSUBS/,/PYPARS/
-
-C...Common initial values. Loop over initiating conditions.
- MSTP(122)=MAX(0,MIN(2,MTEST))
- MDCY(LUCOMP(111),1)=0
- NERR=0
- DO 130 IPROC=1,8
-
-C...Reset process type, kinematics cuts, and the flags used.
- MSEL=0
- DO 100 ISUB=1,200
- MSUB(ISUB)=0
- 100 CONTINUE
- CKIN(1)=2.
- CKIN(3)=0.
- MSTP(2)=1
- MSTP(11)=0
- MSTP(33)=0
- MSTP(81)=1
- MSTP(82)=1
- MSTP(111)=1
- MSTP(131)=0
- MSTP(133)=0
- PARP(131)=0.01
-
-C...Prompt photon production at fixed target.
- IF(IPROC.EQ.1) THEN
- PZSUM=300.
- PESUM=SQRT(PZSUM**2+ULMASS(211)**2)+ULMASS(2212)
- PQSUM=2.
- MSEL=10
- CKIN(3)=5.
- CALL PYINIT('FIXT','pi+','p',PZSUM)
-
-C...QCD processes at ISR energies.
- ELSEIF(IPROC.EQ.2) THEN
- PESUM=63.
- PZSUM=0.
- PQSUM=2.
- MSEL=1
- CKIN(3)=5.
- CALL PYINIT('CMS','p','p',PESUM)
-
-C...W production + multiple interactions at CERN Collider.
- ELSEIF(IPROC.EQ.3) THEN
- PESUM=630.
- PZSUM=0.
- PQSUM=0.
- MSEL=12
- CKIN(1)=20.
- MSTP(82)=4
- MSTP(2)=2
- MSTP(33)=3
- CALL PYINIT('CMS','p','pbar',PESUM)
-
-C...W/Z gauge boson pairs + pileup events at the Tevatron.
- ELSEIF(IPROC.EQ.4) THEN
- PESUM=1800.
- PZSUM=0.
- PQSUM=0.
- MSUB(22)=1
- MSUB(23)=1
- MSUB(25)=1
- CKIN(1)=200.
- MSTP(111)=0
- MSTP(131)=1
- MSTP(133)=2
- PARP(131)=0.04
- CALL PYINIT('CMS','p','pbar',PESUM)
-
-C...Higgs production at LHC.
- ELSEIF(IPROC.EQ.5) THEN
- PESUM=15400.
- PZSUM=0.
- PQSUM=2.
- MSUB(3)=1
- MSUB(102)=1
- MSUB(123)=1
- MSUB(124)=1
- PMAS(25,1)=300.
- CKIN(1)=200.
- MSTP(81)=0
- MSTP(111)=0
- CALL PYINIT('CMS','p','p',PESUM)
-
-C...Z' production at SSC.
- ELSEIF(IPROC.EQ.6) THEN
- PESUM=40000.
- PZSUM=0.
- PQSUM=2.
- MSEL=21
- PMAS(32,1)=600.
- CKIN(1)=400.
- MSTP(81)=0
- MSTP(111)=0
- CALL PYINIT('CMS','p','p',PESUM)
-
-C...W pair production at 1 TeV e+e- collider.
- ELSEIF(IPROC.EQ.7) THEN
- PESUM=1000.
- PZSUM=0.
- PQSUM=0.
- MSUB(25)=1
- MSUB(69)=1
- MSTP(11)=1
- CALL PYINIT('CMS','e+','e-',PESUM)
-
-C...Deep inelastic scattering at a LEP+LHC ep collider.
- ELSEIF(IPROC.EQ.8) THEN
- P(1,1)=0.
- P(1,2)=0.
- P(1,3)=8000.
- P(2,1)=0.
- P(2,2)=0.
- P(2,3)=-80.
- PESUM=8080.
- PZSUM=7920.
- PQSUM=0.
- MSUB(10)=1
- CKIN(3)=50.
- MSTP(111)=0
- CALL PYINIT('USER','p','e-',PESUM)
- ENDIF
-
-C...Generate 20 events of each required type.
- DO 120 IEV=1,20
- CALL PYEVNT
- PESUMM=PESUM
- IF(IPROC.EQ.4) PESUMM=MSTI(41)*PESUM
-
-C...Check conservation of energy/momentum/flavour.
- MERR=0
- DEVE=ABS(PLU(0,4)-PESUMM)+ABS(PLU(0,3)-PZSUM)
- DEVT=ABS(PLU(0,1))+ABS(PLU(0,2))
- DEVQ=ABS(PLU(0,6)-PQSUM)
- IF(DEVE.GT.2E-3*PESUM.OR.DEVT.GT.MAX(0.01,1E-4*PESUM).OR.
- &DEVQ.GT.0.1) MERR=1
- IF(MERR.NE.0) WRITE(MSTU(11),5000) IPROC,IEV
-
-C...Check that all KF codes are known ones, and that partons/particles
-C...satisfy energy-momentum-mass relation.
- DO 110 I=1,N
- IF(K(I,1).GT.20) GOTO 110
- IF(LUCOMP(K(I,2)).EQ.0) THEN
- WRITE(MSTU(11),5100) I
- MERR=MERR+1
- ENDIF
- PD=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2*
- &SIGN(1.,P(I,5))
- IF(ABS(PD).GT.MAX(0.1,0.002*P(I,4)**2,0.002*P(I,5)**2).OR.
- &(P(I,5).GE.0..AND.P(I,4).LT.0.)) THEN
- WRITE(MSTU(11),5200) I
- MERR=MERR+1
- ENDIF
- 110 CONTINUE
-
-C...Listing of erroneous events, and first event of each type.
- IF(MERR.GE.1) NERR=NERR+1
- IF(NERR.GE.10) THEN
- WRITE(MSTU(11),5300)
- CALL LULIST(1)
- STOP
- ENDIF
- IF(MTEST.GE.1.AND.(MERR.GE.1.OR.IEV.EQ.1)) THEN
- IF(MERR.GE.1) WRITE(MSTU(11),5400)
- CALL LULIST(1)
- ENDIF
- 120 CONTINUE
-
-C...List statistics for each process type.
- IF(MTEST.GE.1) CALL PYSTAT(1)
- 130 CONTINUE
-
-C...Summarize result of run.
- IF(NERR.EQ.0) WRITE(MSTU(11),5500)
- IF(NERR.GT.0) WRITE(MSTU(11),5600) NERR
- RETURN
-
-C...Formats for information.
- 5000 FORMAT(/5X,'Energy/momentum/flavour nonconservation for process',
- &I2,', event',I4)
- 5100 FORMAT(/5X,'Entry no.',I4,' in following event not known code')
- 5200 FORMAT(/5X,'Entry no.',I4,' in following event has faulty ',
- &'kinematics')
- 5300 FORMAT(/5X,'This is the tenth error experienced! Something is ',
- &'wrong.'/5X,'Execution will be stopped after listing of event.')
- 5400 FORMAT(5X,'Faulty event follows:')
- 5500 FORMAT(//5X,'End result of PYTEST: no errors detected.')
- 5600 FORMAT(//5X,'End result of PYTEST:',I2,' errors detected.'/
- &5X,'This should not have happened!')
- END