File indexing completed on 2025-02-21 09:58:02
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifndef DD4HEP_OPTICALSURFACEMANAGER_H
0014 #define DD4HEP_OPTICALSURFACEMANAGER_H
0015
0016
0017 #include <DD4hep/OpticalSurfaces.h>
0018
0019
0020 #include <TGeoManager.h>
0021
0022
0023 namespace dd4hep {
0024
0025
0026 namespace detail {
0027 class OpticalSurfaceManagerObject;
0028 }
0029
0030
0031
0032
0033
0034
0035
0036
0037 class OpticalSurfaceManager: public Handle<detail::OpticalSurfaceManagerObject> {
0038 public:
0039 typedef detail::OpticalSurfaceManagerObject Object;
0040
0041 public:
0042
0043 OpticalSurfaceManager() = default;
0044
0045 OpticalSurfaceManager(const OpticalSurfaceManager& e) = default;
0046
0047 OpticalSurfaceManager(TGeoManager* obj) : Handle<Object>(obj) { }
0048
0049 OpticalSurfaceManager(const Handle<Object>& e) : Handle<Object>(e) { }
0050
0051 template <typename Q>
0052 OpticalSurfaceManager(const Handle<Q>& e) : Handle<Object>(e) { }
0053
0054 OpticalSurfaceManager(Detector& description);
0055
0056 OpticalSurfaceManager& operator=(const OpticalSurfaceManager& m) = default;
0057
0058
0059 static OpticalSurfaceManager getOpticalSurfaceManager(Detector& description);
0060
0061
0062 SkinSurface skinSurface(const std::string& full_name) const;
0063
0064 SkinSurface skinSurface(DetElement de, const std::string& nam) const;
0065
0066 BorderSurface borderSurface(const std::string& full_name) const;
0067
0068 BorderSurface borderSurface(DetElement de, const std::string& nam) const;
0069
0070 OpticalSurface opticalSurface(const std::string& full_name) const;
0071
0072 OpticalSurface opticalSurface(DetElement de, const std::string& nam) const;
0073
0074 void addSkinSurface(DetElement de, SkinSurface surf) const;
0075
0076 void addBorderSurface(DetElement de, BorderSurface surf) const;
0077
0078 void addOpticalSurface(OpticalSurface surf) const;
0079
0080
0081 void registerSurfaces(DetElement subdetector);
0082 };
0083 }
0084 #endif