subroutine init_norm()
! initialize the norm_psi, norm_psi_squared
implicit none
integer(int64) :: j
real(dp) :: sgn(lenof_sign)
logical :: tIsStateDeterm
norm_psi_squared = 0.0_dp
norm_semistoch_squared = 0.0_dp
! has to be set only once, if it changes in one iteration, it is reset in every iteration
tIsStateDeterm = .false.
do j = 1, TotWalkers
! get the sign
call extract_sign(CurrentDets(:, j), sgn)
if (tSemiStochastic) tIsStateDeterm = test_flag_multi(CurrentDets(:, j), flag_deterministic)
call addNormContribution(sgn, tIsStateDeterm)
end do
! sum up the norm over the procs
call MPISumAll(norm_psi_squared, all_norm_psi_squared)
! assign the sqrt norm
#ifdef CMPLX_
norm_psi = sqrt(sum(all_norm_psi_squared))
norm_semistoch = sqrt(sum(norm_semistoch_squared))
#else
norm_psi = sqrt(all_norm_psi_squared)
norm_semistoch = sqrt(norm_semistoch_squared)
#endif
old_norm_psi = norm_psi
all_norms = all_norm_psi_squared
end subroutine init_norm