I am trying to set up a k.p (k dot p) calculation to get the band structure and expansion coefficients of a bulk semiconductor (such as GaAs or InSb). The Hamiltonian I use can be found in this paper (Phys. Rev. B 55, 6960 (1997)) and includes conduction, heavy-hole, light-hole, split-off bands, each twice spin degenerate. When I diagonalize the Hamiltonian, I get the same band structure (eigenvalues) as in the paper, so I am confident that I did it correctly. However, I am also interested in the expansion coefficients (eigenvectors) to compute Coulomb and dipole matrix elements. After sorting eigenvalues (and eigenvectors accordingly) in decreasing order, I am left with the problem that I cannot match the eigenvectors and eigenvalues uniquely to one band, since they are degenerate. That means that after sorting, I end up mixing these 2 degenerate bands. I had success bypassing this issue by adding a small energy to one of the degenerate bands (meaning that I added a small energy on the diagonal of the Hamiltonian). But, while my choice of adding the energies (which can be positive or negative) works in one direction (Gamma-X), the 2 now not-degenerate bands cross each other and then my sorting fails (see the figures I attached). My question is: How can I distinguish the 2 degenerate bands I get from a k.p calculation? Is there a smart way to do this?