pure SUBROUTINE CalcOpenOrbs(iLut, OpenOrbs)
INTEGER(kind=n_int) :: iLutAlpha(0:NIfD), iLutBeta(0:NIfD)
integer(n_int), intent(in) :: ilut(0:NIfD)
integer, intent(out) :: OpenOrbs
iLutAlpha(:) = 0
iLutBeta(:) = 0
iLutAlpha(:) = IAND(iLut(:), MaskAlpha) !Seperate the alpha and beta bit strings
iLutBeta(:) = IAND(iLut(:), MaskBeta)
iLutAlpha(:) = ISHFT(iLutAlpha(:), -1) !Shift all alpha bits to the left by one.
iLutAlpha(:) = NOT(iLutAlpha(:)) ! This NOT means that set bits are now represented by 0s, not 1s
iLutAlpha(:) = IAND(iLutAlpha(:), iLutBeta(:)) ! Now, only the 1s in the beta string will be counted.
OpenOrbs = CountBits(iLutAlpha, NIfD, NEl)
END SUBROUTINE CalcOpenOrbs