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
437 al1=al_lep * dsqrt(scale_alpha_z_ll)
438 ar1=ar_lep * dsqrt(scale_alpha_z_ll)
439 elseif( abs(idordered(6)).eq.abs(tam_) )
then
440 al1=al_lep * dsqrt(scale_alpha_z_tt)
441 ar1=ar_lep * dsqrt(scale_alpha_z_tt)
442 elseif( abs(idordered(6)).eq.abs(nue_) .or. abs(idordered(6)).eq.abs(num_) .or. abs(idordered(6)).eq.abs(nut_) )
then
443 al1=al_neu * dsqrt(scale_alpha_z_nn)
444 ar1=ar_neu * dsqrt(scale_alpha_z_nn)
445 elseif( abs(idordered(6)).eq.abs(up_) .or. abs(idordered(6)).eq.abs(chm_) )
then
446 al1=al_qup * dsqrt(scale_alpha_z_uu)
447 ar1=ar_qup * dsqrt(scale_alpha_z_uu)
448 elseif( abs(idordered(6)).eq.abs(dn_) .or. abs(idordered(6)).eq.abs(str_) .or. abs(idordered(6)).eq.abs(bot_) )
then
449 al1=al_qdn * dsqrt(scale_alpha_z_dd)
450 ar1=ar_qdn * dsqrt(scale_alpha_z_dd)
455 if( abs(idordered(8)).eq.abs(elm_) .or. abs(idordered(8)).eq.abs(mum_) )
then
456 al2=al_lep * dsqrt(scale_alpha_z_ll)
457 ar2=ar_lep * dsqrt(scale_alpha_z_ll)
458 elseif( abs(idordered(8)).eq.abs(tam_) )
then
459 al2=al_lep * dsqrt(scale_alpha_z_tt)
460 ar2=ar_lep * dsqrt(scale_alpha_z_tt)
461 elseif( abs(idordered(8)).eq.abs(nue_) .or. abs(idordered(8)).eq.abs(num_) .or. abs(idordered(8)).eq.abs(nut_) )
then
462 al2=al_neu * dsqrt(scale_alpha_z_nn)
463 ar2=ar_neu * dsqrt(scale_alpha_z_nn)
464 elseif( abs(idordered(8)).eq.abs(up_) .or. abs(idordered(8)).eq.abs(chm_) )
then
465 al2=al_qup * dsqrt(scale_alpha_z_uu)
466 ar2=ar_qup * dsqrt(scale_alpha_z_uu)
467 elseif( abs(idordered(8)).eq.abs(dn_) .or. abs(idordered(8)).eq.abs(str_) .or. abs(idordered(8)).eq.abs(bot_) )
then
468 al2=al_qdn * dsqrt(scale_alpha_z_dd)
469 ar2=ar_qdn * dsqrt(scale_alpha_z_dd)
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(3,:),pv(3,:))
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(4,:),pv(4,:))
480 s =
scr(pordered(:,6)+pordered(:,7),pordered(:,6)+pordered(:,7))
481 propv(1) = s/dcmplx(s - m_v**2,m_v*ga_v)
482 s =
scr(pordered(:,8)+pordered(:,9),pordered(:,8)+pordered(:,9))
483 propv(2) = s/dcmplx(s - m_v**2,m_v*ga_v)
485 elseif( vvmode.eq.
wwmode )
then
487 if( isaquark(idordered(6)) )
then
488 al1 = bl * dsqrt(scale_alpha_w_ud)
489 ar1 = br * dsqrt(scale_alpha_w_ud)
491 (abs(idordered(6)).eq.abs(elp_) .and. abs(idordered(7)).eq.abs(nue_)) .or. (abs(idordered(7)).eq.abs(elp_) .and. abs(idordered(6)).eq.abs(nue_)) .or. &
492 (abs(idordered(6)).eq.abs(mup_) .and. abs(idordered(7)).eq.abs(num_)) .or. (abs(idordered(7)).eq.abs(mup_) .and. abs(idordered(6)).eq.abs(num_)) &
494 al1 = bl * dsqrt(scale_alpha_w_ln)
495 ar1 = br * dsqrt(scale_alpha_w_ln)
497 (abs(idordered(6)).eq.abs(tap_) .and. abs(idordered(7)).eq.abs(nut_)) .or. (abs(idordered(7)).eq.abs(tap_) .and. abs(idordered(6)).eq.abs(nut_)) &
499 al1 = bl * dsqrt(scale_alpha_w_tn)
500 ar1 = br * dsqrt(scale_alpha_w_tn)
505 if( isaquark(idordered(8)) )
then
506 al2 = bl * dsqrt(scale_alpha_w_ud)
507 ar2 = br * dsqrt(scale_alpha_w_ud)
509 (abs(idordered(8)).eq.abs(elm_) .and. abs(idordered(9)).eq.abs(anue_)) .or. (abs(idordered(9)).eq.abs(elm_) .and. abs(idordered(8)).eq.abs(anue_)) .or. &
510 (abs(idordered(8)).eq.abs(mum_) .and. abs(idordered(9)).eq.abs(anum_)) .or. (abs(idordered(9)).eq.abs(mum_) .and. abs(idordered(8)).eq.abs(anum_)) &
512 al2 = bl * dsqrt(scale_alpha_w_ln)
513 ar2 = br * dsqrt(scale_alpha_w_ln)
515 (abs(idordered(8)).eq.abs(tam_) .and. abs(idordered(9)).eq.abs(anut_)) .or. (abs(idordered(9)).eq.abs(tam_) .and. abs(idordered(8)).eq.abs(anut_)) &
517 al2 = bl * dsqrt(scale_alpha_w_tn)
518 ar2 = br * dsqrt(scale_alpha_w_tn)
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(3,:),pv(3,:))
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(4,:),pv(4,:))
529 s =
scr(pordered(:,6)+pordered(:,7),pordered(:,6)+pordered(:,7))
530 propv(1) = s/dcmplx(s - m_v**2,m_v*ga_v)
531 s =
scr(pordered(:,8)+pordered(:,9),pordered(:,8)+pordered(:,9))
532 propv(2) = s/dcmplx(s - m_v**2,m_v*ga_v)
534 elseif( vvmode.eq.
zgmode )
then
536 if( abs(idordered(6)).eq.abs(elm_) .or. abs(idordered(6)).eq.abs(mum_) )
then
537 al1=al_lep * dsqrt(scale_alpha_z_ll)
538 ar1=ar_lep * dsqrt(scale_alpha_z_ll)
539 elseif( abs(idordered(6)).eq.abs(tam_) )
then
540 al1=al_lep * dsqrt(scale_alpha_z_tt)
541 ar1=ar_lep * dsqrt(scale_alpha_z_tt)
542 elseif( abs(idordered(6)).eq.abs(nue_) .or. abs(idordered(6)).eq.abs(num_) .or. abs(idordered(6)).eq.abs(nut_) )
then
543 al1=al_neu * dsqrt(scale_alpha_z_nn)
544 ar1=ar_neu * dsqrt(scale_alpha_z_nn)
545 elseif( abs(idordered(6)).eq.abs(up_) .or. abs(idordered(6)).eq.abs(chm_) )
then
546 al1=al_qup * dsqrt(scale_alpha_z_uu)
547 ar1=ar_qup * dsqrt(scale_alpha_z_uu)
548 elseif( abs(idordered(6)).eq.abs(dn_) .or. abs(idordered(6)).eq.abs(str_) .or. abs(idordered(6)).eq.abs(bot_) )
then
549 al1=al_qdn * dsqrt(scale_alpha_z_dd)
550 ar1=ar_qdn * dsqrt(scale_alpha_z_dd)
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(3,:),pv(3,:))
561 sp(4,:) = pol_mless2(dcmplx(pordered(:,8)),h4,
'out')
563 s =
scr(pordered(:,6)+pordered(:,7),pordered(:,6)+pordered(:,7))
564 propv(1) = s/dcmplx(s - m_v**2,m_v*ga_v)
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
585 al1=cl_lep * dsqrt(scale_alpha_z_ll)
586 ar1=cr_lep * dsqrt(scale_alpha_z_ll)
587 elseif( abs(idordered(6)).eq.abs(tam_) )
then
588 al1=cl_lep * dsqrt(scale_alpha_z_tt)
589 ar1=cr_lep * dsqrt(scale_alpha_z_tt)
590 elseif( abs(idordered(6)).eq.abs(nue_) .or. abs(idordered(6)).eq.abs(num_) .or. abs(idordered(6)).eq.abs(nut_) )
then
591 al1=cl_neu * dsqrt(scale_alpha_z_nn)
592 ar1=cr_neu * dsqrt(scale_alpha_z_nn)
593 elseif( abs(idordered(6)).eq.abs(up_) .or. abs(idordered(6)).eq.abs(chm_) )
then
594 al1=cl_qup * dsqrt(scale_alpha_z_uu)
595 ar1=cr_qup * dsqrt(scale_alpha_z_uu)
596 elseif( abs(idordered(6)).eq.abs(dn_) .or. abs(idordered(6)).eq.abs(str_) .or. abs(idordered(6)).eq.abs(bot_) )
then
597 al1=cl_qdn * dsqrt(scale_alpha_z_dd)
598 ar1=cr_qdn * dsqrt(scale_alpha_z_dd)
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))
614 if( s.lt.mphotoncutoff**2 ) propv(1)=czero
616 elseif( vvmode.eq.
gszmode )
then
618 if( abs(idordered(6)).eq.abs(elm_) .or. abs(idordered(6)).eq.abs(mum_) )
then
619 al1=cl_lep * dsqrt(scale_alpha_z_ll)
620 ar1=cr_lep * dsqrt(scale_alpha_z_ll)
621 elseif( abs(idordered(6)).eq.abs(tam_) )
then
622 al1=cl_lep * dsqrt(scale_alpha_z_tt)
623 ar1=cr_lep * dsqrt(scale_alpha_z_tt)
624 elseif( abs(idordered(6)).eq.abs(nue_) .or. abs(idordered(6)).eq.abs(num_) .or. abs(idordered(6)).eq.abs(nut_) )
then
625 al1=cl_neu * dsqrt(scale_alpha_z_nn)
626 ar1=cr_neu * dsqrt(scale_alpha_z_nn)
627 elseif( abs(idordered(6)).eq.abs(up_) .or. abs(idordered(6)).eq.abs(chm_) )
then
628 al1=cl_qup * dsqrt(scale_alpha_z_uu)
629 ar1=cr_qup * dsqrt(scale_alpha_z_uu)
630 elseif( abs(idordered(6)).eq.abs(dn_) .or. abs(idordered(6)).eq.abs(str_) .or. abs(idordered(6)).eq.abs(bot_) )
then
631 al1=cl_qdn * dsqrt(scale_alpha_z_dd)
632 ar1=cr_qdn * dsqrt(scale_alpha_z_dd)
637 if( abs(idordered(8)).eq.abs(elm_) .or. abs(idordered(8)).eq.abs(mum_) )
then
638 al2=al_lep * dsqrt(scale_alpha_z_ll)
639 ar2=ar_lep * dsqrt(scale_alpha_z_ll)
640 elseif( abs(idordered(8)).eq.abs(tam_) )
then
641 al2=al_lep * dsqrt(scale_alpha_z_tt)
642 ar2=ar_lep * dsqrt(scale_alpha_z_tt)
643 elseif( abs(idordered(8)).eq.abs(nue_) .or. abs(idordered(8)).eq.abs(num_) .or. abs(idordered(8)).eq.abs(nut_) )
then
644 al2=al_neu * dsqrt(scale_alpha_z_nn)
645 ar2=ar_neu * dsqrt(scale_alpha_z_nn)
646 elseif( abs(idordered(8)).eq.abs(up_) .or. abs(idordered(8)).eq.abs(chm_) )
then
647 al2=al_qup * dsqrt(scale_alpha_z_uu)
648 ar2=ar_qup * dsqrt(scale_alpha_z_uu)
649 elseif( abs(idordered(8)).eq.abs(dn_) .or. abs(idordered(8)).eq.abs(str_) .or. abs(idordered(8)).eq.abs(bot_) )
then
650 al2=al_qdn * dsqrt(scale_alpha_z_dd)
651 ar2=ar_qdn * dsqrt(scale_alpha_z_dd)
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(4,:),pv(4,:))
662 s =
scr(pordered(:,6)+pordered(:,7),pordered(:,6)+pordered(:,7))
664 if( s.lt.mphotoncutoff**2 ) propv(1)=czero
665 s =
scr(pordered(:,8)+pordered(:,9),pordered(:,8)+pordered(:,9))
666 propv(2) = s/dcmplx(s - m_v**2,m_v*ga_v)
668 elseif( vvmode.eq.
zgsmode )
then
670 if( abs(idordered(6)).eq.abs(elm_) .or. abs(idordered(6)).eq.abs(mum_) )
then
671 al1=al_lep * dsqrt(scale_alpha_z_ll)
672 ar1=ar_lep * dsqrt(scale_alpha_z_ll)
673 elseif( abs(idordered(6)).eq.abs(tam_) )
then
674 al1=al_lep * dsqrt(scale_alpha_z_tt)
675 ar1=ar_lep * dsqrt(scale_alpha_z_tt)
676 elseif( abs(idordered(6)).eq.abs(nue_) .or. abs(idordered(6)).eq.abs(num_) .or. abs(idordered(6)).eq.abs(nut_) )
then
677 al1=al_neu * dsqrt(scale_alpha_z_nn)
678 ar1=ar_neu * dsqrt(scale_alpha_z_nn)
679 elseif( abs(idordered(6)).eq.abs(up_) .or. abs(idordered(6)).eq.abs(chm_) )
then
680 al1=al_qup * dsqrt(scale_alpha_z_uu)
681 ar1=ar_qup * dsqrt(scale_alpha_z_uu)
682 elseif( abs(idordered(6)).eq.abs(dn_) .or. abs(idordered(6)).eq.abs(str_) .or. abs(idordered(6)).eq.abs(bot_) )
then
683 al1=al_qdn * dsqrt(scale_alpha_z_dd)
684 ar1=ar_qdn * dsqrt(scale_alpha_z_dd)
689 if( abs(idordered(8)).eq.abs(elm_) .or. abs(idordered(8)).eq.abs(mum_) )
then
690 al2=cl_lep * dsqrt(scale_alpha_z_ll)
691 ar2=cr_lep * dsqrt(scale_alpha_z_ll)
692 elseif( abs(idordered(8)).eq.abs(tam_) )
then
693 al2=cl_lep * dsqrt(scale_alpha_z_tt)
694 ar2=cr_lep * dsqrt(scale_alpha_z_tt)
695 elseif( abs(idordered(8)).eq.abs(nue_) .or. abs(idordered(8)).eq.abs(num_) .or. abs(idordered(8)).eq.abs(nut_) )
then
696 al2=cl_neu * dsqrt(scale_alpha_z_nn)
697 ar2=cr_neu * dsqrt(scale_alpha_z_nn)
698 elseif( abs(idordered(8)).eq.abs(up_) .or. abs(idordered(8)).eq.abs(chm_) )
then
699 al2=cl_qup * dsqrt(scale_alpha_z_uu)
700 ar2=cr_qup * dsqrt(scale_alpha_z_uu)
701 elseif( abs(idordered(8)).eq.abs(dn_) .or. abs(idordered(8)).eq.abs(str_) .or. abs(idordered(8)).eq.abs(bot_) )
then
702 al2=cl_qdn * dsqrt(scale_alpha_z_dd)
703 ar2=cr_qdn * dsqrt(scale_alpha_z_dd)
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(3,:),pv(3,:))
712 sp(4,:) = pol_dk2mom(dcmplx(pordered(:,8)),dcmplx(pordered(:,9)),h4)
714 s =
scr(pordered(:,6)+pordered(:,7),pordered(:,6)+pordered(:,7))
715 propv(1) = s/dcmplx(s - m_v**2,m_v*ga_v)
716 s =
scr(pordered(:,8)+pordered(:,9),pordered(:,8)+pordered(:,9))
718 if( s.lt.mphotoncutoff**2 ) propv(2)=czero
722 if( abs(idordered(6)).eq.abs(elm_) .or. abs(idordered(6)).eq.abs(mum_) )
then
723 al1=cl_lep * dsqrt(scale_alpha_z_ll)
724 ar1=cr_lep * dsqrt(scale_alpha_z_ll)
725 elseif( abs(idordered(6)).eq.abs(tam_) )
then
726 al1=cl_lep * dsqrt(scale_alpha_z_tt)
727 ar1=cr_lep * dsqrt(scale_alpha_z_tt)
728 elseif( abs(idordered(6)).eq.abs(nue_) .or. abs(idordered(6)).eq.abs(num_) .or. abs(idordered(6)).eq.abs(nut_) )
then
729 al1=cl_neu * dsqrt(scale_alpha_z_nn)
730 ar1=cr_neu * dsqrt(scale_alpha_z_nn)
731 elseif( abs(idordered(6)).eq.abs(up_) .or. abs(idordered(6)).eq.abs(chm_) )
then
732 al1=cl_qup * dsqrt(scale_alpha_z_uu)
733 ar1=cr_qup * dsqrt(scale_alpha_z_uu)
734 elseif( abs(idordered(6)).eq.abs(dn_) .or. abs(idordered(6)).eq.abs(str_) .or. abs(idordered(6)).eq.abs(bot_) )
then
735 al1=cl_qdn * dsqrt(scale_alpha_z_dd)
736 ar1=cr_qdn * dsqrt(scale_alpha_z_dd)
741 if( abs(idordered(8)).eq.abs(elm_) .or. abs(idordered(8)).eq.abs(mum_) )
then
742 al2=cl_lep * dsqrt(scale_alpha_z_ll)
743 ar2=cr_lep * dsqrt(scale_alpha_z_ll)
744 elseif( abs(idordered(8)).eq.abs(tam_) )
then
745 al2=cl_lep * dsqrt(scale_alpha_z_tt)
746 ar2=cr_lep * dsqrt(scale_alpha_z_tt)
747 elseif( abs(idordered(8)).eq.abs(nue_) .or. abs(idordered(8)).eq.abs(num_) .or. abs(idordered(8)).eq.abs(nut_) )
then
748 al2=cl_neu * dsqrt(scale_alpha_z_nn)
749 ar2=cr_neu * dsqrt(scale_alpha_z_nn)
750 elseif( abs(idordered(8)).eq.abs(up_) .or. abs(idordered(8)).eq.abs(chm_) )
then
751 al2=cl_qup * dsqrt(scale_alpha_z_uu)
752 ar2=cr_qup * dsqrt(scale_alpha_z_uu)
753 elseif( abs(idordered(8)).eq.abs(dn_) .or. abs(idordered(8)).eq.abs(str_) .or. abs(idordered(8)).eq.abs(bot_) )
then
754 al2=cl_qdn * dsqrt(scale_alpha_z_dd)
755 ar2=cr_qdn * dsqrt(scale_alpha_z_dd)
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))
768 if( s.lt.mphotoncutoff**2 ) propv(1)=czero
769 s =
scr(pordered(:,8)+pordered(:,9),pordered(:,8)+pordered(:,9))
771 if( s.lt.mphotoncutoff**2 ) propv(2)=czero
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,:)