pure function calc_orb_pgen_guga_pchb_double(this, excitInfo) result(pgen)
class(GugaAliasSampler_t), intent(in) :: this
type(ExcitationInformation_t), intent(in) :: excitInfo
real(dp) :: pgen
integer :: ij, ab
real(dp) :: p_elec
! i, j, k and l entries have the info about the electrons and
! holes of the excitation: E_{ij}E_{kl} is the convention ...
ij = fuseIndex(excitInfo%j, excitInfo%l)
p_elec = 1.0_dp / real(ElecPairs, dp)
ab = fuseIndex(excitInfo%i, excitInfo%k)
pgen = p_elec * this%alias_sampler%get_prob(ij, ab)
end function calc_orb_pgen_guga_pchb_double