2 C*********************************************************************
4 SUBROUTINE PYINBM(CHFRAM,CHBEAM,CHTARG,WIN)
6 C...Identifies the two incoming particles and the choice of 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/
15 CHARACTER CHFRAM*8,CHBEAM*8,CHTARG*8,CHCOM(3)*8,CHALP(2)*26,
16 &CHIDNT(3)*8,CHTEMP*8,CHCDE(29)*8,CHINIT*76
17 DIMENSION LEN(3),KCDE(29),PM(2)
18 DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
19 &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
20 DATA CHCDE/'e- ','e+ ','nu_e ','nu_e~ ',
21 &'mu- ','mu+ ','nu_mu ','nu_mu~ ','tau- ',
22 &'tau+ ','nu_tau ','nu_tau~ ','pi+ ','pi- ',
23 &'n0 ','n~0 ','p+ ','p~- ','gamma ',
24 &'lambda0 ','sigma- ','sigma0 ','sigma+ ','xi- ',
25 &'xi0 ','omega- ','pi0 ','reggeon ','pomeron '/
26 DATA KCDE/11,-11,12,-12,13,-13,14,-14,15,-15,16,-16,
27 &211,-211,2112,-2112,2212,-2212,22,3122,3112,3212,3222,
28 &3312,3322,3334,111,28,29/
30 C...Store initial energy. Default frame.
34 C...Convert character variables to lowercase and find their length.
41 IF(LEN(I).EQ.LL.AND.CHCOM(I)(LL:LL).EQ.' ') LEN(I)=LL-1
43 IF(CHCOM(I)(LL:LL).EQ.CHALP(2)(LA:LA)) CHCOM(I)(LL:LL)=
49 C...Fix up bar, underscore and charge in particle name (if needed).
51 IF(CHIDNT(I)(LL:LL+2).EQ.'bar') THEN
53 CHIDNT(I)=CHTEMP(1:LL-1)//'~'//CHTEMP(LL+3:8)//' '
56 IF(CHIDNT(I)(1:2).EQ.'nu'.AND.CHIDNT(I)(3:3).NE.'_') THEN
58 CHIDNT(I)='nu_'//CHTEMP(3:7)
59 ELSEIF(CHIDNT(I)(1:2).EQ.'n ') THEN
61 ELSEIF(CHIDNT(I)(1:2).EQ.'n~') THEN
63 ELSEIF(CHIDNT(I)(1:2).EQ.'p ') THEN
65 ELSEIF(CHIDNT(I)(1:2).EQ.'p~'.OR.CHIDNT(I)(1:2).EQ.'p-') THEN
67 ELSEIF(CHIDNT(I)(1:6).EQ.'lambda') THEN
69 ELSEIF(CHIDNT(I)(1:3).EQ.'reg') THEN
70 CHIDNT(I)(1:7)='reggeon'
71 ELSEIF(CHIDNT(I)(1:3).EQ.'pom') THEN
72 CHIDNT(I)(1:7)='pomeron'
76 C...Identify free initialization.
77 IF(CHCOM(1)(1:2).EQ.'no') THEN
82 C...Identify incoming beam and target particles.
85 IF(CHIDNT(I+1).EQ.CHCDE(J)) MINT(10+I)=KCDE(J)
87 PM(I)=ULMASS(MINT(10+I))
90 IF(MINT(11).EQ.0) WRITE(MSTU(11),5000) CHBEAM(1:LEN(2))
91 IF(MINT(12).EQ.0) WRITE(MSTU(11),5100) CHTARG(1:LEN(3))
92 IF(MINT(11).EQ.0.OR.MINT(12).EQ.0) STOP
94 C...Identify choice of frame and input energies.
97 C...Events defined in the CM frame.
98 IF(CHCOM(1)(1:2).EQ.'cm') THEN
101 IF(MSTP(122).GE.1) THEN
102 IF(CHCOM(2)(1:1).NE.'e') THEN
103 LOFFS=(31-(LEN(2)+LEN(3)))/2
104 CHINIT(LOFFS+1:76)='PYTHIA will be initialized for a '//
105 & CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
108 LOFFS=(30-(LEN(2)+LEN(3)))/2
109 CHINIT(LOFFS+1:76)='PYTHIA will be initialized for an '//
110 & CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
113 WRITE(MSTU(11),5200) CHINIT
114 WRITE(MSTU(11),5300) WIN
117 C...Events defined in fixed target frame.
118 ELSEIF(CHCOM(1)(1:3).EQ.'fix') THEN
120 S=PM(1)**2+PM(2)**2+2.*PM(2)*SQRT(PM(1)**2+WIN**2)
121 IF(MSTP(122).GE.1) THEN
122 LOFFS=(29-(LEN(2)+LEN(3)))/2
123 CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
124 & CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
125 & ' fixed target'//' '
126 WRITE(MSTU(11),5200) CHINIT
127 WRITE(MSTU(11),5400) WIN
128 WRITE(MSTU(11),5500) SQRT(S)
131 C...Frame defined by user three-vectors.
132 ELSEIF(CHCOM(1)(1:3).EQ.'use') THEN
136 P(1,4)=SQRT(P(1,1)**2+P(1,2)**2+P(1,3)**2+P(1,5)**2)
137 P(2,4)=SQRT(P(2,1)**2+P(2,2)**2+P(2,3)**2+P(2,5)**2)
138 S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
140 IF(MSTP(122).GE.1) THEN
141 LOFFS=(12-(LEN(2)+LEN(3)))/2
142 CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
143 & CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
144 & ' user-specified configuration'//' '
145 WRITE(MSTU(11),5200) CHINIT
147 WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
148 WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
149 WRITE(MSTU(11),5500) SQRT(MAX(0.,S))
152 C...Frame defined by user four-vectors.
153 ELSEIF(CHCOM(1)(1:4).EQ.'four') THEN
155 PMS1=P(1,4)**2-P(1,1)**2-P(1,2)**2-P(1,3)**2
156 P(1,5)=SIGN(SQRT(ABS(PMS1)),PMS1)
157 PMS2=P(2,4)**2-P(2,1)**2-P(2,2)**2-P(2,3)**2
158 P(2,5)=SIGN(SQRT(ABS(PMS2)),PMS2)
159 S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
161 IF(MSTP(122).GE.1) THEN
162 LOFFS=(12-(LEN(2)+LEN(3)))/2
163 CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
164 & CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
165 & ' user-specified configuration'//' '
166 WRITE(MSTU(11),5200) CHINIT
168 WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
169 WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
170 WRITE(MSTU(11),5500) SQRT(MAX(0.,S))
173 C...Frame defined by user five-vectors.
174 ELSEIF(CHCOM(1)(1:4).EQ.'five') THEN
176 S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
178 IF(MSTP(122).GE.1) THEN
179 LOFFS=(12-(LEN(2)+LEN(3)))/2
180 CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
181 & CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
182 & ' user-specified configuration'//' '
183 WRITE(MSTU(11),5200) CHINIT
185 WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
186 WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
187 WRITE(MSTU(11),5500) SQRT(MAX(0.,S))
190 C...Unknown frame. Error for too low CM energy.
192 WRITE(MSTU(11),5800) CHFRAM(1:LEN(1))
195 IF(S.LT.PARP(2)**2) THEN
196 WRITE(MSTU(11),5900) SQRT(S)
200 C...Formats for initialization and error information.
201 5000 FORMAT(1X,'Error: unrecognized beam particle ''',A,'''.'/
202 &1X,'Execution stopped!')
203 5100 FORMAT(1X,'Error: unrecognized target particle ''',A,'''.'/
204 &1X,'Execution stopped!')
205 5200 FORMAT(/1X,78('=')/1X,'I',76X,'I'/1X,'I',A76,'I')
206 5300 FORMAT(1X,'I',18X,'at',1X,F10.3,1X,'GeV center-of-mass energy',
207 &19X,'I'/1X,'I',76X,'I'/1X,78('='))
208 5400 FORMAT(1X,'I',22X,'at',1X,F10.3,1X,'GeV/c lab-momentum',22X,'I')
209 5500 FORMAT(1X,'I',76X,'I'/1X,'I',11X,'corresponding to',1X,F10.3,1X,
210 &'GeV center-of-mass energy',12X,'I'/1X,'I',76X,'I'/1X,78('='))
211 5600 FORMAT(1X,'I',76X,'I'/1X,'I',18X,'px (GeV/c)',3X,'py (GeV/c)',3X,
212 &'pz (GeV/c)',6X,'E (GeV)',9X,'I')
213 5700 FORMAT(1X,'I',8X,A8,4(2X,F10.3,1X),8X,'I')
214 5800 FORMAT(1X,'Error: unrecognized coordinate frame ''',A,'''.'/
215 &1X,'Execution stopped!')
216 5900 FORMAT(1X,'Error: too low CM energy,',F8.3,' GeV for event ',
217 &'generation.'/1X,'Execution stopped!')