00001 #ifndef SoDet_SoDetConverter_h 00002 #define SoDet_SoDetConverter_h 00003 00004 #include "GaudiKernel/Point3DTypes.h" 00005 #include "GaudiKernel/Vector3DTypes.h" 00006 #include "GaudiKernel/Transform3DTypes.h" 00007 00008 // CRJ : Following is needed until using a version of 00009 // LHCbDefinitions that includes this 00010 #include "Math/Quaternion.h" 00011 namespace Gaudi { 00012 typedef ROOT::Math::Quaternion Quaternion; 00013 }; 00014 00015 #include <string> 00016 00017 #include <GaudiKernel/Converter.h> 00018 00019 class ISoConversionSvc; 00020 class IUserInterfaceSvc; 00021 class ISolid; 00022 class ILVolume; 00023 class ISvcLocator; 00024 class IVisualizationSvc; 00025 class MsgStream; 00026 00027 class SbPolyhedron; 00028 class SoNode; 00029 class SoStyleCache; 00030 00031 class SoDetConverter : public Converter { 00032 public: 00033 virtual StatusCode initialize(); 00034 virtual StatusCode finalize(); 00035 virtual long repSvcType() const; 00036 public : 00037 SoDetConverter(ISvcLocator*, CLID); 00038 virtual ~SoDetConverter(); 00039 SoNode* volumeToSoDetectorTreeKit(const ILVolume&, 00040 const Gaudi::Transform3D&, 00041 bool = false); 00042 MsgStream* out(); 00043 private : 00044 SbPolyhedron* solidToSbPolyhedron(const ISolid&); 00045 SbPolyhedron* simpleSolidToSbPolyhedron(const ISolid&); 00046 SbPolyhedron* booleanSolidToSbPolyhedron (const ISolid&); 00047 protected: 00048 ISoConversionSvc* fSoCnvSvc; 00049 IUserInterfaceSvc* fUISvc; 00050 private : 00051 IVisualizationSvc* m_visSvc; 00052 MsgStream* m_out; 00053 SoStyleCache* fStyleCache; 00054 int fRotationSteps; 00055 bool fDoBooleanOperation; 00056 }; 00057 00058 00059 00060 #endif