CGEM BOSS 6.6.5.f
BESIII Offline Software System
Loading...
Searching...
No Matches
DetectorDescription/ROOTGeo/ROOTGeo-00-00-15/ROOTGeo/EmcROOTGeo.h
Go to the documentation of this file.
1//$id$
2/*
3 * 2004/11/29 Zhengyun You Peking University
4 * Emc Geometry General for EventDisplay
5 *
6 * 2004/12/11 Zhengyun You Peking University
7 * named from EmcGeo to EmcROOTGeo
8 * inherit from class SubDetectorROOTGeo
9 *
10 * 2005/04/04 Zhengyun You Peking University
11 * Emc End geometry added
12 */
13
14#ifndef EMC_ROOT_GEO_H
15#define EMC_ROOT_GEO_H
16
17#include <TGeoVolume.h>
18#include <TGeoNode.h>
19#include <TGeoPhysicalNode.h>
20
21#include "SubDetectorROOTGeo.h"
22/**
23 * Class EmcGeo contains all of the objects necessary to describe the
24 * emc geometry.
25 *
26 * @author Zhengyun You \URL{mailto:[email protected]}
27 *
28 */
29
31{
32 public:
33
34 /// Constructor.
35 EmcROOTGeo();
36
37 /// Destructor.
39
40 /// Initialize the instance of ROOTGeo.
41 void InitFromGdml( const char *gdmlFile, const char *setupName );
42
43 /// Set the pointers to theirs nodes;
44 void SetNode();
45
46 /// Set default visual attributes;
47 void SetDefaultVis();
48
49 /// Set all visible;
50 void SetAllVisible();
51
52 /// Set quater visible;
53 void SetQuarterVisible();
54
55 /// Set the pointers to the physical nodes;
56 void SetPhysicalNode();
57
58 /// Get number of part;
59 int GetPartNb();
60
61 /// Get number of theta on part;
62 int GetThetaNb(int part);
63
64 /// Get number of phi on part;
65 int GetPhiNb(int part);
66
67 /// Get Emc volume;
68 TGeoVolume *GetVolumeEmc() { return m_Emc; }
69
70 /// Get part volume;
71 TGeoVolume *GetVolumePart( int part );
72
73 /// Get phi volume;
74 TGeoVolume *GetVolumePhi( int part, int phi );
75
76 /// Get theta volume;
77 TGeoVolume *GetVolumeTheta( int part, int phi, int theta );
78
79 /// Get crystal volume;
80 TGeoVolume *GetVolumeCrystal( int part, int phi, int theta );
81
82 /// Get part node;
83 TGeoNode *GetPart( int part );
84
85 /// Get phi node;
86 TGeoNode *GetPhi( int part, int phi );
87
88 /// Get theta node;
89 TGeoNode *GetTheta( int part, int phi, int theta );
90
91 /// Get crystal one;
92 TGeoNode *GetCrystal( int part, int phi, int theta );
93
94 /// Get crystal physical node;
95 TGeoPhysicalNode *GetPhysicalCrystal( int part, int phi, int theta );
96
97 private:
98 static const int m_kPart = 3;
99 static const int m_kPhiBr = 120;
100 static const int m_kThetaBr = 44;
101 //static const int m_kPhiEc = 16;
102 //static const int m_kThetaEc = 35;
103 int m_kPhiEc;
104 int m_kThetaEc;
105
106 TGeoVolume *m_Emc;
107 TGeoNode *m_NodeTheta[m_kPart][m_kPhiBr][m_kThetaBr]; // m_kPhiBr > m_kPhiEc, m_kThetaBr > m_kThetaEc
108 TGeoPhysicalNode *m_PhysicalCrystal[m_kPart][m_kPhiBr][m_kThetaBr];
109
110 // Volume refer to logicalVolume, only refer to the one exists.
111 // Node refer to physicalVolume, each real theta has a corresponding physical volume, althought they may be the same one.
112 // PhysicalNode gives the path combined by physical volume, it's unique for each real theta.
113};
114
115#endif /* EMC_ROOT_GEO_H */
TGeoVolume * GetVolumeCrystal(int part, int phi, int theta)
Get crystal volume;.
TGeoNode * GetCrystal(int part, int phi, int theta)
Get crystal one;.
void InitFromGdml(const char *gdmlFile, const char *setupName)
Initialize the instance of ROOTGeo.
TGeoVolume * GetVolumeTheta(int part, int phi, int theta)
Get theta volume;.
TGeoNode * GetTheta(int part, int phi, int theta)
Get theta node;.
TGeoVolume * GetVolumePart(int part)
Get part volume;.
void SetDefaultVis()
Set default visual attributes;.
int GetPhiNb(int part)
Get number of phi on part;.
TGeoVolume * GetVolumePhi(int part, int phi)
Get phi volume;
void SetPhysicalNode()
Set the pointers to the physical nodes;.
void SetNode()
Set the pointers to theirs nodes;.
int GetThetaNb(int part)
Get number of theta on part;.
TGeoNode * GetPhi(int part, int phi)
Get phi node;.
TGeoPhysicalNode * GetPhysicalCrystal(int part, int phi, int theta)
Get crystal physical node;.