2 C*********************************************************************
4 SUBROUTINE PYINKI(MODKI)
6 C...Sets up kinematics, including rotations and boosts to/from CM frame.
7 COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
8 COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
9 COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
10 COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
11 COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
12 COMMON/PYINT1/MINT(400),VINT(400)
13 SAVE /LUJETS/,/LUDAT1/,/LUDAT2/
14 SAVE /PYSUBS/,/PYPARS/,/PYINT1/
16 C...Set initial flavour state.
23 C...Reset boost. Do kinematics for various cases.
28 C...Set up kinematics for events defined in CM frame.
29 IF(MINT(111).EQ.1) THEN
31 IF(MODKI.EQ.1) WIN=PARP(171)*VINT(290)
39 P(1,3)=SQRT(((S-P(1,5)**2-P(2,5)**2)**2-(2.*P(1,5)*P(2,5))**2)/
42 P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
43 P(2,4)=SQRT(P(2,3)**2+P(2,5)**2)
45 C...Set up kinematics for fixed target events.
46 ELSEIF(MINT(111).EQ.2) THEN
48 IF(MODKI.EQ.1) WIN=PARP(171)*VINT(290)
56 P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
59 S=P(1,5)**2+P(2,5)**2+2.*P(2,4)*P(1,4)
60 VINT(10)=P(1,3)/(P(1,4)+P(2,4))
61 CALL LUROBO(0.,0.,0.,0.,-VINT(10))
63 C...Set up kinematics for events in user-defined frame.
64 ELSEIF(MINT(111).EQ.3) THEN
67 P(1,4)=SQRT(P(1,1)**2+P(1,2)**2+P(1,3)**2+P(1,5)**2)
68 P(2,4)=SQRT(P(2,1)**2+P(2,2)**2+P(2,3)**2+P(2,5)**2)
70 VINT(7+J)=(DBLE(P(1,J))+DBLE(P(2,J)))/DBLE(P(1,4)+P(2,4))
72 CALL LUROBO(0.,0.,-VINT(8),-VINT(9),-VINT(10))
73 VINT(7)=ULANGL(P(1,1),P(1,2))
74 CALL LUROBO(0.,-VINT(7),0.,0.,0.)
75 VINT(6)=ULANGL(P(1,3),P(1,1))
76 CALL LUROBO(-VINT(6),0.,0.,0.,0.)
77 S=P(1,5)**2+P(2,5)**2+2.*(P(1,4)*P(2,4)-P(1,3)*P(2,3))
79 C...Set up kinematics for events with user-defined four-vectors.
80 ELSEIF(MINT(111).EQ.4) THEN
81 PMS1=P(1,4)**2-P(1,1)**2-P(1,2)**2-P(1,3)**2
82 P(1,5)=SIGN(SQRT(ABS(PMS1)),PMS1)
83 PMS2=P(2,4)**2-P(2,1)**2-P(2,2)**2-P(2,3)**2
84 P(2,5)=SIGN(SQRT(ABS(PMS2)),PMS2)
86 VINT(7+J)=(DBLE(P(1,J))+DBLE(P(2,J)))/DBLE(P(1,4)+P(2,4))
88 CALL LUROBO(0.,0.,-VINT(8),-VINT(9),-VINT(10))
89 VINT(7)=ULANGL(P(1,1),P(1,2))
90 CALL LUROBO(0.,-VINT(7),0.,0.,0.)
91 VINT(6)=ULANGL(P(1,3),P(1,1))
92 CALL LUROBO(-VINT(6),0.,0.,0.,0.)
95 C...Set up kinematics for events with user-defined five-vectors.
96 ELSEIF(MINT(111).EQ.5) THEN
98 VINT(7+J)=(DBLE(P(1,J))+DBLE(P(2,J)))/DBLE(P(1,4)+P(2,4))
100 CALL LUROBO(0.,0.,-VINT(8),-VINT(9),-VINT(10))
101 VINT(7)=ULANGL(P(1,1),P(1,2))
102 CALL LUROBO(0.,-VINT(7),0.,0.,0.)
103 VINT(6)=ULANGL(P(1,3),P(1,1))
104 CALL LUROBO(-VINT(6),0.,0.,0.,0.)
108 C...Return or error for too low CM energy.
109 IF(MODKI.EQ.1.AND.S.LT.PARP(2)**2) THEN
110 IF(MSTP(172).LE.1) THEN
112 & '(PYINKI:) too low invariant mass in this event')
119 C...Save information on incoming particles.
122 IF(MINT(111).GE.4) VINT(3)=P(1,5)
123 IF(MINT(111).GE.4) VINT(4)=P(2,5)
125 IF(MODKI.EQ.0) VINT(289)=S
133 C...Store pT cut-off and related constants to be used in generation.
134 IF(MODKI.EQ.0) VINT(285)=CKIN(3)
135 IF(MSTP(82).LE.1) THEN
136 IF(MINT(121).GT.1) PARP(81)=1.30+0.15*LOG(VINT(1)/200.)/
140 IF(MINT(121).GT.1) PARP(82)=1.25+0.15*LOG(VINT(1)/200.)/
144 VINT(149)=4.*PTMN**2/S