Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:21:10

0001  
0002 C*********************************************************************
0003  
0004 C...PYDOCU
0005 C...Handles the documentation of the process in MSTI and PARI,
0006 C...and also computes cross-sections based on accumulated statistics.
0007  
0008       SUBROUTINE PYDOCU
0009  
0010 C...Double precision and integer declarations.
0011       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
0012       IMPLICIT INTEGER(I-N)
0013       INTEGER PYK,PYCHGE,PYCOMP
0014 C...Commonblocks.
0015       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
0016       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0017       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
0018       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
0019       COMMON/PYINT1/MINT(400),VINT(400)
0020       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
0021       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
0022       SAVE /PYJETS/,/PYDAT1/,/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,
0023      &/PYINT5/
0024  
0025 C...Calculate Monte Carlo estimates of cross-sections.
0026       ISUB=MINT(1)
0027       IF(MSTP(111).NE.-1) NGEN(ISUB,3)=NGEN(ISUB,3)+1
0028       NGEN(0,3)=NGEN(0,3)+1
0029       XSEC(0,3)=0D0
0030       DO 100 I=1,500
0031         IF(I.EQ.96.OR.I.EQ.97) THEN
0032           XSEC(I,3)=0D0
0033         ELSEIF(MSUB(95).EQ.1.AND.(I.EQ.11.OR.I.EQ.12.OR.I.EQ.13.OR.
0034      &    I.EQ.28.OR.I.EQ.53.OR.I.EQ.68)) THEN
0035           XSEC(I,3)=XSEC(96,2)*NGEN(I,3)/MAX(1D0,DBLE(NGEN(96,1))*
0036      &    DBLE(NGEN(96,2)))
0037         ELSEIF(MSUB(95).EQ.1.AND.I.GE.381.AND.I.LE.386) THEN
0038           XSEC(I,3)=XSEC(96,2)*NGEN(I,3)/MAX(1D0,DBLE(NGEN(96,1))*
0039      &    DBLE(NGEN(96,2)))
0040         ELSEIF(MSUB(I).EQ.0.OR.NGEN(I,1).EQ.0) THEN
0041           XSEC(I,3)=0D0
0042         ELSEIF(NGEN(I,2).EQ.0) THEN
0043           XSEC(I,3)=XSEC(I,2)*NGEN(0,3)/(DBLE(NGEN(I,1))*
0044      &    DBLE(NGEN(0,2)))
0045         ELSE
0046           XSEC(I,3)=XSEC(I,2)*NGEN(I,3)/(DBLE(NGEN(I,1))*
0047      &    DBLE(NGEN(I,2)))
0048         ENDIF
0049         XSEC(0,3)=XSEC(0,3)+XSEC(I,3)
0050   100 CONTINUE
0051  
0052 C...Rescale to known low-pT cross-section for standard QCD processes.
0053       IF(MSUB(95).EQ.1) THEN
0054         XSECH=XSEC(11,3)+XSEC(12,3)+XSEC(13,3)+XSEC(28,3)+XSEC(53,3)+
0055      &  XSEC(68,3)+XSEC(95,3)
0056         XSECW=XSEC(97,2)/MAX(1D0,DBLE(NGEN(97,1)))
0057         IF(XSECH.GT.1D-20.AND.XSECW.GT.1D-20) THEN
0058           FAC=XSECW/XSECH
0059           XSEC(11,3)=FAC*XSEC(11,3)
0060           XSEC(12,3)=FAC*XSEC(12,3)
0061           XSEC(13,3)=FAC*XSEC(13,3)
0062           XSEC(28,3)=FAC*XSEC(28,3)
0063           XSEC(53,3)=FAC*XSEC(53,3)
0064           XSEC(68,3)=FAC*XSEC(68,3)
0065           XSEC(95,3)=FAC*XSEC(95,3)
0066           XSEC(0,3)=XSEC(0,3)-XSECH+XSECW
0067         ENDIF
0068       ENDIF
0069  
0070 C...Save information for gamma-p and gamma-gamma.
0071       IF(MINT(121).GT.1) THEN
0072         IGA=MINT(122)
0073         CALL PYSAVE(2,IGA)
0074         CALL PYSAVE(5,0)
0075       ENDIF
0076  
0077 C...Reset information on hard interaction.
0078       DO 110 J=1,200
0079         MSTI(J)=0
0080         PARI(J)=0D0
0081   110 CONTINUE
0082  
0083 C...Copy integer valued information from MINT into MSTI.
0084       DO 120 J=1,32
0085         MSTI(J)=MINT(J)
0086   120 CONTINUE
0087       IF(MINT(121).GT.1) MSTI(9)=MINT(122)
0088  
0089 C...Store cross-section variables in PARI.
0090       PARI(1)=XSEC(0,3)
0091       PARI(2)=XSEC(0,3)/MINT(5)
0092       PARI(7)=VINT(97)
0093       PARI(9)=VINT(99)
0094       PARI(10)=VINT(100)
0095       VINT(98)=VINT(98)+VINT(100)
0096       IF(MSTP(142).EQ.1) PARI(2)=XSEC(0,3)/VINT(98)
0097  
0098 C...Store kinematics variables in PARI.
0099       PARI(11)=VINT(1)
0100       PARI(12)=VINT(2)
0101       IF(ISUB.NE.95) THEN
0102         DO 130 J=13,26
0103           PARI(J)=VINT(30+J)
0104   130   CONTINUE
0105         PARI(29)=VINT(39)
0106         PARI(30)=VINT(40)
0107         PARI(31)=VINT(141)
0108         PARI(32)=VINT(142)
0109         PARI(33)=VINT(41)
0110         PARI(34)=VINT(42)
0111         PARI(35)=PARI(33)-PARI(34)
0112         PARI(36)=VINT(21)
0113         PARI(37)=VINT(22)
0114         PARI(38)=VINT(26)
0115         PARI(39)=VINT(157)
0116         PARI(40)=VINT(158)
0117         PARI(41)=VINT(23)
0118         PARI(42)=2D0*VINT(47)/VINT(1)
0119       ENDIF
0120  
0121 C...Store information on scattered partons in PARI.
0122       IF(ISUB.NE.95.AND.MINT(7)*MINT(8).NE.0) THEN
0123         DO 140 IS=7,8
0124           I=MINT(IS)
0125           PARI(36+IS)=P(I,3)/VINT(1)
0126           PARI(38+IS)=P(I,4)/VINT(1)
0127           PR=MAX(1D-20,P(I,5)**2+P(I,1)**2+P(I,2)**2)
0128           PARI(40+IS)=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/
0129      &    SQRT(PR),1D20)),P(I,3))
0130           PR=MAX(1D-20,P(I,1)**2+P(I,2)**2)
0131           PARI(42+IS)=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/
0132      &    SQRT(PR),1D20)),P(I,3))
0133           PARI(44+IS)=P(I,3)/SQRT(1D-20+P(I,1)**2+P(I,2)**2+P(I,3)**2)
0134           PARI(46+IS)=PYANGL(P(I,3),SQRT(P(I,1)**2+P(I,2)**2))
0135           PARI(48+IS)=PYANGL(P(I,1),P(I,2))
0136   140   CONTINUE
0137       ENDIF
0138  
0139 C...Store sum up transverse and longitudinal momenta.
0140       PARI(65)=2D0*PARI(17)
0141       IF(ISUB.LE.90.OR.ISUB.GE.95) THEN
0142         DO 150 I=MSTP(126)+1,N
0143           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 150
0144           PT=SQRT(P(I,1)**2+P(I,2)**2)
0145           PARI(69)=PARI(69)+PT
0146           IF(I.LE.MINT(52)) PARI(66)=PARI(66)+PT
0147           IF(I.GT.MINT(52).AND.I.LE.MINT(53)) PARI(68)=PARI(68)+PT
0148   150   CONTINUE
0149         PARI(67)=PARI(68)
0150         PARI(71)=VINT(151)
0151         PARI(72)=VINT(152)
0152         PARI(73)=VINT(151)
0153         PARI(74)=VINT(152)
0154       ELSE
0155         PARI(66)=PARI(65)
0156         PARI(69)=PARI(65)
0157       ENDIF
0158  
0159 C...Store various other pieces of information into PARI.
0160       PARI(61)=VINT(148)
0161       PARI(75)=VINT(155)
0162       PARI(76)=VINT(156)
0163       PARI(77)=VINT(159)
0164       PARI(78)=VINT(160)
0165       PARI(81)=VINT(138)
0166  
0167 C...Store information on lepton -> lepton + gamma in PYGAGA.
0168       MSTI(71)=MINT(141)
0169       MSTI(72)=MINT(142)
0170       PARI(101)=VINT(301)
0171       PARI(102)=VINT(302)
0172       DO 160 I=103,114
0173         PARI(I)=VINT(I+202)
0174   160 CONTINUE
0175  
0176 C...Set information for PYTABU.
0177       IF(ISET(ISUB).EQ.1.OR.ISET(ISUB).EQ.3) THEN
0178         MSTU(161)=MINT(21)
0179         MSTU(162)=0
0180       ELSEIF(ISET(ISUB).EQ.5) THEN
0181         MSTU(161)=MINT(23)
0182         MSTU(162)=0
0183       ELSE
0184         MSTU(161)=MINT(21)
0185         MSTU(162)=MINT(22)
0186       ENDIF
0187  
0188       RETURN
0189       END