3 C*********************************************************************
5 SUBROUTINE PYINKI_HIJING(CHFRAM,CHBEAM,CHTARG,WIN)
7 C...Identifies the two incoming particles and sets up kinematics,
8 C...including rotations and boosts to/from CM frame.
9 #include "lujets_hijing.inc"
10 #include "ludat1_hijing.inc"
11 #include "pysubs_hijing.inc"
12 #include "pypars_hijing.inc"
13 #include "pyint1_hijing.inc"
14 CHARACTER CHFRAM*8,CHBEAM*8,CHTARG*8,CHCOM(3)*8,CHALP(2)*26,
15 &CHIDNT(3)*8,CHTEMP*8,CHCDE(18)*8,CHINIT*76
16 DIMENSION LEN(3),KCDE(18)
17 DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
18 &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
19 DATA CHCDE/'e- ','e+ ','nue ','nue~ ',
20 &'mu- ','mu+ ','numu ','numu~ ','tau- ',
21 &'tau+ ','nutau ','nutau~ ','pi+ ','pi- ',
22 &'n ','n~ ','p ','p~ '/
23 DATA KCDE/11,-11,12,-12,13,-13,14,-14,15,-15,16,-16,
24 &211,-211,2112,-2112,2212,-2212/
26 C...Convert character variables to lowercase and find their length.
33 IF(LEN(I).EQ.LL.AND.CHCOM(I)(LL:LL).EQ.' ') LEN(I)=LL-1
35 100 IF(CHCOM(I)(LL:LL).EQ.CHALP(2)(LA:LA)) CHCOM(I)(LL:LL)=
39 IF(CHIDNT(I)(LL:LL+2).EQ.'bar') THEN
41 CHIDNT(I)=CHTEMP(1:LL-1)//'~'//CHTEMP(LL+3:8)//' '
45 IF(CHIDNT(I)(LL:LL).EQ.'_') THEN
47 CHIDNT(I)=CHTEMP(1:LL-1)//CHTEMP(LL+1:8)//' '
51 C...Set initial state. Error for unknown codes. Reset variables.
56 130 IF(CHIDNT(I+1).EQ.CHCDE(J)) K(I,2)=KCDE(J)
57 P(I,5)=ULMASS_HIJING(K(I,2))
59 IF(IABS(K(I,2)).GT.100) MINT(40+I)=2
62 IF(K(1,2).EQ.0) WRITE(MSTU(11),1000) CHBEAM(1:LEN(2))
63 IF(K(2,2).EQ.0) WRITE(MSTU(11),1100) CHTARG(1:LEN(3))
64 IF(K(1,2).EQ.0.OR.K(2,2).EQ.0) STOP
69 C...Set up kinematics for events defined in CM frame.
70 IF(CHCOM(1)(1:2).EQ.'cm') THEN
71 IF(CHCOM(2)(1:1).NE.'e') THEN
72 LOFFS=(34-(LEN(2)+LEN(3)))/2
73 CHINIT(LOFFS+1:76)='PYTHIA will be initialized for a '//
74 & CHCOM(2)(1:LEN(2))//'-'//CHCOM(3)(1:LEN(3))//' collider'//' '
76 LOFFS=(33-(LEN(2)+LEN(3)))/2
77 CHINIT(LOFFS+1:76)='PYTHIA will be initialized for an '//
78 & CHCOM(2)(1:LEN(2))//'-'//CHCOM(3)(1:LEN(3))//' collider'//' '
80 C WRITE(MSTU(11),1200) CHINIT
81 C WRITE(MSTU(11),1300) WIN
87 P(1,3)=SQRT(((S-P(1,5)**2-P(2,5)**2)**2-(2.*P(1,5)*P(2,5))**2)/
90 P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
91 P(2,4)=SQRT(P(2,3)**2+P(2,5)**2)
93 C...Set up kinematics for fixed target events.
94 ELSEIF(CHCOM(1)(1:3).EQ.'fix') THEN
95 LOFFS=(29-(LEN(2)+LEN(3)))/2
96 CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
97 & CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
98 & ' fixed target'//' '
99 C WRITE(MSTU(11),1200) CHINIT
100 C WRITE(MSTU(11),1400) WIN
106 P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
109 S=P(1,5)**2+P(2,5)**2+2.*P(2,4)*P(1,4)
110 VINT(10)=P(1,3)/(P(1,4)+P(2,4))
111 CALL LUROBO_HIJING(0.,0.,0.,0.,-VINT(10))
112 C WRITE(MSTU(11),1500) SQRT(S)
114 C...Set up kinematics for events in user-defined frame.
115 ELSEIF(CHCOM(1)(1:3).EQ.'use') THEN
116 LOFFS=(13-(LEN(1)+LEN(2)))/2
117 CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
118 & CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
119 & 'user-specified configuration'//' '
120 C WRITE(MSTU(11),1200) CHINIT
121 C WRITE(MSTU(11),1600)
122 C WRITE(MSTU(11),1700) CHCOM(2),P(1,1),P(1,2),P(1,3)
123 C WRITE(MSTU(11),1700) CHCOM(3),P(2,1),P(2,2),P(2,3)
124 P(1,4)=SQRT(P(1,1)**2+P(1,2)**2+P(1,3)**2+P(1,5)**2)
125 P(2,4)=SQRT(P(2,1)**2+P(2,2)**2+P(2,3)**2+P(2,5)**2)
127 160 VINT(7+J)=(DBLE(P(1,J))+DBLE(P(2,J)))/DBLE(P(1,4)+P(2,4))
128 CALL LUROBO_HIJING(0.,0.,-VINT(8),-VINT(9),-VINT(10))
129 VINT(7)=ULANGL_HIJING(P(1,1),P(1,2))
130 CALL LUROBO_HIJING(0.,-VINT(7),0.,0.,0.)
131 VINT(6)=ULANGL_HIJING(P(1,3),P(1,1))
132 CALL LUROBO_HIJING(-VINT(6),0.,0.,0.,0.)
133 S=P(1,5)**2+P(2,5)**2+2.*(P(1,4)*P(2,4)-P(1,3)*P(2,3))
134 C WRITE(MSTU(11),1500) SQRT(S)
136 C...Unknown frame. Error for too low CM energy.
138 WRITE(MSTU(11),1800) CHFRAM(1:LEN(1))
141 IF(S.LT.PARP(2)**2) THEN
142 WRITE(MSTU(11),1900) SQRT(S)
146 C...Save information on incoming particles.
149 MINT(43)=2*MINT(41)+MINT(42)-2
156 C...Store constants to be used in generation.
157 IF(MSTP(82).LE.1) VINT(149)=4.*PARP(81)**2/S
158 IF(MSTP(82).GE.2) VINT(149)=4.*PARP(82)**2/S
160 C...Formats for initialization and error information.
161 1000 FORMAT(1X,'Error: unrecognized beam particle ''',A,'''.'/
162 &1X,'Execution stopped!')
163 1100 FORMAT(1X,'Error: unrecognized target particle ''',A,'''.'/
164 &1X,'Execution stopped!')
165 1200 FORMAT(/1X,78('=')/1X,'I',76X,'I'/1X,'I',A76,'I')
166 1300 FORMAT(1X,'I',18X,'at',1X,F10.3,1X,'GeV center-of-mass energy',
167 &19X,'I'/1X,'I',76X,'I'/1X,78('='))
168 1400 FORMAT(1X,'I',22X,'at',1X,F10.3,1X,'GeV/c lab-momentum',22X,'I')
169 1500 FORMAT(1X,'I',76X,'I'/1X,'I',11X,'corresponding to',1X,F10.3,1X,
170 &'GeV center-of-mass energy',12X,'I'/1X,'I',76X,'I'/1X,78('='))
171 1600 FORMAT(1X,'I',76X,'I'/1X,'I',24X,'px (GeV/c)',3X,'py (GeV/c)',3X,
172 &'pz (GeV/c)',16X,'I')
173 1700 FORMAT(1X,'I',15X,A8,3(2X,F10.3,1X),15X,'I')
174 1800 FORMAT(1X,'Error: unrecognized coordinate frame ''',A,'''.'/
175 &1X,'Execution stopped!')
176 1900 FORMAT(1X,'Error: too low CM energy,',F8.3,' GeV for event ',
177 &'generation.'/1X,'Execution stopped!')