! File generated automatically by O'Mega 2.8.2 release Oct 24 2019 ! ! /sw/ilc/gcc730/whizard/2.8.2-mpi/bin/omega_SM_CKM.opt -o P6f_llxyyx_i3.f90 -target:whizard -target:parameter_module parameters_SM_CKM -target:module opr_P6f_llxyyx_i3 -target:md5sum 08756A065520AA605A16A64239024FBD -fusion:progress -scatter "e- e+ -> tau- mu+ u:c dbar:sbar:bbar d:s:b ubar:cbar" ! ! with all scattering amplitudes for the process(es) ! ! flavor combinations: ! ! ! color flows: ! ! ! NB: i.g. not all color flows contribute to all flavor ! combinations. Consult the array FLV_COL_IS_ALLOWED ! below for the allowed combinations. ! ! Color Factors: ! ! ! vanishing or redundant flavor combinations: ! ! e- e+ -> tau- mu+ u bbar d cbar ! e- e+ -> tau- mu+ u bbar d ubar ! e- e+ -> tau- mu+ u bbar s cbar ! e- e+ -> tau- mu+ u bbar s ubar ! e- e+ -> tau- mu+ u bbar b cbar ! e- e+ -> tau- mu+ u bbar b ubar ! e- e+ -> tau- mu+ u sbar d cbar ! e- e+ -> tau- mu+ u sbar d ubar ! e- e+ -> tau- mu+ u sbar s cbar ! e- e+ -> tau- mu+ u sbar s ubar ! e- e+ -> tau- mu+ u sbar b cbar ! e- e+ -> tau- mu+ u sbar b ubar ! e- e+ -> tau- mu+ u dbar d cbar ! e- e+ -> tau- mu+ u dbar d ubar ! e- e+ -> tau- mu+ u dbar s cbar ! e- e+ -> tau- mu+ u dbar s ubar ! e- e+ -> tau- mu+ u dbar b cbar ! e- e+ -> tau- mu+ u dbar b ubar ! e- e+ -> tau- mu+ c bbar d cbar ! e- e+ -> tau- mu+ c bbar d ubar ! e- e+ -> tau- mu+ c bbar s cbar ! e- e+ -> tau- mu+ c bbar s ubar ! e- e+ -> tau- mu+ c bbar b cbar ! e- e+ -> tau- mu+ c bbar b ubar ! e- e+ -> tau- mu+ c sbar d cbar ! e- e+ -> tau- mu+ c sbar d ubar ! e- e+ -> tau- mu+ c sbar s cbar ! e- e+ -> tau- mu+ c sbar s ubar ! e- e+ -> tau- mu+ c sbar b cbar ! e- e+ -> tau- mu+ c sbar b ubar ! e- e+ -> tau- mu+ c dbar d cbar ! e- e+ -> tau- mu+ c dbar d ubar ! e- e+ -> tau- mu+ c dbar s cbar ! e- e+ -> tau- mu+ c dbar s ubar ! e- e+ -> tau- mu+ c dbar b cbar ! e- e+ -> tau- mu+ c dbar b ubar ! ! module opr_P6f_llxyyx_i3 use kinds use omega95 use omega_color, OCF => omega_color_factor use parameters_SM_CKM implicit none private public :: number_particles_in, number_particles_out, number_color_indices, & reset_helicity_selection, new_event, is_allowed, get_amplitude, & color_sum, openmp_supported, number_spin_states, spin_states, & number_flavor_states, flavor_states, number_color_flows, color_flows, & number_color_factors, color_factors, init, final, update_alpha_s, md5sum ! DON'T EVEN THINK of removing the following! ! If the compiler complains about undeclared ! or undefined variables, you are compiling ! against an incompatible omega95 module! integer, dimension(7), parameter, private :: require = & (/ omega_spinors_2010_01_A, omega_spinor_cpls_2010_01_A, & omega_vectors_2010_01_A, omega_polarizations_2010_01_A, & omega_couplings_2010_01_A, omega_color_2010_01_A, & omega_utils_2010_01_A /) integer, parameter :: n_prt = 0 integer, parameter :: n_in = 0 integer, parameter :: n_out = 0 integer, parameter :: n_cflow = 0 integer, parameter :: n_cindex = 2 integer, parameter :: n_flv = 0 integer, parameter :: n_hel = 0 ! NB: you MUST NOT change the value of N_ here!!! ! It is defined here for convenience only and must be ! compatible with hardcoded values in the amplitude! real(kind=default), parameter :: N_ = 3 logical, parameter :: F = .false. logical, parameter :: T = .true. integer, dimension(n_prt,n_hel), save, protected :: table_spin_states integer, dimension(n_prt,n_flv), save, protected :: table_flavor_states integer, dimension(n_cindex,n_prt,n_cflow), save, protected :: table_color_flows logical, dimension(n_prt,n_cflow), save, protected :: table_ghost_flags integer, parameter :: n_cfactors = 0 type(OCF), dimension(n_cfactors), save, protected :: table_color_factors logical, dimension(n_flv, n_cflow), save, protected :: flv_col_is_allowed complex(kind=default), dimension(n_flv, n_cflow, n_hel), save :: amp logical, dimension(n_hel), save :: hel_is_allowed = T real(kind=default), dimension(n_hel), save :: hel_max_abs = 0 real(kind=default), save :: hel_sum_abs = 0, hel_threshold = 1E10 integer, save :: hel_count = 0, hel_cutoff = 100 integer :: i integer, save, dimension(n_hel) :: hel_map = (/(i, i = 1, n_hel)/) integer, save :: hel_finite = n_hel contains pure function md5sum () character(len=32) :: md5sum ! DON'T EVEN THINK of modifying the following line! md5sum = "08756A065520AA605A16A64239024FBD" end function md5sum subroutine init (par, scheme) real(kind=default), dimension(*), intent(in) :: par integer, intent(in) :: scheme call import_from_whizard (par, scheme) end subroutine init subroutine final () end subroutine final subroutine update_alpha_s (alpha_s) real(kind=default), intent(in) :: alpha_s call model_update_alpha_s (alpha_s) end subroutine update_alpha_s pure function number_particles_in () result (n) integer :: n n = n_in end function number_particles_in pure function number_particles_out () result (n) integer :: n n = n_out end function number_particles_out pure function number_spin_states () result (n) integer :: n n = size (table_spin_states, dim=2) end function number_spin_states pure subroutine spin_states (a) integer, dimension(:,:), intent(out) :: a a = table_spin_states end subroutine spin_states pure function number_flavor_states () result (n) integer :: n n = size (table_flavor_states, dim=2) end function number_flavor_states pure subroutine flavor_states (a) integer, dimension(:,:), intent(out) :: a a = table_flavor_states end subroutine flavor_states pure function openmp_supported () result (status) logical :: status status = .false. end function openmp_supported pure function number_color_indices () result (n) integer :: n n = size (table_color_flows, dim=1) end function number_color_indices pure function number_color_flows () result (n) integer :: n n = size (table_color_flows, dim=3) end function number_color_flows pure subroutine color_flows (a, g) integer, dimension(:,:,:), intent(out) :: a logical, dimension(:,:), intent(out) :: g a = table_color_flows g = table_ghost_flags end subroutine color_flows pure function number_color_factors () result (n) integer :: n n = size (table_color_factors) end function number_color_factors pure subroutine color_factors (cf) type(OCF), dimension(:), intent(out) :: cf cf = table_color_factors end subroutine color_factors function color_sum (flv, hel) result (amp2) integer, intent(in) :: flv, hel real(kind=default) :: amp2 amp2 = real (omega_color_sum (flv, hel, amp, table_color_factors)) end function color_sum subroutine new_event (p) real(kind=default), dimension(0:3,*), intent(in) :: p logical :: mask_dirty integer :: hel call calculate_amplitudes (amp, p, hel_is_allowed) if ((hel_threshold .gt. 0) .and. (hel_count .le. hel_cutoff)) then call omega_update_helicity_selection (hel_count, amp, hel_max_abs, & hel_sum_abs, hel_is_allowed, hel_threshold, hel_cutoff, & mask_dirty) if (mask_dirty) then hel_finite = 0 do hel = 1, n_hel if (hel_is_allowed(hel)) then hel_finite = hel_finite + 1 hel_map(hel_finite) = hel end if end do end if end if end subroutine new_event subroutine reset_helicity_selection (threshold, cutoff) real(kind=default), intent(in) :: threshold integer, intent(in) :: cutoff integer :: i hel_is_allowed = T hel_max_abs = 0 hel_sum_abs = 0 hel_count = 0 hel_threshold = threshold hel_cutoff = cutoff hel_map = (/(i, i = 1, n_hel)/) hel_finite = n_hel end subroutine reset_helicity_selection pure function is_allowed (flv, hel, col) result (yorn) logical :: yorn integer, intent(in) :: flv, hel, col yorn = hel_is_allowed(hel) .and. flv_col_is_allowed(flv,col) end function is_allowed pure function get_amplitude (flv, hel, col) result (amp_result) complex(kind=default) :: amp_result integer, intent(in) :: flv, hel, col amp_result = amp(flv, col, hel) end function get_amplitude subroutine calculate_amplitudes (amp, k, mask) complex(kind=default), dimension(:,:,:), intent(out) :: amp real(kind=default), dimension(0:3,*), intent(in) :: k logical, dimension(:), intent(in) :: mask integer, dimension(n_prt) :: s integer :: h, hi amp = 0 end subroutine calculate_amplitudes end module opr_P6f_llxyyx_i3