BOSS 7.1.2
BESIII Offline Software System
Loading...
Searching...
No Matches
MucEntity.h
Go to the documentation of this file.
1//------------------------------------------------------------------------------|
2// [File ]: MucEntity.h |
3// [Brief ]: Head file of MUC geometry entity class |
4// [Author]: Xie Yuguang, <[email protected]> |
5// [Date ]: May 22, 2005 |
6//------------------------------------------------------------------------------|
7
8#ifndef MUC_ENTITY_H
9#define MUC_ENTITY_H
10
11#include<iostream>
12
13//#include "CLHEP/Geometry/Vector3D.h"
14//#include "CLHEP/Geometry/Point3D.h"
15
16using namespace std;
17
19{
20 public:
21 MucEntity( int part, int segment, int layer );
22 MucEntity( int part, int segment, int layer, int id );
23 MucEntity( int part, int segment, int layer, int upDown, int id );
24 MucEntity( int part, int segment, int layer, int upDown, int rpcId, int id );
25 MucEntity( const MucEntity &other );
26 MucEntity &operator =( const MucEntity &other );
27 virtual ~MucEntity() ;
28
29 int GetPart();
30 int GetSegment();
31 int GetLayer();
32 int GetUpDown();
33 int GetRpcId();
34 int GetID();
35
36 double GetTheta();
37 double GetRin();
38 double GetRout();
39 double GetRc();
40 double GetThin();
41 double GetW();
42 double GetH();
43 double GetL();
44 double GetWu();
45 double GetWd();
46 double GetArea();
47
48 double GetLocOrgInBes( int i ); // 1: Bes_x, 2: Bes_y, 3, Bes_z
49 double GetObjRotToMot( int i ); // 1: Rot_x, 2: Rot_y, 3, Rot_z
50 double GetObjOrgInBes( int i ); // 1: Bes_x, 2: Bes_y, 3, Bes_z
51 double GetObjOrgInLoc( int i ); // 1: Pos_x, 2: Pos_y, 3, Pos_z
52
53 double* GetLocOrgInBes();
54 double* GetObjRotToMot();
55 double* GetObjOrgInLoc();
56 double* GetObjOrgInBes();
57
58 // coordinate transform function, from old to new,
59 // Rot_z is the direction angle of new x axis in old coordinate system
60 void TransBesToLoc( double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z );
61 void TransLocToBes( double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z );
62
63 protected:
64
65 virtual void Init(); // all geometry information initilization
66
67 virtual void SetTheta(); // set theta
68 virtual void SetRin(); // set r inner
69 virtual void SetRout(); // set r outer
70 virtual void SetRc(); // set r center
71 virtual void SetThin(); // set thickness
72 virtual void SetW(); // set width
73 virtual void SetH(); // set height
74 virtual void SetL(); // set stretching length
75 virtual void SetWu(); // set up width
76 virtual void SetWd(); // set down width
77 virtual void SetArea(); // set area of entity(mm^2)
78 virtual void SetLocOrgInBes(); // set x, y, z of local origin in BES coordinate system
79 virtual void SetObjRotToMot(); // set rotation angles of x, y, z axises of local coordinate system
80 // relative to BES
81 virtual void SetObjOrgInBes(); // set x, y and z of object origin in BES coordinate system
82 virtual void SetObjOrgInLoc(); // set x, y and z of object origin in local or
83 // temporary local coordinate system
84 virtual void SetAlignment( double dx, double dy, double dz); // set alignment
85
86 protected:
87 int m_Part; // part id
88 int m_Segment; // segment id
89 int m_Layer; // layer id
90 int m_UpDown; // up or down superlayer id, only valid for superlayer objects
91 int m_RpcId; // rpc id in up or down superlayer
92 int m_ID; // object id
93
94 double m_Theta; // barrel: inclination angle of R and Bes_X
95 // endcap: inclination angle of panel boudary and Bes_X
96
97 double m_Rin; // r of the inner surface relative to BES origin
98 double m_Rout; // r of the outer surface relative to BES origin
99 double m_Rc; // r of the center surface relative to BES orign
100 double m_Thin; // thickness of entity
101 double m_W; // width of cross section
102 double m_H; // height of cross section
103 double m_L; // stretching length of cross section
104 double m_Wu; // up width of trapezoid cross section
105 double m_Wd; // down width of trapezoid cross section
106 double m_Area; // area of entity,mm^2
107
108 double m_LocOrgInBes[3]; // x, y, z of the mother origin in BES coordinate system
109 // for panel, the mother is temporary local coordinate system
110 double m_ObjRotToMot[3]; // rotation angles of x, y, z axises of the object coordinate system
111 // relative to the mother
112 // only rotation angle relative to Bes_z axis is useful
113 // defined as the angle of local xy plane circling mother's z axis,
114 // not Euler angle
115 // for local or temparory local, the mother is BES, for panel,
116 // the mother is the local or temparory local
117 double m_ObjOrgInBes[3]; // x, y and z of object origin in BES coordinate system
118 double m_ObjOrgInLoc[3]; // x, y and z of object origin in its mother coordinate system
119 // for panel, the mother is temporary local coordinate system
120
121//-------------------------------------------------------------NOTE---------------------------------------------------------------
122// 1: There are four coordinate systems: BES(the world), local(the mother), temporary local(the temp, for many panels object)
123// and object, the posterior one is always located in the anterior one.
124// 2: If the local coordinate system of one entity is BES, m_MotOrgInBes is unuseful.
125// 3: According to the detector structure, the origin coordinates and rotation angles of geometry entities relative to BES
126// coordinate system can be calculated easily and conveniently, so these values will be initialized first in constructor.
127// 4: For objects having many panels, the id of integral object is -1, and the id of panel begins from 0 to panel number.
128// These objects must be added a temporary local coordinate system for locating the panels, the temporary local
129
130};
131
132#endif
133
double GetWu()
virtual void SetArea()
double GetW()
virtual void SetObjOrgInBes()
virtual void SetObjRotToMot()
int m_RpcId
Definition MucEntity.h:91
double GetThin()
MucEntity(int part, int segment, int layer)
Definition MucEntity.cxx:17
double m_W
Definition MucEntity.h:101
virtual void SetWd()
double m_Area
Definition MucEntity.h:106
MucEntity & operator=(const MucEntity &other)
Definition MucEntity.cxx:92
virtual ~MucEntity()
double m_Thin
Definition MucEntity.h:100
double m_Rin
Definition MucEntity.h:97
virtual void SetW()
virtual void SetL()
double GetWd()
double m_H
Definition MucEntity.h:102
double GetH()
virtual void SetLocOrgInBes()
virtual void SetAlignment(double dx, double dy, double dz)
int m_Layer
Definition MucEntity.h:89
double GetArea()
int GetID()
virtual void SetH()
double m_ObjOrgInLoc[3]
Definition MucEntity.h:118
double * GetLocOrgInBes()
double m_Rout
Definition MucEntity.h:98
virtual void SetThin()
double * GetObjRotToMot()
double m_ObjRotToMot[3]
Definition MucEntity.h:110
virtual void SetObjOrgInLoc()
double m_Wd
Definition MucEntity.h:105
double GetRc()
virtual void SetRc()
double GetTheta()
void TransBesToLoc(double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z)
int GetSegment()
int m_Segment
Definition MucEntity.h:88
double m_Theta
Definition MucEntity.h:94
virtual void SetRout()
int GetUpDown()
int m_Part
Definition MucEntity.h:87
double m_LocOrgInBes[3]
Definition MucEntity.h:108
double m_Rc
Definition MucEntity.h:99
virtual void SetRin()
virtual void SetTheta()
int GetRpcId()
double * GetObjOrgInBes()
double m_ObjOrgInBes[3]
Definition MucEntity.h:117
double GetRin()
int GetLayer()
int m_UpDown
Definition MucEntity.h:90
void TransLocToBes(double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z)
double GetL()
double * GetObjOrgInLoc()
double GetRout()
double m_Wu
Definition MucEntity.h:104
virtual void SetWu()
int GetPart()
virtual void Init()
double m_L
Definition MucEntity.h:103