curr_karls.f
00001 SUBROUTINE CURR_KARLS(MNUM,PIM1,PIM2,PIM3,PIM4,HADCUR)
00002 INTEGER MNUM,I
00003 REAL PIM1(4),PIM2(4),PIM3(4),PIM4(4)
00004 COMPLEX HADCUR(4)
00005 REAL*8 QQ2,Q1(4),Q2(4),Q3(4),Q4(4)
00006 COMPLEX*16 HADR(4)
00007
00008 LOGICAL INIT
00009 DATA INIT /.TRUE./
00010 SAVE INIT
00011
00012 IF (INIT) THEN
00013 CALL had1_init
00014 INIT = .FALSE.
00015 ENDIF
00016
00017 IF (MNUM.EQ.1) THEN
00018 Q1(1)=PIM1(4)
00019 Q2(1)=PIM2(4)
00020 Q3(1)=PIM3(4)
00021 Q4(1)=PIM4(4)
00022 DO I=1,3
00023 Q1(1+I)=PIM1(I)
00024 Q2(1+I)=PIM2(I)
00025 Q3(1+I)=PIM3(I)
00026 Q4(1+I)=PIM4(I)
00027 ENDDO
00028 QQ2=(Q1(1)+Q2(1)+Q3(1)+Q4(1))**2
00029 DO I=2,4
00030 QQ2=QQ2-(Q1(I)+Q2(I)+Q3(I)+Q4(I))**2
00031 ENDDO
00032
00033
00034
00035
00036 CALL HAD4(QQ2,Q1,Q2,Q4,Q3,HADR)
00037
00038 ELSEIF(MNUM.EQ.2) THEN
00039 Q1(1)=PIM1(4)
00040 Q2(1)=PIM2(4)
00041 Q3(1)=PIM3(4)
00042 Q4(1)=PIM4(4)
00043 DO I=1,3
00044 Q1(1+I)=PIM1(I)
00045 Q2(1+I)=PIM2(I)
00046 Q3(1+I)=PIM3(I)
00047 Q4(1+I)=PIM4(I)
00048 ENDDO
00049 QQ2=(Q1(1)+Q2(1)+Q3(1)+Q4(1))**2
00050 DO I=2,4
00051 QQ2=QQ2-(Q1(I)+Q2(I)+Q3(I)+Q4(I))**2
00052 ENDDO
00053 CALL HAD3(QQ2,Q1,Q2,Q3,Q4,HADR)
00054
00055 ELSE
00056 WRITE(*,*)' WRONG PARAMITER IN CURR_CPC; MNUM=',MNUM
00057 STOP
00058 ENDIF
00059
00060 HADCUR(4)=HADR(1)
00061 DO I=1,3
00062 HADCUR(I)=HADR(I+1)
00063 ENDDO
00064 RETURN
00065 END
00066