C++ Interface to Tauola
curr_karls.f
1 SUBROUTINE curr_karls(MNUM,PIM1,PIM2,PIM3,PIM4,HADCUR)
2 INTEGER MNUM,I
3 REAL PIM1(4),PIM2(4),PIM3(4),PIM4(4)
4 COMPLEX HADCUR(4)
5 real*8 qq2,q1(4),q2(4),q3(4),q4(4)
6 COMPLEX*16 HADR(4)
7
8 LOGICAL INIT
9 DATA init /.true./
10 SAVE init
11
12 IF (init) THEN
13 CALL had1_init
14 init = .false.
15 ENDIF
16
17 IF (mnum.EQ.1) THEN ! PI- PI- PI+ PI0
18 q1(1)=pim1(4) ! PI-
19 q2(1)=pim2(4) ! PI-
20 q3(1)=pim3(4) ! PI0
21 q4(1)=pim4(4) ! PI+
22 DO i=1,3
23 q1(1+i)=pim1(i)
24 q2(1+i)=pim2(i)
25 q3(1+i)=pim3(i)
26 q4(1+i)=pim4(i)
27 ENDDO
28 qq2=(q1(1)+q2(1)+q3(1)+q4(1))**2
29 DO i=2,4
30 qq2=qq2-(q1(i)+q2(i)+q3(i)+q4(i))**2
31 ENDDO
32C Tomasz Pierzchala : in HAD4() position of PI+ and Pi0 is changed
33C to be in correct order according to TAUOLA routines.
34C CALL HAD4(QQ2,Q1,Q2,Q3,Q4,HADR)
35C
36 CALL had4(qq2,q1,q2,q4,q3,hadr)
37C
38 ELSEIF(mnum.EQ.2) THEN ! PI0 PI0 PI0 PI-
39 q1(1)=pim1(4) ! PI0
40 q2(1)=pim2(4) ! PI0
41 q3(1)=pim3(4) ! PI0
42 q4(1)=pim4(4) ! PI-
43 DO i=1,3
44 q1(1+i)=pim1(i)
45 q2(1+i)=pim2(i)
46 q3(1+i)=pim3(i)
47 q4(1+i)=pim4(i)
48 ENDDO
49 qq2=(q1(1)+q2(1)+q3(1)+q4(1))**2
50 DO i=2,4
51 qq2=qq2-(q1(i)+q2(i)+q3(i)+q4(i))**2
52 ENDDO
53 CALL had3(qq2,q1,q2,q3,q4,hadr)
54C
55 ELSE
56 WRITE(*,*)' WRONG PARAMITER IN CURR_CPC; MNUM=',mnum
57 stop
58 ENDIF
59C
60 hadcur(4)=hadr(1)
61 DO i=1,3
62 hadcur(i)=hadr(i+1)
63 ENDDO
64 RETURN
65 END
66