As discussed, the AbstractOutPhaseSpacePoint does not really serve any purpose and should therefore be removed.
However, I noticed that this makes the AbstractInPhaseSpacePoint equivalent to the normal AbstractPhaseSpacePoint because both would now require the incoming phase space to be non-empty. I would therefore propose to do the following:
- Allow an
AbstractPhaseSpacePoint to have an empty out phase space, but don't allow an empty in phase space.
- Keep
AbstractInPhaseSpacePoint as is, i.e., require the in phase space to be non-empty (which is now only an alias to AbstractPhaseSpacePoint since it also requires that). I think it would still be nice to have an explicit alias even though it's functionally the same.
- Remove
AbstractOutPhaseSpacePoint.
- Add an
AbstractFullPhaseSpacePoint (or something similar) that requires the incoming and outgoing phase space to be defined.
As discussed, the
AbstractOutPhaseSpacePointdoes not really serve any purpose and should therefore be removed.However, I noticed that this makes the
AbstractInPhaseSpacePointequivalent to the normalAbstractPhaseSpacePointbecause both would now require the incoming phase space to be non-empty. I would therefore propose to do the following:AbstractPhaseSpacePointto have an empty out phase space, but don't allow an empty in phase space.AbstractInPhaseSpacePointas is, i.e., require the in phase space to be non-empty (which is now only an alias toAbstractPhaseSpacePointsince it also requires that). I think it would still be nice to have an explicit alias even though it's functionally the same.AbstractOutPhaseSpacePoint.AbstractFullPhaseSpacePoint(or something similar) that requires the incoming and outgoing phase space to be defined.