function get_helement_rs_hub_ex_mat(nI, ic, ex, tpar) result(hel)
integer, intent(in) :: nI(nel)
integer, intent(in) :: ic, ex(2, ic)
logical, intent(in) :: tpar
HElement_t(dp) :: hel
if (ic == 0) then
! diagonal matrix element -> sum over doubly occupied orbitals!
hel = get_diag_helemen_rs_hub(nI)
else if (ic == 1) then
! one-body operator:
! here we need to make the distinction, if we are doing a
! transcorrelated hamiltonian or not
hel = get_offdiag_helement_rs_hub(nI, ex(:, 1), tpar)
else if (ic == 2 .and. t_trans_corr_hop) then
hel = get_double_helem_rs_hub_transcorr(ex, tpar)
else
! zero matrix element!
hel = h_cast(0.0_dp)
end if
end function get_helement_rs_hub_ex_mat