00001 //$id$ 00002 /* 00003 * 2004/11/29 Zhengyun You Peking University 00004 * Tof Geometry General for EventDisplay 00005 * 00006 * 2004/12/9 Zhengyun You Peking University 00007 * named from TofGeo to MdcROOTGeo 00008 * inherit from class SubDetectorROOTGeo 00009 */ 00010 00011 #ifndef MDC_ROOT_GEO_H 00012 #define MDC_ROOT_GEO_H 00013 00014 #include <map> 00015 00016 #include <TGeoVolume.h> 00017 #include <TGeoNode.h> 00018 #include <TGeoPhysicalNode.h> 00019 00020 #include "SubDetectorROOTGeo.h" 00029 class MdcROOTGeo : public SubDetectorROOTGeo 00030 { 00031 public: 00032 00034 MdcROOTGeo(); 00035 00037 ~MdcROOTGeo(); 00038 00040 void InitFromGdml( const char *gdmlFile, const char *setupName ); 00041 00043 void SetNode(); 00044 00046 int CorrectReplica(int layer, int replica); 00047 00049 void SetDefaultVis(); 00050 00052 void SetAllVisible(); 00053 00055 void SetQuarterVisible(); 00056 00058 void SetPhysicalNode(); 00059 00061 int GetSegmentNb(); 00062 00064 int GetLayerNb(); 00065 00067 int GetReplicaNb(int layer) { return m_kReplica[layer]; } 00068 00070 TGeoVolume *GetVolumeMdc() { return m_Mdc; } 00071 00073 TGeoVolume *GetVolumeSegment( int segment ); 00074 00076 TGeoVolume *GetVolumeLayer( int layer ); 00077 00079 TGeoVolume *GetVolumeReplica( int layer ); 00080 00082 TGeoNode *GetSegment( int segment, int no ); 00083 00085 TGeoNode *GetLayer( int layer ); 00086 00088 TGeoNode *GetReplica( int layer, int replica ); 00089 00091 TGeoPhysicalNode *GetPhysicalReplica( int layer, int replica ); 00092 00093 private: 00094 00095 static const int m_kSegment = 66; 00096 static const int m_kStereoLayerIn = 8; 00097 static const int m_kAxialLayerIn = 12; 00098 static const int m_kStereoLayerOut = 16; 00099 static const int m_kAxialLayerOut = 7; 00100 static const int m_kLayer = 50; 00101 static const int m_kReplicaMax = 288; 00102 static const int m_kReplica[m_kLayer]; 00103 static const int m_kCorrectLayer = 10; 00104 static const int m_kiCorrectLayer[m_kCorrectLayer]; 00105 static const int m_kiCorrectReplica[m_kCorrectLayer]; 00106 00107 std::map<int ,int> m_CorrectMap; 00108 typedef std::map<int, int> intMap; 00109 00110 TGeoVolume *m_Mdc; 00111 TGeoNode *m_NodeReplica[m_kLayer][m_kReplicaMax]; 00112 TGeoPhysicalNode *m_PhysicalReplica[m_kLayer][m_kReplicaMax]; 00113 }; 00114 00115 #endif /* MDC_ROOT_GEO_H */