The number of projectors is the same as the number of distinct eigenvalues in the specified conservation law. Note that the eigenvalues themselves are not important, only the order in which they appear and whether they are distinct or not. In your case,
you could set conservation_law = np.diag([-2, -1, 1, 2]) to get projectors onto e_up, e_down, h_up and h_down, respectively, using lead.discrete_symmetry().projectors.To get subblocks of the scattering matrix between conservation law values, you can use the
submatrix(lead_out, lead_in) method of
kwant.solvers.common.SMatrix, where lead_in and lead_out can be tuples of (lead index, projector index).