00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009       SUBROUTINE INIETC(jakk1,jakk2,itd,ifpho)
00010       COMMON / IDFC  / IDFF
00011       COMMON / TAURAD / XK0DEC,ITDKRC
00012       DOUBLE PRECISION            XK0DEC
00013       COMMON / JAKI   /  JAK1,JAK2,JAKP,JAKM,KTOM
00014       COMMON /PHOACT/ IFPHOT
00015       SAVE
00016 
00017           IDFF=-15
00018 
00019           XK0DEC=0.01
00020 
00021           ITDKRC=itd
00022 
00023           JAK1=jakk1
00024           JAK2=jakk2
00025 
00026           IFPHOT=IFPHO
00027       end
00028 
00029       SUBROUTINE TRALO4(KTOS,PHOI,PHOF,AM)
00030 
00031 
00032 
00033       COMMON / MOMDEC / Q1,Q2,P1,P2,P3,P4
00034       COMMON /TRALID/ idtra
00035       double precision Q1(4),Q2(4),P1(4),P2(4),P3(4),P4(4),P1QQ(4),P2QQ(4)
00036       double precision PIN(4),POUT(4),PBST(4),PBS1(4),QQ(4),PI
00037       double precision THET,PHI,EXE
00038       REAL*4 PHOI(4),PHOF(4)
00039       SAVE
00040       DATA PI /3.141592653589793238462643D0/
00041       AM=SQRT(ABS
00042      $   (PHOI(4)**2-PHOI(3)**2-PHOI(2)**2-PHOI(1)**2))
00043       idtra=KTOS
00044       DO K=1,4
00045        PIN(K)=PHOI(K)
00046        PHOF(K)=PHOI(K)
00047       ENDDO
00048 
00049       IF    (idtra.EQ.1) THEN
00050         DO K=1,4
00051          PBST(K)=P1(K)
00052          QQ(K)=Q1(K)
00053         ENDDO
00054       ELSEIF(idtra.EQ.2) THEN
00055         DO K=1,4
00056          PBST(K)=P2(K)
00057          QQ(K)=Q1(K)
00058         ENDDO
00059       ELSEIF(idtra.EQ.3) THEN
00060         DO K=1,4
00061          PBST(K)=P3(K)
00062          QQ(K)=Q2(K)
00063         ENDDO
00064       ELSE
00065         DO K=1,4
00066          PBST(K)=P4(K)
00067          QQ(K)=Q2(K)
00068         ENDDO
00069       ENDIF
00070 
00071 
00072 
00073         CALL BOSTDQ(1,QQ,PBST,PBST)
00074         CALL BOSTDQ(1,QQ,P1,P1QQ)
00075         CALL BOSTDQ(1,QQ,P2,P2QQ)
00076         PBS1(4)=PBST(4)
00077         PBS1(3)=SQRT(PBST(3)**2+PBST(2)**2+PBST(1)**2)
00078         PBS1(2)=0D0
00079         PBS1(1)=0D0 
00080         EXE=(PBS1(4)+PBS1(3))/DSQRT(PBS1(4)**2-PBS1(3)**2)
00081 
00082 
00083 
00084        IF(KTOS.EQ.1)  EXE=(PBS1(4)-PBS1(3))/DSQRT(PBS1(4)**2-PBS1(3)**2)
00085         CALL BOSTD3(EXE,PIN,POUT)
00086 
00087 
00088         THET=ACOS(P2QQ(3)/SQRT(P2QQ(3)**2+P2QQ(2)**2+P2QQ(1)**2))
00089         PHI=0D0
00090         PHI=ACOS(P2QQ(1)/SQRT(P2QQ(2)**2+P2QQ(1)**2))
00091         IF(P2QQ(2).LT.0D0) PHI=2*PI-PHI
00092 
00093         CALL ROTPOX(THET,PHI,POUT)
00094         CALL BOSTDQ(-1,QQ,POUT,POUT)
00095       DO K=1,4
00096        PHOF(K)=POUT(K)
00097       ENDDO
00098       END
00099 
00100 
00101       SUBROUTINE CHOICE(MNUM,RR,ICHAN,PROB1,PROB2,PROB3,
00102      $            AMRX,GAMRX,AMRA,GAMRA,AMRB,GAMRB)
00103       COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00104      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00105      *                 ,AMK,AMKZ,AMKST,GAMKST
00106 
00107       REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00108      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00109      *                 ,AMK,AMKZ,AMKST,GAMKST
00110 
00111       AMROP=1.1
00112       GAMROP=0.36
00113       AMOM=.782
00114       GAMOM=0.0084
00115 
00116       IF(MNUM.EQ.0) THEN
00117        PROB1=0.5
00118        PROB2=0.5
00119        AMRX =AMA1
00120        GAMRX=GAMA1
00121        AMRA =AMRO
00122        GAMRA=GAMRO
00123        AMRB =AMRO
00124        GAMRB=GAMRO
00125       ELSEIF(MNUM.EQ.1) THEN
00126        PROB1=0.5
00127        PROB2=0.5
00128        AMRX =1.57
00129        GAMRX=0.9
00130        AMRB =AMKST
00131        GAMRB=GAMKST
00132        AMRA =AMRO
00133        GAMRA=GAMRO
00134       ELSEIF(MNUM.EQ.2) THEN
00135        PROB1=0.5
00136        PROB2=0.5
00137        AMRX =1.57
00138        GAMRX=0.9
00139        AMRB =AMKST
00140        GAMRB=GAMKST
00141        AMRA =AMRO
00142        GAMRA=GAMRO
00143       ELSEIF(MNUM.EQ.3) THEN
00144        PROB1=0.5
00145        PROB2=0.5
00146        AMRX =1.27
00147        GAMRX=0.3
00148        AMRA =AMKST
00149        GAMRA=GAMKST
00150        AMRB =AMKST
00151        GAMRB=GAMKST
00152       ELSEIF(MNUM.EQ.4) THEN
00153        PROB1=0.5
00154        PROB2=0.5
00155        AMRX =1.27
00156        GAMRX=0.3
00157        AMRA =AMKST
00158        GAMRA=GAMKST
00159        AMRB =AMKST
00160        GAMRB=GAMKST
00161       ELSEIF(MNUM.EQ.5) THEN
00162        PROB1=0.5
00163        PROB2=0.5
00164        AMRX =1.27
00165        GAMRX=0.3
00166        AMRA =AMKST
00167        GAMRA=GAMKST
00168        AMRB =AMRO
00169        GAMRB=GAMRO
00170       ELSEIF(MNUM.EQ.6) THEN
00171        PROB1=0.4
00172        PROB2=0.4
00173        AMRX =1.27
00174        GAMRX=0.3
00175        AMRA =AMRO
00176        GAMRA=GAMRO
00177        AMRB =AMKST
00178        GAMRB=GAMKST
00179       ELSEIF(MNUM.EQ.7) THEN
00180        PROB1=0.0
00181        PROB2=1.0
00182        AMRX =1.27
00183        GAMRX=0.9
00184        AMRA =AMRO
00185        GAMRA=GAMRO
00186        AMRB =AMRO
00187        GAMRB=GAMRO
00188       ELSEIF(MNUM.EQ.8) THEN
00189        PROB1=0.0
00190        PROB2=1.0
00191        AMRX =AMROP
00192        GAMRX=GAMROP
00193        AMRB =AMOM
00194        GAMRB=GAMOM
00195        AMRA =AMRO
00196        GAMRA=GAMRO
00197       ELSEIF(MNUM.EQ.101) THEN
00198        PROB1=.35
00199        PROB2=.35
00200        AMRX =1.2
00201        GAMRX=.46
00202        AMRB =AMOM
00203        GAMRB=GAMOM
00204        AMRA =AMOM
00205        GAMRA=GAMOM
00206       ELSEIF(MNUM.EQ.102) THEN
00207        PROB1=0.0
00208        PROB2=0.0
00209        AMRX =1.4
00210        GAMRX=.6
00211        AMRB =AMOM
00212        GAMRB=GAMOM
00213        AMRA =AMOM
00214        GAMRA=GAMOM
00215       ELSE
00216        PROB1=0.0
00217        PROB2=0.0
00218        AMRX =AMA1
00219        GAMRX=GAMA1
00220        AMRA =AMRO
00221        GAMRA=GAMRO
00222        AMRB =AMRO
00223        GAMRB=GAMRO
00224       ENDIF
00225 
00226       IF    (RR.LE.PROB1) THEN
00227        ICHAN=1
00228       ELSEIF(RR.LE.(PROB1+PROB2)) THEN
00229        ICHAN=2
00230         AX   =AMRA
00231         GX   =GAMRA
00232         AMRA =AMRB
00233         GAMRA=GAMRB
00234         AMRB =AX
00235         GAMRB=GX
00236         PX   =PROB1
00237         PROB1=PROB2
00238         PROB2=PX
00239       ELSE
00240        ICHAN=3
00241       ENDIF
00242 
00243       PROB3=1.0-PROB1-PROB2
00244       END
00245       SUBROUTINE INITDK
00246 
00247 
00248 
00249 
00250 
00251 
00252       COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
00253       REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
00254       COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00255      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00256      *                 ,AMK,AMKZ,AMKST,GAMKST
00257 
00258       REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00259      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00260      *                 ,AMK,AMKZ,AMKST,GAMKST
00261       COMMON / TAUBRA / GAMPRT(30),JLIST(30),NCHAN
00262       COMMON / TAUKLE / BRA1,BRK0,BRK0B,BRKS
00263       REAL*4            BRA1,BRK0,BRK0B,BRKS
00264 
00265 
00266 
00267 
00268 
00269 
00270       PARAMETER (NMODE=15,NM1=0,NM2=1,NM3=8,NM4=2,NM5=1,NM6=3)
00271       COMMON / TAUDCD /IDFFIN(9,NMODE),MULPIK(NMODE)
00272      &                ,NAMES
00273       CHARACTER NAMES(NMODE)*31
00274 
00275       CHARACTER OLDNAMES(7)*31
00276       CHARACTER*80 bxINIT
00277       PARAMETER (
00278      $  bxINIT ='(1x,1h*,g17.8,            16x, a31,a4,a4, 1x,1h*)'
00279      $ )
00280       REAL*4 PI,POL1(4)
00281 
00282 
00283 
00284 
00285 
00286 
00287 
00288 
00289 
00290 
00291 
00292 
00293 
00294 
00295 
00296 
00297 
00298 
00299 
00300       DIMENSION NOPIK(6,NMODE),NPIK(NMODE)
00301 
00302       DATA   NPIK  /                4,                    4,  
00303      1                              5,                    5,
00304      2                              6,                    6,
00305      3                              3,                    3,            
00306      4                              3,                    3,            
00307      5                              3,                    3,            
00308      6                              3,                    3,  
00309      7                              2                         /         
00310       DATA  NOPIK / -1,-1, 1, 2, 0, 0,     2, 2, 2,-1, 0, 0,  
00311      1              -1,-1, 1, 2, 2, 0,    -1,-1,-1, 1, 1, 0,  
00312      2              -1,-1,-1, 1, 1, 2,    -1,-1, 1, 2, 2, 2, 
00313      3              -3,-1, 3, 0, 0, 0,    -4,-1, 4, 0, 0, 0,  
00314      4              -3, 2,-4, 0, 0, 0,     2, 2,-3, 0, 0, 0,  
00315      5              -3,-1, 1, 0, 0, 0,    -1, 4, 2, 0, 0, 0,  
00316      6               9,-1, 2, 0, 0, 0,    -1, 2, 8, 0, 0, 0,
00317 
00318      7              -3,-4, 0, 0, 0, 0                         /
00319 
00320       NCHAN = NMODE + 7
00321       DO 1 I = 1,30
00322       IF (I.LE.NCHAN) THEN
00323         JLIST(I) = I
00324         IF(I.EQ. 1) GAMPRT(I) =0.1800 
00325         IF(I.EQ. 2) GAMPRT(I) =0.1751 
00326         IF(I.EQ. 3) GAMPRT(I) =0.1110 
00327         IF(I.EQ. 4) GAMPRT(I) =0.2515 
00328         IF(I.EQ. 5) GAMPRT(I) =0.1790 
00329         IF(I.EQ. 6) GAMPRT(I) =0.0071 
00330         IF(I.EQ. 7) GAMPRT(I) =0.0134
00331         IF(I.EQ. 8) GAMPRT(I) =0.0450
00332         IF(I.EQ. 9) GAMPRT(I) =0.0100
00333         IF(I.EQ.10) GAMPRT(I) =0.0009
00334         IF(I.EQ.11) GAMPRT(I) =0.0004 
00335         IF(I.EQ.12) GAMPRT(I) =0.0003 
00336         IF(I.EQ.13) GAMPRT(I) =0.0005 
00337         IF(I.EQ.14) GAMPRT(I) =0.0015 
00338         IF(I.EQ.15) GAMPRT(I) =0.0015 
00339         IF(I.EQ.16) GAMPRT(I) =0.0015 
00340         IF(I.EQ.17) GAMPRT(I) =0.0005
00341         IF(I.EQ.18) GAMPRT(I) =0.0050
00342         IF(I.EQ.19) GAMPRT(I) =0.0055
00343         IF(I.EQ.20) GAMPRT(I) =0.0017 
00344         IF(I.EQ.21) GAMPRT(I) =0.0013 
00345         IF(I.EQ.22) GAMPRT(I) =0.0010 
00346         IF(I.EQ. 1) OLDNAMES(I)='  TAU-  -->   E-               '
00347         IF(I.EQ. 2) OLDNAMES(I)='  TAU-  -->  MU-               '
00348         IF(I.EQ. 3) OLDNAMES(I)='  TAU-  -->  PI-               '
00349         IF(I.EQ. 4) OLDNAMES(I)='  TAU-  -->  PI-, PI0          '
00350         IF(I.EQ. 5) OLDNAMES(I)='  TAU-  -->  A1- (two subch)   '
00351         IF(I.EQ. 6) OLDNAMES(I)='  TAU-  -->   K-               '
00352         IF(I.EQ. 7) OLDNAMES(I)='  TAU-  -->  K*- (two subch)   '
00353         IF(I.EQ. 8) NAMES(I-7)='  TAU-  --> 2PI-,  PI0,  PI+   '
00354         IF(I.EQ. 9) NAMES(I-7)='  TAU-  --> 3PI0,        PI-   '
00355         IF(I.EQ.10) NAMES(I-7)='  TAU-  --> 2PI-,  PI+, 2PI0   '
00356         IF(I.EQ.11) NAMES(I-7)='  TAU-  --> 3PI-, 2PI+,        '
00357         IF(I.EQ.12) NAMES(I-7)='  TAU-  --> 3PI-, 2PI+,  PI0   '
00358         IF(I.EQ.13) NAMES(I-7)='  TAU-  --> 2PI-,  PI+, 3PI0   '
00359         IF(I.EQ.14) NAMES(I-7)='  TAU-  -->  K-, PI-,  K+      '
00360         IF(I.EQ.15) NAMES(I-7)='  TAU-  -->  K0, PI-, K0B      '
00361         IF(I.EQ.16) NAMES(I-7)='  TAU-  -->  K-,  K0, PI0      '
00362         IF(I.EQ.17) NAMES(I-7)='  TAU-  --> PI0  PI0   K-      '
00363         IF(I.EQ.18) NAMES(I-7)='  TAU-  -->  K-  PI-  PI+      '
00364         IF(I.EQ.19) NAMES(I-7)='  TAU-  --> PI-  K0B  PI0      '
00365         IF(I.EQ.20) NAMES(I-7)='  TAU-  --> ETA  PI-  PI0      '
00366         IF(I.EQ.21) NAMES(I-7)='  TAU-  --> PI-  PI0  GAM      '
00367         IF(I.EQ.22) NAMES(I-7)='  TAU-  -->  K-  K0            '
00368       ELSE
00369         JLIST(I) = 0
00370         GAMPRT(I) = 0.
00371       ENDIF
00372    1  CONTINUE
00373       DO I=1,NMODE
00374         MULPIK(I)=NPIK(I)
00375         DO J=1,MULPIK(I)
00376          IDFFIN(J,I)=NOPIK(J,I)
00377         ENDDO
00378       ENDDO
00379 
00380 
00381 
00382 
00383 
00384 
00385 
00386 
00387 
00388 
00389       BRA1=0.5
00390       BRK0=0.5
00391       BRK0B=0.5
00392       BRKS=0.6667
00393 
00394 
00395       GFERMI = 1.16637E-5
00396       CCABIB = 0.975
00397       GV     = 1.0
00398       GA     =-1.0
00399 
00400 
00401 
00402 
00403       SCABIB = SQRT(1.-CCABIB**2)
00404       PI =4.*ATAN(1.)
00405       GAMEL  = GFERMI**2*AMTAU**5/(192*PI**3)
00406 
00407        CALL DEXAY(-1,POL1)
00408 
00409       RETURN
00410       END
00411       FUNCTION DCDMAS(IDENT)
00412       COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00413      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00414      *                 ,AMK,AMKZ,AMKST,GAMKST
00415 
00416       REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00417      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00418      *                 ,AMK,AMKZ,AMKST,GAMKST
00419       IF      (IDENT.EQ. 1) THEN
00420         APKMAS=AMPI
00421       ELSEIF  (IDENT.EQ.-1) THEN
00422         APKMAS=AMPI
00423       ELSEIF  (IDENT.EQ. 2) THEN
00424         APKMAS=AMPIZ
00425       ELSEIF  (IDENT.EQ.-2) THEN
00426         APKMAS=AMPIZ
00427       ELSEIF  (IDENT.EQ. 3) THEN
00428         APKMAS=AMK
00429       ELSEIF  (IDENT.EQ.-3) THEN
00430         APKMAS=AMK
00431       ELSEIF  (IDENT.EQ. 4) THEN
00432         APKMAS=AMKZ
00433       ELSEIF  (IDENT.EQ.-4) THEN
00434         APKMAS=AMKZ
00435       ELSEIF  (IDENT.EQ. 8) THEN
00436         APKMAS=0.0001
00437       ELSEIF  (IDENT.EQ.-8) THEN
00438         APKMAS=0.0001
00439       ELSEIF  (IDENT.EQ. 9) THEN
00440         APKMAS=0.5488
00441       ELSEIF  (IDENT.EQ.-9) THEN
00442         APKMAS=0.5488
00443       ELSE
00444         PRINT *, 'STOP IN APKMAS, WRONG IDENT=',IDENT
00445         STOP
00446       ENDIF
00447       DCDMAS=APKMAS
00448       END
00449       FUNCTION LUNPIK(ID,ISGN)
00450       COMMON / TAUKLE / BRA1,BRK0,BRK0B,BRKS
00451       REAL*4            BRA1,BRK0,BRK0B,BRKS
00452       REAL*4 XIO(1)
00453       IDENT=ID*ISGN
00454       IF      (IDENT.EQ. 1) THEN
00455         IPKDEF=-211
00456       ELSEIF  (IDENT.EQ.-1) THEN
00457         IPKDEF= 211
00458       ELSEIF  (IDENT.EQ. 2) THEN
00459         IPKDEF=111
00460       ELSEIF  (IDENT.EQ.-2) THEN
00461         IPKDEF=111
00462       ELSEIF  (IDENT.EQ. 3) THEN
00463         IPKDEF=-321
00464       ELSEIF  (IDENT.EQ.-3) THEN
00465         IPKDEF= 321
00466       ELSEIF  (IDENT.EQ. 4) THEN
00467 
00468 
00469         CALL RANMAR(XIO,1)
00470         IF (XIO(1).GT.BRK0) THEN
00471           IPKDEF= 130
00472         ELSE
00473           IPKDEF= 310
00474         ENDIF
00475       ELSEIF  (IDENT.EQ.-4) THEN
00476 
00477 
00478         CALL RANMAR(XIO,1)
00479         IF (XIO(1).GT.BRK0B) THEN
00480           IPKDEF= 130
00481         ELSE
00482           IPKDEF= 310
00483         ENDIF
00484       ELSEIF  (IDENT.EQ. 8) THEN
00485         IPKDEF= 22
00486       ELSEIF  (IDENT.EQ.-8) THEN
00487         IPKDEF= 22
00488       ELSEIF  (IDENT.EQ. 9) THEN
00489         IPKDEF= 221
00490       ELSEIF  (IDENT.EQ.-9) THEN
00491         IPKDEF= 221
00492       ELSE
00493         PRINT *, 'STOP IN IPKDEF, WRONG IDENT=',IDENT
00494         STOP
00495       ENDIF
00496       LUNPIK=IPKDEF
00497       END
00498 
00499 
00500 
00501       SUBROUTINE TAURDF(KTO)
00502 
00503 
00504 
00505       COMMON / TAUKLE / BRA1,BRK0,BRK0B,BRKS
00506       REAL*4            BRA1,BRK0,BRK0B,BRKS
00507       COMMON / TAUBRA / GAMPRT(30),JLIST(30),NCHAN
00508       IF (KTO.EQ.1) THEN
00509 
00510 
00511       BRA1 = PKORB(4,1)
00512       BRKS = PKORB(4,3)
00513       BRK0  = PKORB(4,5)
00514       BRK0B  = PKORB(4,6)
00515       ELSE
00516 
00517 
00518       BRA1 = PKORB(4,2)
00519       BRKS = PKORB(4,4)
00520       BRK0  = PKORB(4,5)
00521       BRK0B  = PKORB(4,6)
00522       ENDIF
00523 
00524       END
00525 
00526       SUBROUTINE INIPHX(XK00)
00527 
00528 
00529 
00530 
00531       COMMON / QEDPRM /ALFINV,ALFPI,XK0
00532       REAL*8           ALFINV,ALFPI,XK0
00533       REAL*8 PI8,XK00
00534 
00535       PI8    = 4.D0*DATAN(1.D0)
00536       ALFINV = 137.03604D0
00537       ALFPI  = 1D0/(ALFINV*PI8)
00538       XK0=XK00
00539       END
00540 
00541       SUBROUTINE INIMAS
00542 
00543 
00544 
00545 
00546 
00547       COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00548      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00549      *                 ,AMK,AMKZ,AMKST,GAMKST
00550 
00551       REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00552      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00553      *                 ,AMK,AMKZ,AMKST,GAMKST
00554 
00555 
00556       AMTAU  = 1.7842
00557 
00558       AMTAU  = 1.777
00559       AMNUTA = 0.010
00560       AMEL   = 0.0005111
00561       AMNUE  = 0.0
00562       AMMU   = 0.105659 
00563       AMNUMU = 0.0
00564 
00565 
00566       AMPIZ  = 0.134964
00567       AMPI   = 0.139568
00568       AMRO   = 0.773
00569       GAMRO  = 0.145
00570 
00571       AMA1   = 1.251
00572       GAMA1  = 0.599
00573       AMK    = 0.493667
00574       AMKZ   = 0.49772
00575       AMKST  = 0.8921
00576       GAMKST = 0.0513
00577 
00578 
00579 
00580 
00581 
00582 
00583 
00584 
00585 
00586 
00587 
00588 
00589       AMA1   = 1.275   
00590       GAMA1  = 0.615   
00591 
00592 
00593 
00594 
00595 
00596 
00597       RETURN
00598       END
00599       subroutine bostdq(idir,vv,pp,q)
00600 
00601 
00602 
00603 
00604 
00605 
00606 
00607 
00608 
00609 
00610 
00611       implicit DOUBLE PRECISION (a-h,o-z)
00612       parameter (nout=6)
00613       DOUBLE PRECISION v(4),p(4),q(4),pp(4),vv(4)  
00614       save
00615 
00616       do 1 i=1,4
00617       v(i)=vv(i)
00618  1    p(i)=pp(i)
00619       amv=(v(4)**2-v(1)**2-v(2)**2-v(3)**2)
00620       if (amv.le.0d0) then
00621         write(6,*) 'bosstv: warning amv**2=',amv
00622       endif
00623       amv=sqrt(abs(amv))
00624       if (idir.eq.-1) then
00625         q(4)=( p(1)*v(1)+p(2)*v(2)+p(3)*v(3)+p(4)*v(4))/amv
00626         wsp =(q(4)+p(4))/(v(4)+amv)
00627       elseif (idir.eq.1) then
00628         q(4)=(-p(1)*v(1)-p(2)*v(2)-p(3)*v(3)+p(4)*v(4))/amv
00629         wsp =-(q(4)+p(4))/(v(4)+amv)
00630       else
00631         write(nout,*)' >>> boostv: wrong value of idir = ',idir
00632       endif
00633       q(1)=p(1)+wsp*v(1)
00634       q(2)=p(2)+wsp*v(2)
00635       q(3)=p(3)+wsp*v(3)
00636       end
00637         
00638 
00639 
00640 
00641 
00642 
00643 
00644 
00645