BOSS 7.0.3
BESIII Offline Software System
Loading...
Searching...
No Matches
InstallArea/include/BesVisLib/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 "BesView.h"
11#include "MdcROOTGeo.h"
12#include "TofROOTGeo.h"
13#include "EmcROOTGeo.h"
14#include "MucROOTGeo.h"
15#include "BesCircle2D.h"
16#include "BesPolygon2D.h"
17
18class BesGeometry : public TObject {
19
20 public:
22 virtual ~BesGeometry();
23
24 virtual void InitFromGDML(const TString fPath);
25 virtual void InitFromROOT(TGeoVolume* volBes);
26 virtual void InitGeometry();
27
28 const char* GetFilename(const char* RunPeriod);
29 virtual void SetDefaultVis();
30 virtual void Draw(Option_t *option = "3D");
31 virtual void Draw3D();
32 virtual void Draw2DXY();
33 virtual void Draw2DZR();
34
35 Float_t GetBesR() { return m_BesR; }
36 Float_t GetBesZ() { return m_BesZ; }
37
38 TGeoVolume *GetVolBes() { return m_Bes; }
39 TGeoVolume *GetVolumeBeamPipe() { return m_BeamPipe; }
40
41 MdcROOTGeo *GetMdcROOTGeo() { return m_MdcROOTGeo; }
42 TofROOTGeo *GetTofROOTGeo() { return m_TofROOTGeo; }
43 EmcROOTGeo *GetEmcROOTGeo() { return m_EmcROOTGeo; }
44 MucROOTGeo *GetMucROOTGeo() { return m_MucROOTGeo; }
45
46 TGeoVolume *GetVolumeMdc() { return m_MdcROOTGeo->GetVolumeMdc(); }
47 TGeoVolume *GetVolumeMdcSegment(int segment) { return m_MdcROOTGeo->GetVolumeSegment(segment); }
48 TGeoVolume *GetVolumeMdcLayer(int layer) { return m_MdcROOTGeo->GetVolumeLayer(layer); }
49 TGeoVolume *GetVolumeMdcReplica(int layer) { return m_MdcROOTGeo->GetVolumeReplica(layer); }
50 TGeoPhysicalNode *GetPhysicalMdcReplica(int layer, int replica) { return m_MdcROOTGeo->GetPhysicalReplica(layer, replica); }
51
52 TGeoVolume *GetVolumeTof() { return m_TofROOTGeo->GetVolumeTof(); }
53 //TGeoVolumeAssembly *GetVolumeTofAssembly(int part) { return m_TofROOTGeo->GetVolumeAssembly(part); }
54 //TGeoVolume *GetVolumeTofScin(int part) { return m_TofROOTGeo->GetVolumeScin(part); }
55 //TGeoVolume *GetVolumeTofBucket(int part) { return m_TofROOTGeo->GetVolumeBucket(part); }
56 TGeoPhysicalNode *GetPhysicalTofScin(int part, int layer, int scin) { return m_TofROOTGeo->GetPhysicalScin(part, layer, scin); }
57
58 TGeoVolume *GetVolumeEmc() { return m_EmcROOTGeo->GetVolumeEmc(); }
59 TGeoVolume *GetVolumeEmcPart(int part) { return m_EmcROOTGeo->GetVolumePart(part); }
60 TGeoVolume *GetVolumeEmcPhi(int part, int phi) { return m_EmcROOTGeo->GetVolumePhi(part, phi); }
61 TGeoVolume *GetVolumeEmcTheta(int part, int phi, int theta) { return m_EmcROOTGeo->GetVolumeTheta(part, phi, theta); }
62 TGeoVolume *GetVolumeEmcCrystal(int part, int phi, int theta) { return m_EmcROOTGeo->GetVolumeCrystal(part, phi, theta); }
63 TGeoPhysicalNode *GetPhysicalEmcCrystal(int part, int phi, int theta) { return m_EmcROOTGeo->GetPhysicalCrystal(part, phi, theta); }
64
65 TGeoVolume *GetVolumeMuc() { return m_MucROOTGeo->GetVolumeMuc(); }
66 TGeoVolume *GetVolumeMucAbsorber(int part, int seg, int absorber) { return m_MucROOTGeo->GetVolumeAbsorber(part, seg, absorber); }
67 TGeoVolume *GetVolumeMucAbsorberPanel(int part, int seg, int absorber, int panel) { return m_MucROOTGeo->GetVolumeAbsorberPanel(part, seg, absorber, panel); }
68 TGeoVolume *GetVolumeMucGap(int part, int seg, int gap) { return m_MucROOTGeo->GetVolumeGap(part, seg, gap); }
69 TGeoVolume *GetVolumeMucStripPlane(int part, int seg, int gap) { return m_MucROOTGeo->GetVolumeStripPlane(part, seg, gap); }
70 TGeoVolume *GetVolumeMucStrip(int part, int seg, int gap, int strip) { return m_MucROOTGeo->GetVolumeStripPlane(part, seg, gap); }
71 TGeoVolume *GetVolumeMucGasChamber(int part, int seg, int gap, int panel, int gasChamber) { return m_MucROOTGeo->GetVolumeGasChamber(part, seg, gap, panel, gasChamber); }
72 TGeoVolume *GetVolumeMucBakelite(int part, int seg, int gap, int RpcUpDown, int panel, int bakelite) { return m_MucROOTGeo->GetVolumeBakelite(part, seg, gap, RpcUpDown, panel, bakelite); }
73 TGeoPhysicalNode *GetPhysicalMucGap(int part, int seg, int gap) { return m_MucROOTGeo->GetPhysicalGap(part, seg, gap); }
74 TGeoPhysicalNode *GetPhysicalMucStrip(int part, int seg, int gap, int strip) { return m_MucROOTGeo->GetPhysicalStrip(part, seg, gap, strip); }
75
76 private:
77 Double_t m_BesR;
78 Double_t m_BesZ;
79
80 Double_t m_BeamPipeRMin;
81 Double_t m_BeamPipeRMax;
82 Double_t m_BeamPipeZ;
83
84 TGeoVolume *m_Bes; //Bes world volume
85 TGeoVolume *m_BeamPipe; //Beam Pipe volume
86 TGeoVolume *m_Mdc;
87 TGeoVolume *m_Tof;
88 TGeoVolume *m_Emc;
89 TGeoVolume *m_Muc;
90
91 MdcROOTGeo *m_MdcROOTGeo; //MdcROOTGeo
92 TofROOTGeo *m_TofROOTGeo; //TofROOTGeo
93 EmcROOTGeo *m_EmcROOTGeo; //EmcROOTGeo
94 MucROOTGeo *m_MucROOTGeo; //MucROOTGeo
95
96 BesCircle2D *m_BeamPipeXY;
97 BesPolygon2D *m_BeamPipeZR;
98 BesPolygon2D *m_ZRPlaneOnXY;
99
100 ClassDef(BesGeometry, 1) // Bes Geometry
101};
102
104
105#endif
R__EXTERN BesGeometry * gBesGeometry
TGeoVolume * GetVolumeMucStrip(int part, int seg, int gap, int strip)
virtual void Draw3D()
TGeoVolume * GetVolumeMucGap(int part, int seg, int gap)
TGeoPhysicalNode * GetPhysicalMucGap(int part, int seg, int gap)
TGeoPhysicalNode * GetPhysicalEmcCrystal(int part, int phi, int theta)
TGeoVolume * GetVolumeMucAbsorber(int part, int seg, int absorber)
virtual void InitFromROOT(TGeoVolume *volBes)
TGeoVolume * GetVolumeMucStripPlane(int part, int seg, int gap)
TGeoVolume * GetVolumeMucGasChamber(int part, int seg, int gap, int panel, int gasChamber)
virtual ~BesGeometry()
const char * GetFilename(const char *RunPeriod)
TGeoVolume * GetVolumeEmcCrystal(int part, int phi, int theta)
virtual void InitGeometry()
TGeoPhysicalNode * GetPhysicalMucStrip(int part, int seg, int gap, int strip)
TGeoVolume * GetVolumeMucAbsorberPanel(int part, int seg, int absorber, int panel)
virtual void Draw(Option_t *option="3D")
TGeoVolume * GetVolumeEmcPhi(int part, int phi)
virtual void InitFromGDML(const TString fPath)
virtual void SetDefaultVis()
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)
TGeoPhysicalNode * GetPhysicalTofScin(int part, int layer, int scin)
virtual void Draw2DZR()
virtual void Draw2DXY()
TGeoVolume * GetVolumeCrystal(int part, int phi, int theta)
Get crystal volume;.
TGeoVolume * GetVolumeTheta(int part, int phi, int theta)
Get theta volume;.
TGeoVolume * GetVolumePart(int part)
Get part volume;.
TGeoVolume * GetVolumePhi(int part, int phi)
Get phi volume;
TGeoPhysicalNode * GetPhysicalCrystal(int part, int phi, int theta)
Get crystal physical node;.
TGeoVolume * GetVolumeLayer(int layer)
Get layer volume;
TGeoVolume * GetVolumeReplica(int layer)
Get replica volume;.
TGeoVolume * GetVolumeSegment(int segment)
Get segment volume;.
TGeoPhysicalNode * GetPhysicalReplica(int layer, int replica)
Get replica physical node;.
TGeoVolume * GetVolumeStripPlane(int part, int seg, int gap)
Get strip plane volume;.
TGeoVolume * GetVolumeGasChamber(int part, int seg, int gap, int panel, int gasChamber)
Get rpc gas chamber volume;
TGeoPhysicalNode * GetPhysicalStrip(int part, int seg, int gap, int strip)
Get strip physical node;.
TGeoVolume * GetVolumeBakelite(int part, int seg, int gap, int panel, int bakelite)
Get rpc bakelite volume;
TGeoVolume * GetVolumeAbsorberPanel(int part, int seg, int absorber, int panel)
Get absorber panel volume;
TGeoVolume * GetVolumeGap(int part, int seg, int gap)
Get gap volume;
TGeoVolume * GetVolumeAbsorber(int part, int seg, int absorber)
Get absorber volume;
TGeoPhysicalNode * GetPhysicalGap(int part, int seg, int gap)
Get rpc gas chamber node;
TGeoPhysicalNode * GetPhysicalScin(int part, int scin)
Get scintillator physical node;.