5
FUNCTION cscalarprod(p1,p2)
7
COMPLEX(KIND(1d0))::cscalarprod
8
COMPLEX(KIND(1d0)),DIMENSION(0:3),INTENT(IN)::p1,p2
9
! REAL(KIND(1d0)),PARAMETER::EPS2=1d-6
10
! REAL(KIND(1d0))::max
11
cscalarprod=p1(0)*p2(0)-p1(1)*p2(1)-p1(2)*p2(2)-p1(3)*p2(3)
12
! max=ABS(p1(0)*p2(0))+ABS(p1(1)*p2(1))+ABS(p1(2)*p2(2))+ABS(p1(3)*p2(3))
13
! IF(ABS(cscalarprod/max).LT.EPS2)cscalarprod=DCMPLX(0d0)
14
END FUNCTION cscalarprod
16
FUNCTION scalarprod(p1,p2)
18
REAL(KIND(1d0))::scalarprod
19
REAL(KIND(1d0)),DIMENSION(0:3),INTENT(IN)::p1,p2
20
! REAL(KIND(1d0)),PARAMETER::EPS2=1d-6
21
! REAL(KIND(1d0))::max
22
scalarprod=p1(0)*p2(0)-p1(1)*p2(1)-p1(2)*p2(2)-p1(3)*p2(3)
23
IF(check.OR.ONSHELL_IREGI)THEN
24
CALL makeonshell(nmass,massref(1:nmass),scalarprod)
26
! IF(ABS(scalarprod/mu_R_IREGI**2).LT.1d-6)scalarprod=0d0
28
! max=ABS(p1(0)*p2(0))+ABS(p1(1)*p2(1))+ABS(p1(2)*p2(2))+ABS(p1(3)*p2(3))
29
! IF(ABS(scalarprod/max).LT.EPS2)scalarprod=0d0
30
END FUNCTION scalarprod
32
! this is the ad-hoc function only for testing
33
SUBROUTINE makeonshell(n,mt2,ma)
36
REAL(KIND(1d0)),INTENT(INOUT)::ma
37
REAL(KIND(1d0)),DIMENSION(n),INTENT(IN)::mt2
40
IF(ABS(ma/mt2(1)).LT.ZEROTHR_IREGI)THEN
45
IF(ABS(ma-mt2(i))/mt2(i).LT.ZEROTHR_IREGI)THEN
51
IF(ABS(ma).LT.1d-3)THEN
57
END SUBROUTINE makeonshell