File indexing completed on 2025-08-05 08:21:11
0001
0002
0003
0004
0005
0006
0007 SUBROUTINE PYINKI(MODKI)
0008
0009
0010 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
0011 IMPLICIT INTEGER(I-N)
0012 INTEGER PYK,PYCHGE,PYCOMP
0013
0014
0015 INTEGER MAXPUP
0016 PARAMETER (MAXPUP=100)
0017 INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
0018 DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
0019 COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
0020 &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
0021 &LPRUP(MAXPUP)
0022 SAVE /HEPRUP/
0023
0024
0025 COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
0026 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0027 COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
0028 COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
0029 COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
0030 COMMON/PYINT1/MINT(400),VINT(400)
0031 SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/
0032
0033
0034 N=2
0035 DO 100 I=1,2
0036 K(I,1)=1
0037 K(I,2)=MINT(10+I)
0038 IF(MINT(140+I).NE.0) K(I,2)=MINT(140+I)
0039 100 CONTINUE
0040
0041
0042 DO 110 J=6,10
0043 VINT(J)=0D0
0044 110 CONTINUE
0045
0046
0047 IF(MINT(111).EQ.1) THEN
0048 WIN=VINT(290)
0049 IF(MODKI.EQ.1) WIN=PARP(171)*VINT(290)
0050 S=WIN**2
0051 P(1,5)=VINT(3)
0052 P(2,5)=VINT(4)
0053 IF(MINT(141).NE.0) P(1,5)=VINT(303)
0054 IF(MINT(142).NE.0) P(2,5)=VINT(304)
0055 P(1,1)=0D0
0056 P(1,2)=0D0
0057 P(2,1)=0D0
0058 P(2,2)=0D0
0059 P(1,3)=SQRT(((S-P(1,5)**2-P(2,5)**2)**2-(2D0*P(1,5)*P(2,5))**2)/
0060 & (4D0*S))
0061 P(2,3)=-P(1,3)
0062 P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
0063 P(2,4)=SQRT(P(2,3)**2+P(2,5)**2)
0064
0065
0066 ELSEIF(MINT(111).EQ.2) THEN
0067 WIN=VINT(290)
0068 IF(MODKI.EQ.1) WIN=PARP(171)*VINT(290)
0069 P(1,5)=VINT(3)
0070 P(2,5)=VINT(4)
0071 IF(MINT(141).NE.0) P(1,5)=VINT(303)
0072 IF(MINT(142).NE.0) P(2,5)=VINT(304)
0073 P(1,1)=0D0
0074 P(1,2)=0D0
0075 P(2,1)=0D0
0076 P(2,2)=0D0
0077 P(1,3)=WIN
0078 P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
0079 P(2,3)=0D0
0080 P(2,4)=P(2,5)
0081 S=P(1,5)**2+P(2,5)**2+2D0*P(2,4)*P(1,4)
0082 VINT(10)=P(1,3)/(P(1,4)+P(2,4))
0083 CALL PYROBO(0,0,0D0,0D0,0D0,0D0,-VINT(10))
0084
0085
0086 ELSEIF(MINT(111).EQ.3) THEN
0087 P(1,5)=VINT(3)
0088 P(2,5)=VINT(4)
0089 IF(MINT(141).NE.0) P(1,5)=VINT(303)
0090 IF(MINT(142).NE.0) P(2,5)=VINT(304)
0091 P(1,4)=SQRT(P(1,1)**2+P(1,2)**2+P(1,3)**2+P(1,5)**2)
0092 P(2,4)=SQRT(P(2,1)**2+P(2,2)**2+P(2,3)**2+P(2,5)**2)
0093 DO 120 J=1,3
0094 VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
0095 120 CONTINUE
0096 CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
0097 VINT(7)=PYANGL(P(1,1),P(1,2))
0098 CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
0099 VINT(6)=PYANGL(P(1,3),P(1,1))
0100 CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
0101 S=P(1,5)**2+P(2,5)**2+2D0*(P(1,4)*P(2,4)-P(1,3)*P(2,3))
0102
0103
0104 ELSEIF(MINT(111).EQ.4) THEN
0105 PMS1=P(1,4)**2-P(1,1)**2-P(1,2)**2-P(1,3)**2
0106 P(1,5)=SIGN(SQRT(ABS(PMS1)),PMS1)
0107 PMS2=P(2,4)**2-P(2,1)**2-P(2,2)**2-P(2,3)**2
0108 P(2,5)=SIGN(SQRT(ABS(PMS2)),PMS2)
0109 DO 130 J=1,3
0110 VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
0111 130 CONTINUE
0112 CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
0113 VINT(7)=PYANGL(P(1,1),P(1,2))
0114 CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
0115 VINT(6)=PYANGL(P(1,3),P(1,1))
0116 CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
0117 S=(P(1,4)+P(2,4))**2
0118
0119
0120 ELSEIF(MINT(111).EQ.5) THEN
0121 DO 140 J=1,3
0122 VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
0123 140 CONTINUE
0124 CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
0125 VINT(7)=PYANGL(P(1,1),P(1,2))
0126 CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
0127 VINT(6)=PYANGL(P(1,3),P(1,1))
0128 CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
0129 S=(P(1,4)+P(2,4))**2
0130
0131
0132 ELSEIF(MINT(111).GE.11) THEN
0133 P(1,5)=VINT(3)
0134 P(2,5)=VINT(4)
0135 IF(MINT(141).NE.0) P(1,5)=VINT(303)
0136 IF(MINT(142).NE.0) P(2,5)=VINT(304)
0137 P(1,1)=0D0
0138 P(1,2)=0D0
0139 P(2,1)=0D0
0140 P(2,2)=0D0
0141 P(1,3)=SQRT(MAX(0D0,EBMUP(1)**2-P(1,5)**2))
0142 P(2,3)=-SQRT(MAX(0D0,EBMUP(2)**2-P(2,5)**2))
0143 P(1,4)=EBMUP(1)
0144 P(2,4)=EBMUP(2)
0145 VINT(10)=(P(1,3)+P(2,3))/(P(1,4)+P(2,4))
0146 CALL PYROBO(0,0,0D0,0D0,0D0,0D0,-VINT(10))
0147 S=(P(1,4)+P(2,4))**2
0148 ENDIF
0149
0150
0151 IF(MODKI.EQ.1.AND.S.LT.PARP(2)**2) THEN
0152 IF(MSTP(172).LE.1) THEN
0153 CALL PYERRM(23,
0154 & '(PYINKI:) too low invariant mass in this event')
0155 ELSE
0156 MSTI(61)=1
0157 RETURN
0158 ENDIF
0159 ENDIF
0160
0161
0162 VINT(1)=SQRT(S)
0163 VINT(2)=S
0164 IF(MINT(111).GE.4) THEN
0165 IF(MINT(141).EQ.0) THEN
0166 VINT(3)=P(1,5)
0167 IF(MINT(11).EQ.22.AND.P(1,5).LT.0) VINT(307)=P(1,5)**2
0168 ELSE
0169 VINT(303)=P(1,5)
0170 ENDIF
0171 IF(MINT(142).EQ.0) THEN
0172 VINT(4)=P(2,5)
0173 IF(MINT(12).EQ.22.AND.P(2,5).LT.0) VINT(308)=P(2,5)**2
0174 ELSE
0175 VINT(304)=P(2,5)
0176 ENDIF
0177 ENDIF
0178 VINT(5)=P(1,3)
0179 IF(MODKI.EQ.0) VINT(289)=S
0180 DO 150 J=1,5
0181 V(1,J)=0D0
0182 V(2,J)=0D0
0183 VINT(290+J)=P(1,J)
0184 VINT(295+J)=P(2,J)
0185 150 CONTINUE
0186
0187
0188 IF(MODKI.EQ.0) VINT(285)=CKIN(3)
0189 IF(MSTP(82).LE.1) THEN
0190 PTMN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
0191 ELSE
0192 PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
0193 ENDIF
0194 VINT(149)=4D0*PTMN**2/S
0195 VINT(154)=PTMN
0196
0197 RETURN
0198 END