2 C*********************************************************************
4 SUBROUTINE PYREMN(IPU1,IPU2)
6 C...Adds on target remnants (one or two from each side) and
7 C...includes primordial kT for hadron beams.
8 IMPLICIT DOUBLE PRECISION(D)
9 COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
10 COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
11 COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
12 COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
13 COMMON/PYINT1/MINT(400),VINT(400)
14 SAVE /LUJETS/,/LUDAT1/,/LUDAT2/
15 SAVE /PYPARS/,/PYINT1/
16 DIMENSION KFLCH(2),KFLSP(2),CHI(2),PMS(0:6),IS(2),ISN(2),ROBO(5),
17 &PSYS(0:2,5),PMIN(0:2),QOLD(4),QNEW(4),DBE(3),PSUM(4)
19 C...Find event type and remaining energy.
22 IF(MINT(50).EQ.0.OR.MSTP(81).LE.0) THEN
23 VINT(143)=1.-VINT(141)
24 VINT(144)=1.-VINT(142)
27 C...Define initial partons.
40 IF(MINT(47).EQ.1) THEN
44 ELSEIF(ISUB.EQ.95) THEN
49 C...No primordial kT, or chosen according to truncated Gaussian or
50 C...exponential, or (for photon) predetermined or power law.
51 120 IF(MINT(40+JT).EQ.2.AND.MINT(10+JT).NE.22) THEN
52 IF(MSTP(91).LE.0) THEN
54 ELSEIF(MSTP(91).EQ.1) THEN
55 PT=PARP(91)*SQRT(-LOG(RLU(0)))
59 PT=-PARP(92)*LOG(RPT1*RPT2)
61 IF(PT.GT.PARP(93)) GOTO 120
62 ELSEIF(MINT(106+JT).EQ.3) THEN
65 IF(NTRY.GT.10) PT=PT*0.8**(NTRY-10)
66 ELSEIF(IABS(MINT(14+JT)).LE.8.OR.MINT(14+JT).EQ.21) THEN
67 IF(MSTP(93).LE.0) THEN
69 ELSEIF(MSTP(93).EQ.1) THEN
70 PT=PARP(99)*SQRT(-LOG(RLU(0)))
71 ELSEIF(MSTP(93).EQ.2) THEN
74 PT=-PARP(99)*LOG(RPT1*RPT2)
75 ELSEIF(MSTP(93).EQ.3) THEN
78 PT=SQRT(MAX(0.,HA*(HA+HB)/(HA+HB-RLU(0)*HB)-HA))
82 IF(MSTP(93).EQ.5) HB=MIN(VINT(48),PARP(100)**2)
83 PT=SQRT(MAX(0.,HA*((HA+HB)/HA)**RLU(0)-HA))
85 IF(PT.GT.PARP(100)) GOTO 120
93 PMS(JT)=P(I,5)**2+P(I,1)**2+P(I,2)**2
96 IF(MINT(47).EQ.1) RETURN
98 C...Kinematics construction for initial partons.
105 SHS=VINT(141)*VINT(142)*VINT(2)+(P(I1,1)+P(I2,1))**2+
106 & (P(I1,2)+P(I2,2))**2
107 SHR=SQRT(MAX(0.,SHS))
108 IF((SHS-PMS(1)-PMS(2))**2-4.*PMS(1)*PMS(2).LE.0.) GOTO 100
109 P(I1,4)=0.5*(SHR+(PMS(1)-PMS(2))/SHR)
110 P(I1,3)=SQRT(MAX(0.,P(I1,4)**2-PMS(1)))
114 C...Transform partons to overall CM-frame.
115 ROBO(3)=(P(I1,1)+P(I2,1))/SHR
116 ROBO(4)=(P(I1,2)+P(I2,2))/SHR
117 CALL LUDBRB(I1,I2,0.,0.,-DBLE(ROBO(3)),-DBLE(ROBO(4)),0D0)
118 ROBO(2)=ULANGL(P(I1,1),P(I1,2))
119 CALL LUDBRB(I1,I2,0.,-ROBO(2),0D0,0D0,0D0)
120 ROBO(1)=ULANGL(P(I1,3),P(I1,1))
121 CALL LUDBRB(I1,I2,-ROBO(1),0.,0D0,0D0,0D0)
122 CALL LUDBRB(I1,MINT(52),ROBO(1),ROBO(2),DBLE(ROBO(3)),
124 ROBO(5)=MAX(-0.999999,MIN(0.999999,(VINT(141)-VINT(142))/
125 & (VINT(141)+VINT(142))))
126 CALL LUDBRB(I1,MINT(52),0.,0.,0D0,0D0,DBLE(ROBO(5)))
129 C...Optionally fix up x and Q2 definitions for leptoproduction.
131 IF((MINT(43).EQ.2.OR.MINT(43).EQ.3).AND.((ISUB.EQ.10.AND.
132 &MSTP(23).GE.1).OR.(ISUB.EQ.83.AND.MSTP(23).GE.2))) IDISXQ=1
135 C...Find where incoming and outgoing leptons/partons are sitting.
137 IF(MINT(42).EQ.1) LESD=2
141 LEOUT=MINT(84)+2+LESD
142 LQOUT=MINT(84)+5-LESD
143 IF(K(LEIN,3).GT.LEIN) LEIN=K(LEIN,3)
144 IF(K(LQIN,3).GT.LQIN) LQIN=K(LQIN,3)
146 DO 140 I=MINT(84)+5,N
147 IF(K(I,2).EQ.94) THEN
154 IF(LESD.EQ.1) LQBG=IPU2
156 C...Calculate actual and wanted momentum transfer.
159 HPK=2.*(P(LPIN,4)*P(LEIN,4)-P(LPIN,1)*P(LEIN,1)-
160 & P(LPIN,2)*P(LEIN,2)-P(LPIN,3)*P(LEIN,3))*
161 & (P(MINT(83)+LESD,4)*VINT(40+LESD)/P(LEIN,4))
162 HPT2=MAX(0.,Q2NOM*(1.-Q2NOM/(XNOM*HPK)))
163 FAC=SQRT(HPT2/(P(LEOUT,1)**2+P(LEOUT,2)**2))
164 P(N+1,1)=FAC*P(LEOUT,1)
165 P(N+1,2)=FAC*P(LEOUT,2)
166 P(N+1,3)=0.25*((HPK-Q2NOM/XNOM)/P(LPIN,4)-
167 & Q2NOM/(P(MINT(83)+LESD,4)*VINT(40+LESD)))*(-1)**(LESD+1)
168 P(N+1,4)=SQRT(P(LEOUT,5)**2+P(N+1,1)**2+P(N+1,2)**2+
171 QOLD(J)=P(LEIN,J)-P(LEOUT,J)
172 QNEW(J)=P(LEIN,J)-P(N+1,J)
175 C...Boost outgoing electron and daughters.
182 P(N+2,J)=(P(N+1,J)-P(LEOUT,J))/(P(N+1,4)+P(LEOUT,4))
184 PINV=2./(1.+P(N+2,1)**2+P(N+2,2)**2+P(N+2,3)**2)
191 IF(IORIG.GT.LEOUT) GOTO 190
192 IF(I.EQ.LEOUT.OR.IORIG.EQ.LEOUT)
193 & CALL LUDBRB(I,I,0.,0.,DBE(1),DBE(2),DBE(3))
197 C...Copy shower initiator and all outgoing partons.
203 DO 240 I=MINT(84)+1,N
205 IF(K(I,1).GT.10) GOTO 240
206 IF(I.EQ.LQBG.OR.I.EQ.LQOUT) THEN
211 IF(IORIG.EQ.LQBG.OR.IORIG.EQ.LQOUT) THEN
213 ELSEIF(IORIG.GT.MINT(84).AND.IORIG.LE.N) THEN
226 C...Calculate relative rescaling factors.
230 PLCSUM=PLCSUM+(P(I,4)+SLC*P(I,3))
233 V(I,1)=(P(I,4)+SLC*P(I,3))/PLCSUM
236 C...Transfer extra three-momentum of current.
239 P(I,J)=P(I,J)+V(I,1)*(QNEW(J)-QOLD(J))
241 P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
244 C...Iterate change of initiator momentum to get energy right.
247 PEEX=-P(N+1,4)-QNEW(4)
248 PEMV=-P(N+1,3)/P(N+1,4)
251 PEMV=PEMV+V(I,1)*P(I,3)/P(I,4)
253 IF(ABS(PEMV).LT.1E-10) THEN
259 P(N+1,3)=P(N+1,3)+PZCH
260 P(N+1,4)=SQRT(P(N+1,5)**2+P(N+1,1)**2+P(N+1,2)**2+P(N+1,3)**2)
262 P(I,3)=P(I,3)+V(I,1)*PZCH
263 P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
265 IF(ITER.LT.10.AND.ABS(PEEX).GT.1E-6*P(N+1,4)) GOTO 290
267 C...Modify momenta in event record.
268 HBE=2.*(P(N+1,4)+P(LQBG,4))*(P(N+1,3)-P(LQBG,3))/
269 & ((P(N+1,4)+P(LQBG,4))**2+(P(N+1,3)-P(LQBG,3))**2)
270 IF(ABS(HBE).GT.0.999999) THEN
276 CALL LUDBRB(I,I,0.,0.,0D0,0D0,DBLE(HBE))
285 C...Check minimum invariant mass of remnant system(s).
286 PSYS(0,4)=P(I1,4)+P(I2,4)+0.5*VINT(1)*(VINT(151)+VINT(152))
287 PSYS(0,3)=P(I1,3)+P(I2,3)+0.5*VINT(1)*(VINT(151)-VINT(152))
288 PMS(0)=MAX(0.,PSYS(0,4)**2-PSYS(0,3)**2)
291 PSYS(JT,4)=0.5*VINT(1)*VINT(142+JT)
292 PSYS(JT,3)=PSYS(JT,4)*(-1)**(JT-1)
294 IF(MINT(44+JT).EQ.1) GOTO 340
295 MINT(105)=MINT(102+JT)
296 MINT(109)=MINT(106+JT)
297 CALL PYSPLI(MINT(10+JT),MINT(12+JT),KFLCH(JT),KFLSP(JT))
298 IF(KFLCH(JT).NE.0) PMIN(JT)=PMIN(JT)+ULMASS(KFLCH(JT))
299 IF(KFLSP(JT).NE.0) PMIN(JT)=PMIN(JT)+ULMASS(KFLSP(JT))
300 IF(KFLCH(JT)*KFLSP(JT).NE.0) PMIN(JT)=PMIN(JT)+0.5*PARP(111)
301 PMIN(JT)=SQRT(PMIN(JT)**2+P(MINT(83)+JT+2,1)**2+
302 &P(MINT(83)+JT+2,2)**2)
304 IF(PMIN(0)+PMIN(1)+PMIN(2).GT.VINT(1).OR.(MINT(45).GE.2.AND.
305 &PMIN(1).GT.PSYS(1,4)).OR.(MINT(46).GE.2.AND.PMIN(2).GT.
312 C...Loop over two remnants; skip if none there.
316 IF(MINT(44+JT).EQ.1) GOTO 410
320 C...Store first remnant parton.
332 P(I,5)=ULMASS(K(I,2))
334 C...First parton colour connections and kinematics.
335 KCOL=KCHG(LUCOMP(KFLSP(JT)),2)
338 K(I,4)=MSTU(5)*IPU+IPU
339 K(I,5)=MSTU(5)*IPU+IPU
340 K(IPU,4)=MOD(K(IPU,4),MSTU(5))+MSTU(5)*I
341 K(IPU,5)=MOD(K(IPU,5),MSTU(5))+MSTU(5)*I
342 ELSEIF(KCOL.NE.0) THEN
344 KFLS=(3-KCOL*ISIGN(1,KFLSP(JT)))/2
346 K(IPU,6-KFLS)=MOD(K(IPU,6-KFLS),MSTU(5))+MSTU(5)*I
348 IF(KFLCH(JT).EQ.0) THEN
349 P(I,1)=-P(MINT(83)+JT+2,1)
350 P(I,2)=-P(MINT(83)+JT+2,2)
351 PMS(JT)=P(I,5)**2+P(I,1)**2+P(I,2)**2
352 PSYS(JT,3)=SQRT(MAX(0.,PSYS(JT,4)**2-PMS(JT)))*(-1)**(JT-1)
356 C...When extra remnant parton or hadron: store extra remnant.
368 P(I,5)=ULMASS(K(I,2))
370 C...Find parton colour connections of extra remnant.
371 KCOL=KCHG(LUCOMP(KFLCH(JT)),2)
374 K(I,4)=MSTU(5)*IPU+IPU
375 K(I,5)=MSTU(5)*IPU+IPU
376 K(IPU,4)=MOD(K(IPU,4),MSTU(5))+MSTU(5)*I
377 K(IPU,5)=MOD(K(IPU,5),MSTU(5))+MSTU(5)*I
378 ELSEIF(KCOL.NE.0) THEN
380 KFLS=(3-KCOL*ISIGN(1,KFLCH(JT)))/2
382 K(IPU,6-KFLS)=MOD(K(IPU,6-KFLS),MSTU(5))+MSTU(5)*I
385 C...Relative transverse momentum when two remnants.
388 CALL LUPTDI(1,P(I-1,1),P(I-1,2))
389 IF(IABS(MINT(10+JT)).LT.20) THEN
393 PMS(JT+2)=P(I-1,5)**2+P(I-1,1)**2+P(I-1,2)**2
394 P(I,1)=-P(MINT(83)+JT+2,1)-P(I-1,1)
395 P(I,2)=-P(MINT(83)+JT+2,2)-P(I-1,2)
396 PMS(JT+4)=P(I,5)**2+P(I,1)**2+P(I,2)**2
398 C...Meson or baryon; photon as meson. For splitup below.
400 IF(MOD(MINT(10+JT)/1000,10).NE.0) IMB=2
402 C***Relative distribution for electron into two electrons. Temporary!
403 IF(IABS(MINT(10+JT)).LT.20.AND.MINT(14+JT).EQ.-MINT(10+JT))
407 C...Relative distribution of electron energy into electron plus parton.
408 ELSEIF(IABS(MINT(10+JT)).LT.20) THEN
411 CHI(JT)=(XE-XHRD)/(1.-XHRD)
413 C...Relative distribution of energy for particle into two jets.
414 ELSEIF(IABS(KFLCH(JT)).LE.10.OR.KFLCH(JT).EQ.21) THEN
416 IF(MSTP(92).LE.1) THEN
417 IF(IMB.EQ.1) CHI(JT)=RLU(0)
418 IF(IMB.EQ.2) CHI(JT)=1.-SQRT(RLU(0))
419 ELSEIF(MSTP(92).EQ.2) THEN
420 CHI(JT)=1.-RLU(0)**(1./(1.+CHIK))
421 ELSEIF(MSTP(92).EQ.3) THEN
423 380 CHI(JT)=RLU(0)**2
424 IF((CHI(JT)**2/(CHI(JT)**2+CUT**2))**0.25*(1.-CHI(JT))**CHIK
425 & .LT.RLU(0)) GOTO 380
426 ELSEIF(MSTP(92).EQ.4) THEN
428 CUTR=(1.+SQRT(1.+CUT**2))/CUT
429 390 CHIR=CUT*CUTR**RLU(0)
430 CHI(JT)=(CHIR**2-CUT**2)/(2.*CHIR)
431 IF((1.-CHI(JT))**CHIK.LT.RLU(0)) GOTO 390
434 CUTA=CUT**(1.-PARP(98))
435 CUTB=(1.+CUT)**(1.-PARP(98))
436 400 CHI(JT)=(CUTA+RLU(0)*(CUTB-CUTA))**(1./(1.-PARP(98)))
437 IF(((CHI(JT)+CUT)**2/(2.*(CHI(JT)**2+CUT**2)))**
438 & (0.5*PARP(98))*(1.-CHI(JT))**CHIK.LT.RLU(0)) GOTO 400
441 C...Relative distribution of energy for particle into jet plus particle.
443 IF(MSTP(94).LE.1) THEN
444 IF(IMB.EQ.1) CHI(JT)=RLU(0)
445 IF(IMB.EQ.2) CHI(JT)=1.-SQRT(RLU(0))
446 IF(MOD(KFLCH(JT)/1000,10).NE.0) CHI(JT)=1.-CHI(JT)
447 ELSEIF(MSTP(94).EQ.2) THEN
448 CHI(JT)=1.-RLU(0)**(1./(1.+PARP(93+2*IMB)))
449 IF(MOD(KFLCH(JT)/1000,10).NE.0) CHI(JT)=1.-CHI(JT)
450 ELSEIF(MSTP(94).EQ.3) THEN
451 CALL LUZDIS(1,0,PMS(JT+4),ZZ)
454 CALL LUZDIS(1000,0,PMS(JT+4),ZZ)
459 C...Construct total transverse mass; reject if too large.
460 PMS(JT)=PMS(JT+4)/CHI(JT)+PMS(JT+2)/(1.-CHI(JT))
461 IF(PMS(JT).GT.PSYS(JT,4)**2) THEN
470 PSYS(JT,3)=SQRT(MAX(0.,PSYS(JT,4)**2-PMS(JT)))*(-1)**(JT-1)
473 C...Subdivide longitudinal momentum according to value selected above.
474 PW1=CHI(JT)*(PSYS(JT,4)+ABS(PSYS(JT,3)))
475 P(IS(JT)+1,4)=0.5*(PW1+PMS(JT+4)/PW1)
476 P(IS(JT)+1,3)=0.5*(PW1-PMS(JT+4)/PW1)*(-1)**(JT-1)
477 P(IS(JT),4)=PSYS(JT,4)-P(IS(JT)+1,4)
478 P(IS(JT),3)=PSYS(JT,3)-P(IS(JT)+1,3)
483 C...Check if longitudinal boosts needed - if so pick two systems.
484 PDEV=ABS(PSYS(0,4)+PSYS(1,4)+PSYS(2,4)-VINT(1))+
485 &ABS(PSYS(0,3)+PSYS(1,3)+PSYS(2,3))
486 IF(PDEV.LE.1E-6*VINT(1)) RETURN
490 ELSEIF(ISN(2).EQ.0) THEN
493 ELSEIF(VINT(143).GT.0.2.AND.VINT(144).GT.0.2) THEN
496 ELSEIF(VINT(143).GT.0.2) THEN
499 ELSEIF(VINT(144).GT.0.2) THEN
502 ELSEIF(PMS(1)/PSYS(1,4)**2.GT.PMS(2)/PSYS(2,4)**2) THEN
511 C...E+-pL wanted for system to be modified.
512 IF((IG.EQ.1.AND.ISN(1).EQ.0).OR.(IG.EQ.2.AND.ISN(2).EQ.0)) THEN
516 PPB=VINT(1)-(PSYS(IG,4)+PSYS(IG,3))
517 PNB=VINT(1)-(PSYS(IG,4)-PSYS(IG,3))
520 C...To keep x and Q2 in leptoproduction: do not count scattered lepton.
521 IF(IDISXQ.EQ.1.AND.IG.NE.0) THEN
525 SQLAM=SQRT(MAX(0.,(PMTB-PMTR-PMTL)**2-4.*PMTR*PMTL))
526 SQSGN=SIGN(1.,PSYS(IR,3)*PSYS(IL,4)-PSYS(IL,3)*PSYS(IR,4))
527 RKR=(PMTB+PMTR-PMTL+SQLAM*SQSGN)/(2.*(PSYS(IR,4)+PSYS(IR,3))
529 RKL=(PMTB+PMTL-PMTR+SQLAM*SQSGN)/(2.*(PSYS(IL,4)-PSYS(IL,3))
531 BER=(RKR**2-1.)/(RKR**2+1.)
532 BEL=-(RKL**2-1.)/(RKL**2+1.)
533 PPB=PPB-(PSYS(0,4)+PSYS(0,3))
534 PNB=PNB-(PSYS(0,4)-PSYS(0,3))
538 DO 450 I=MINT(84)+1,NS
539 IF(K(I,1).GT.10) GOTO 450
542 430 IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
544 IF(IORIG.GT.LPIN) GOTO 430
545 IF(INCL.EQ.0) GOTO 450
547 PSYS(0,J)=PSYS(0,J)+P(I,J)
550 PMS(0)=MAX(0.,PSYS(0,4)**2-PSYS(0,3)**2)
551 PPB=PPB+(PSYS(0,4)+PSYS(0,3))
552 PNB=PNB+(PSYS(0,4)-PSYS(0,3))
555 C...Construct longitudinal boosts.
559 DSQLAM=SQRT(MAX(0D0,(DPMTB-DPMTR-DPMTL)**2-4D0*DPMTR*DPMTL))
560 IF(DSQLAM.LE.1D-6*DPMTB) THEN
565 DSQSGN=SIGN(1D0,DBLE(PSYS(IR,3)*PSYS(IL,4)-PSYS(IL,3)*PSYS(IR,4)))
566 DRKR=(DPMTB+DPMTR-DPMTL+DSQLAM*DSQSGN)/
567 &(2.*(PSYS(IR,4)+PSYS(IR,3))*PNB)
568 DRKL=(DPMTB+DPMTL-DPMTR+DSQLAM*DSQSGN)/
569 &(2.*(PSYS(IL,4)-PSYS(IL,3))*PPB)
570 DBER=(DRKR**2-1D0)/(DRKR**2+1D0)
571 DBEL=-(DRKL**2-1D0)/(DRKL**2+1D0)
573 C...Perform longitudinal boosts.
574 IF(IR.EQ.1.AND.ISN(1).EQ.1.AND.DBER.LE.-0.99999999D0) THEN
576 P(IS(1),4)=SQRT(P(IS(1),5)**2+P(IS(1),1)**2+P(IS(1),2)**2)
578 CALL LUDBRB(IS(1),IS(1)+ISN(1)-1,0.,0.,0D0,0D0,DBER)
579 ELSEIF(IDISXQ.EQ.1) THEN
583 460 IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
585 IF(IORIG.GT.LPIN) GOTO 460
586 IF(INCL.EQ.1) CALL LUDBRB(I,I,0.,0.,0D0,0D0,DBER)
589 CALL LUDBRB(I1,NS,0.,0.,0D0,0D0,DBER)
591 IF(IL.EQ.2.AND.ISN(2).EQ.1.AND.DBEL.GE.0.99999999D0) THEN
593 P(IS(2),4)=SQRT(P(IS(2),5)**2+P(IS(2),1)**2+P(IS(2),2)**2)
595 CALL LUDBRB(IS(2),IS(2)+ISN(2)-1,0.,0.,0D0,0D0,DBEL)
596 ELSEIF(IDISXQ.EQ.1) THEN
600 480 IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
602 IF(IORIG.GT.LPIN) GOTO 480
603 IF(INCL.EQ.1) CALL LUDBRB(I,I,0.,0.,0D0,0D0,DBEL)
606 CALL LUDBRB(I1,NS,0.,0.,0D0,0D0,DBEL)
609 C...Final check that energy-momentum conservation worked.
612 DO 500 I=MINT(84)+1,N
613 IF(K(I,1).GT.10) GOTO 500
617 PDEV=ABS(PESUM-VINT(1))+ABS(PZSUM)
618 IF(PDEV.GT.1E-4*VINT(1)) THEN
624 C...Calculate rotation and boost from overall CM frame to
625 C...hadronic CM frame in leptoproduction.
627 IF(MINT(82).EQ.1.AND.(MINT(43).EQ.2.OR.MINT(43).EQ.3)) THEN
630 IF(MINT(42).EQ.1) LESD=2
633 C...Sum upp momenta of everything not lepton or photon to define boost.
638 IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 530
639 IF(IABS(K(I,2)).GE.11.AND.IABS(K(I,2)).LE.20) GOTO 530
640 IF(K(I,2).EQ.22) GOTO 530
642 PSUM(J)=PSUM(J)+P(I,J)
645 VINT(223)=-PSUM(1)/PSUM(4)
646 VINT(224)=-PSUM(2)/PSUM(4)
647 VINT(225)=-PSUM(3)/PSUM(4)
649 C...Boost incoming hadron to hadronic CM frame to determine rotations.
655 CALL LUDBRB(N+1,N+1,0.,0.,DBLE(VINT(223)),DBLE(VINT(224)),
657 VINT(222)=-ULANGL(P(N+1,1),P(N+1,2))
658 CALL LUDBRB(N+1,N+1,0.,VINT(222),0D0,0D0,0D0)
660 VINT(221)=-ULANGL(P(N+1,3),P(N+1,1))
662 VINT(221)=ULANGL(-P(N+1,3),P(N+1,1))