1 #include "isajet/pilot.h"
2 SUBROUTINE IPARTNS(NPRTNS,IDS,PRTNS,IDQ,WEIGHT,WZDK)
3 C----------------------------------------------------------------------
5 C- Purpose and Methods :
6 C- fill PJETS array from a list of input partons
8 C- NPRTNS = number of partons
9 C- IDS(NPRTNS) = parton ids
10 C- PRTNS(4,NPRTNS) = parton 4 vectors
11 C- IDQ(2) = initial partons
13 C- WZDK = if true last 2 partons are from W,Z decay
16 C- Created 8-OCT-1991 Serban D. Protopopescu
17 C- Updated 17-APR-1996 Serban D. Protopopescu
18 C- added entry evcuts to supply evolution limits
19 C- modified DrellYan (keys(3)) to stay within VECBOS jet ranking
20 C- Updated 16-JUN-1998 F. Paige
21 C- Removed ISAZEB dependence: use ISPJET and do not call ISPETA
23 C----------------------------------------------------------------------
24 #if defined(CERNLIB_IMPNONE)
27 INTEGER NPRTNS,IDS(NPRTNS),IDQ(2)
28 REAL PRTNS(4,NPRTNS),WEIGHT
30 #include "isajet/final.inc"
31 #include "isajet/idrun.inc"
32 #include "isajet/jetpar.inc"
33 #include "isajet/keys.inc"
34 #include "isajet/nodcay.inc"
35 #include "isajet/partcl.inc"
36 #include "isajet/pjets.inc"
37 #include "isajet/primar.inc"
38 #include "isajet/q1q2.inc"
39 #include "isajet/totals.inc"
41 INTEGER K,J,IWZ,ID,NQS
44 INTEGER I,NP,JDORD(MAXQ),JIORD(MAXQ),NPJ
45 REAL ETAQ(MAXQ),PHIQ(MAXQ),THQ(MAXQ),PTQ(MAXQ)
46 REAL ETCUT,ETIN,RCUT,RIN,R
48 REAL PXPT(MAXQ),PXETA(MAXQ),PXPHI(MAXQ)
50 DOUBLE PRECISION PI, TWOPI, HALFPI, RADIAN
51 PARAMETER (PI= 3.1415 92653 58979 32384 6 D0)
52 PARAMETER (TWOPI= 6.2831 85307 17958 64769 3 D0)
53 PARAMETER (HALFPI= 1.5707 96326 79489 66192 3 D0)
54 PARAMETER (RADIAN= 0.0174532 92519 94329 5769237 D0)
55 C----------------------------------------------------------------------
69 IF(IDS(J).EQ.80) JWTYP=2
70 IF(IDS(J).EQ.-80) JWTYP=3
75 QWJET(5)=SQRT(QWJET(4)**2-QWJET(1)**2-QWJET(2)**2-QWJET(3)**2)
83 PJETS(K,NJET)=PRTNS(K,J)
86 PJETS(5,NJET)=AMASS(ID)
88 C W,Z decays were not in input
89 IF(IWZ.NE.0.AND.NJET.EQ.0) THEN
94 C fill with the other partons
101 IF(IWZ.NE.J.AND.ID.LT.11) THEN
105 PJETS(K,NJET)=PRTNS(K,J)
107 PJETS(5,NJET)=PRTNS(4,J)**2-PRTNS(1,J)**2-PRTNS(2,J)**2-
109 IF ( PJETS(5,NJET).GT.0. ) THEN
110 PJETS(5,NJET)=SQRT(PJETS(5,NJET))
112 PJETS(4,NJET)=SQRT(PRTNS(4,J)**2-PJETS(5,NJET))
117 SUM(K)=SUM(K)+PRTNS(K,J)
121 C eta and phi of incoming partons
125 PPI=SQRT(PRTNS(1,I)**2+PRTNS(2,I)**2+PRTNS(3,I)**2)
126 IF(PPI.GT.0.AND.PPI.GT.ABS(PRTNS(3,I))) THEN
127 THQ(I)=ACOS(PRTNS(3,I)/PPI)
128 ETAQ(I)=-LOG(TAN(THQ(I)/2))
131 ETAQ(I)=SIGN(999.,PRTNS(3,I))
133 PTQ(I)=SQRT(PRTNS(1,I)**2+PRTNS(2,I)**2)
135 PHIQ(I)=ATAN2(PRTNS(2,I),PRTNS(1,I))
136 IF(PHIQ(I).LT.0) PHIQ(I)=PHIQ(I)+TWOPI
142 C ... Order partons in pt
148 CALL ISASRT(PXPT(1),NP,JIORD)
153 JDORD(I) = JIORD(NP-I+1)
156 PTQ(I)=PXPT(JDORD(I))
157 ETAQ(I)=PXETA(JDORD(I))
158 PHIQ(I)=PXPHI(JDORD(I))
164 PBEAM(1)=(ECM-SUM(4)-SUM(3))/2.
165 PBEAM(2)=(ECM-SUM(4)+SUM(3))/2.
166 QSQ=SQRT(SUM(4)**2-SUM(3)**2-SUM(2)**2-SUM(1)**2)
171 IF(NQS.EQ.1.OR.NJET.LT.3) STDDY=.TRUE.
173 CALL IPRTNS(NQS,PRTNS,IDQ)
177 C special check for VECBOS
180 CALL ISPJET(RCUT,ETCUT,NPJ,PXPT,PXPHI,PXETA)
181 IF(NPJ.GE.NP.AND.PXPT(NP).GT.PTQ(NP)) THEN
182 R=SQRT((PXETA(NP)-ETAQ(NP))**2+(PXPHI(NP)-PHIQ(NP))**2)
183 IF(R.GT.RCUT) GOTO 15
199 C Entry point to set parameters
201 ENTRY EVCUTS(RIN,ETIN,DOEVIN)