BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EventDisplay/BesVisLib/include/BesVisLib/BesGeometry.h
Go to the documentation of this file.
1//
2// BesGeometry.h
3//
4
5#ifndef BES_GEOMETRY
6#define BES_GEOMETRY
7
8#include <TGeometry.h>
9
10#include "BesCircle2D.h"
11#include "BesPolygon2D.h"
12#include "BesView.h"
13#include "EmcROOTGeo.h"
14#include "MdcROOTGeo.h"
15#include "MucROOTGeo.h"
16#include "TofROOTGeo.h"
17
18class BesGeometry : public TObject {
19
20public:
22 virtual ~BesGeometry();
23
24 // Long Peixun's update: Add parameters for MRPC and CGEM
25 virtual void InitFromGDML( const TString fPath, bool mrpc = false, bool cgem = false );
26 virtual void InitFromROOT( TGeoVolume* volBes );
27 virtual void InitGeometry();
28
29 const char* GetFilename( const char* RunPeriod );
30 virtual void SetDefaultVis();
31 virtual void SetPhysicalDefaultVis(); // Long Peixun's update: Reset 3D color
32 virtual void Draw( Option_t* option = "3D" );
33 virtual void Draw3D();
34 virtual void Draw2DXY();
35 virtual void Draw2DZR();
36
37 Float_t GetBesR() { return m_BesR; }
38 Float_t GetBesZ() { return m_BesZ; }
39
40 TGeoVolume* GetVolBes() { return m_Bes; }
41 TGeoVolume* GetVolumeBeamPipe() { return m_BeamPipe; }
42
43 MdcROOTGeo* GetMdcROOTGeo() { return m_MdcROOTGeo; }
44 TofROOTGeo* GetTofROOTGeo() { return m_TofROOTGeo; }
45 EmcROOTGeo* GetEmcROOTGeo() { return m_EmcROOTGeo; }
46 MucROOTGeo* GetMucROOTGeo() { return m_MucROOTGeo; }
47
48 TGeoVolume* GetVolumeMdc() { return m_MdcROOTGeo->GetVolumeMdc(); }
49 TGeoVolume* GetVolumeMdcSegment( int segment ) {
50 return m_MdcROOTGeo->GetVolumeSegment( segment );
51 }
52 TGeoVolume* GetVolumeMdcLayer( int layer ) { return m_MdcROOTGeo->GetVolumeLayer( layer ); }
53 TGeoVolume* GetVolumeMdcReplica( int layer ) {
54 return m_MdcROOTGeo->GetVolumeReplica( layer );
55 }
56 TGeoPhysicalNode* GetPhysicalMdcReplica( int layer, int replica ) {
57 return m_MdcROOTGeo->GetPhysicalReplica( layer, replica );
58 }
59
60 TGeoVolume* GetVolumeTof() { return m_TofROOTGeo->GetVolumeTof(); }
61 // TGeoVolumeAssembly *GetVolumeTofAssembly(int part) { return
62 // m_TofROOTGeo->GetVolumeAssembly(part); } TGeoVolume *GetVolumeTofScin(int part) {
63 // return m_TofROOTGeo->GetVolumeScin(part); } TGeoVolume *GetVolumeTofBucket(int
64 // part) { return m_TofROOTGeo->GetVolumeBucket(part); }
65 TGeoPhysicalNode* GetPhysicalTofScin( int part, int layer, int scin ) {
66 return m_TofROOTGeo->GetPhysicalScin( part, layer, scin );
67 }
68
69 TGeoVolume* GetVolumeEmc() { return m_EmcROOTGeo->GetVolumeEmc(); }
70 TGeoVolume* GetVolumeEmcPart( int part ) { return m_EmcROOTGeo->GetVolumePart( part ); }
71 TGeoVolume* GetVolumeEmcPhi( int part, int phi ) {
72 return m_EmcROOTGeo->GetVolumePhi( part, phi );
73 }
74 TGeoVolume* GetVolumeEmcTheta( int part, int phi, int theta ) {
75 return m_EmcROOTGeo->GetVolumeTheta( part, phi, theta );
76 }
77 TGeoVolume* GetVolumeEmcCrystal( int part, int phi, int theta ) {
78 return m_EmcROOTGeo->GetVolumeCrystal( part, phi, theta );
79 }
80 TGeoPhysicalNode* GetPhysicalEmcCrystal( int part, int phi, int theta ) {
81 return m_EmcROOTGeo->GetPhysicalCrystal( part, phi, theta );
82 }
83
84 TGeoVolume* GetVolumeMuc() { return m_MucROOTGeo->GetVolumeMuc(); }
85 TGeoVolume* GetVolumeMucAbsorber( int part, int seg, int absorber ) {
86 return m_MucROOTGeo->GetVolumeAbsorber( part, seg, absorber );
87 }
88 TGeoVolume* GetVolumeMucAbsorberPanel( int part, int seg, int absorber, int panel ) {
89 return m_MucROOTGeo->GetVolumeAbsorberPanel( part, seg, absorber, panel );
90 }
91 TGeoVolume* GetVolumeMucGap( int part, int seg, int gap ) {
92 return m_MucROOTGeo->GetVolumeGap( part, seg, gap );
93 }
94 TGeoVolume* GetVolumeMucStripPlane( int part, int seg, int gap ) {
95 return m_MucROOTGeo->GetVolumeStripPlane( part, seg, gap );
96 }
97 TGeoVolume* GetVolumeMucStrip( int part, int seg, int gap, int strip ) {
98 return m_MucROOTGeo->GetVolumeStripPlane( part, seg, gap );
99 }
100 TGeoVolume* GetVolumeMucGasChamber( int part, int seg, int gap, int panel, int gasChamber ) {
101 return m_MucROOTGeo->GetVolumeGasChamber( part, seg, gap, panel, gasChamber );
102 }
103 TGeoVolume* GetVolumeMucBakelite( int part, int seg, int gap, int RpcUpDown, int panel,
104 int bakelite ) {
105 return m_MucROOTGeo->GetVolumeBakelite( part, seg, gap, RpcUpDown, panel, bakelite );
106 }
107 TGeoPhysicalNode* GetPhysicalMucGap( int part, int seg, int gap ) {
108 return m_MucROOTGeo->GetPhysicalGap( part, seg, gap );
109 }
110 TGeoPhysicalNode* GetPhysicalMucStrip( int part, int seg, int gap, int strip ) {
111 return m_MucROOTGeo->GetPhysicalStrip( part, seg, gap, strip );
112 }
113
114private:
115 Double_t m_BesR;
116 Double_t m_BesZ;
117
118 Double_t m_BeamPipeRMin;
119 Double_t m_BeamPipeRMax;
120 Double_t m_BeamPipeZ;
121
122 TGeoVolume* m_Bes; // Bes world volume
123 TGeoVolume* m_BeamPipe; // Beam Pipe volume
124 TGeoVolume* m_Mdc;
125 TGeoVolume* m_Tof;
126 TGeoVolume* m_Emc;
127 TGeoVolume* m_Muc;
128 TGeoPhysicalNode* m_phyBeamPipe; // Long Peixun's update: for BeamPipe full 3D view
129
130 MdcROOTGeo* m_MdcROOTGeo; // MdcROOTGeo
131 TofROOTGeo* m_TofROOTGeo; // TofROOTGeo
132 EmcROOTGeo* m_EmcROOTGeo; // EmcROOTGeo
133 MucROOTGeo* m_MucROOTGeo; // MucROOTGeo
134
135 BesCircle2D* m_BeamPipeXY;
136 BesPolygon2D* m_BeamPipeZR;
137 BesPolygon2D* m_ZRPlaneOnXY;
138
139 Int_t m_BeamPipeColor; // Long Peixun's update: color of beampipe
140
141 ClassDef( BesGeometry, 1 ) // Bes Geometry
142};
143
145
146#endif
legend Draw()
R__EXTERN BesGeometry * gBesGeometry
TGeoVolume * GetVolumeMucStrip(int part, int seg, int gap, int strip)
TGeoVolume * GetVolumeMucGap(int part, int seg, int gap)
TGeoPhysicalNode * GetPhysicalMucGap(int part, int seg, int gap)
virtual void InitGeometry()
TGeoPhysicalNode * GetPhysicalEmcCrystal(int part, int phi, int theta)
TGeoVolume * GetVolumeMucAbsorber(int part, int seg, int absorber)
virtual void SetDefaultVis()
TGeoVolume * GetVolumeMucStripPlane(int part, int seg, int gap)
virtual ~BesGeometry()
virtual void Draw2DXY()
TGeoVolume * GetVolumeMucGasChamber(int part, int seg, int gap, int panel, int gasChamber)
const char * GetFilename(const char *RunPeriod)
virtual void InitFromGDML(const TString fPath, bool mrpc=false, bool cgem=false)
TGeoVolume * GetVolumeEmcCrystal(int part, int phi, int theta)
virtual void SetPhysicalDefaultVis()
TGeoPhysicalNode * GetPhysicalMucStrip(int part, int seg, int gap, int strip)
TGeoVolume * GetVolumeMucAbsorberPanel(int part, int seg, int absorber, int panel)
TGeoVolume * GetVolumeEmcPhi(int part, int phi)
TGeoVolume * GetVolumeEmcTheta(int part, int phi, int theta)
TGeoVolume * GetVolumeMucBakelite(int part, int seg, int gap, int RpcUpDown, int panel, int bakelite)
TGeoPhysicalNode * GetPhysicalMdcReplica(int layer, int replica)
virtual void Draw2DZR()
TGeoPhysicalNode * GetPhysicalTofScin(int part, int layer, int scin)
virtual void InitFromROOT(TGeoVolume *volBes)
virtual void Draw3D()