Define a separate scoped enumeration for the possible SurfaceTypes. And use it consistently
Define a separate scoped enumeration for the possible SurfaceTypes. And use it consistently.
The motivation is that there is a cross dependency creeping in from ParametersBase to Surface and Surface to ParametersBase due to that enum. e.g
-
"Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/ParametersT.h" includes
#include "TrkSurfaces/Surface.h"
-
and "/Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h" includes
#include "TrkParametersBase/ParametersBase.h"
-
and "Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/ConeSurface.h" includes
#include "TrkParametersBase/ParametersT.h"
-
etc etc, e.g we include headers from one package to the other.
For now this kind of works as we do not have a CMake dependency (we omit it) from the TrkParametersBase to the Surfaces although we have the includes. And at the end seems to do the right thing when we go to the TrkParameters (template instantiation of some concrete types which is a 3rd package depending on both), but is a bit brittle and one needs to be very careful as is not obvious.
So do a similar thing like we did for the SurfaceUniquePtr
and move out the scoped enum in a different base package .
A single scoped enum allows to unify the usage syntax, as we seem to be using this a couple of different ways. Also avoids implicit conversions (to int), so we keep the type around, and seems to emit a bit better warnings in cases .
Mentioning @sroe