There is a trade-off required to do this: the coordinate system name and detector name must be combined into a single string that becomes the key used by FrameDict. Thus we need a separator that cannot be used by either the coordinate system name or the detector name and a bit of trivial code to combine them. This is only a minor nuisance, as we have to document the separator. However, TransformMap can return a list of supported CameraSys, so we also must be able to efficiently split the keys into system name and detector name. This is a bit more work, but C++ does provide appropriate calls. (We could avoid this by keeping a separate map of key: CameraSys, but that adds sufficient complexity that I do not think it would be worth making the proposed change.)
There is a trade-off required to do this: the coordinate system name and detector name must be combined into a single string that becomes the key used by FrameDict. Thus we need a separator that cannot be used by either the coordinate system name or the detector name and a bit of trivial code to combine them. This is only a minor nuisance, as we have to document the separator. However, TransformMap can return a list of supported CameraSys, so we also must be able to efficiently split the keys into system name and detector name. This is a bit more work, but C++ does provide appropriate calls. (We could avoid this by keeping a separate map of key: CameraSys, but that adds sufficient complexity that I do not think it would be worth making the proposed change.)