9 public :: evalamp_qqb_zprime_vv,evalamp_zprime_vv
17 subroutine evalamp_qqb_zprime_vv(p,MY_IDUP,sum)
19 real(dp),
intent(out) :: sum
20 real(dp),
intent(in) :: p(4,6)
21 integer,
intent(in) :: MY_IDUP(6:9)
24 integer :: i1,i2,i3,i4,ordering(1:4),ordering_swap(1:4),idV(1:2),VVmode
29 intcolfac=1.0_dp/3.0_dp
37 if( vvmode.eq.
zzmode ) then
39 elseif( vvmode.eq.
wwmode )
then
41 elseif( vvmode.eq.
zgmode )
then
43 elseif( vvmode.eq.
ggmode )
then
57 call calchelamp(ordering,vvmode,p(1:4,1:6),my_idup,i1,i3,i4,a(1
59 call calchelamp(ordering_swap,vvmode,p(1:4,1:6),my_idup,i1,i3
63 sum = sum +
symmfac * (cdabs( a(1)*dconjg(a(1)) ) + cdabs( a
64 if( i3.eq.i4 ) sum = sum +
symmfac * 2d0*intcolfac*dreal(a(
66 sum = sum + cdabs( a(1)*dconjg(a(1)) )
79 subroutine calchelamp(ordering,VVmode,p,MY_IDUP,i1,i3,i4,A)
81 integer :: ordering(1:4),i1,i3,i4,l1,l2,l3,l4,vvmode,my_idup(6:9)
82 real(
dp) :: p(1:4,1:6)
84 real(
dp) :: s, pin(4,4)
85 complex(dp) :: a(1:1), sp(4,4)
104 sp(1,:) =
pol_dk2mom(dcmplx(p(:,2)),dcmplx(p(:,1)),-3+2*i1)
117 (/my_idup(l1+3),my_idup(l2+3),my_idup
118 (/p(:,l1),p(:,l2),p(:,l3),p(:,l4)
126 else if(i1.eq.2)
then
136 real(dp),
intent(in) :: p(4,4)
137 complex(dp),
intent(in) :: sp(4,4)
138 complex(dp),
intent(out) :: res
139 complex(dp) :: e1_e2, e1_e3, e1_e4
140 complex(dp) :: e2_e3, e2_e4
143 complex(dp) :: q1_q2,q1_q3,q1_q4
144 complex(dp) :: q2_q3,q2_q4
146 complex(dp) :: q1_e3,q1_e4,q2_e3,q2_e4
147 complex(dp) :: e1_q3,e1_q4,e2_q3,e2_q4
148 complex(dp) :: e3_q4,e4_q3
149 complex(dp) :: q1(4),q2(4),q3(4),q4(4),q(4)
150 complex(dp) :: e1(4),e2(4),e3(4),e4(4)
151 complex(dp) :: yyy1,yyy2,yyy3,yyy4,xxx1,epsZpr(1:4,-1:+1)
153 q1 = dcmplx(p(1,:),0d0)
154 q2 = dcmplx(p(2,:),0d0)
155 q3 = dcmplx(p(3,:),0d0)
156 q4 = dcmplx(p(4,:),0d0)
226 res= - e1_e3*e4_q3*xxx1*yyy1 &
227 - e1_e4*e3_q4*xxx1*yyy1 &
228 -
et1(e1,e3,e4,q3)*xxx1*yyy2 +
et1(e1,e3,e4,q4)*xxx1*yyy2
251 subroutine evalamp_zprime_vv(p,MY_IDUP,sum)
253 real(dp),
intent(out) :: sum
254 real(dp),
intent(in) :: p(4,6)
255 integer,
intent(in) :: MY_IDUP(6:9)
258 integer :: i1,i2,i3,i4,ordering(1:4),ordering_swap(1:4),idV(1:2),VVmode
259 real(dp) :: aL1,aR1,aL2,aR2
260 real(dp) :: prefactor
261 real(dp) :: intcolfac
264 intcolfac=1.0_dp/3.0_dp
272 if( vvmode.eq.
zzmode ) then
274 elseif( vvmode.eq.
wwmode )
then
276 elseif( vvmode.eq.
zgmode )
then
278 elseif( vvmode.eq.
ggmode )
then
291 call calchelamp2(ordering,vvmode,p(1:4,1:6),my_idup,i1,i3,i4,a(
293 call calchelamp2(ordering_swap,vvmode,p(1:4,1:6),my_idup,i1
297 sum = sum +
symmfac * (cdabs( a(1)*dconjg(a(1)) ) + cdabs( a
298 if( i3.eq.i4 ) sum = sum +
symmfac * 2d0*intcolfac*dreal(a(
300 sum = sum + cdabs( a(1)*dconjg(a(1)) )
311 subroutine calchelamp2(ordering,VVMode,p,MY_IDUP,i1,i3,i4,A)
313 integer :: ordering(1:4),i1,i3,i4,l1,l2,l3,l4,vvmode,my_idup(6:9)
314 real(
dp) :: p(1:4,1:6)
316 complex(dp) :: a(1:1), sp(4,4)
324 sp(1,:) =
pol_mass2(dcmplx(p(1:4,1)),i1,
'in')
329 (/my_idup(l1+3),my_idup(l2+3),my_idup
330 (/p(:,l1),p(:,l2),p(:,l3),p(:,l4)
339 real(dp),
intent(in) :: p(4,4)
340 complex(dp),
intent(in) :: sp(4,4)
341 complex(dp),
intent(out) :: res
342 complex(dp) :: e1_e2, e1_e3, e1_e4
343 complex(dp) :: e2_e3, e2_e4
345 complex(dp) :: q_q,MZ3,MZ4
346 complex(dp) :: q1_q2,q1_q3,q1_q4
347 complex(dp) :: q2_q3,q2_q4
348 complex(dp) :: q3_q4,q3_q3,q4_q4
349 complex(dp) :: q1_e3,q1_e4,q2_e3,q2_e4
350 complex(dp) :: e1_q3,e1_q4,e2_q3,e2_q4
351 complex(dp) :: e3_q4,e4_q3
352 complex(dp) :: q1(4),q2(4),q3(4),q4(4),q(4)
353 complex(dp) :: e1(4),e2(4),e3(4),e4(4)
354 complex(dp) :: yyy1,yyy2,yyy3,yyy4,epsZpr(1:4,-1:+1)
357 q1 = dcmplx(p(1,:),0d0)
358 q2 = dcmplx(p(2,:),0d0)
359 q3 = dcmplx(p(3,:),0d0)
360 q4 = dcmplx(p(4,:),0d0)
407 mz3=dsqrt(cdabs(q3_q3))
408 mz4=dsqrt(cdabs(q4_q4))
418 res= yyy1*( q1_e3*e1_e4 + q1_e4*e1_e3 ) + yyy2*(
et1(e1,e3,e4,q3
426 integer,
intent(in) :: VVMode,idordered(6:9),h3,h4
427 real(dp),
intent(in) :: pordered(1:4,6:9)
428 complex(dp),
intent(out) :: sp(3:4,1:4)
429 real(dp),
intent(out) :: pV(3:4,1:4)
430 real(dp) :: s, aL1,aR1,aL2,aR2
431 complex(dp) :: propV(1:2)
434 if( vvmode.eq.
zzmode )
then
436 if( abs(idordered(6)).eq.abs(
elm_) .or. abs(idordered(6)).eq.abs(
mum_then
439 elseif( abs(idordered(6)).eq.abs(
tam_) )
then
442 elseif( abs(idordered(6)).eq.abs(
nue_) .or. abs(idordered(6)).eq.abs
then
445 elseif( abs(idordered(6)).eq.abs(
up_) .or. abs(idordered(6)).eq.abs
then
448 elseif( abs(idordered(6)).eq.abs(
dn_) .or. abs(idordered(6)).eq.abs
then
455 if( abs(idordered(8)).eq.abs(
elm_) .or. abs(idordered(8)).eq.abs(
mum_then
458 elseif( abs(idordered(8)).eq.abs(
tam_) )
then
461 elseif( abs(idordered(8)).eq.abs(
nue_) .or. abs(idordered(8)).eq.abs
then
464 elseif( abs(idordered(8)).eq.abs(
up_) .or. abs(idordered(8)).eq.abs
then
467 elseif( abs(idordered(8)).eq.abs(
dn_) .or. abs(idordered(8)).eq.abs
then
474 pv(3,:) = pordered(:,6)+pordered(:,7)
475 pv(4,:) = pordered(:,8)+pordered(:,9)
476 sp(3,:) =
pol_dk2mom(dcmplx(pordered(:,6)),dcmplx(pordered(:,7)),h3
477 sp(3,:) = -sp(3,:) + pv(3,:)*(
sc(sp(3,:),dcmplx(pv(3,:))) )/
scr(pv
478 sp(4,:) =
pol_dk2mom(dcmplx(pordered(:,8)),dcmplx(pordered(:,9)),h4
479 sp(4,:) = -sp(4,:) + pv(4,:)*(
sc(sp(4,:),dcmplx(pv(4,:))) )/
scr(pv
480 s =
scr(pordered(:,6)+pordered(:,7),pordered(:,6)+pordered(:,7))
482 s =
scr(pordered(:,8)+pordered(:,9),pordered(:,8)+pordered(:,9))
485 elseif( vvmode.eq.
wwmode )
then
491 (abs(idordered(6)).eq.abs(
elp_) .and. abs(idordered(7)).eq.abs
492 (abs(idordered(6)).eq.abs(
mup_) .and. abs(idordered(7)).eq.abs
497 (abs(idordered(6)).eq.abs(
tap_) .and. abs(idordered(7)).eq.abs
509 (abs(idordered(8)).eq.abs(
elm_) .and. abs(idordered(9)).eq.abs
510 (abs(idordered(8)).eq.abs(
mum_) .and. abs(idordered(9)).eq.abs
515 (abs(idordered(8)).eq.abs(
tam_) .and. abs(idordered(9)).eq.abs
523 pv(3,:) = pordered(:,6)+pordered(:,7)
524 pv(4,:) = pordered(:,8)+pordered(:,9)
525 sp(3,:) =
pol_dk2mom(dcmplx(pordered(:,6)),dcmplx(pordered(:,7)),h3
526 sp(3,:) = -sp(3,:) + pv(3,:)*(
sc(sp(3,:),dcmplx(pv(3,:))) )/
scr(pv
527 sp(4,:) =
pol_dk2mom(dcmplx(pordered(:,8)),dcmplx(pordered(:,9)),h4
528 sp(4,:) = -sp(4,:) + pv(4,:)*(
sc(sp(4,:),dcmplx(pv(4,:))) )/
scr(pv
529 s =
scr(pordered(:,6)+pordered(:,7),pordered(:,6)+pordered(:,7))
531 s =
scr(pordered(:,8)+pordered(:,9),pordered(:,8)+pordered(:,9))
534 elseif( vvmode.eq.
zgmode )
then
536 if( abs(idordered(6)).eq.abs(
elm_) .or. abs(idordered(6)).eq.abs(
mum_then
539 elseif( abs(idordered(6)).eq.abs(
tam_) )
then
542 elseif( abs(idordered(6)).eq.abs(
nue_) .or. abs(idordered(6)).eq.abs
then
545 elseif( abs(idordered(6)).eq.abs(
up_) .or. abs(idordered(6)).eq.abs
then
548 elseif( abs(idordered(6)).eq.abs(
dn_) .or. abs(idordered(6)).eq.abs
then
557 pv(3,:) = pordered(:,6)+pordered(:,7)
558 pv(4,:) = pordered(:,8)
559 sp(3,:) =
pol_dk2mom(dcmplx(pordered(:,6)),dcmplx(pordered(:,7)),h3
560 sp(3,:) = -sp(3,:) + pv(3,:)*(
sc(sp(3,:),dcmplx(pv(3,:))) )/
scr(pv
561 sp(4,:) =
pol_mless2(dcmplx(pordered(:,8)),h4,
'out')
563 s =
scr(pordered(:,6)+pordered(:,7),pordered(:,6)+pordered(:,7))
567 elseif( vvmode.eq.
ggmode )
then
573 pv(3,:) = pordered(:,6)
574 pv(4,:) = pordered(:,8)
575 sp(3,:) =
pol_mless2(dcmplx(pordered(:,6)),h3,
'out')
576 sp(4,:) =
pol_mless2(dcmplx(pordered(:,8)),h4,
'out')
582 elseif( vvmode.eq.
gsgmode )
then
584 if( abs(idordered(6)).eq.abs(
elm_) .or. abs(idordered(6)).eq.abs(
mum_then
587 elseif( abs(idordered(6)).eq.abs(
tam_) )
then
590 elseif( abs(idordered(6)).eq.abs(
nue_) .or. abs(idordered(6)).eq.abs
then
593 elseif( abs(idordered(6)).eq.abs(
up_) .or. abs(idordered(6)).eq.abs
then
596 elseif( abs(idordered(6)).eq.abs(
dn_) .or. abs(idordered(6)).eq.abs
then
605 pv(3,:) = pordered(:,6)+pordered(:,7)
606 pv(4,:) = pordered(:,8)
607 sp(3,:) =
pol_dk2mom(dcmplx(pordered(:,6)),dcmplx(pordered(:,7)),h3
609 sp(4,:) =
pol_mless2(dcmplx(pordered(:,8)),h4,
'out')
611 s =
scr(pordered(:,6)+pordered(:,7),pordered(:,6)+pordered(:,7))
616 elseif( vvmode.eq.
gszmode )
then
618 if( abs(idordered(6)).eq.abs(
elm_) .or. abs(idordered(6)).eq.abs(
mum_then
621 elseif( abs(idordered(6)).eq.abs(
tam_) )
then
624 elseif( abs(idordered(6)).eq.abs(
nue_) .or. abs(idordered(6)).eq.abs
then
627 elseif( abs(idordered(6)).eq.abs(
up_) .or. abs(idordered(6)).eq.abs
then
630 elseif( abs(idordered(6)).eq.abs(
dn_) .or. abs(idordered(6)).eq.abs
then
637 if( abs(idordered(8)).eq.abs(
elm_) .or. abs(idordered(8)).eq.abs(
mum_then
640 elseif( abs(idordered(8)).eq.abs(
tam_) )
then
643 elseif( abs(idordered(8)).eq.abs(
nue_) .or. abs(idordered(8)).eq.abs
then
646 elseif( abs(idordered(8)).eq.abs(
up_) .or. abs(idordered(8)).eq.abs
then
649 elseif( abs(idordered(8)).eq.abs(
dn_) .or. abs(idordered(8)).eq.abs
then
656 pv(3,:) = pordered(:,6)+pordered(:,7)
657 pv(4,:) = pordered(:,8)+pordered(:,9)
658 sp(3,:) =
pol_dk2mom(dcmplx(pordered(:,6)),dcmplx(pordered(:,7)),h3
660 sp(4,:) =
pol_dk2mom(dcmplx(pordered(:,8)),dcmplx(pordered(:,9)),h4
661 sp(4,:) = -sp(4,:) + pv(4,:)*(
sc(sp(4,:),dcmplx(pv(4,:))) )/
scr(pv
662 s =
scr(pordered(:,6)+pordered(:,7),pordered(:,6)+pordered(:,7))
665 s =
scr(pordered(:,8)+pordered(:,9),pordered(:,8)+pordered(:,9))
668 elseif( vvmode.eq.
zgsmode )
then
670 if( abs(idordered(6)).eq.abs(
elm_) .or. abs(idordered(6)).eq.abs(
mum_then
673 elseif( abs(idordered(6)).eq.abs(
tam_) )
then
676 elseif( abs(idordered(6)).eq.abs(
nue_) .or. abs(idordered(6)).eq.abs
then
679 elseif( abs(idordered(6)).eq.abs(
up_) .or. abs(idordered(6)).eq.abs
then
682 elseif( abs(idordered(6)).eq.abs(
dn_) .or. abs(idordered(6)).eq.abs
then
689 if( abs(idordered(8)).eq.abs(
elm_) .or. abs(idordered(8)).eq.abs(
mum_then
692 elseif( abs(idordered(8)).eq.abs(
tam_) )
then
695 elseif( abs(idordered(8)).eq.abs(
nue_) .or. abs(idordered(8)).eq.abs
then
698 elseif( abs(idordered(8)).eq.abs(
up_) .or. abs(idordered(8)).eq.abs
then
701 elseif( abs(idordered(8)).eq.abs(
dn_) .or. abs(idordered(8)).eq.abs
then
708 pv(3,:) = pordered(:,6)+pordered(:,7)
709 pv(4,:) = pordered(:,8)+pordered(:,9)
710 sp(3,:) =
pol_dk2mom(dcmplx(pordered(:,6)),dcmplx(pordered(:,7)),h3
711 sp(3,:) = -sp(3,:) + pv(3,:)*(
sc(sp(3,:),dcmplx(pv(3,:))) )/
scr(pv
712 sp(4,:) =
pol_dk2mom(dcmplx(pordered(:,8)),dcmplx(pordered(:,9)),h4
714 s =
scr(pordered(:,6)+pordered(:,7),pordered(:,6)+pordered(:,7))
716 s =
scr(pordered(:,8)+pordered(:,9),pordered(:,8)+pordered(:,9))
722 if( abs(idordered(6)).eq.abs(
elm_) .or. abs(idordered(6)).eq.abs(
mum_then
725 elseif( abs(idordered(6)).eq.abs(
tam_) )
then
728 elseif( abs(idordered(6)).eq.abs(
nue_) .or. abs(idordered(6)).eq.abs
then
731 elseif( abs(idordered(6)).eq.abs(
up_) .or. abs(idordered(6)).eq.abs
then
734 elseif( abs(idordered(6)).eq.abs(
dn_) .or. abs(idordered(6)).eq.abs
then
741 if( abs(idordered(8)).eq.abs(
elm_) .or. abs(idordered(8)).eq.abs(
mum_then
744 elseif( abs(idordered(8)).eq.abs(
tam_) )
then
747 elseif( abs(idordered(8)).eq.abs(
nue_) .or. abs(idordered(8)).eq.abs
then
750 elseif( abs(idordered(8)).eq.abs(
up_) .or. abs(idordered(8)).eq.abs
then
753 elseif( abs(idordered(8)).eq.abs(
dn_) .or. abs(idordered(8)).eq.abs
then
760 pv(3,:) = pordered(:,6)+pordered(:,7)
761 pv(4,:) = pordered(:,8)+pordered(:,9)
762 sp(3,:) =
pol_dk2mom(dcmplx(pordered(:,6)),dcmplx(pordered(:,7)),h3
764 sp(4,:) =
pol_dk2mom(dcmplx(pordered(:,8)),dcmplx(pordered(:,9)),h4
766 s =
scr(pordered(:,6)+pordered(:,7),pordered(:,6)+pordered(:,7))
769 s =
scr(pordered(:,8)+pordered(:,9),pordered(:,8)+pordered(:,9))
774 call error(
"Unsupported decay modes")
777 sp(3,:) = sp(3,:)*propv(1)
778 sp(4,:) = sp(4,:)*propv(2)
780 sp(3,:) = al1 * sp(3,:)
782 sp(3,:) = ar1 * sp(3,:)
785 sp(4,:) = al2 * sp(4,:)
787 sp(4,:) = ar2 * sp(4,:)
795 integer,
intent(in) :: MY_IDUP(6:9)
796 integer,
intent(out) :: VVMode,ordering(1:4),ordering_swap(1:4)
802 if(my_idup(6).eq.
pho_ .or. my_idup(7).eq.
pho_) idv(1)=
pho_
803 if(my_idup(8).eq.
pho_ .or. my_idup(9).eq.
pho_) idv(2)=
pho_
805 call swap(ordering(1),ordering(2))
808 call swap(ordering(3),ordering(4))
811 (idv(1).eq.
wm_ .and. idv(2).eq.
wp_) .or. &
812 (idv(2).eq.
z0_ .and. idv(1).eq.
pho_) &
814 call swap(ordering(1),ordering(3))
815 call swap(ordering(2),ordering(4))
816 call swap(idv(1),idv(2))
818 ordering_swap(:)=ordering(:)
819 call swap(ordering_swap(1),ordering_swap(3))
821 if(idv(1).eq.
z0_ .and. idv(2).eq.
z0_)
then
823 elseif(idv(1).eq.
z0_ .and. idv(2).eq.
pho_)
then
825 elseif(idv(1).eq.
pho_ .and. idv(2).eq.
pho_)
then
827 elseif(idv(1).eq.
wp_ .and. idv(2).eq.
wm_)
then
831 call error(
"Unsupported decay Modes")