00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef MUC_ROOT_GEO_H
00012 #define MUC_ROOT_GEO_H
00013
00014 #include <TGeoVolume.h>
00015 #include <TGeoNode.h>
00016 #include <TGeoPhysicalNode.h>
00017
00018 #include "SubDetectorROOTGeo.h"
00027 class MucROOTGeo : public SubDetectorROOTGeo
00028 {
00029 public:
00030
00032 MucROOTGeo();
00033
00035 ~MucROOTGeo();
00036
00038 void InitFromGdml( const char *gdmlFile, const char *setupName );
00039
00041 void SetNode();
00042
00044 void SetDefaultVis();
00045
00047 void SetAllVisible();
00048
00050 void SetQuarterVisible();
00051
00053 void SetPhysicalNode();
00054
00056 int GetPartNum();
00057
00059 int GetSegNum(int part);
00060
00062 int GetGapNum(int part);
00063
00065 int GetStripNum(int part, int seg, int gap);
00066
00068 TGeoVolume *GetVolumeMuc() { return m_Muc; }
00069
00071 TGeoVolume *GetVolumeAbsorber( int part, int seg, int absorber );
00072
00074 float GetAbsorberThickness( int part, int seg, int absorber );
00075
00077 TGeoVolume *GetVolumeAbsorberPanel( int part, int seg, int absorber, int panel );
00078
00080 TGeoVolume *GetVolumeGap( int part, int seg, int gap );
00081
00083 TGeoVolume *GetVolumeAluminumBox( int part, int seg, int gap );
00084
00086 TGeoVolume *GetVolumeStripPlane( int part, int seg, int gap );
00087
00089 TGeoVolume *GetVolumeStrip( int part, int seg, int gap, int strip );
00090
00092 TGeoVolume *GetVolumeGasChamber( int part, int seg, int gap, int panel, int gasChamber );
00093
00095 TGeoVolume *GetVolumeBakelite( int part, int seg, int gap, int panel, int bakelite );
00096
00098
00099
00101
00102
00104 TGeoNode *GetGap( int part, int seg, int gap );
00105
00107
00108
00110 TGeoNode *GetStripPlane( int part, int seg, int gap);
00111
00113 TGeoNode *GetStrip( int part, int seg, int gap, int strip );
00114
00116
00117
00119
00120
00122 TGeoPhysicalNode *GetPhysicalGap( int part, int seg, int gap );
00123
00125 TGeoPhysicalNode *GetPhysicalAluminumBox( int part, int seg, int gap );
00126
00127
00129 TGeoPhysicalNode *GetPhysicalStrip( int part, int seg, int gap, int strip );
00130
00131 private:
00132
00133 static const int m_kPart = 3;
00134 static const int m_kSegMax = 8;
00135 static const int m_kAbsorberMax = 9;
00136 static const int m_kGapMax = 9;
00137 static const int m_kPanelMax = 4;
00138 static const int m_kStripMax = 112;
00139 static const int m_kBakelite = 4;
00140 static const int m_kGasChamber = 2;
00141
00142 static const int m_kSeg[m_kPart];
00143 static const int m_kAbsorber[m_kPart];
00144 static const int m_kGap[m_kPart];
00145 static const int m_kPanel[m_kPart];
00146
00147 int m_StripNum[m_kPart][m_kSegMax][m_kGapMax];
00148
00149 TGeoVolume *m_Muc;
00150 TGeoNode *m_NodeGap[m_kPart][m_kSegMax][m_kGapMax];
00151
00152 TGeoNode *m_NodeStripPlane[m_kPart][m_kSegMax][m_kGapMax];
00153 TGeoNode *m_NodeStrip[m_kPart][m_kSegMax][m_kGapMax][m_kStripMax];
00154
00155 TGeoPhysicalNode *m_PhysicalGap[m_kPart][m_kSegMax][m_kGapMax];
00156
00157 TGeoPhysicalNode *m_PhysicalStrip[m_kPart][m_kSegMax][m_kGapMax][m_kStripMax];
00158 };
00159
00160 #endif