]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HERWIG/src/hwures.f
Coding rule violations corrected.
[u/mrichter/AliRoot.git] / HERWIG / src / hwures.f
CommitLineData
3820ca8e 1
2CDECK ID>, HWURES.
3
4*CMZ :- -26/04/91 11.11.56 by Bryan Webber
5
6*-- Author : Ian Knowles & Bryan Webber
7
8C-----------------------------------------------------------------------
9
10 SUBROUTINE HWURES
11
12C-----------------------------------------------------------------------
13
14C Using properties of particle I supplied in HWUDAT checks particles
15
16C and antiparticles have compatible properties and sets SWTEF(I) =
17
18C ( rep. enhancement factor)^2 - used in cluster decays
19
20C Finds iso-flavour hadrons and creates pointers for cluster decays.
21
22C Sets CLDKWT(K) =(2J+1) spin weight normalizing largest value to 1.
23
24C-----------------------------------------------------------------------
25
26 INCLUDE 'HERWIG61.INC'
27
28 INTEGER NMXTMP
29
30 PARAMETER (NMXTMP=20)
31
32 DOUBLE PRECISION EPS,WTMX,REMMN,RWTMX,WTMP,RESTMP(91),WTMX2,
33
34 & REMMN2,WT,CDWTMP(NMXTMP)
35
36 INTEGER HWUANT,MAPF(89),MAPC(12,12),I,IANT,IABPDG,J,L,N,K,LTMP,
37
38 & NCDKS,IMN,ITMP,LOCTMP(91),NTMP,NCDTMP(NMXTMP),IMN2
39
40 EXTERNAL HWUANT
41
42 PARAMETER (EPS=1.D-6)
43
44 DATA MAPF/21,31,41,51,61,12,32,42,52,62,13,23,43,53,63,14,24,34,
45
46 & 44,54,64,15,25,35,45,55,65,16,26,36,46,56,66,111,112,113,122,123,
47
48 & 133,222,223,233,333,-111,-112,-113,-122,-123,-133,-222,-223,-233,
49
50 & -333,114,124,134,224,234,334,-114,-124,-134,-224,-234,-334,115,
51
52 & 125,135,225,235,335,-115,-125,-135,-225,-235,-335,116,126,136,
53
54 & 226,236,336,-116,-126,-136,-226,-236,-336/
55
56 DATA MAPC/90,1,2,47,45,44,48,46,49,3,4,5,6,90,7,50,47,45,51,48,52,
57
58 & 8,9,10,11,12,91,51,48,46,52,49,53,13,14,15,37,40,41,6*0,57,69,81,
59
60 & 35,37,38,6*0,55,67,79,34,35,36,6*0,54,66,78,38,41,42,6*0,58,70,
61
62 & 82,36,38,39,6*0,56,68,80,39,42,43,6*0,59,71,83,16,17,18,63,61,60,
63
64 & 64,62,65,19,20,21,22,23,24,75,73,72,76,74,77,25,26,27,28,29,30,
65
66 & 87,85,84,88,86,89,31,32,33/
67
68C Check particle/anti-particle properties are compatible
69
70 WRITE(6,10)
71
72 10 FORMAT(/10X,'Checking consistency of particle properties'/)
73
74 DO 20 I=10,NRES
75
76 IF (IDPDG(I).GT.0) THEN
77
78 IANT=HWUANT(I)
79
80 IF (IANT.EQ.20) GOTO 20
81
82 IF (MOD(IDPDG(I)/1000,10).EQ.0.AND.
83
84 & MOD(IDPDG(I)/100 ,10).NE.0) THEN
85
86 IF (MOD(IFLAV(I)/10-IFLAV(IANT),10).NE.0.OR.
87
88 & MOD(IFLAV(I)-IFLAV(IANT)/10,10).NE.0)
89
90 & WRITE(6,30) RNAME(I),IFLAV(I),IFLAV(IANT)
91
92 ELSE
93
94 IF (IFLAV(I)+IFLAV(IANT).NE.0)
95
96 & WRITE(6,30) RNAME(I),IFLAV(I),IFLAV(IANT)
97
98 ENDIF
99
100 IF (ICHRG(I)+ICHRG(IANT).NE.0)
101
102 & WRITE(6,40) RNAME(I),RNAME(IANT),ICHRG(I),ICHRG(IANT)
103
104 IF (ABS(RMASS(I)-RMASS(IANT)).GT.EPS)
105
106 & WRITE(6,50) RNAME(I),RMASS(I),RMASS(IANT)
107
108 IF (ABS(RLTIM(I)-RLTIM(IANT)).GT.EPS)
109
110 & WRITE(6,60) RNAME(I),RLTIM(I),RLTIM(IANT)
111
112 IF (ABS(RSPIN(I)-RSPIN(IANT)).GT.EPS)
113
114 & WRITE(6,70) RNAME(I),RSPIN(I),RSPIN(IANT)
115
116 ENDIF
117
118 20 CONTINUE
119
120 30 FORMAT(10X,A8,' flavour code=',I4,5X,' antiparticle=',I4)
121
122 40 FORMAT(10X,2A8,' charge =',I2,7X,' antiparticle=',I2)
123
124 50 FORMAT(10X,A8,' mass =',F7.3,2X,' antiparticle=',F7.3)
125
126 60 FORMAT(10X,A8,' life time =',E9.3,' antiparticle=',E9.3)
127
128 70 FORMAT(10X,A8,' spin =',F3.1,6X,' antiparticle=',F3.1)
129
130C Compute resonance properties
131
132 DO 80 I=21,NRES
133
134C Compute representation weights for hadrons, used in cluster decays
135
136 IABPDG=ABS(IDPDG(I))
137
138 J=MOD(IABPDG,10)
139
140 IF (J.EQ.2.AND.MOD(IABPDG/100,10).LT.MOD(IABPDG/10,10)) THEN
141
142C Singlet (Lambda-like) baryon
143
144 SWTEF(I)=SNGWT**2
145
146 ELSEIF (J.EQ.4) THEN
147
148C Decuplet baryon
149
150 SWTEF(I)=DECWT**2
151
152 ELSEIF(2*(J/2).NE.J) THEN
153
154C Mesons: identify by spin, angular momentum & radial excitation
155
156 J=(J-1)/2
157
158 L= MOD(IABPDG/10000 ,10)
159
160 N= MOD(IABPDG/100000,10)
161
162 IF (L.EQ.0.AND.J.EQ.0.AND.N.EQ.0.OR.
163
164 & L.GT.3.OR. J.GT.4.OR .N.GT.4) THEN
165
166 SWTEF(I)=1.
167
168 ELSE
169
170 SWTEF(I)=REPWT(L,J,N)**2
171
172 ENDIF
173
174 ELSE
175
176C Not recognized
177
178 SWTEF(I)=1.
179
180 ENDIF
181
182 80 CONTINUE
183
184C Prepare tables for cluster decays, except flavourless light mesons
185
186 LTMP=1
187
188 NCDKS=0
189
190 DO 120 I=1,89
191
192C Store particles, flavour MAPF(I), noting highest spin and lowest mass
193
194 WTMX=0.
195
196 REMMN=1000.
197
198 DO 90 J=21,NRES
199
200 IF (VTOCDK(J).OR.IFLAV(J).NE.MAPF(I)) GOTO 90
201
202 NCDKS=NCDKS+1
203
204 IF (NCDKS.GT.NMXCDK) CALL HWWARN('HWURES',101,*999)
205
206 NCLDK(NCDKS)=J
207
208 CLDKWT(NCDKS)=TWO*RSPIN(J)+ONE
209
210 IF (CLDKWT(NCDKS).GT.WTMX) WTMX=CLDKWT(NCDKS)
211
212 IF (RMASS(J).LT.REMMN) THEN
213
214 REMMN=RMASS(J)
215
216 IMN=NCDKS
217
218 ENDIF
219
220 90 CONTINUE
221
222 IF (NCDKS+1-LTMP.EQ.0) THEN
223
224 WRITE(6,100) MAPF(I)
225
226 100 FORMAT(1X,'No particles exist for a cluster with flavour, ',I4,
227
228 & ' to decay into')
229
230 CALL HWWARN('HWURES',51,*120)
231
232 ENDIF
233
234C Set scaled spin weights
235
236 RWTMX=1./WTMX
237
238 DO 110 J=LTMP,NCDKS
239
240 110 CLDKWT(J)=CLDKWT(J)*RWTMX
241
242C Swap order if lightest hadron of given flavour not first
243
244 IF (IMN.NE.LTMP) THEN
245
246 ITMP=NCLDK(LTMP)
247
248 WTMP=CLDKWT(LTMP)
249
250 NCLDK(LTMP)=NCLDK(IMN)
251
252 CLDKWT(LTMP)=CLDKWT(IMN)
253
254 NCLDK(IMN)=ITMP
255
256 CLDKWT(IMN)=WTMP
257
258 ENDIF
259
260C Set pointers etc
261
262 LOCTMP(I)=LTMP
263
264 RESTMP(I)=FLOAT(NCDKS+1-LTMP)
265
266 LTMP=NCDKS+1
267
268 120 CONTINUE
269
270C Now do flavourless light mesons, allowing for mixing in weights
271
272 WTMX=0.
273
274 REMMN=1000.
275
276 WTMX2=0.
277
278 REMMN2=1000.
279
280 NTMP=0
281
282 DO 140 J=21,NRES
283
284 IF (VTOCDK(J)) THEN
285
286 GOTO 140
287
288C Calculate mixing weight for (|uubar>+|ddbar>)/sqrt(2) component
289
290 ELSEIF (IFLAV(J).EQ.11) THEN
291
292 WT=1.
293
294 ELSEIF (IFLAV(J).EQ.33) THEN
295
296C eta - eta'
297
298 IF (J.EQ.22 ) THEN
299
300 WT=COS(ETAMIX*PIFAC/180.+ATAN(SQRT(TWO)))**2
301
302 ELSEIF (J.EQ.25 ) THEN
303
304 WT=SIN(ETAMIX*PIFAC/180.+ATAN(SQRT(TWO)))**2
305
306C phi - omega
307
308 ELSEIF (J.EQ.56 ) THEN
309
310 WT=COS(PHIMIX*PIFAC/180.+ATAN(SQRT(TWO)))**2
311
312 ELSEIF (J.EQ.24 ) THEN
313
314 WT=SIN(PHIMIX*PIFAC/180.+ATAN(SQRT(TWO)))**2
315
316C f'_2 - f_2
317
318 ELSEIF (J.EQ.58 ) THEN
319
320 WT=COS(F2MIX *PIFAC/180.+ATAN(SQRT(TWO)))**2
321
322 ELSEIF (J.EQ.26 ) THEN
323
324 WT=SIN(F2MIX *PIFAC/180.+ATAN(SQRT(TWO)))**2
325
326C f_1(1420) - f_1(1285)
327
328 ELSEIF (J.EQ.57 ) THEN
329
330 WT=COS(F1MIX *PIFAC/180.+ATAN(SQRT(TWO)))**2
331
332 ELSEIF (J.EQ.28 ) THEN
333
334 WT=SIN(F1MIX *PIFAC/180.+ATAN(SQRT(TWO)))**2
335
336C h_1(1380) - h_1(1170)
337
338 ELSEIF (J.EQ.289) THEN
339
340 WT=COS(H1MIX *PIFAC/180.+ATAN(SQRT(TWO)))**2
341
342 ELSEIF (J.EQ.288) THEN
343
344 WT=SIN(H1MIX *PIFAC/180.+ATAN(SQRT(TWO)))**2
345
346C MISSING - f_0(1370)
347
348 ELSEIF (J.EQ.294) THEN
349
350 WT=SIN(F0MIX *PIFAC/180.+ATAN(SQRT(TWO)))**2
351
352C phi_3 - omega_3
353
354 ELSEIF (J.EQ.396) THEN
355
356 WT=COS(PH3MIX*PIFAC/180.+ATAN(SQRT(TWO)))**2
357
358 ELSEIF (J.EQ.395) THEN
359
360 WT=SIN(PH3MIX*PIFAC/180.+ATAN(SQRT(TWO)))**2
361
362C eta_2(1645) - eta_2(1870)
363
364 ELSEIF (J.EQ.397) THEN
365
366 WT=COS(ET2MIX*PIFAC/180.+ATAN(SQRT(TWO)))**2
367
368 ELSEIF (J.EQ.398) THEN
369
370 WT=SIN(ET2MIX*PIFAC/180.+ATAN(SQRT(TWO)))**2
371
372C MISSING - omega(1600)
373
374 ELSEIF (J.EQ.399) THEN
375
376 WT=SIN(OMHMIX*PIFAC/180.+ATAN(SQRT(TWO)))**2
377
378 ELSE
379
380 WT=1./3.
381
382 WRITE(6,130) J
383
384 130 FORMAT(1X,'Isoscalar particle ',I3,' not recognised,',
385
386 & ' no I=0 mixing assumed')
387
388 ENDIF
389
390 ELSE
391
392 GOTO 140
393
394 ENDIF
395
396 IF (WT.GT.EPS) THEN
397
398 NCDKS=NCDKS+1
399
400 IF (NCDKS.GT.NMXCDK) CALL HWWARN('HWURES',102,*999)
401
402 NCLDK(NCDKS)=J
403
404 CLDKWT(NCDKS)=WT*(TWO*RSPIN(J)+ONE)
405
406 IF (CLDKWT(NCDKS).GT.WTMX) WTMX=CLDKWT(NCDKS)
407
408 IF (RMASS(J).LT.REMMN) THEN
409
410 REMMN=RMASS(J)
411
412 IMN=NCDKS
413
414 ENDIF
415
416 ENDIF
417
418 IF (ONE-WT.GT.EPS) THEN
419
420 NTMP=NTMP+1
421
422 IF (NTMP.GT.NMXTMP) CALL HWWARN('HWURES',103,*999)
423
424 NCDTMP(NTMP)=J
425
426 CDWTMP(NTMP)=(ONE-WT)*(TWO*RSPIN(J)+ONE)
427
428 IF (CDWTMP(NTMP).GT.WTMX2) WTMX2=CDWTMP(NTMP)
429
430 IF (RMASS(J).LT.REMMN2) THEN
431
432 REMMN2=RMASS(J)
433
434 IMN2=NTMP
435
436 ENDIF
437
438 ENDIF
439
440 140 CONTINUE
441
442 IF (NCDKS+1-LTMP.EQ.0) THEN
443
444 WRITE(6,100) 11
445
446 CALL HWWARN('HWURES',52,*160)
447
448 ENDIF
449
450C Normalize scaled spin weights
451
452 RWTMX=1./WTMX
453
454 DO 150 I=LTMP,NCDKS
455
456 150 CLDKWT(I)=CLDKWT(I)*RWTMX
457
458C Swap order if lightest hadron of flavour 11 not first
459
460 IF (IMN.NE.LTMP) THEN
461
462 ITMP=NCLDK(LTMP)
463
464 WTMP=CLDKWT(LTMP)
465
466 NCLDK(LTMP)=NCLDK(IMN)
467
468 CLDKWT(LTMP)=CLDKWT(IMN)
469
470 NCLDK(IMN)=ITMP
471
472 CLDKWT(IMN)=WTMP
473
474 ENDIF
475
476 160 IF (NTMP.EQ.0) THEN
477
478 WRITE(6,100) 33
479
480 CALL HWWARN('HWURES',53,*180)
481
482 ENDIF
483
484 IF (NCDKS+NTMP.GT.NMXCDK) CALL HWWARN('HWURES',104,*999)
485
486C Store hadrons for |ssbar> channel and normalize their weights
487
488 RWTMX=1./WTMX2
489
490 DO 170 I=1,NTMP
491
492 J=NCDKS+I
493
494 NCLDK(J)=NCDTMP(I)
495
496 170 CLDKWT(J)=CDWTMP(I)*RWTMX
497
498C Swap order if lightest hadron of flavour 33 not first
499
500 IF (IMN2.NE.1) THEN
501
502 ITMP=NCLDK(NCDKS+1)
503
504 WTMP=CLDKWT(NCDKS+1)
505
506 NCLDK(NCDKS+1)=NCLDK(NCDKS+IMN2)
507
508 CLDKWT(NCDKS+1)=CLDKWT(NCDKS+IMN2)
509
510 NCLDK(NCDKS+IMN2)=ITMP
511
512 CLDKWT(NCDKS+IMN2)=WTMP
513
514 ENDIF
515
516C Set pointers etc
517
518 180 LOCTMP(90)=LTMP
519
520 RESTMP(90)=FLOAT(NCDKS+1-LTMP)
521
522 LOCTMP(91)=NCDKS+1
523
524 RESTMP(91)=FLOAT(NTMP)
525
526C Set pointers to hadrons of given flavours for cluster decays
527
528 DO 190 I=1,12
529
530 DO 190 J=1,12
531
532 K=MAPC(I,J)
533
534 IF (K.EQ.0) THEN
535
536 RMIN(I,J)=RMASS(NCLDK(LOCN(I,2)))+RMASS(NCLDK(LOCN(I,2)))+1.D-2
537
538 ELSE
539
540 LOCN(I,J)=LOCTMP(K)
541
542 RESN(I,J)=RESTMP(K)
543
544 RMIN(I,J)=RMASS(NCLDK(LOCN(I,J)))
545
546 ENDIF
547
548 190 CONTINUE
549
550 999 END
551
552CDECK ID>, HWUROB.
553
554*CMZ :- -26/04/91 11.11.56 by Bryan Webber
555
556*-- Author : Bryan Webber
557
558C-----------------------------------------------------------------------
559
560 SUBROUTINE HWUROB(R,P,Q)
561
562C-----------------------------------------------------------------------
563
564C ROTATES VECTORS BY INVERSE OF ROTATION MATRIX R
565
566C-----------------------------------------------------------------------
567
568 DOUBLE PRECISION S1,S2,S3,R(3,3),P(3),Q(3)
569
570 S1=P(1)*R(1,1)+P(2)*R(2,1)+P(3)*R(3,1)
571
572 S2=P(1)*R(1,2)+P(2)*R(2,2)+P(3)*R(3,2)
573
574 S3=P(1)*R(1,3)+P(2)*R(2,3)+P(3)*R(3,3)
575
576 Q(1)=S1
577
578 Q(2)=S2
579
580 Q(3)=S3
581
582 END