subroutine DirectAnnihilation_diag(TotWalkersNew, iter_data)
! new direct annihilation routine to mimick the diagonal death step
! in the y(n) + k2 combination between reloaded CurrentDets and the
! DiagParts list
integer, intent(inout) :: TotWalkersNew
type(fcimc_iter_data), intent(inout) :: iter_data
character(*), parameter :: this_routine = "DirectAnnihilation_diag"
integer :: numSpawns
! As only diagonal events are considered here, no communication
! is required
! Also, this eliminates the need for compression as all dets are
! already stored contigously and in the right orde
! (no annihilation inside DiagParts can occur)
! valid_diag_spawns gets increased after the spawn
! to DiagParts(:,valid_diag_spawns) -> highest index is
! actually valid_diag_spawns-1
numSpawns = valid_diag_spawns - 1
call AnnihilateDiagParts(numSpawns, TotWalkersNew, iter_data)
! also should update the hashtable stats, specific for this diagonal
! spawning event, but the original one should work also for this
! since it only takes CurrentDets into account!
call CalcHashTableStats(TotWalkersNew, iter_data)
! this should be it, deterministic annihilation is carried out in the next
! step, within the 'regular' annihilation
end subroutine DirectAnnihilation_diag