C++InterfacetoTauola
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
32 C Tomasz Pierzchala : in HAD4() position of PI+ and Pi0 is changed
33 C to be in correct order according to TAUOLA routines.
34 C CALL HAD4(QQ2,Q1,Q2,Q3,Q4,HADR)
35 C
36  CALL had4(qq2,q1,q2,q4,q3,hadr)
37 C
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)
54 C
55  ELSE
56  WRITE(*,*)' WRONG PARAMITER IN CURR_CPC; MNUM=',mnum
57  stop
58  ENDIF
59 C
60  hadcur(4)=hadr(1)
61  DO i=1,3
62  hadcur(i)=hadr(i+1)
63  ENDDO
64  RETURN
65  END
66