00001 SUBROUTINE TAUOLA(MODE,KEYPOL)
00002
00003
00004
00005
00006
00007
00008
00009
00010 INTEGER NMXHEP
00011 PARAMETER (NMXHEP=4000)
00012 REAL*8 phep, vhep
00013 INTEGER nevhep,nhep,isthep,idhep,jmohep,
00014 $ jdahep
00015 COMMON /hepevt/
00016 $ nevhep,
00017 $ nhep,
00018 $ isthep(nmxhep),
00019 $ idhep(nmxhep),
00020 $ jmohep(2,nmxhep),
00021 $ jdahep(2,nmxhep),
00022 $ phep(5,nmxhep),
00023 $ vhep(4,nmxhep)
00024
00025 LOGICAL qedrad
00026 COMMON /phoqed/
00027 $ qedrad(nmxhep)
00028
00029 SAVE hepevt,phoqed
00030
00031
00032 COMMON /TAUPOS/ NP1, NP2
00033 REAL*4 PHOI(4),PHOF(4)
00034 double precision Q1(4),Q2(4),P1(4),P2(4),P3(4),P4(4)
00035 COMMON / MOMDEC / Q1,Q2,P1,P2,P3,P4
00036
00037 COMMON /LIBRA/ JAK1,JAK2,ITDKRC,IFPHOT,IFHADM,IFHADP
00038 REAL*4 RRR(1)
00039 LOGICAL IFPSEUDO
00040 common /pseudocoup/ csc,ssc
00041 REAL*4 csc,ssc
00042 save pseudocoup
00043 COMMON / INOUT / INUT,IOUT
00044
00045
00046 DIMENSION POL1(4), POL2(4)
00047 double precision POL1x(4), POL2x(4)
00048 INTEGER ION(3)
00049 DATA POL1 /0.0,0.0,0.0,0.0/
00050 DATA POL2 /0.0,0.0,0.0,0.0/
00051 DATA PI /3.141592653589793238462643D0/
00052
00053
00054 DIMENSION IMOTHER (20)
00055 INTEGER KFHIGGS(3)
00056
00057
00058 INTEGER ISON
00059 COMMON /ISONS_TAU/ISON(2)
00060 SAVE /ISONS_TAU/
00061
00062 IF(MODE.EQ.-1) THEN
00063
00064
00065 JAK1 = 0
00066 JAK2 = 0
00067 ITDKRC=1.0
00068 IFPHOT=1.0
00069 IFHADM=1.0
00070 IFHADP=1.0
00071 POL=1.0
00072
00073 KFHIGGS(1) = 25
00074 KFHIGGS(2) = 35
00075 KFHIGGS(3) = 36
00076 KFHIGCH = 37
00077 KFZ0 = 23
00078 KFGAM = 22
00079 KFTAU = 15
00080 KFNUE = 16
00081
00082 psi=0.5*PI
00083 xmtau=1.777
00084 xmh=120
00085 betah=sqrt(1d0-4*xmtau**2/xmh**2)
00086 csc=cos(psi)*betah
00087 ssc=sin(psi)
00088
00089 IF (IFPHOT.EQ.1) CALL PHOINI
00090 CALL INIETC(JAK1,JAK2,ITDKRC,IFPHOT)
00091 CALL INIMAS
00092 CALL INIPHX(0.01d0)
00093 CALL INITDK
00094
00095 ION(1)=1
00096 ION(2)=1
00097 ION(3)=1
00098 CALL TAUPI0(-1,1,ION)
00099 CALL DEKAY(-1,POL1x)
00100 WRITE(IOUT,7001) pol,psi,ION(1),ION(2),ION(3)
00101 ELSEIF(MODE.EQ.0) THEN
00102
00103
00104
00105
00106 CALL PHYFIX(NSTOP,NSTART)
00107
00108 DO II=1,20
00109 IMOTHER(II)=0
00110 ENDDO
00111
00112 DO II=1,2
00113 ISON(II)=0
00114 ENDDO
00115
00116 NDEC = 0
00117
00118 DO I=NSTART,NHEP
00119 IF(ABS(IDHEP(I)).EQ.KFTAU.AND.ISTHEP(I).EQ.1.AND.
00120 $ (ISTHEP(I).GE.125.OR.ISTHEP(I).LT.120)) THEN
00121 IMOTH=JMOHEP(1,I)
00122 DO WHILE (ABS(IDHEP(IMOTH)).EQ.KFTAU)
00123 IMOTH=JMOHEP(1,IMOTH)
00124 ENDDO
00125 IF (ISTHEP(IMOTH).EQ.3.OR.
00126 $ (ISTHEP(IMOTH).GE.120.AND.ISTHEP(IMOTH).LE.125)) THEN
00127 DO J=NSTART,NHEP
00128 IF (IDHEP(J).EQ.IDHEP(IMOTH).AND.
00129 $ JMOHEP(1,J).EQ.IMOTH.AND.
00130 $ ISTHEP(J).EQ.2) THEN
00131 JMOTH=J
00132 GOTO 66
00133 ENDIF
00134 ENDDO
00135 ELSE
00136 JMOTH=IMOTH
00137 ENDIF
00138 66 CONTINUE
00139 DO II=1,NDEC
00140 IF(JMOTH.EQ.IMOTHER(II)) GOTO 9999
00141 ENDDO
00142
00143 NDEC=NDEC+1
00144 IMOTHER(NDEC)= JMOTH
00145 ENDIF
00146 9999 CONTINUE
00147 ENDDO
00148
00149
00150 DO II=1,NDEC
00151 IM=IMOTHER(II)
00152 NCOUNT=0
00153 NP1=0
00154 NP2=0
00155
00156
00157
00158
00159 IM0=IM
00160 IF (IDHEP(JMOHEP(1,IM0)).EQ.IDHEP(IM0)) IM0=JMOHEP(1,IM0)
00161 ISEL=-1
00162 DO I=NSTART,NHEP
00163 IF (ISTHEP(I).EQ.3.OR.
00164 $ (ISTHEP(I).GE.120.AND.ISTHEP(I).LE.125)) THEN
00165 GOTO 76
00166 ENDIF
00167 IMOTH=JMOHEP(1,I)
00168 DO WHILE (IDHEP(IMOTH).EQ.IDHEP(I).OR.ABS(IDHEP(IMOTH)).EQ.KFTAU)
00169 IMOTH=JMOHEP(1,IMOTH)
00170 ENDDO
00171 IF ((IMOTH.EQ.IM0.OR.IMOTH.EQ.IM).AND.ISEL.EQ.-1) THEN
00172 ISON(1)=I
00173 ISEL=0
00174 ELSEIF ((IMOTH.EQ.IM0.OR.IMOTH.EQ.IM).AND.ISEL.EQ.0) THEN
00175 ISON(2)=I
00176 ELSEIF ((IMOTH.NE.IM0.AND.IMOTH.NE.IM).AND.ISEL.EQ.0) THEN
00177 ISEL=1
00178 GOTO 77
00179 ENDIF
00180 76 CONTINUE
00181 ENDDO
00182 77 CONTINUE
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200 DO I=ISON(1),ISON(2)
00201 IF(IDHEP(I).EQ.-KFTAU.OR.IDHEP(I).EQ.-KFNUE) NCOUNT=NCOUNT+1
00202 IF(IDHEP(I).EQ. KFTAU.OR.IDHEP(I).EQ. KFNUE) NCOUNT=NCOUNT+1
00203 ENDDO
00204
00205
00206 666 CONTINUE
00207
00208
00209 DO I=MAX(NP1+1,ISON(1)),ISON(2)
00210
00211 IF(IDHEP(I).EQ.-KFTAU.OR.IDHEP(I).EQ.-KFNUE) NP1=I
00212 ENDDO
00213
00214 DO I=MAX(NP2+1,ISON(1)),ISON(2)
00215
00216 IF(IDHEP(I).EQ. KFTAU.OR.IDHEP(I).EQ. KFNUE) NP2=I
00217 ENDDO
00218 DO I=1,4
00219 P1(I)= PHEP(I,NP1)
00220 P2(I)= PHEP(I,NP2)
00221 Q1(I)= P1(I)+P2(I)
00222 ENDDO
00223
00224 POL1(3)= 0D0
00225 POL2(3)= 0D0
00226
00227 IF(KEYPOL.EQ.1) THEN
00228
00229 CALL RANMAR(RRR,1)
00230
00231 IF(IDHEP(IM).EQ.KFHIGGS(1).OR.IDHEP(IM).EQ.KFHIGGS(2).OR.
00232 $ IDHEP(IM).EQ.KFHIGGS(3)) THEN
00233 IF(RRR(1).LT.0.5) THEN
00234 POL1(3)= POL
00235 POL2(3)=-POL
00236 ELSE
00237 POL1(3)=-POL
00238 POL2(3)= POL
00239 ENDIF
00240 ELSEIF((IDHEP(IM).EQ.KFZ0).OR.(IDHEP(IM).EQ.KFGAM)) THEN
00241
00242
00243
00244
00245
00246
00247
00248 POLZ0=PLZAPX(.true.,IM,NP1,NP2)
00249 IF(RRR(1).LT.POLZ0) THEN
00250 POL1(3)= POL
00251 POL2(3)= POL
00252 ELSE
00253 POL1(3)=-POL
00254 POL2(3)=-POL
00255 ENDIF
00256 ELSEIF(IDHEP(NP1).EQ.-IDHEP(NP2))THEN
00257 POLZ0=PLZAPX(.true.,IM,NP1,NP2)
00258 IF(RRR(1).LT.POLZ0) THEN
00259 POL1(3)= POL
00260 POL2(3)= POL
00261 ELSE
00262 POL1(3)=-POL
00263 POL2(3)=-POL
00264 ENDIF
00265 ELSEIF(ABS(IDHEP(IM)).EQ.KFHIGCH) THEN
00266 POL1(3)= POL
00267 POL2(3)= POL
00268 ELSE
00269 POL1(3)= -POL
00270 POL2(3)= -POL
00271 ENDIF
00272
00273 ENDIF
00274
00275 IF(IDHEP(IM).EQ.KFHIGGS(1).OR.IDHEP(IM).EQ.KFHIGGS(2).OR.
00276 $ IDHEP(IM).EQ.KFHIGGS(3)) THEN
00277 IF(IDHEP(NP1).EQ.-KFTAU .AND.
00278 $ (JDAHEP(1,NP1).LE.NP1.OR.JDAHEP(1,NP1).GT.NHEP) .AND.
00279 $ IDHEP(NP2).EQ. KFTAU .AND.
00280 $ (JDAHEP(1,NP2).LE.NP2.OR.JDAHEP(1,NP2).GT.NHEP)
00281 $ ) THEN
00282 IF (IDHEP(IM).EQ.KFHIGGS(1)) THEN
00283 IFPSEUDO= .FALSE.
00284 ELSEIF (IDHEP(IM).EQ.KFHIGGS(2)) THEN
00285 IFPSEUDO= .FALSE.
00286 ELSEIF (IDHEP(IM).EQ.KFHIGGS(3)) THEN
00287 IFPSEUDO= .TRUE.
00288 ELSE
00289 WRITE(*,*) 'Warning from TAUOLA:'
00290 WRITE(*,*) 'I stop this run, wrong IDHEP(IM)=',IDHEP(IM)
00291 STOP
00292 ENDIF
00293 CALL SPINHIGGS(IM,NP1,NP2,IFPSEUDO,Pol1,Pol2)
00294 IF (IFPHOT.EQ.1) CALL PHOTOS(IM)
00295
00296
00297
00298 ENDIF
00299 ELSE
00300 IF(IDHEP(NP1).EQ.-KFTAU.AND.
00301 $ (JDAHEP(1,NP1).LE.NP1.OR.JDAHEP(1,NP1).GT.NHEP)) THEN
00302
00303 CALL DEXAY(1,POL1)
00304 IF (IFPHOT.EQ.1) CALL PHOTOS(NP1)
00305 CALL TAUPI0(0,1,ION)
00306 ENDIF
00307
00308 IF(IDHEP(NP2).EQ. KFTAU.AND.
00309 $ (JDAHEP(1,NP2).LE.NP2.OR.JDAHEP(1,NP2).GT.NHEP)) THEN
00310
00311 CALL DEXAY(2,POL2)
00312 IF (IFPHOT.EQ.1) CALL PHOTOS(NP2)
00313 CALL TAUPI0(0,2,ION)
00314 ENDIF
00315 ENDIF
00316 NCOUNT=NCOUNT-2
00317 IF (NCOUNT.GT.0) GOTO 666
00318 ENDDO
00319
00320 ELSEIF(MODE.EQ.1) THEN
00321
00322
00323 CALL DEXAY(100,POL1)
00324 CALL DEKAY(100,POL1x)
00325 WRITE(IOUT,7002)
00326 ENDIF
00327
00328 7001 FORMAT(///1X,15(5H*****)
00329 $ /,' *', 25X,'*****TAUOLA UNIVERSAL INTERFACE: ******',9X,1H*,
00330 $ /,' *', 25X,'*****VERSION 1.21, September 2005******',9X,1H*,
00331 $ /,' *', 25X,'**AUTHORS: P. Golonka, B. Kersevan, ***',9X,1H*,
00332 $ /,' *', 25X,'**T. Pierzchala, E. Richter-Was, ******',9X,1H*,
00333 $ /,' *', 25X,'****** Z. Was, M. Worek ***************',9X,1H*,
00334 $ /,' *', 25X,'**USEFUL DISCUSSIONS, IN PARTICULAR ***',9X,1H*,
00335 $ /,' *', 25X,'*WITH C. Biscarat and S. Slabospitzky**',9X,1H*,
00336 $ /,' *', 25X,'****** are warmly acknowledged ********',9X,1H*,
00337 $ /,' *', 25X,' ',9X,1H*,
00338 $ /,' *', 25X,'********** INITIALIZATION ************',9X,1H*,
00339 $ /,' *',F20.5,5X,'tau polarization switch must be 1 or 0 ',9X,1H*,
00340 $ /,' *',F20.5,5X,'Higs scalar/pseudo mix CERN-TH/2003-166',9X,1H*,
00341 $ /,' *',I10, 15X,'PI0 decay switch must be 1 or 0 ',9X,1H*,
00342 $ /,' *',I10, 15X,'ETA decay switch must be 1 or 0 ',9X,1H*,
00343 $ /,' *',I10, 15X,'K0S decay switch must be 1 or 0 ',9X,1H*,
00344 $ /,1X,15(5H*****)/)
00345
00346 7002 FORMAT(///1X,15(5H*****)
00347 $ /,' *', 25X,'*****TAUOLA UNIVERSAL INTERFACE: ******',9X,1H*,
00348 $ /,' *', 25X,'*****VERSION 1.21, September2005 ******',9X,1H*,
00349 $ /,' *', 25X,'**AUTHORS: P. Golonka, B. Kersevan, ***',9X,1H*,
00350 $ /,' *', 25X,'**T. Pierzchala, E. Richter-Was, ******',9X,1H*,
00351 $ /,' *', 25X,'****** Z. Was, M. Worek ***************',9X,1H*,
00352 $ /,' *', 25X,'**USEFUL DISCUSSIONS, IN PARTICULAR ***',9X,1H*,
00353 $ /,' *', 25X,'*WITH C. Biscarat and S. Slabospitzky**',9X,1H*,
00354 $ /,' *', 25X,'****** are warmly acknowledged ********',9X,1H*,
00355 $ /,' *', 25X,'****** END OF MODULE OPERATION ********',9X,1H*,
00356 $ /,1X,15(5H*****)/)
00357
00358 END
00359
00360 SUBROUTINE SPINHIGGS(IM,NP1,NP2,IFPSEUDO,Pol1,Pol2)
00361 LOGICAL IFPSEUDO
00362 REAL*8 HH1,HH2,wthiggs
00363 DIMENSION POL1(4), POL2(4),HH1(4),HH2(4), RRR(1)
00364
00365
00366 INTEGER ION(3)
00367 10 CONTINUE
00368 CALL RANMAR(RRR,1)
00369 CALL DEKAY(1,HH1)
00370 CALL DEKAY(2,HH2)
00371 wt=wthiggs(IFPSEUDO,HH1,HH2)
00372 IF (RRR(1).GT.WT) GOTO 10
00373 CALL DEKAY(1+10,HH1)
00374 CALL TAUPI0(0,1,ION)
00375 CALL DEKAY(2+10,HH2)
00376 CALL TAUPI0(0,2,ION)
00377 END
00378 FUNCTION wthiggs(IFPSEUDO,HH1,HH2)
00379 LOGICAL IFPSEUDO
00380 common /pseudocoup/ csc,ssc
00381 REAL*4 csc,ssc
00382 save pseudocoup
00383 REAL*8 HH1(4),HH2(4),R(4,4),wthiggs
00384 DO K=1,4
00385 DO L=1,4
00386 R(K,L)=0
00387 ENDDO
00388 ENDDO
00389 WTHIGGS=0D0
00390
00391 R(4,4)= 1D0
00392 R(3,3)=-1D0
00393
00394 IF (IFPSEUDO) THEN
00395 R(1,1)=-1
00396 R(2,2)= -1
00397 R(1,1)=(csc**2-ssc**2)/(csc**2+ssc**2)
00398 R(2,2)=(csc**2-ssc**2)/(csc**2+ssc**2)
00399 R(1,2)=2*csc*ssc/(csc**2+ssc**2)
00400 R(2,1)=-2*csc*ssc/(csc**2+ssc**2)
00401 ELSE
00402 R(1,1)=1
00403 R(2,2)=1
00404 ENDIF
00405
00406
00407
00408 DO K=1,4
00409 DO L=1,4
00410 WTHIGGS=WTHIGGS+R(K,L)*HH1(K)*HH2(L)
00411 ENDDO
00412 ENDDO
00413 WTHIGGS=WTHIGGS/4D0
00414 END
00415
00416 FUNCTION PLZAPX(HOPEin,IM0,NP1,NP2)
00417
00418
00419
00420
00421 REAL*8 PLZAPX,PLZAP0,SVAR,COSTHE,sini,sfin,ZPROP2,
00422 $ P1(4),P2(4),Q1(4),Q2(4),QQ(4),PH(4),PD1(4),PD2(4),
00423 $ PQ1(4),PQ2(4),PB(4),PA(4)
00424 INTEGER IM
00425 LOGICAL HOPE,HOPEin
00426
00427 INTEGER NMXHEP
00428 PARAMETER (NMXHEP=4000)
00429 REAL*8 phep, vhep
00430 INTEGER nevhep,nhep,isthep,idhep,jmohep,
00431 $ jdahep
00432 COMMON /hepevt/
00433 $ nevhep,
00434 $ nhep,
00435 $ isthep(nmxhep),
00436 $ idhep(nmxhep),
00437 $ jmohep(2,nmxhep),
00438 $ jdahep(2,nmxhep),
00439 $ phep(5,nmxhep),
00440 $ vhep(4,nmxhep)
00441
00442 LOGICAL qedrad
00443 COMMON /phoqed/
00444 $ qedrad(nmxhep)
00445
00446 SAVE hepevt,phoqed
00447
00448
00449
00450
00451 INTEGER ISON
00452 COMMON /ISONS_TAU/ISON(2)
00453
00454
00455
00456
00457 HOPE=HOPEin
00458
00459 IM=IM0
00460 IM00=JMOHEP(1,IM0)
00461
00462 IF (IM00.GT.0) THEN
00463 IF (IDHEP(IM0).EQ.IDHEP(IM00)) IM=JMOHEP(1,IM0)
00464 ENDIF
00465
00466
00467 IMO1=JMOHEP(1,IM)
00468 IMO2=JMOHEP(2,IM)
00469
00470
00471 IM00=IMO1
00472 IF (ISTHEP(IM00).EQ.120) THEN
00473 IMO1=JMOHEP(1,IM00)
00474 IMO2=JMOHEP(2,IM00)
00475 ENDIF
00476
00477
00478 IFFULL=0
00479
00480 IF (IMO1.EQ.0.AND.IMO2.EQ.0) THEN
00481 IMO1=JMOHEP(1,NP1)
00482
00483 IF (IDHEP(IMO1).EQ.IDHEP(NP1)) IMO1=JMOHEP(1,IMO1)
00484
00485 IMO2=JMOHEP(2,NP1)
00486
00487 IF (IDHEP(IMO2).EQ.IDHEP(NP2)) IMO2=JMOHEP(1,IMO2)
00488
00489 IFFULL=1
00490
00491
00492 ELSEIF (IDHEP(IM).NE.22.AND.IDHEP(IM).NE.23) THEN
00493 IMO1=JMOHEP(1,NP1)
00494
00495 IF (IDHEP(IMO1).EQ.IDHEP(NP1)) IMO1=JMOHEP(1,IMO1)
00496
00497 IMO2=JMOHEP(2,NP1)
00498
00499 IF (IDHEP(IMO2).EQ.IDHEP(NP2)) IMO2=JMOHEP(1,IMO2)
00500
00501 IFFULL=1
00502 ENDIF
00503
00504
00505
00506 IF (IMO1.EQ.0) HOPE=.FALSE.
00507 IF (IMO2.EQ.0) HOPE=.FALSE.
00508 IF (IMO1.EQ.IMO2) HOPE=.FALSE.
00509
00510
00511 DO I=1,4
00512 Q1(I)= PHEP(I,NP1)
00513 Q2(I)= PHEP(I,NP2)
00514 ENDDO
00515
00516
00517
00518 IF (IM.EQ.JMOHEP(1,IM0).AND.
00519 $ (IDHEP(IM).EQ.22.OR.IDHEP(IM).EQ.23)) THEN
00520 DO K=1,4
00521 PB(K)=PHEP(K,IM)
00522 PA(K)=PHEP(K,IM0)
00523 ENDDO
00524
00525
00526 CALL BOSTDQ( 1,PA, Q1, Q1)
00527 CALL BOSTDQ( 1,PA, Q2, Q2)
00528 CALL BOSTDQ(-1,PB, Q1, Q1)
00529 CALL BOSTDQ(-1,PB, Q2, Q2)
00530
00531 ENDIF
00532
00533 DO I=1,4
00534 QQ(I)= Q1(I)+Q2(I)
00535 IF (HOPE) P1(I)=PHEP(I,IMO1)
00536 IF (HOPE) P2(I)=PHEP(I,IMO2)
00537 PH(I)=0D0
00538 PD1(I)=0D0
00539 PD2(I)=0D0
00540 ENDDO
00541
00542 IDFQ1=IDHEP(NP1)
00543 IDFQ2=IDHEP(NP2)
00544 IF (HOPE) IDFP1=IDHEP(IMO1)
00545 IF (HOPE) IDFP2=IDHEP(IMO2)
00546
00547 SVAR=QQ(4)**2-QQ(3)**2-QQ(2)**2-QQ(1)**2
00548 IF (.NOT.HOPE) THEN
00549
00550
00551
00552
00553 PLZAPX=0.5
00554 RETURN
00555 ENDIF
00556
00557
00558
00559
00560
00561
00562
00563 NX1=JDAHEP(1,IM00)
00564 NX2=JDAHEP(2,IM00)
00565
00566 INBR=IM
00567 IF (IFFULL.EQ.1) INBR=NP1
00568 IF (IDHEP(JMOHEP(1,INBR)).EQ.IDHEP(INBR)) INBR=JMOHEP(1,INBR)
00569
00570 IF(NX1.EQ.0.OR.NX2.EQ.0) THEN
00571 NX1=INBR
00572 NX2=INBR
00573 DO K=1,INBR-1
00574 IF(JMOHEP(1,INBR-K).EQ.JMOHEP(1,INBR)) THEN
00575 NX1=INBR-K
00576 ELSE
00577 GOTO 7
00578 ENDIF
00579 ENDDO
00580 7 CONTINUE
00581
00582 DO K=INBR+1,NHEP
00583 IF(JMOHEP(1,K).EQ.JMOHEP(1,INBR)) THEN
00584 NX2=K
00585 ELSE
00586 GOTO 8
00587 ENDIF
00588 ENDDO
00589 8 CONTINUE
00590 ENDIF
00591
00592
00593 IF (ABS(IDFP1).GE.20.AND.ABS(IDFP2).GE.20) HOPE=.FALSE.
00594
00595 IF (ABS(IDFP1).LE.20.AND.ABS(IDFP2).LE.20.AND.IDFP1+IDFP2.NE.0)
00596 $ HOPE=.FALSE.
00597 IF (.NOT.HOPE) THEN
00598
00599
00600
00601
00602 PLZAPX=0.5
00603 RETURN
00604 ENDIF
00605 IF (ABS(IDFP1).LT.20) IDE= IDFP1
00606 IF (ABS(IDFP2).LT.20) IDE=-IDFP2
00607
00608
00609
00610
00611
00612
00613
00614
00615
00616 DO L=1,4
00617 PD1(L)=P1(L)
00618 PD2(L)=P2(L)
00619 ENDDO
00620
00621 DO L=1,4
00622 PQ1(L)=Q1(L)
00623 PQ2(L)=Q2(L)
00624 ENDDO
00625
00626 IFLAV=min(ABS(IDFP1),ABS(IDFP2))
00627
00628
00629
00630
00631
00632
00633
00634
00635
00636 IF (ABS(IDFP1).GE.20) THEN
00637 DO k=NX1,NX2
00638 IDP=IDHEP(k)
00639 IF (ABS(IDP).EQ.IFLAV) THEN
00640 DO L=1,4
00641 PD1(L)=-PHEP(L,K)
00642 ENDDO
00643 ENDIF
00644 ENDDO
00645 ENDIF
00646
00647 IF (ABS(IDFP2).GE.20) THEN
00648 DO k=NX1,NX2
00649 IDP=IDHEP(k)
00650 IF (ABS(IDP).EQ.IFLAV) THEN
00651 DO L=1,4
00652 PD2(L)=-PHEP(L,K)
00653 ENDDO
00654 ENDIF
00655 ENDDO
00656 ENDIF
00657
00658
00659
00660 IF (ABS(IDFP1).GE.20) THEN
00661 DO L=1,4
00662 PH(L)=P1(L)
00663 ENDDO
00664 xm1=abs((PD1(4)+PH(4))**2-(PD1(3)+PH(3))**2
00665 $ -(PD1(2)+PH(2))**2-(PD1(1)+PH(1))**2)
00666 xm2=abs((PD2(4)+PH(4))**2-(PD2(3)+PH(3))**2
00667 $ -(PD2(2)+PH(2))**2-(PD2(1)+PH(1))**2)
00668 IF (XM1.LT.XM2) THEN
00669 DO L=1,4
00670 PD1(L)=PD1(L)+P1(L)
00671 ENDDO
00672 ELSE
00673 DO L=1,4
00674 PD2(L)=PD2(L)+P1(L)
00675 ENDDO
00676 ENDIF
00677 ENDIF
00678
00679
00680
00681
00682 IF (ABS(IDFP2).GE.20) THEN
00683 DO L=1,4
00684 PH(L)=P2(L)
00685 ENDDO
00686 xm1=abs((PD1(4)+PH(4))**2-(PD1(3)+PH(3))**2
00687 $ -(PD1(2)+PH(2))**2-(PD1(1)+PH(1))**2)
00688 xm2=abs((PD2(4)+PH(4))**2-(PD2(3)+PH(3))**2
00689 $ -(PD2(2)+PH(2))**2-(PD2(1)+PH(1))**2)
00690 IF (XM1.LT.XM2) THEN
00691 DO L=1,4
00692 PD1(L)=PD1(L)+P2(L)
00693 ENDDO
00694 ELSE
00695 DO L=1,4
00696 PD2(L)=PD2(L)+P2(L)
00697 ENDDO
00698 ENDIF
00699 ENDIF
00700
00701
00702
00703
00704 NPH1=NP1
00705 NPH2=NP2
00706 IF (IDHEP(JMOHEP(1,NP1)).EQ.IDHEP(NP1)) NPH1=JMOHEP(1,NP1)
00707 IF (IDHEP(JMOHEP(1,NP2)).EQ.IDHEP(NP2)) NPH2=JMOHEP(1,NP2)
00708
00709
00710 DO k=NX1,NX2
00711 IF (ABS(IDHEP(K)).NE.IFLAV.AND.K.NE.IM.AND.
00712
00713 $ K.NE.NPH1.AND.K.NE.NPH2) THEN
00714
00715 IF(IDHEP(K).EQ.22.AND.IFFULL.EQ.1) THEN
00716 DO L=1,4
00717 PH(L)=PHEP(L,K)
00718 ENDDO
00719 xm1=abs((PD1(4)-PH(4))**2-(PD1(3)-PH(3))**2
00720 $ -(PD1(2)-PH(2))**2-(PD1(1)-PH(1))**2)
00721 xm2=abs((PD2(4)-PH(4))**2-(PD2(3)-PH(3))**2
00722 $ -(PD2(2)-PH(2))**2-(PD2(1)-PH(1))**2)
00723 xm3=abs((PQ1(4)+PH(4))**2-(PQ1(3)+PH(3))**2
00724 $ -(PQ1(2)+PH(2))**2-(PQ1(1)+PH(1))**2)
00725 xm4=abs((PQ2(4)+PH(4))**2-(PQ2(3)+PH(3))**2
00726 $ -(PQ2(2)+PH(2))**2-(PQ2(1)+PH(1))**2)
00727
00728
00729 sini=abs((PD1(4)+PD2(4)-PH(4))**2-(PD1(3)+PD2(3)-PH(3))**2
00730 $ -(PD1(2)+PD2(2)-PH(2))**2-(PD1(1)+PD2(1)-PH(1))**2)
00731 sfin=abs((PD1(4)+PD2(4) )**2-(PD1(3)+PD2(3) )**2
00732 $ -(PD1(2)+PD2(2) )**2-(PD1(1)+PD2(1) )**2)
00733
00734 FACINI=ZPROP2(sini)
00735 FACFIN=ZPROP2(sfin)
00736
00737 XM1=XM1/FACINI
00738 XM2=XM2/FACINI
00739 XM3=XM3/FACFIN
00740 XM4=XM4/FACFIN
00741
00742 XM=MIN(XM1,XM2,XM3,XM4)
00743 IF (XM1.EQ.XM) THEN
00744 DO L=1,4
00745 PD1(L)=PD1(L)-PH(L)
00746 ENDDO
00747 ELSEIF (XM2.EQ.XM) THEN
00748 DO L=1,4
00749 PD2(L)=PD2(L)-PH(L)
00750 ENDDO
00751 ELSEIF (XM3.EQ.XM) THEN
00752 DO L=1,4
00753 Q1(L)=PQ1(L)+PH(L)
00754 ENDDO
00755 ELSE
00756 DO L=1,4
00757 Q2(L)=PQ2(L)+PH(L)
00758 ENDDO
00759 ENDIF
00760 ELSE
00761 DO L=1,4
00762 PH(L)=PHEP(L,K)
00763 ENDDO
00764 xm1=abs((PD1(4)-PH(4))**2-(PD1(3)-PH(3))**2
00765 $ -(PD1(2)-PH(2))**2-(PD1(1)-PH(1))**2)
00766 xm2=abs((PD2(4)-PH(4))**2-(PD2(3)-PH(3))**2
00767 $ -(PD2(2)-PH(2))**2-(PD2(1)-PH(1))**2)
00768 IF (XM1.LT.XM2) THEN
00769 DO L=1,4
00770 PD1(L)=PD1(L)-PH(L)
00771 ENDDO
00772 ELSE
00773 DO L=1,4
00774 PD2(L)=PD2(L)-PH(L)
00775 ENDDO
00776 ENDIF
00777 ENDIF
00778 ENDIF
00779 ENDDO
00780
00781
00782
00783
00784
00785
00786
00787
00788
00789
00790
00791
00792
00793
00794
00795
00796
00797 IF (ABS(IDHEP(IM0)).EQ.22.OR.abs(IDHEP(IM0)).EQ.23) THEN
00798 DO K=ISON(1),ISON(2)
00799 IF(ABS(IDHEP(K)).EQ.22) THEN
00800
00801
00802 do l=1,4
00803 ph(l)=phep(l,k)
00804 enddo
00805
00806 xm3=abs((PQ1(4)+PH(4))**2-(PQ1(3)+PH(3))**2
00807 $ -(PQ1(2)+PH(2))**2-(PQ1(1)+PH(1))**2)
00808 xm4=abs((PQ2(4)+PH(4))**2-(PQ2(3)+PH(3))**2
00809 $ -(PQ2(2)+PH(2))**2-(PQ2(1)+PH(1))**2)
00810
00811 XM=MIN(XM3,XM4)
00812
00813 IF (XM3.EQ.XM) THEN
00814 DO L=1,4
00815 Q1(L)=PQ1(L)+PH(L)
00816 ENDDO
00817 ELSE
00818 DO L=1,4
00819 Q2(L)=PQ2(L)+PH(L)
00820 ENDDO
00821 ENDIF
00822 endif
00823 enddo
00824 ENDIF
00825
00826
00827
00828
00829
00830
00831
00832 CALL ANGULU(PD1,PD2,Q1,Q2,COSTHE)
00833
00834 PLZAPX=PLZAP0(IDE,IDFQ1,SVAR,COSTHE)
00835 END
00836
00837 SUBROUTINE ANGULU(PD1,PD2,Q1,Q2,COSTHE)
00838 REAL*8 PD1(4),PD2(4),Q1(4),Q2(4),COSTHE,P(4),QQ(4),QT(4)
00839
00840
00841
00842
00843
00844 XM1=ABS(PD1(4)**2-PD1(3)**2-PD1(2)**2-PD1(1)**2)
00845 XM2=ABS(PD2(4)**2-PD2(3)**2-PD2(2)**2-PD2(1)**2)
00846 IF (XM1.LT.XM2) THEN
00847 SIGN=1D0
00848 DO K=1,4
00849 P(K)=PD1(K)
00850 ENDDO
00851 ELSE
00852 SIGN=-1D0
00853 DO K=1,4
00854 P(K)=PD2(K)
00855 ENDDO
00856 ENDIF
00857
00858 DO K=1,4
00859 QQ(K)=Q1(k)+Q2(K)
00860 QT(K)=Q1(K)-Q2(K)
00861 ENDDO
00862
00863 XMQQ=SQRT(QQ(4)**2-QQ(3)**2-QQ(2)**2-QQ(1)**2)
00864
00865 QTXQQ=QT(4)*QQ(4)-QT(3)*QQ(3)-QT(2)*QQ(2)-QT(1)*QQ(1)
00866 DO K=1,4
00867 QT(K)=QT(K)-QQ(K)*QTXQQ/XMQQ**2
00868 ENDDO
00869
00870 PXQQ=P(4)*QQ(4)-P(3)*QQ(3)-P(2)*QQ(2)-P(1)*QQ(1)
00871 DO K=1,4
00872 P(K)=P(K)-QQ(K)*PXQQ/XMQQ**2
00873 ENDDO
00874
00875 PXP =SQRT(p(1)**2+p(2)**2+p(3)**2-p(4)**2)
00876 QTXQT=SQRT(QT(3)**2+QT(2)**2+QT(1)**2-QT(4)**2)
00877 PXQT =P(3)*QT(3)+P(2)*QT(2)+P(1)*QT(1)-P(4)*QT(4)
00878 COSTHE=PXQT/PXP/QTXQT
00879 COSTHE=COSTHE*SIGN
00880 END
00881
00882 FUNCTION PLZAP0(IDE,IDF,SVAR,COSTH0)
00883
00884
00885 REAL*8 PLZAP0,SVAR,COSTHE,COSTH0
00886
00887 COSTHE=COSTH0
00888
00889
00890
00891 IF (IDF.GT.0) THEN
00892 CALL INITWK(IDE,IDF,SVAR)
00893 ELSE
00894 CALL INITWK(-IDE,-IDF,SVAR)
00895 ENDIF
00896 PLZAP0=T_BORN(0,SVAR,COSTHE,1D0,1D0)
00897 $ /(T_BORN(0,SVAR,COSTHE,1D0,1D0)+T_BORN(0,SVAR,COSTHE,-1D0,-1D0))
00898
00899
00900 END
00901 FUNCTION T_BORN(MODE,SVAR,COSTHE,TA,TB)
00902
00903
00904
00905
00906
00907
00908
00909
00910
00911
00912 IMPLICIT REAL*8(A-H,O-Z)
00913 COMMON / T_BEAMPM / ENE ,AMIN,AMFIN,IDE,IDF
00914 REAL*8 ENE ,AMIN,AMFIN
00915 COMMON / T_GAUSPM /SS,POLN,T3E,QE,T3F,QF
00916 & ,XUPGI ,XUPZI ,XUPGF ,XUPZF
00917 & ,NDIAG0,NDIAGA,KEYA,KEYZ
00918 & ,ITCE,JTCE,ITCF,JTCF,KOLOR
00919 REAL*8 SS,POLN,T3E,QE,T3F,QF
00920 & ,XUPGI(2),XUPZI(2),XUPGF(2),XUPZF(2)
00921 REAL*8 SEPS1,SEPS2
00922
00923 COMMON / T_GSWPRM /SWSQ,AMW,AMZ,AMH,AMTOP,GAMMZ
00924 REAL*8 SWSQ,AMW,AMZ,AMH,AMTOP,GAMMZ
00925
00926
00927
00928
00929
00930 COMPLEX*16 ABORN(2,2),APHOT(2,2),AZETT(2,2)
00931 COMPLEX*16 XUPZFP(2),XUPZIP(2)
00932 COMPLEX*16 ABORNM(2,2),APHOTM(2,2),AZETTM(2,2)
00933 COMPLEX*16 PROPA,PROPZ
00934 COMPLEX*16 XR,XI
00935 COMPLEX*16 XUPF,XUPI,XFF(4),XFEM,XFOTA,XRHO,XKE,XKF,XKEF
00936 COMPLEX*16 XTHING,XVE,XVF,XVEF
00937 DATA XI/(0.D0,1.D0)/,XR/(1.D0,0.D0)/
00938 DATA MODE0 /-5/
00939 DATA IDE0 /-55/
00940 DATA SVAR0,COST0 /-5.D0,-6.D0/
00941 DATA PI /3.141592653589793238462643D0/
00942 DATA SEPS1,SEPS2 /0D0,0D0/
00943
00944
00945 IF ( MODE.NE.MODE0.OR.SVAR.NE.SVAR0.OR.COSTHE.NE.COST0
00946 $ .OR.IDE0.NE.IDE)THEN
00947
00948 KEYGSW=1
00949
00950 IDE0=IDE
00951 MODE0=MODE
00952 SVAR0=SVAR
00953 COST0=COSTHE
00954 SINTHE=SQRT(1.D0-COSTHE**2)
00955 BETA=SQRT(MAX(0D0,1D0-4D0*AMFIN**2/SVAR))
00956
00957 XUPZFP(1)=0.5D0*(XUPZF(1)+XUPZF(2))+0.5*BETA*(XUPZF(1)-XUPZF(2))
00958 XUPZFP(2)=0.5D0*(XUPZF(1)+XUPZF(2))-0.5*BETA*(XUPZF(1)-XUPZF(2))
00959 XUPZIP(1)=0.5D0*(XUPZI(1)+XUPZI(2))+0.5*(XUPZI(1)-XUPZI(2))
00960 XUPZIP(2)=0.5D0*(XUPZI(1)+XUPZI(2))-0.5*(XUPZI(1)-XUPZI(2))
00961
00962 XUPF =0.5D0*(XUPZF(1)+XUPZF(2))
00963 XUPI =0.5D0*(XUPZI(1)+XUPZI(2))
00964 XTHING =0D0
00965
00966 PROPA =1D0/SVAR
00967 PROPZ =1D0/DCMPLX(SVAR-AMZ**2,SVAR/AMZ*GAMMZ)
00968 IF (KEYGSW.EQ.0) PROPZ=0.D0
00969 DO 50 I=1,2
00970 DO 50 J=1,2
00971 REGULA= (3-2*I)*(3-2*J) + COSTHE
00972 REGULM=-(3-2*I)*(3-2*J) * SINTHE *2.D0*AMFIN/SQRT(SVAR)
00973 APHOT(I,J)=PROPA*(XUPGI(I)*XUPGF(J)*REGULA)
00974 AZETT(I,J)=PROPZ*(XUPZIP(I)*XUPZFP(J)+XTHING)*REGULA
00975 ABORN(I,J)=APHOT(I,J)+AZETT(I,J)
00976 APHOTM(I,J)=PROPA*DCMPLX(0D0,1D0)*XUPGI(I)*XUPGF(J)*REGULM
00977 AZETTM(I,J)=PROPZ*DCMPLX(0D0,1D0)*(XUPZIP(I)*XUPF+XTHING)*REGULM
00978 ABORNM(I,J)=APHOTM(I,J)+AZETTM(I,J)
00979 50 CONTINUE
00980 ENDIF
00981
00982
00983
00984
00985
00986 POLAR1= (SEPS1)
00987 POLAR2= (-SEPS2)
00988 BORN=0D0
00989 DO 150 I=1,2
00990 HELIC= 3-2*I
00991 DO 150 J=1,2
00992 HELIT=3-2*J
00993 FACTOR=KOLOR*(1D0+HELIC*POLAR1)*(1D0-HELIC*POLAR2)/4D0
00994 FACTOM=FACTOR*(1+HELIT*TA)*(1-HELIT*TB)
00995 FACTOR=FACTOR*(1+HELIT*TA)*(1+HELIT*TB)
00996
00997 BORN=BORN+CDABS(ABORN(I,J))**2*FACTOR
00998
00999 IF (MODE.GE.1) THEN
01000 BORN=BORN+CDABS(ABORNM(I,J))**2*FACTOM
01001 ENDIF
01002
01003 150 CONTINUE
01004
01005 FUNT=BORN
01006 IF(FUNT.LT.0.D0) FUNT=BORN
01007
01008
01009 IF (SVAR.GT.4D0*AMFIN**2) THEN
01010
01011 THRESH=SQRT(1-4D0*AMFIN**2/SVAR)
01012 T_BORN= FUNT*SVAR**2*THRESH
01013 ELSE
01014 THRESH=0.D0
01015 T_BORN=0.D0
01016 ENDIF
01017
01018
01019
01020 END
01021
01022 SUBROUTINE INITWK(IDEX,IDFX,SVAR)
01023
01024 IMPLICIT REAL*8 (A-H,O-Z)
01025 COMMON / T_BEAMPM / ENE ,AMIN,AMFIN,IDE,IDF
01026 REAL*8 ENE ,AMIN,AMFIN
01027 COMMON / T_GAUSPM /SS,POLN,T3E,QE,T3F,QF
01028 & ,XUPGI ,XUPZI ,XUPGF ,XUPZF
01029 & ,NDIAG0,NDIAGA,KEYA,KEYZ
01030 & ,ITCE,JTCE,ITCF,JTCF,KOLOR
01031 REAL*8 SS,POLN,T3E,QE,T3F,QF
01032 & ,XUPGI(2),XUPZI(2),XUPGF(2),XUPZF(2)
01033 COMMON / T_GSWPRM /SWSQ,AMW,AMZ,AMH,AMTOP,GAMMZ
01034 REAL*8 SWSQ,AMW,AMZ,AMH,AMTOP,GAMMZ
01035
01036
01037
01038
01039
01040
01041 ENE=SQRT(SVAR)/2
01042 AMIN=0.511D-3
01043 SWSQ=0.23147
01044 AMZ=91.1882
01045 GAMMZ=2.4952
01046 IF (IDFX.EQ. 15) then
01047 IDF=2
01048 AMFIN=1.77703
01049 ELSEIF (IDFX.EQ.-15) then
01050 IDF=-2
01051 AMFIN=1.77703
01052 ELSE
01053 WRITE(*,*) 'INITWK: WRONG IDFX'
01054 STOP
01055 ENDIF
01056
01057 IF (IDEX.EQ. 11) then
01058 IDE= 2
01059 AMIN=0.511D-3
01060 ELSEIF (IDEX.EQ.-11) then
01061 IDE=-2
01062 AMIN=0.511D-3
01063 ELSEIF (IDEX.EQ. 13) then
01064 IDE= 2
01065 AMIN=0.105659
01066 ELSEIF (IDEX.EQ.-13) then
01067 IDE=-2
01068 AMIN=0.105659
01069 ELSEIF (IDEX.EQ. 1) then
01070 IDE= 4
01071 AMIN=0.05
01072 ELSEIF (IDEX.EQ.- 1) then
01073 IDE=-4
01074 AMIN=0.05
01075 ELSEIF (IDEX.EQ. 2) then
01076 IDE= 3
01077 AMIN=0.02
01078 ELSEIF (IDEX.EQ.- 2) then
01079 IDE=-3
01080 AMIN=0.02
01081 ELSEIF (IDEX.EQ. 3) then
01082 IDE= 4
01083 AMIN=0.3
01084 ELSEIF (IDEX.EQ.- 3) then
01085 IDE=-4
01086 AMIN=0.3
01087 ELSEIF (IDEX.EQ. 4) then
01088 IDE= 3
01089 AMIN=1.3
01090 ELSEIF (IDEX.EQ.- 4) then
01091 IDE=-3
01092 AMIN=1.3
01093 ELSEIF (IDEX.EQ. 5) then
01094 IDE= 4
01095 AMIN=4.5
01096 ELSEIF (IDEX.EQ.- 5) then
01097 IDE=-4
01098 AMIN=4.5
01099 ELSEIF (IDEX.EQ. 12) then
01100 IDE= 1
01101 AMIN=0.1D-3
01102 ELSEIF (IDEX.EQ.- 12) then
01103 IDE=-1
01104 AMIN=0.1D-3
01105 ELSEIF (IDEX.EQ. 14) then
01106 IDE= 1
01107 AMIN=0.1D-3
01108 ELSEIF (IDEX.EQ.- 14) then
01109 IDE=-1
01110 AMIN=0.1D-3
01111 ELSEIF (IDEX.EQ. 16) then
01112 IDE= 1
01113 AMIN=0.1D-3
01114 ELSEIF (IDEX.EQ.- 16) then
01115 IDE=-1
01116 AMIN=0.1D-3
01117
01118 ELSE
01119 WRITE(*,*) 'INITWK: WRONG IDEX'
01120 STOP
01121 ENDIF
01122
01123
01124
01125
01126
01127
01128
01129 ITCE=IDE/IABS(IDE)
01130 JTCE=(1-ITCE)/2
01131 ITCF=IDF/IABS(IDF)
01132 JTCF=(1-ITCF)/2
01133 CALL T_GIVIZO( IDE, 1,AIZOR,QE,KDUMM)
01134 CALL T_GIVIZO( IDE,-1,AIZOL,QE,KDUMM)
01135 XUPGI(1)=QE
01136 XUPGI(2)=QE
01137 T3E = AIZOL+AIZOR
01138 XUPZI(1)=(AIZOR-QE*SWSQ)/SQRT(SWSQ*(1-SWSQ))
01139 XUPZI(2)=(AIZOL-QE*SWSQ)/SQRT(SWSQ*(1-SWSQ))
01140 CALL T_GIVIZO( IDF, 1,AIZOR,QF,KOLOR)
01141 CALL T_GIVIZO( IDF,-1,AIZOL,QF,KOLOR)
01142 XUPGF(1)=QF
01143 XUPGF(2)=QF
01144 T3F = AIZOL+AIZOR
01145 XUPZF(1)=(AIZOR-QF*SWSQ)/SQRT(SWSQ*(1-SWSQ))
01146 XUPZF(2)=(AIZOL-QF*SWSQ)/SQRT(SWSQ*(1-SWSQ))
01147
01148 NDIAG0=2
01149 NDIAGA=11
01150 KEYA = 1
01151 KEYZ = 1
01152
01153
01154 RETURN
01155 END
01156
01157 SUBROUTINE T_GIVIZO(IDFERM,IHELIC,SIZO3,CHARGE,KOLOR)
01158
01159
01160
01161
01162
01163
01164
01165
01166
01167
01168
01169 IMPLICIT REAL*8(A-H,O-Z)
01170
01171 IF(IDFERM.EQ.0.OR.IABS(IDFERM).GT.4) GOTO 901
01172 IF(IABS(IHELIC).NE.1) GOTO 901
01173 IH =IHELIC
01174 IDTYPE =IABS(IDFERM)
01175 IC =IDFERM/IDTYPE
01176 LEPQUA=INT(IDTYPE*0.4999999D0)
01177 IUPDOW=IDTYPE-2*LEPQUA-1
01178 CHARGE =(-IUPDOW+2D0/3D0*LEPQUA)*IC
01179 SIZO3 =0.25D0*(IC-IH)*(1-2*IUPDOW)
01180 KOLOR=1+2*LEPQUA
01181
01182
01183 RETURN
01184 901 PRINT *,' STOP IN GIVIZO: WRONG PARAMS.'
01185 STOP
01186 END
01187 SUBROUTINE PHYFIX(NSTOP,NSTART)
01188 COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
01189 SAVE /LUJETS/
01190
01191 NSTOP=0
01192 NSTART=1
01193 DO I=1, N
01194 IF(K(I,1).NE.21) THEN
01195 NSTOP = I-1
01196 NSTART= I
01197 GOTO 500
01198 ENDIF
01199 ENDDO
01200 500 CONTINUE
01201 END
01202 SUBROUTINE FILHEP(N,IST,ID,JMO1,JMO2,JDA1,JDA2,P4,PINV,PHFLAG)
01203
01204
01205
01206
01207
01208
01209
01210
01211
01212
01213
01214 INTEGER NMXHEP
01215 PARAMETER (NMXHEP=4000)
01216 REAL*8 phep, vhep
01217 INTEGER nevhep,nhep,isthep,idhep,jmohep,
01218 $ jdahep
01219 COMMON /hepevt/
01220 $ nevhep,
01221 $ nhep,
01222 $ isthep(nmxhep),
01223 $ idhep(nmxhep),
01224 $ jmohep(2,nmxhep),
01225 $ jdahep(2,nmxhep),
01226 $ phep(5,nmxhep),
01227 $ vhep(4,nmxhep)
01228
01229 LOGICAL qedrad
01230 COMMON /phoqed/
01231 $ qedrad(nmxhep)
01232
01233 SAVE hepevt,phoqed
01234
01235
01236 LOGICAL PHFLAG
01237
01238 REAL*4 P4(4)
01239
01240
01241 IF (N.EQ.0) THEN
01242
01243
01244 IHEP=NHEP+1
01245 ELSE IF (N.GT.0) THEN
01246
01247
01248 IHEP=N
01249 ELSE
01250
01251
01252 IHEP=NHEP+N
01253 END IF
01254
01255
01256 IF ((IHEP.LE.0).OR.(IHEP.GT.NMXHEP)) RETURN
01257
01258
01259 NHEP=IHEP
01260 ISTHEP(IHEP)=IST
01261 IDHEP(IHEP)=ID
01262 JMOHEP(1,IHEP)=JMO1
01263 IF(JMO1.LT.0)JMOHEP(1,IHEP)=JMOHEP(1,IHEP)+IHEP
01264 JMOHEP(2,IHEP)=JMO2
01265 IF(JMO2.LT.0)JMOHEP(2,IHEP)=JMOHEP(2,IHEP)+IHEP
01266 JDAHEP(1,IHEP)=JDA1
01267 JDAHEP(2,IHEP)=JDA2
01268
01269 DO I=1,4
01270 PHEP(I,IHEP)=P4(I)
01271
01272
01273 VHEP(I,IHEP)=0.0
01274 END DO
01275 PHEP(5,IHEP)=PINV
01276
01277 QEDRAD(IHEP)=PHFLAG
01278
01279
01280 DO IP=JMOHEP(1,IHEP),JMOHEP(2,IHEP)
01281 IF(IP.GT.0)THEN
01282
01283
01284 IF(ISTHEP(IP).EQ.1)ISTHEP(IP)=2
01285
01286
01287 IF(JDAHEP(1,IP).EQ.0)THEN
01288 JDAHEP(1,IP)=IHEP
01289 JDAHEP(2,IP)=IHEP
01290 ELSE
01291 JDAHEP(2,IP)=MAX(IHEP,JDAHEP(2,IP))
01292 END IF
01293 END IF
01294 END DO
01295
01296 RETURN
01297 END
01298
01299
01300 FUNCTION IHEPDIM(DUM)
01301
01302
01303 INTEGER NMXHEP
01304 PARAMETER (NMXHEP=4000)
01305 REAL*8 phep, vhep
01306 INTEGER nevhep,nhep,isthep,idhep,jmohep,
01307 $ jdahep
01308 COMMON /hepevt/
01309 $ nevhep,
01310 $ nhep,
01311 $ isthep(nmxhep),
01312 $ idhep(nmxhep),
01313 $ jmohep(2,nmxhep),
01314 $ jdahep(2,nmxhep),
01315 $ phep(5,nmxhep),
01316 $ vhep(4,nmxhep)
01317
01318 LOGICAL qedrad
01319 COMMON /phoqed/
01320 $ qedrad(nmxhep)
01321
01322 SAVE hepevt,phoqed
01323
01324
01325 IHEPDIM=NHEP
01326 END
01327 FUNCTION ZPROP2(S)
01328 IMPLICIT REAL*8(A-H,O-Z)
01329 COMPLEX*16 CPRZ0,CPRZ0M
01330 AMZ=91.1882
01331 GAMMZ=2.49
01332 CPRZ0=DCMPLX((S-AMZ**2),S/AMZ*GAMMZ)
01333 CPRZ0M=1/CPRZ0
01334 ZPROP2=(ABS(CPRZ0M))**2
01335 END
01336
01337 SUBROUTINE TAUPI0(MODE,JAK,ION)
01338
01339
01340
01341
01342
01343
01344
01345
01346
01347
01348
01349
01350 INTEGER NMXHEP
01351 PARAMETER (NMXHEP=4000)
01352 REAL*8 phep, vhep
01353 INTEGER nevhep,nhep,isthep,idhep,jmohep,
01354 $ jdahep
01355 COMMON /hepevt/
01356 $ nevhep,
01357 $ nhep,
01358 $ isthep(nmxhep),
01359 $ idhep(nmxhep),
01360 $ jmohep(2,nmxhep),
01361 $ jdahep(2,nmxhep),
01362 $ phep(5,nmxhep),
01363 $ vhep(4,nmxhep)
01364
01365 LOGICAL qedrad
01366 COMMON /phoqed/
01367 $ qedrad(nmxhep)
01368
01369 SAVE hepevt,phoqed
01370
01371
01372
01373
01374 COMMON /TAUPOS/ NP1,NP2
01375
01376 REAL PHOT1(4),PHOT2(4)
01377 REAL*8 R,X(4),Y(4),PI0(4)
01378 INTEGER JEZELI(3),ION(3)
01379 DATA JEZELI /0,0,0/
01380 SAVE JEZELI
01381 IF (MODE.EQ.-1) THEN
01382 JEZELI(1)=ION(1)
01383 JEZELI(2)=ION(2)
01384 JEZELI(3)=ION(3)
01385 RETURN
01386 ENDIF
01387 IF (JEZELI(1).EQ.0) RETURN
01388 IF (JEZELI(2).EQ.1) CALL TAUETA(JAK)
01389 IF (JEZELI(3).EQ.1) CALL TAUK0S(JAK)
01390
01391 IF((KTO.EQ. 1).OR.(KTO.EQ.11)) THEN
01392 NPS=NP1
01393 ELSE
01394 NPS=NP2
01395 ENDIF
01396 nhepM=nhep
01397 DO K=JDAHEP(1,NPS),nhepM
01398 IF (IDHEP(K).EQ.111.AND.JDAHEP(1,K).LE.K) THEN
01399 DO L=1,4
01400 PI0(L)= phep(L,K)
01401 ENDDO
01402
01403 R=SQRT(PI0(4)**2-PI0(3)**2-PI0(2)**2-PI0(1)**2)/2D0
01404 CALL SPHERD(R,X)
01405 X(4)=R
01406 Y(4)=R
01407
01408 Y(1)=-X(1)
01409 Y(2)=-X(2)
01410 Y(3)=-X(3)
01411
01412 CALL bostdq(-1,PI0,X,X)
01413 CALL bostdq(-1,PI0,Y,Y)
01414 DO L=1,4
01415 PHOT1(L)=X(L)
01416 PHOT2(L)=Y(L)
01417 ENDDO
01418
01419 CALL FILHEP(0,1,22,K,K,0,0,PHOT1,0.0,.TRUE.)
01420 CALL FILHEP(0,1,22,K,K,0,0,PHOT2,0.0,.TRUE.)
01421 ENDIF
01422 ENDDO
01423
01424 END
01425 SUBROUTINE TAUETA(JAK)
01426
01427
01428
01429
01430
01431
01432 INTEGER NMXHEP
01433 PARAMETER (NMXHEP=4000)
01434 REAL*8 phep, vhep
01435 INTEGER nevhep,nhep,isthep,idhep,jmohep,
01436 $ jdahep
01437 COMMON /hepevt/
01438 $ nevhep,
01439 $ nhep,
01440 $ isthep(nmxhep),
01441 $ idhep(nmxhep),
01442 $ jmohep(2,nmxhep),
01443 $ jdahep(2,nmxhep),
01444 $ phep(5,nmxhep),
01445 $ vhep(4,nmxhep)
01446
01447 LOGICAL qedrad
01448 COMMON /phoqed/
01449 $ qedrad(nmxhep)
01450
01451 SAVE hepevt,phoqed
01452
01453
01454 COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
01455 * ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
01456 * ,AMK,AMKZ,AMKST,GAMKST
01457
01458 REAL*4 AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
01459 * ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
01460 * ,AMK,AMKZ,AMKST,GAMKST
01461
01462
01463 COMMON /TAUPOS/ NP1,NP2
01464
01465 REAL RRR(1),BRSUM(3), RR(2)
01466 REAL PHOT1(4),PHOT2(4),PHOT3(4)
01467 REAL*8 X(4), Y(4), Z(4)
01468 REAL YM1,YM2,YM3
01469 REAL*8 R,RU,PETA(4),XM1,XM2,XM3,XM,XLAM
01470 REAL*8 a,b,c
01471 XLAM(a,b,c)=SQRT(ABS((a-b-c)**2-4.0*b*c))
01472
01473 IF((KTO.EQ. 1).OR.(KTO.EQ.11)) THEN
01474 NPS=NP1
01475 ELSE
01476 NPS=NP2
01477 ENDIF
01478 nhepM=nhep
01479 DO K=JDAHEP(1,NPS),nhepM
01480 IF (IDHEP(K).EQ.221.AND.JDAHEP(1,K).LE.K) THEN
01481 DO L=1,4
01482 PETA(L)= phep(L,K)
01483 ENDDO
01484
01485 BRSUM(1)=0.389
01486 BRSUM(2)=BRSUM(1)+0.319
01487 BRSUM(3)=BRSUM(2)+0.237
01488 CALL RANMAR(RRR,1)
01489
01490 IF (RRR(1).LT.BRSUM(1)) THEN
01491
01492 R=SQRT(PETA(4)**2-PETA(3)**2-PETA(2)**2-PETA(1)**2)/2D0
01493 CALL SPHERD(R,X)
01494 X(4)=R
01495 Y(4)=R
01496
01497 Y(1)=-X(1)
01498 Y(2)=-X(2)
01499 Y(3)=-X(3)
01500
01501 CALL bostdq(-1,PETA,X,X)
01502 CALL bostdq(-1,PETA,Y,Y)
01503 DO L=1,4
01504 PHOT1(L)=X(L)
01505 PHOT2(L)=Y(L)
01506 ENDDO
01507
01508 CALL FILHEP(0,1,22,K,K,0,0,PHOT1,0.0,.TRUE.)
01509 CALL FILHEP(0,1,22,K,K,0,0,PHOT2,0.0,.TRUE.)
01510 ELSE
01511 IF(RRR(1).LT.BRSUM(2)) THEN
01512 ID1= 111
01513 ID2= 111
01514 ID3= 111
01515 XM1=AMPIZ
01516 XM2=AMPIZ
01517 XM3=AMPIZ
01518 ELSEIF(RRR(1).LT.BRSUM(3)) THEN
01519 ID1= 211
01520 ID2=-211
01521 ID3= 111
01522 XM1=AMPI
01523 XM2=AMPI
01524 XM3=AMPIZ
01525 ELSE
01526 ID1= 211
01527 ID2=-211
01528 ID3= 22
01529 XM1=AMPI
01530 XM2=AMPI
01531 XM3=0.0
01532 ENDIF
01533 7 CONTINUE
01534 CALL RANMAR(RR,2)
01535 R=SQRT(PETA(4)**2-PETA(3)**2-PETA(2)**2-PETA(1)**2)
01536 AMIN=XM1+XM2
01537 AMAX=R-XM3
01538 AM2=SQRT(AMIN**2+RR(1)*(AMAX**2-AMIN**2))
01539
01540 WT=XLAM(R**2,AM2**2,XM3**2)*XLAM(AM2**2,XM1**2,XM2**2)
01541 & /R**2 /AM2**2
01542 IF (RR(2).GT.WT) GOTO 7
01543
01544 RU=XLAM(AM2**2,XM1**2,XM2**2)/AM2/2
01545
01546
01547 CALL SPHERD(RU,X)
01548 X(4)=SQRT(RU**2+XM1**2)
01549 Y(4)=SQRT(RU**2+XM2**2)
01550
01551 Y(1)=-X(1)
01552 Y(2)=-X(2)
01553 Y(3)=-X(3)
01554
01555 RU=XLAM(R**2,AM2**2,XM3**2)/R/2
01556 CALL SPHERD(RU,Z)
01557 Z(4)=SQRT(RU**2+AM2**2)
01558
01559 CALL bostdq(-1,Z,X,X)
01560 CALL bostdq(-1,Z,Y,Y)
01561
01562 Z(1)=-Z(1)
01563 Z(2)=-Z(2)
01564 Z(3)=-Z(3)
01565 Z(4)=SQRT(RU**2+XM3**2)
01566
01567 CALL bostdq(-1,PETA,X,X)
01568 CALL bostdq(-1,PETA,Y,Y)
01569 CALL bostdq(-1,PETA,Z,Z)
01570 DO L=1,4
01571 PHOT1(L)=X(L)
01572 PHOT2(L)=Y(L)
01573 PHOT3(L)=Z(L)
01574 ENDDO
01575 YM1=XM1
01576 YM2=XM2
01577 YM3=XM3
01578
01579 CALL FILHEP(0,1,ID1,K,K,0,0,PHOT1,YM1,.TRUE.)
01580 CALL FILHEP(0,1,ID2,K,K,0,0,PHOT2,YM2,.TRUE.)
01581 CALL FILHEP(0,1,ID3,K,K,0,0,PHOT3,YM3,.TRUE.)
01582 ENDIF
01583
01584 ENDIF
01585 ENDDO
01586
01587 END
01588 SUBROUTINE TAUK0S(JAK)
01589
01590
01591
01592
01593
01594
01595 INTEGER NMXHEP
01596 PARAMETER (NMXHEP=4000)
01597 REAL*8 phep, vhep
01598 INTEGER nevhep,nhep,isthep,idhep,jmohep,
01599 $ jdahep
01600 COMMON /hepevt/
01601 $ nevhep,
01602 $ nhep,
01603 $ isthep(nmxhep),
01604 $ idhep(nmxhep),
01605 $ jmohep(2,nmxhep),
01606 $ jdahep(2,nmxhep),
01607 $ phep(5,nmxhep),
01608 $ vhep(4,nmxhep)
01609
01610 LOGICAL qedrad
01611 COMMON /phoqed/
01612 $ qedrad(nmxhep)
01613
01614 SAVE hepevt,phoqed
01615
01616
01617
01618 COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
01619 * ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
01620 * ,AMK,AMKZ,AMKST,GAMKST
01621
01622 REAL*4 AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
01623 * ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
01624 * ,AMK,AMKZ,AMKST,GAMKST
01625
01626
01627 COMMON /TAUPOS/ NP1,NP2
01628
01629 REAL RRR(1),BRSUM(3), RR(2)
01630 REAL PHOT1(4),PHOT2(4),PHOT3(4)
01631 REAL*8 X(4), Y(4), Z(4)
01632 REAL YM1,YM2,YM3
01633 REAL*8 R,RU,PETA(4),XM1,XM2,XM3,XM,XLAM
01634 REAL*8 a,b,c
01635 XLAM(a,b,c)=SQRT(ABS((a-b-c)**2-4.0*b*c))
01636
01637 IF((KTO.EQ. 1).OR.(KTO.EQ.11)) THEN
01638 NPS=NP1
01639 ELSE
01640 NPS=NP2
01641 ENDIF
01642 nhepM=nhep
01643 DO K=JDAHEP(1,NPS),nhepM
01644 IF (IDHEP(K).EQ.310.AND.JDAHEP(1,K).LE.K) THEN
01645
01646
01647 DO L=1,4
01648 PETA(L)= phep(L,K)
01649 ENDDO
01650
01651 BRSUM(1)=0.313
01652 BRSUM(2)=1.0
01653 BRSUM(3)=BRSUM(2)+0.237
01654 CALL RANMAR(RRR,1)
01655
01656 IF(RRR(1).LT.BRSUM(1)) THEN
01657 ID1= 111
01658 ID2= 111
01659 XM1=AMPIZ
01660 XM2=AMPIZ
01661 ELSEIF(RRR(1).LT.BRSUM(2)) THEN
01662 ID1= 211
01663 ID2=-211
01664 XM1=AMPI
01665 XM2=AMPI
01666 ELSE
01667 ID1= 22
01668 ID2= 22
01669 XM1= 0.0
01670 XM2= 0.0
01671 ENDIF
01672
01673
01674 R=SQRT(PETA(4)**2-PETA(3)**2-PETA(2)**2-PETA(1)**2)/2D0
01675 R4=R
01676 R=SQRT(ABS(R**2-XM1**2))
01677 CALL SPHERD(R,X)
01678 X(4)=R4
01679 Y(4)=R4
01680
01681 Y(1)=-X(1)
01682 Y(2)=-X(2)
01683 Y(3)=-X(3)
01684
01685 CALL bostdq(-1,PETA,X,X)
01686 CALL bostdq(-1,PETA,Y,Y)
01687 DO L=1,4
01688 PHOT1(L)=X(L)
01689 PHOT2(L)=Y(L)
01690 ENDDO
01691
01692 YM1=XM1
01693 YM2=XM2
01694
01695 CALL FILHEP(0,1,ID1,K,K,0,0,PHOT1,YM1,.TRUE.)
01696 CALL FILHEP(0,1,ID2,K,K,0,0,PHOT2,YM2,.TRUE.)
01697
01698
01699 ENDIF
01700 ENDDO
01701
01702 END