00001       PROGRAM TAUDEM
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010       COMMON  / / BLAN(10000)
00011       CHARACTER*7 DNAME
00012       COMMON / INOUT / INUT,IOUT
00013       DNAME='KKPI'
00014 
00015 
00016       INUT=5
00017       IOUT=6
00018       OPEN(IOUT,FILE="./tauola.output")
00019        OPEN(INUT,FILE="./dane.dat")
00020       KTORY=1
00021       CALL DECTES(KTORY)
00022       KTORY=2
00023       CALL DECTES(KTORY)
00024 
00025       END
00026       SUBROUTINE DECTES(KTORY)
00027 
00028       REAL POL(4)
00029       DOUBLE PRECISION HH(4)
00030 
00031       COMMON / JAKI   /  JAK1,JAK2,JAKP,JAKM,KTOM
00032       COMMON / IDFC  / IDFF
00033 
00034       COMMON / INOUT /  INUT,IOUT
00035 
00036       COMMON / IDPART / IA1
00037 
00038       COMMON /PTAU/ PTAU
00039       COMMON / TAURAD / XK0DEC,ITDKRC
00040       REAL*8            XK0DEC
00041       COMMON /TESTA1/ KEYA1
00042 
00043 
00044 
00045 
00046 
00047 
00048 
00049 
00050 
00051 
00052 
00053 
00054 
00055       NINP=INUT
00056       NOUT=IOUT
00057  3000 FORMAT(A80)
00058  3001 FORMAT(8I2)
00059  3002 FORMAT(I10)
00060  3003 FORMAT(F10.0)
00061       IF (KTORY.EQ.1) THEN
00062       READ( NINP,3000) TESTIT
00063       WRITE(NOUT,3000) TESTIT
00064       READ( NINP,3001) KAT1,KAT2,KAT3,KAT4,KAT5,KAT6
00065       READ( NINP,3002) NEVT,JAK1,JAK2,ITDKRC
00066       READ( NINP,3003) PTAU,XK0DEC
00067       ENDIF
00068 
00069 
00070       WRITE(NOUT,'(6A6/6I6)')
00071      $ 'KAT1','KAT2','KAT3','KAT4','KAT5','KAT6',
00072      $  KAT1 , KAT2 , KAT3 , KAT4 , KAT5 , KAT6
00073       WRITE(NOUT,'(4A12/4I12)')
00074      $  'NEVT','JAK1','JAK2','ITDKRC',
00075      $   NEVT,  JAK1 , JAK2 , ITDKRC
00076       WRITE(NOUT,'(2A12/2F12.6)')
00077      $ 'PTAU','XK0DEC',
00078      $  PTAU , XK0DEC
00079 
00080       JAK=0
00081 
00082 
00083 
00084       IF (KTORY.EQ.1) THEN
00085         IDFF=-15
00086       ELSE
00087         IDFF= 15
00088       ENDIF
00089 
00090 
00091       KTO=2
00092       IF (KTO.NE.2) THEN
00093         PRINT *, 'for the sake of these tests KTO has to be 2'
00094         PRINT *, 'to change tau- to tau+ change IDFF from -15 to 15'
00095         STOP
00096       ENDIF
00097 
00098       POL(1)=0.
00099       POL(2)=0.
00100       POL(3)=.9
00101 
00102 
00103 
00104       NEVTES=10
00105       NEVTES=NEVT
00106       PRINT *, 'NEVTES= ',NEVTES
00107       WRITE(IOUT,7011) KEYA1
00108 
00109       IF (KTORY.EQ.1) THEN
00110          WRITE(IOUT,7001) JAK,IDFF,POL(3),PTAU
00111       ELSE
00112          WRITE(IOUT,7004) JAK,IDFF,POL(3),PTAU
00113       ENDIF
00114 
00115 
00116         CALL INIMAS
00117         CALL INITDK
00118   
00119         CALL INIPHY(0.1D0)
00120       IF (KTORY.EQ.1) THEN
00121          CALL DEXAY(-1,POL)
00122       ELSE
00123          CALL DEKAY(-1,HH)
00124       ENDIF
00125 
00126 
00127 
00128       NEV=0
00129       DO 300 IEV=1,NEVTES
00130       NEV=NEV+1
00131 
00132 
00133 
00134       CALL TAUFIL
00135 
00136       IF (KTORY.EQ.1) THEN
00137          CALL DEXAY(KTO,POL)
00138       ELSE
00139          CALL DEKAY(KTO,HH)
00140          CALL DEKAY(KTO+10,HH)
00141       ENDIF
00142       CALL LUHEPC(2)
00143       IF(IEV.LE.44) THEN
00144        WRITE(IOUT,7002) IEV
00145        IF (KTORY.NE.1) THEN
00146          WRITE(IOUT,7003) HH
00147        ENDIF
00148 
00149       CALL LULIST(2)
00150       ENDIF
00151       IPRI=MOD(NEV,1000)
00152 
00153       IF(IPRI.EQ.1) write(*,*) ' event no: ',NEV,' NEVTES: ',NEVTES
00154   300 CONTINUE
00155   301 CONTINUE
00156 
00157 
00158 
00159       IF (KTORY.EQ.1) THEN
00160          CALL DEXAY(100,POL)
00161       ELSE
00162          CALL DEKAY(100,HH)
00163       ENDIF
00164       RETURN
00165  7001 FORMAT(//4(/1X,15(5H=====))
00166      $ /,' ',     19X,'  NON INITIALIZED BBB-VERSION OF TAUOLA ',9X,1H ,
00167      $ /,' ',     19X,'    TESTS OF TAU DECAY ROUTINES         ',9X,1H ,
00168      $ /,' ',     19X,'    INTERFACE OF THE KORAL-Z TYPE       ',9X,1H ,
00169      $  2(/,1X,15(5H=====)),
00170      $ /,5X ,'JAK   =',I7  ,'  KEY DEFINING DECAY TYPE         ',9X,1H ,
00171      $ /,5X ,'IDFF  =',I7  ,'  LUND IDENTIFIER FOR FIRST TAU   ',9X,1H ,
00172      $ /,5X ,'POL(3)=',F7.2,'  THIRD COMPONENT OF TAU POLARIZ. ',9X,1H ,
00173      $ /,5X ,'PTAU  =',F7.2,'  THIRD COMPONENT OF TAU MOM. GEV ',9X,1H ,
00174      $  2(/,1X,15(5H=====))/)
00175  7002 FORMAT(///1X, '===== EVENT NO.',I4,1X,5H=====)
00176  7003 FORMAT(5X,'POLARIMETRIC VECTOR: ',
00177      $       7X,'HH(1)',7X,'HH(2)',7X,'HH(3)',7X,'HH(4)',
00178      $ /,    5X,'                     ', 4(1X,F11.8)   )
00179  7004 FORMAT(//4(/1X,15(5H=====))
00180      $ /,'  ',     19X,' NON INITIALIZED BBB-VERSION OF TAUOLA ',9X,1H ,
00181      $ /,'  ',     19X,'    TESTS OF TAU DECAY ROUTINES        ',9X,1H ,
00182      $ /,'  ',     19X,'    INTERFACE OF THE KORAL-B TYPE      ',9X,1H ,
00183      $  2(/,1X,15(5H=====)),
00184      $ /,5X ,'JAK   =',I7  ,'  KEY DEFINING DECAY TYPE         ',9X,1H ,
00185      $ /,5X ,'IDFF  =',I7  ,'  LUND IDENTIFIER FOR FIRST TAU   ',9X,1H ,
00186      $ /,5X ,'POL(3)=',F7.2,'  THIRD COMPONENT OF TAU POLARIZ. ',9X,1H ,
00187      $ /,5X ,'PTAU  =',F7.2,'  THIRD COMPONENT OF TAU MOM. GEV ',9X,1H ,
00188      $  2(/,1X,15(5H=====))/)
00189  7011 FORMAT(///1X, '===== TYPE OF CURRENT',I4,1X,5H=====)
00190       END
00191       SUBROUTINE CHOICE(MNUM,RR,ICHAN,PROB1,PROB2,PROB3,
00192      $            AMRX,GAMRX,AMRA,GAMRA,AMRB,GAMRB)
00193       COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00194      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00195      *                 ,AMK,AMKZ,AMKST,GAMKST
00196 
00197       REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00198      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00199      *                 ,AMK,AMKZ,AMKST,GAMKST
00200 
00201       AMROP=1.1
00202       GAMROP=0.36
00203       AMOM=.782
00204       GAMOM=0.0084
00205 
00206       IF(MNUM.EQ.0) THEN
00207        PROB1=0.5
00208        PROB2=0.5
00209        AMRX =AMA1
00210        GAMRX=GAMA1
00211        AMRA =AMRO
00212        GAMRA=GAMRO
00213        AMRB =AMRO
00214        GAMRB=GAMRO
00215       ELSEIF(MNUM.EQ.1) THEN
00216        PROB1=0.5
00217        PROB2=0.5
00218        AMRX =1.57
00219        GAMRX=0.9
00220        AMRB =AMKST
00221        GAMRB=GAMKST
00222        AMRA =AMRO
00223        GAMRA=GAMRO
00224       ELSEIF(MNUM.EQ.2) THEN
00225        PROB1=0.5
00226        PROB2=0.5
00227        AMRX =1.57
00228        GAMRX=0.9
00229        AMRB =AMKST
00230        GAMRB=GAMKST
00231        AMRA =AMRO
00232        GAMRA=GAMRO
00233       ELSEIF(MNUM.EQ.3) THEN
00234        PROB1=0.5
00235        PROB2=0.5
00236        AMRX =1.27
00237        GAMRX=0.3
00238        AMRA =AMKST
00239        GAMRA=GAMKST
00240        AMRB =AMKST
00241        GAMRB=GAMKST
00242       ELSEIF(MNUM.EQ.4) THEN
00243        PROB1=0.5
00244        PROB2=0.5
00245        AMRX =1.27
00246        GAMRX=0.3
00247        AMRA =AMKST
00248        GAMRA=GAMKST
00249        AMRB =AMKST
00250        GAMRB=GAMKST
00251       ELSEIF(MNUM.EQ.5) THEN
00252        PROB1=0.5
00253        PROB2=0.5
00254        AMRX =1.27
00255        GAMRX=0.3
00256        AMRA =AMKST
00257        GAMRA=GAMKST
00258        AMRB =AMRO
00259        GAMRB=GAMRO
00260       ELSEIF(MNUM.EQ.6) THEN
00261        PROB1=0.4
00262        PROB2=0.4
00263        AMRX =1.27
00264        GAMRX=0.3
00265        AMRA =AMRO
00266        GAMRA=GAMRO
00267        AMRB =AMKST
00268        GAMRB=GAMKST
00269       ELSEIF(MNUM.EQ.7) THEN
00270        PROB1=0.0
00271        PROB2=1.0
00272        AMRX =1.27
00273        GAMRX=0.9
00274        AMRA =AMRO
00275        GAMRA=GAMRO
00276        AMRB =AMRO
00277        GAMRB=GAMRO
00278       ELSEIF(MNUM.EQ.8) THEN
00279        PROB1=0.0
00280        PROB2=1.0
00281        AMRX =AMROP
00282        GAMRX=GAMROP
00283        AMRB =AMOM
00284        GAMRB=GAMOM
00285        AMRA =AMRO
00286        GAMRA=GAMRO
00287       ELSEIF(MNUM.EQ.9) THEN
00288        PROB1=0.5
00289        PROB2=0.5
00290        AMRX =AMA1
00291        GAMRX=GAMA1
00292        AMRA =AMRO
00293        GAMRA=GAMRO
00294        AMRB =AMRO
00295        GAMRB=GAMRO
00296       ELSEIF(MNUM.EQ.101) THEN
00297        PROB1=.35
00298        PROB2=.35
00299        AMRX =1.2
00300        GAMRX=.46
00301        AMRB =AMOM
00302        GAMRB=GAMOM
00303        AMRA =AMOM
00304        GAMRA=GAMOM
00305       ELSEIF(MNUM.EQ.102) THEN
00306        PROB1=0.0
00307        PROB2=0.0
00308        AMRX =1.4
00309        GAMRX=.6
00310        AMRB =AMOM
00311        GAMRB=GAMOM
00312        AMRA =AMOM
00313        GAMRA=GAMOM
00314       ELSEIF(MNUM.GE.103.AND.MNUM.LE.112) THEN
00315        PROB1=0.0
00316        PROB2=0.0
00317        AMRX =1.4
00318        GAMRX=.6
00319        AMRB =AMOM
00320        GAMRB=GAMOM
00321        AMRA =AMOM
00322        GAMRA=GAMOM
00323 
00324 
00325       ELSE
00326        PROB1=0.0
00327        PROB2=0.0
00328        AMRX =AMA1
00329        GAMRX=GAMA1
00330        AMRA =AMRO
00331        GAMRA=GAMRO
00332        AMRB =AMRO
00333        GAMRB=GAMRO
00334       ENDIF
00335 
00336       IF    (RR.LE.PROB1) THEN
00337        ICHAN=1
00338       ELSEIF(RR.LE.(PROB1+PROB2)) THEN
00339        ICHAN=2
00340         AX   =AMRA
00341         GX   =GAMRA
00342         AMRA =AMRB
00343         GAMRA=GAMRB
00344         AMRB =AX
00345         GAMRB=GX
00346         PX   =PROB1
00347         PROB1=PROB2
00348         PROB2=PX
00349       ELSE
00350        ICHAN=3
00351       ENDIF
00352 
00353       PROB3=1.0-PROB1-PROB2
00354       END
00355       SUBROUTINE INITDK
00356 
00357 
00358 
00359 
00360 
00361 
00362       COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
00363       REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
00364       COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00365      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00366      *                 ,AMK,AMKZ,AMKST,GAMKST
00367 
00368       REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00369      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00370      *                 ,AMK,AMKZ,AMKST,GAMKST
00371       COMMON / TAUBRA / GAMPRT(500),JLIST(500),NCHAN
00372       COMMON / TAUKLE / BRA1,BRK0,BRK0B,BRKS
00373       REAL*4            BRA1,BRK0,BRK0B,BRKS
00374 
00375       PARAMETER (NMODE=86,NM1=0,NM2=11,NM3=19,NM4=22,NM5=21,NM6=13)
00376       COMMON / TAUDCD /IDFFIN(9,NMODE),MULPIK(NMODE)
00377      &                ,NAMES
00378       CHARACTER NAMES(NMODE)*31
00379 
00380       CHARACTER OLDNAMES(7)*31
00381       CHARACTER*80 bxINIT
00382       PARAMETER (
00383      $  bxINIT ='(1x,1h*,g17.8,            16x, a31,a4,a4, 1x,1h*)'
00384      $ )
00385       REAL*4 PI,POL1(4)
00386 
00387 
00388 
00389 
00390 
00391 
00392 
00393 
00394 
00395 
00396 
00397 
00398 
00399 
00400 
00401 
00402 
00403 
00404 
00405 
00406 
00407       DIMENSION NOPIK(9,NMODE),NPIK(NMODE)
00408 
00409       DATA   NPIK  /                4,                    4,    
00410      a                              4,                    4,    
00411      b                              4,                    4,
00412      c                              4,                    4,
00413      d                              4,                    4,
00414      e                              4,                    4,    
00415      e                              4,                    4,    
00416      e                              4,                    4,    
00417      e                              4,                    4,    
00418      e                              4,                    4,    
00419      e                              4,                    4,    
00420      1                              5,       
00421      a                              5,                    5,    
00422      b                              5,                    5,
00423      c                              5,                    5,
00424      d                              5,                    5,
00425      e                              5,                    5,    
00426      a                              5,                    5,    
00427      b                              5,                    5,
00428      c                              5,                    5,
00429      d                              5,                    5,
00430      e                              5,                    5,    
00431      x                                                    5,    
00432      2                              6,                    6,
00433      a                              6,                    6,    
00434      b                              6,                    6,    
00435      c                              6,                    6,    
00436      d                              6,                    6,    
00437      e                              6,                    6,    
00438      3                              3,                    3,            
00439      4                              3,                    3,            
00440      5                              3,                    3,            
00441      6                              3,                    3,  
00442      7                              3,                          
00443      a                              3,                    3,    
00444      a                              3,                    3,    
00445      a                              3,                    3,    
00446      a                              3,                    3,    
00447      a                              3,                    3,    
00448      8                                                    2, 
00449      9                              2,                    2,    
00450      9                              2,                    2,    
00451      9                              2,                    2,    
00452      9                              2,                    2,    
00453      9                              2,                    2/    
00454 
00455       DATA  NOPIK / -1,-1, 1, 2, 0, 0,3*0,     2, 2, 2,-1, 0, 0,3*0,  
00456      a               4, 2, 2,-1, 0, 0,3*0,     4, 2, 2,-1, 0, 0,3*0,     
00457      b               4, 2, 2,-1, 0, 0,3*0,     4, 2, 2,-1, 0, 0,3*0,     
00458      c               4, 2, 2,-1, 0, 0,3*0,     4, 2, 2,-1, 0, 0,3*0,     
00459      d               4, 2, 2,-1, 0, 0,3*0,     4, 2, 2,-1, 0, 0,3*0,     
00460      e               4, 2, 2,-1, 0, 0,3*0,     4, 2, 2,-1, 0, 0,3*0,     
00461      a               4, 2, 2,-1, 0, 0,3*0,     4, 2, 2,-1, 0, 0,3*0,     
00462      b               4, 2, 2,-1, 0, 0,3*0,     4, 2, 2,-1, 0, 0,3*0,     
00463      c               4, 2, 2,-1, 0, 0,3*0,     4, 2, 2,-1, 0, 0,3*0,     
00464      d               4, 2, 2,-1, 0, 0,3*0,     4, 2, 2,-1, 0, 0,3*0,     
00465      e               4, 2, 2,-1, 0, 0,3*0,     4, 2, 2,-1, 0, 0,3*0,     
00466      1              -1,-1, 1, 2, 2, 0,3*0,  
00467      a              -1,-1, 1, 2, 2, 0,3*0,     2, 2, 2, 2, 2, 0,3*0,     
00468      a               1,-1,-1, 2, 2, 0,3*0,    -1, 2, 2, 2, 2, 0,3*0,     
00469      a              -1, 1, 1,-1,-1, 0,3*0,    -1,-1, 1, 2, 4, 0,3*0,     
00470      a              -1,-1, 1, 2, 4, 0,3*0,    -1,-1, 1, 2, 4, 0,3*0,     
00471      a              -1,-1, 1, 2, 4, 0,3*0,    -1,-1, 1, 2, 4, 0,3*0,     
00472      a              -1,-1, 1, 2, 4, 0,3*0,    -1,-1, 1, 2, 4, 0,3*0,     
00473      a              -1,-1, 1, 2, 4, 0,3*0,    -1,-1, 1, 2, 4, 0,3*0,     
00474      a              -1,-1, 1, 2, 4, 0,3*0,    -1,-1, 1, 2, 4, 0,3*0,     
00475      a              -1,-1, 1, 2, 4, 0,3*0,    -1,-1, 1, 2, 4, 0,3*0,     
00476      a              -1,-1, 1, 2, 4, 0,3*0,    -1,-1, 1, 2, 4, 0,3*0,     
00477      x                                        -1,-1,-1, 1, 1, 0,3*0,     
00478      2              -1,-1,-1, 1, 1, 2,3*0,    -1,-1, 1, 2, 2, 2,3*0, 
00479      a              -1,-1,-1, 1, 1, 1,3*0,    -1,-1, 1, 2, 2, 1,3*0,     
00480      b              -1,-1,-1, 1, 1, 1,3*0,    -1,-1, 1, 2, 2, 1,3*0,     
00481      c              -1,-1,-1, 1, 1, 1,3*0,    -1,-1, 1, 2, 2, 1,3*0,     
00482      d              -1,-1,-1, 1, 1, 1,3*0,    -1,-1, 1, 2, 2, 1,3*0,     
00483      e              -1,-1,-1, 1, 1, 1,3*0,    -1,-1, 1, 2, 2, 1,3*0,     
00484      3              -3,-1, 3, 0, 0, 0,3*0,    -4,-1, 4, 0, 0, 0,3*0,  
00485      4              -3, 2,-4, 0, 0, 0,3*0,     2, 2,-3, 0, 0, 0,3*0,  
00486      5              -3,-1, 1, 0, 0, 0,3*0,    -1, 4, 2, 0, 0, 0,3*0,  
00487      6               9,-1, 2, 0, 0, 0,3*0,    -1, 2, 8, 0, 0, 0,3*0,
00488 
00489 
00490 
00491      7               2, 2,-1, 0, 0, 0,3*0,                           
00492      7               2, 2, 2, 0, 0, 0,3*0,     2, 2, 2, 0, 0, 0,3*0, 
00493      7               2, 2, 2, 0, 0, 0,3*0,     2, 2, 2, 0, 0, 0,3*0, 
00494      7               2, 2, 2, 0, 0, 0,3*0,     2, 2, 2, 0, 0, 0,3*0, 
00495      7               2, 2, 2, 0, 0, 0,3*0,     2, 2, 2, 0, 0, 0,3*0, 
00496      7               2, 2, 2, 0, 0, 0,3*0,     2, 2, 2, 0, 0, 0,3*0, 
00497 
00498      8                                        -3,-4, 0, 0, 0, 0,3*0,
00499      8               -3,-3, 0, 0, 0, 0,3*0,   -3,-3, 0, 0, 0, 0,3*0, 
00500      8               -3,-3, 0, 0, 0, 0,3*0,   -3,-3, 0, 0, 0, 0,3*0, 
00501      8               -3,-3, 0, 0, 0, 0,3*0,   -3,-3, 0, 0, 0, 0,3*0, 
00502      8               -3,-3, 0, 0, 0, 0,3*0,   -3,-3, 0, 0, 0, 0,3*0, 
00503      8               -3,-3, 0, 0, 0, 0,3*0,   -3,-3, 0, 0, 0, 0,3*0 /
00504 
00505 
00506 
00507       NCHAN = NMODE + 7
00508       DO 1 I = 1,500
00509       IF (I.LE.NCHAN) THEN
00510         JLIST(I) = I
00511 
00512         IF(I.EQ. 1) GAMPRT(I) =0.1800 
00513         IF(I.EQ. 2) GAMPRT(I) =0.1751 
00514         IF(I.EQ. 3) GAMPRT(I) =0.1110 
00515         IF(I.EQ. 4) GAMPRT(I) =0.2515 
00516         IF(I.EQ. 5) GAMPRT(I) =0.1790 /2
00517         IF(I.EQ. 6) GAMPRT(I) =0.0071 
00518         IF(I.EQ. 7) GAMPRT(I) =0.0134
00519         IF(I.EQ. 8) GAMPRT(I) =0.0450
00520         IF(I.EQ. 9) GAMPRT(I) =0.0100
00521 
00522         IF(I.EQ.30) GAMPRT(I) =0.0009
00523         IF(I.EQ.33) GAMPRT(I) =0.004
00524         IF(I.EQ.34) GAMPRT(I) =0.002
00525         IF(I.EQ.35) GAMPRT(I) =0.001
00526 
00527         IF(I.EQ.51) GAMPRT(I) =0.0004 
00528         IF(I.EQ.52) GAMPRT(I) =0.0003 
00529         IF(I.EQ.53) GAMPRT(I) =0.0005 
00530 
00531         IF(I.EQ.64) GAMPRT(I) =0.0015 
00532         IF(I.EQ.65) GAMPRT(I) =0.0015 
00533         IF(I.EQ.66) GAMPRT(I) =0.0015 
00534         IF(I.EQ.67) GAMPRT(I) =0.0005
00535         IF(I.EQ.68) GAMPRT(I) =0.0050
00536         IF(I.EQ.69) GAMPRT(I) =0.0055
00537         IF(I.EQ.70) GAMPRT(I) =0.0017 
00538         IF(I.EQ.71) GAMPRT(I) =0.0013
00539         IF(I.EQ.72) GAMPRT(I) =0.1790 /2  
00540 
00541         IF(I.EQ.83) GAMPRT(I) =0.0010 
00542 
00543         IF(I.EQ. 1) OLDNAMES(I)='  TAU-  -->   E-               '
00544         IF(I.EQ. 2) OLDNAMES(I)='  TAU-  -->  MU-               '
00545         IF(I.EQ. 3) OLDNAMES(I)='  TAU-  -->  PI-               '
00546         IF(I.EQ. 4) OLDNAMES(I)='  TAU-  -->  PI-, PI0          '
00547         IF(I.EQ. 5) OLDNAMES(I)='  TAU-  -->  PI-, PI-,  PI+    '
00548         IF(I.EQ. 6) OLDNAMES(I)='  TAU-  -->   K-               '
00549         IF(I.EQ. 7) OLDNAMES(I)='  TAU-  -->  K*- (two subch)   '
00550         IF(I.EQ. 8) NAMES(I-7)='  TAU-  --> 2PI-,  PI0,  PI+   '
00551         IF(I.EQ. 9) NAMES(I-7)='  TAU-  --> 3PI0,        PI-   '
00552 
00553         IF(I.EQ.10) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00554         IF(I.EQ.11) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00555         IF(I.EQ.12) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00556         IF(I.EQ.13) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00557         IF(I.EQ.14) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00558         IF(I.EQ.15) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00559         IF(I.EQ.16) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00560         IF(I.EQ.17) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00561         IF(I.EQ.18) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00562         IF(I.EQ.19) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00563         IF(I.EQ.20) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00564         IF(I.EQ.21) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00565         IF(I.EQ.22) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00566         IF(I.EQ.23) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00567         IF(I.EQ.24) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00568         IF(I.EQ.25) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00569         IF(I.EQ.26) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00570         IF(I.EQ.27) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00571         IF(I.EQ.28) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00572         IF(I.EQ.29) NAMES(I-7)='  TAU-  --> xxxxxxx4xxxxxxxx   '  
00573 
00574 
00575         IF(I.EQ.30) NAMES(I-7)='  TAU-  --> 2PI-, PI+, 2PI0 old'
00576 
00577         IF(I.EQ.31) NAMES(I-7)='  TAU-  --> a1 --> rho omega   '  
00578         IF(I.EQ.32) NAMES(I-7)='  TAU-  --> benchmark curr     '  
00579         IF(I.EQ.33) NAMES(I-7)='  TAU-  --> 2PI0, 2PI-,  PI+   '  
00580         IF(I.EQ.34) NAMES(I-7)='  TAU-  --> PI- 4PI0           '  
00581         IF(I.EQ.35) NAMES(I-7)='  TAU-  --> 3PI- 2PI+          '  
00582         IF(I.EQ.36) NAMES(I-7)='  TAU-  --> xxxxxxxxx5xxxxxx   '  
00583         IF(I.EQ.37) NAMES(I-7)='  TAU-  --> xxxxxxxxx5xxxxxx   '  
00584         IF(I.EQ.38) NAMES(I-7)='  TAU-  --> xxxxxxxxx5xxxxxx   '  
00585         IF(I.EQ.39) NAMES(I-7)='  TAU-  --> xxxxxxxxx5xxxxxx   '  
00586         IF(I.EQ.40) NAMES(I-7)='  TAU-  --> xxxxxxxxx5xxxxxx   '  
00587 
00588         IF(I.EQ.41) NAMES(I-7)='  TAU-  --> xxxxxxxxx5xxxxxx   '  
00589         IF(I.EQ.42) NAMES(I-7)='  TAU-  --> xxxxxxxxx5xxxxxx   '  
00590         IF(I.EQ.43) NAMES(I-7)='  TAU-  --> xxxxxxxxx5xxxxxx   '  
00591         IF(I.EQ.44) NAMES(I-7)='  TAU-  --> xxxxxxxxx5xxxxxx   '  
00592         IF(I.EQ.45) NAMES(I-7)='  TAU-  --> xxxxxxxxx5xxxxxx   '  
00593         IF(I.EQ.46) NAMES(I-7)='  TAU-  --> xxxxxxxxx5xxxxxx   '  
00594         IF(I.EQ.47) NAMES(I-7)='  TAU-  --> xxxxxxxxx5xxxxxx   '  
00595         IF(I.EQ.48) NAMES(I-7)='  TAU-  --> xxxxxxxxx5xxxxxx   '  
00596         IF(I.EQ.49) NAMES(I-7)='  TAU-  --> xxxxxxxxx5xxxxxx   '  
00597         IF(I.EQ.50) NAMES(I-7)='  TAU-  --> xxxxxxxxx5xxxxxx   '  
00598 
00599         IF(I.EQ.51) NAMES(I-7)='  TAU-  --> 3PI-, 2PI+,        '
00600         IF(I.EQ.52) NAMES(I-7)='  TAU-  --> 3PI-, 2PI+,  PI0   '
00601         IF(I.EQ.53) NAMES(I-7)='  TAU-  --> 2PI-,  PI+, 3PI0   '
00602         IF(I.EQ.54) NAMES(I-7)='  TAU-  --> xxxxxxxxxnxxxxxx   '  
00603         IF(I.EQ.55) NAMES(I-7)='  TAU-  --> xxxxxxxxxnxxxxxx   '  
00604         IF(I.EQ.56) NAMES(I-7)='  TAU-  --> xxxxxxxxxnxxxxxx   '  
00605         IF(I.EQ.57) NAMES(I-7)='  TAU-  --> xxxxxxxxxnxxxxxx   '  
00606         IF(I.EQ.58) NAMES(I-7)='  TAU-  --> xxxxxxxxxnxxxxxx   '  
00607         IF(I.EQ.59) NAMES(I-7)='  TAU-  --> xxxxxxxxxnxxxxxx   '  
00608         IF(I.EQ.60) NAMES(I-7)='  TAU-  --> xxxxxxxxxnxxxxxx   '  
00609         IF(I.EQ.61) NAMES(I-7)='  TAU-  --> xxxxxxxxxnxxxxxx   '  
00610         IF(I.EQ.62) NAMES(I-7)='  TAU-  --> xxxxxxxxxnxxxxxx   '  
00611         IF(I.EQ.63) NAMES(I-7)='  TAU-  --> xxxxxxxxxnxxxxxx   '  
00612 
00613         IF(I.EQ.64) NAMES(I-7)='  TAU-  -->  K-, PI-,  K+      '
00614         IF(I.EQ.65) NAMES(I-7)='  TAU-  -->  K0, PI-, K0B      '
00615 
00616         IF(I.EQ.66) NAMES(I-7)='  TAU-  -->  K-,  K0, PI0      '
00617 
00618         IF(I.EQ.67) NAMES(I-7)='  TAU-  --> PI0  PI0   K-      '
00619         IF(I.EQ.68) NAMES(I-7)='  TAU-  -->  K-  PI-  PI+      '
00620         IF(I.EQ.69) NAMES(I-7)='  TAU-  --> PI-  K0B  PI0      '
00621         IF(I.EQ.70) NAMES(I-7)='  TAU-  --> ETA  PI-  PI0      '
00622         IF(I.EQ.71) NAMES(I-7)='  TAU-  --> PI-  PI0  GAM      '
00623         IF(I.EQ.72) NAMES(I-7)='  TAU-  --> PI-  PI0  PI0      '
00624         IF(I.EQ.73) NAMES(I-7)='  TAU-  --> xxxxxxxxx3xxxxxx   '  
00625         IF(I.EQ.74) NAMES(I-7)='  TAU-  --> xxxxxxxxx3xxxxxx   '  
00626         IF(I.EQ.75) NAMES(I-7)='  TAU-  --> xxxxxxxxx3xxxxxx   '  
00627         IF(I.EQ.76) NAMES(I-7)='  TAU-  --> xxxxxxxxx3xxxxxx   '  
00628         IF(I.EQ.77) NAMES(I-7)='  TAU-  --> xxxxxxxxx3xxxxxx   '  
00629         IF(I.EQ.78) NAMES(I-7)='  TAU-  --> xxxxxxxxx3xxxxxx   '  
00630         IF(I.EQ.79) NAMES(I-7)='  TAU-  --> xxxxxxxxx3xxxxxx   '  
00631         IF(I.EQ.80) NAMES(I-7)='  TAU-  --> xxxxxxxxx3xxxxxx   '  
00632         IF(I.EQ.81) NAMES(I-7)='  TAU-  --> xxxxxxxxx3xxxxxx   '  
00633         IF(I.EQ.82) NAMES(I-7)='  TAU-  --> xxxxxxxxx3xxxxxx   '  
00634  
00635 
00636         IF(I.EQ.83) NAMES(I-7)='  TAU-  -->  K-  K0            '
00637         IF(I.EQ.84) NAMES(I-7)='  TAU-  --> xxxxxxxxx2xxxxxx   '  
00638         IF(I.EQ.85) NAMES(I-7)='  TAU-  --> xxxxxxxxx2xxxxxx   '  
00639         IF(I.EQ.86) NAMES(I-7)='  TAU-  --> xxxxxxxxx2xxxxxx   '  
00640         IF(I.EQ.87) NAMES(I-7)='  TAU-  --> xxxxxxxxx2xxxxxx   '  
00641         IF(I.EQ.88) NAMES(I-7)='  TAU-  --> xxxxxxxxx2xxxxxx   '  
00642         IF(I.EQ.89) NAMES(I-7)='  TAU-  --> xxxxxxxxx2xxxxxx   '  
00643         IF(I.EQ.90) NAMES(I-7)='  TAU-  --> xxxxxxxxx2xxxxxx   '  
00644         IF(I.EQ.91) NAMES(I-7)='  TAU-  --> xxxxxxxxx2xxxxxx   '  
00645         IF(I.EQ.92) NAMES(I-7)='  TAU-  --> xxxxxxxxx2xxxxxx   '  
00646         IF(I.EQ.93) NAMES(I-7)='  TAU-  --> xxxxxxxxx2xxxxxx   '  
00647 
00648       ELSE
00649         JLIST(I) = 0
00650         GAMPRT(I) = 0.
00651       ENDIF
00652    1  CONTINUE
00653       DO I=1,NMODE
00654         MULPIK(I)=NPIK(I)
00655         DO J=1,MULPIK(I)
00656          IDFFIN(J,I)=NOPIK(J,I)
00657         ENDDO
00658       ENDDO
00659         DO I=1,NCHAN
00660          GAMPRT(I) = 1D0/NCHAN
00661         ENDDO
00662           gamprt(31)=gamprt(31)*0.001
00663           gamprt(32)=gamprt(32)*0.001
00664         do k=1,10  
00665           gamprt(36+k)=gamprt(36+k)*0.001
00666           gamprt(30-k)=gamprt(30-k)*0.001
00667           gamprt(30+10+k)=gamprt(30+10+k)*0.001
00668           gamprt(30-10-k)=gamprt(30-10-k)*0.001
00669 
00670           gamprt(53+k)=gamprt(53+k)*0.001
00671           gamprt(72+k)=gamprt(72+k)*0.001
00672           gamprt(83+k)=gamprt(83+k)*0.001
00673         enddo
00674          GAMPRT(72)=GAMPRT(72)/2
00675          GAMPRT(5)=GAMPRT(5)/2
00676 
00677 
00678 
00679 
00680 
00681 
00682 
00683 
00684 
00685 
00686 
00687       BRA1=1D0 
00688       BRK0=0.5
00689       BRK0B=0.5
00690       BRKS=0.6667
00691 
00692 
00693       GFERMI = 1.16637E-5
00694       CCABIB = 0.975
00695       GV     = 1.0
00696       GA     =-1.0
00697 
00698 
00699 
00700 
00701       SCABIB = SQRT(1.-CCABIB**2)
00702       PI =4.*ATAN(1.)
00703       GAMEL  = GFERMI**2*AMTAU**5/(192*PI**3)
00704 
00705 
00706 
00707       RETURN
00708       END
00709       FUNCTION DCDMAS(IDENT)
00710       COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00711      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00712      *                 ,AMK,AMKZ,AMKST,GAMKST
00713 
00714       REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00715      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00716      *                 ,AMK,AMKZ,AMKST,GAMKST
00717       IF      (IDENT.EQ. 1) THEN
00718         APKMAS=AMPI
00719       ELSEIF  (IDENT.EQ.-1) THEN
00720         APKMAS=AMPI
00721       ELSEIF  (IDENT.EQ. 2) THEN
00722         APKMAS=AMPIZ
00723       ELSEIF  (IDENT.EQ.-2) THEN
00724         APKMAS=AMPIZ
00725       ELSEIF  (IDENT.EQ. 3) THEN
00726         APKMAS=AMK
00727       ELSEIF  (IDENT.EQ.-3) THEN
00728         APKMAS=AMK
00729       ELSEIF  (IDENT.EQ. 4) THEN
00730         APKMAS=AMKZ
00731       ELSEIF  (IDENT.EQ.-4) THEN
00732         APKMAS=AMKZ
00733       ELSEIF  (IDENT.EQ. 8) THEN
00734         APKMAS=0.0001
00735       ELSEIF  (IDENT.EQ.-8) THEN
00736         APKMAS=0.0001
00737       ELSEIF  (IDENT.EQ. 9) THEN
00738         APKMAS=0.5488
00739       ELSEIF  (IDENT.EQ.-9) THEN
00740         APKMAS=0.5488
00741       ELSE
00742         PRINT *, 'STOP IN APKMAS, WRONG IDENT=',IDENT
00743         STOP
00744       ENDIF
00745       DCDMAS=APKMAS
00746       END
00747       FUNCTION LUNPIK(ID,ISGN)
00748       COMMON / TAUKLE / BRA1,BRK0,BRK0B,BRKS
00749       REAL*4            BRA1,BRK0,BRK0B,BRKS
00750       REAL*4 XIO(1)
00751       IDENT=ID*ISGN
00752 
00753       IF      (IDENT.EQ. 1) THEN
00754         IPKDEF=-211
00755       ELSEIF  (IDENT.EQ.-1) THEN
00756         IPKDEF= 211
00757       ELSEIF  (IDENT.EQ. 2) THEN
00758         IPKDEF=111
00759       ELSEIF  (IDENT.EQ.-2) THEN
00760         IPKDEF=111
00761       ELSEIF  (IDENT.EQ. 3) THEN
00762         IPKDEF=-321
00763       ELSEIF  (IDENT.EQ.-3) THEN
00764         IPKDEF= 321
00765 
00766       ELSEIF  (IDENT.EQ. 4) THEN
00767 
00768 
00769         CALL RANMAR(XIO,1)
00770         IF (XIO(1).GT.BRK0) THEN
00771           IPKDEF= 130
00772         ELSE
00773           IPKDEF= 310
00774         ENDIF
00775       ELSEIF  (IDENT.EQ.-4) THEN
00776 
00777 
00778         CALL RANMAR(XIO,1)
00779         IF (XIO(1).GT.BRK0B) THEN
00780           IPKDEF= 130
00781         ELSE
00782           IPKDEF= 310
00783         ENDIF
00784       ELSEIF  (IDENT.EQ. 8) THEN
00785         IPKDEF= 22
00786       ELSEIF  (IDENT.EQ.-8) THEN
00787         IPKDEF= 22
00788       ELSEIF  (IDENT.EQ. 9) THEN
00789         IPKDEF= 221
00790       ELSEIF  (IDENT.EQ.-9) THEN
00791         IPKDEF= 221
00792       ELSE
00793         PRINT *, 'STOP IN IPKDEF, WRONG IDENT=',IDENT
00794         STOP
00795       ENDIF
00796       LUNPIK=IPKDEF
00797       END
00798 
00799 
00800 
00801 
00802       SUBROUTINE TAURDF(KTO)
00803 
00804 
00805 
00806       COMMON / TAUKLE / BRA1,BRK0,BRK0B,BRKS
00807       REAL*4            BRA1,BRK0,BRK0B,BRKS
00808       COMMON / TAUBRA / GAMPRT(500),JLIST(500),NCHAN
00809       IF (KTO.EQ.1) THEN
00810 
00811 
00812       BRA1 = PKORB(4,1)
00813       BRKS = PKORB(4,3)
00814       BRK0  = PKORB(4,5)
00815       BRK0B  = PKORB(4,6)
00816       ELSE
00817 
00818 
00819       BRA1 = PKORB(4,2)
00820       BRKS = PKORB(4,4)
00821       BRK0  = PKORB(4,5)
00822       BRK0B  = PKORB(4,6)
00823       ENDIF
00824 
00825       END
00826 
00827 
00828       SUBROUTINE INIPHY(XK00)
00829 
00830 
00831 
00832 
00833       COMMON / QEDPRM /ALFINV,ALFPI,XK0
00834       REAL*8           ALFINV,ALFPI,XK0
00835       REAL*8 PI8,XK00
00836 
00837       PI8    = 4.D0*DATAN(1.D0)
00838       ALFINV = 137.03604D0
00839       ALFPI  = 1D0/(ALFINV*PI8)
00840       XK0=XK00
00841       END
00842 
00843       SUBROUTINE INIMAS
00844 
00845 
00846 
00847 
00848 
00849       COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00850      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00851      *                 ,AMK,AMKZ,AMKST,GAMKST
00852 
00853       REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00854      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00855      *                 ,AMK,AMKZ,AMKST,GAMKST
00856 
00857 
00858       AMTAU  = 1.7842
00859 
00860       AMTAU  = 1.777
00861       AMNUTA = 0.010
00862       AMEL   = 0.0005111
00863       AMNUE  = 0.0
00864       AMMU   = 0.105659 
00865       AMNUMU = 0.0
00866 
00867 
00868 
00869       AMPIZ  = 0.134964
00870       AMPI   = 0.139568
00871       AMRO   = 0.773
00872       GAMRO  = 0.145
00873 
00874       AMA1   = 1.251
00875       GAMA1  = 0.599
00876       AMK    = 0.493667
00877       AMKZ   = 0.49772
00878       AMKST  = 0.8921
00879       GAMKST = 0.0513
00880 
00881 
00882 
00883 
00884 
00885 
00886 
00887 
00888 
00889 
00890 
00891 
00892       AMA1   = 1.275   
00893       GAMA1  = 0.615   
00894 
00895 
00896 
00897 
00898 
00899 
00900 
00901       RETURN
00902       END
00903       SUBROUTINE TAUFIL
00904 
00905 
00906 
00907       COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00908      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00909      *                 ,AMK,AMKZ,AMKST,GAMKST
00910 
00911       REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00912      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00913      *                 ,AMK,AMKZ,AMKST,GAMKST
00914       COMMON / IDFC  / IDFF
00915 
00916 
00917       COMMON /TAUPOS / NPA,NPB
00918       DIMENSION XPB1(4),XPB2(4),AQF1(4),AQF2(4)
00919 
00920 
00921       DO 4 K=1,3
00922         XPB1(K)=0.0
00923         XPB2(K)=0.0
00924         AQF1(K)=0.0
00925         AQF2(K)=0.0
00926   4   CONTINUE
00927         AQF1(4)=AMTAU
00928         AQF2(4)=AMTAU
00929 
00930       CALL TRALO4(1,AQF1,AQF1,AM)
00931       CALL TRALO4(2,AQF2,AQF2,AM)
00932 
00933         KFB1= 11*IDFF/IABS(IDFF)
00934         KFB2=-11*IDFF/IABS(IDFF)
00935         XPB1(4)= AQF1(4)
00936         XPB1(3)= AQF1(4)
00937         IF(AQF1(3).NE.0.0)
00938      $  XPB1(3)= AQF1(4)*AQF1(3)/ABS(AQF1(3))
00939         XPB2(4)= AQF2(4)
00940         XPB2(3)=-AQF2(4)
00941         IF(AQF2(3).NE.0.0)
00942      $  XPB2(3)= AQF2(4)*AQF2(3)/ABS(AQF2(3))
00943 
00944       NPA=3
00945       NPB=4
00946 
00947       CALL FILHEP(  1,3, KFB1,0,0,0,0,XPB1, AMEL,.TRUE.)
00948       CALL FILHEP(  2,3, KFB2,0,0,0,0,XPB2, AMEL,.TRUE.)
00949       CALL FILHEP(NPA,1, IDFF,1,2,0,0,AQF1,AMTAU,.TRUE.)
00950       CALL FILHEP(NPB,1,-IDFF,1,2,0,0,AQF2,AMTAU,.TRUE.)
00951       END
00952       SUBROUTINE TRALO4(KTO,P,Q,AM)
00953 
00954 
00955       REAL  P(4),Q(4)
00956 
00957       COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00958      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00959      *                 ,AMK,AMKZ,AMKST,GAMKST
00960 
00961       REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
00962      *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
00963      *                 ,AMK,AMKZ,AMKST,GAMKST
00964       COMMON /PTAU/ PTAU
00965       AM=AMAS4(P)
00966       ETAU=SQRT(PTAU**2+AMTAU**2)
00967       EXE=(ETAU+PTAU)/AMTAU
00968       IF(KTO.EQ.2) EXE=(ETAU-PTAU)/AMTAU
00969       CALL BOSTR3(EXE,P,Q)
00970 
00971 
00972 
00973       END
00974       SUBROUTINE FILHEP(N,IST,ID,JMO1,JMO2,JDA1,JDA2,P4,PINV,PHFLAG)
00975 
00976 
00977 
00978 
00979 
00980 
00981 
00982 
00983 
00984 #include "../../include/HEPEVT.h"
00985 
00986 
00987 
00988 
00989 
00990 
00991 
00992       LOGICAL PHFLAG
00993 
00994       REAL*4  P4(4)
00995 
00996 
00997       IF (N.EQ.0) THEN
00998 
00999 
01000         IHEP=NHEP+1
01001       ELSE IF (N.GT.0) THEN
01002 
01003 
01004         IHEP=N
01005       ELSE
01006 
01007 
01008         IHEP=NHEP+N
01009       END IF
01010 
01011 
01012       IF ((IHEP.LE.0).OR.(IHEP.GT.NMXHEP)) RETURN
01013 
01014 
01015       NHEP=IHEP
01016       ISTHEP(IHEP)=IST
01017       IDHEP(IHEP)=ID
01018       JMOHEP(1,IHEP)=JMO1
01019       IF(JMO1.LT.0)JMOHEP(1,IHEP)=JMOHEP(1,IHEP)+IHEP
01020       JMOHEP(2,IHEP)=JMO2
01021       IF(JMO2.LT.0)JMOHEP(2,IHEP)=JMOHEP(2,IHEP)+IHEP
01022       JDAHEP(1,IHEP)=JDA1
01023       JDAHEP(2,IHEP)=JDA2
01024 
01025       DO I=1,4
01026         PHEP(I,IHEP)=P4(I)
01027 
01028 
01029         VHEP(I,IHEP)=0.0
01030       END DO
01031       PHEP(5,IHEP)=PINV
01032 
01033       QEDRAD(IHEP)=PHFLAG
01034 
01035 
01036       DO IP=JMOHEP(1,IHEP),JMOHEP(2,IHEP)
01037         IF(IP.GT.0)THEN
01038 
01039 
01040           IF(ISTHEP(IP).EQ.1)ISTHEP(IP)=2
01041 
01042 
01043           IF(JDAHEP(1,IP).EQ.0)THEN
01044             JDAHEP(1,IP)=IHEP
01045             JDAHEP(2,IP)=IHEP
01046           ELSE
01047             JDAHEP(2,IP)=MAX(IHEP,JDAHEP(2,IP))
01048           END IF
01049         END IF
01050       END DO
01051 
01052       RETURN
01053       END