00001 //$id$ 00002 /* 00003 * 2004/12/9 Zhengyun You Peking University 00004 * ROOT Geometry for Bes sub-detector in event display and reconstruction. 00005 * 00006 */ 00007 00008 #ifndef SUBDETECTOR_ROOT_GEO_H 00009 #define SUBDETECTOR_ROOT_GEO_H 00010 00011 #include <string> 00012 00013 #include <TGeoVolume.h> 00014 #include <TGeoNode.h> 00015 00016 #include "Saxana/SAXProcessor.h" 00017 #include "Saxana/ProcessingConfigurator.h" 00018 #include "Processor/TGDMLProcessor.h" 00019 00028 class SubDetectorROOTGeo 00029 { 00030 public: 00031 00033 SubDetectorROOTGeo(); 00034 00036 virtual ~SubDetectorROOTGeo(); 00037 00039 void ReadGdml( const char *gdmlFile, const char *setupName ); 00040 00042 int IsInitialized() { return m_ROOTGeoInit; } 00043 00044 // Set child no of this subdetector in bes; 00045 void SetChildNo(int childNo) { m_childNo = childNo; } 00046 00048 TGeoVolume *GetLogicalVolume( const std::string& vn ); 00049 00051 TGeoVolume *GetTopVolume() { return m_TopVolume; } 00052 00054 TGeoVolumeAssembly *GetAssemblyVolume( const std::string& an ); 00055 00057 TGeoNode* GetNode( const std::string& nn ); 00058 00059 private: 00060 00061 SAXProcessor m_sxp; 00062 ProcessingConfigurator m_config; 00063 00064 protected: 00065 // Have we initialize the geometry. 00066 int m_ROOTGeoInit; 00067 int m_childNo; // child no of this subdetector in bes. 00068 00069 TGeoVolume *m_TopVolume; 00070 }; 00071 00072 #endif /* SUBDETECTOR_ROOT_GEO_H */