BOSS 7.1.2
BESIII Offline Software System
Loading...
Searching...
No Matches
MucStripPlane Class Reference

#include <MucStripPlane.h>

+ Inheritance diagram for MucStripPlane:

Public Member Functions

 MucStripPlane (int part, int segment, int layer, int id)
 
 MucStripPlane (const MucStripPlane &other)
 
MucStripPlaneoperator= (const MucStripPlane &other)
 
virtual ~MucStripPlane ()
 
virtual void SetAlignment (double dx, double dy, double dz)
 
MucStripGetStrip (int id)
 
- Public Member Functions inherited from MucEntity
 MucEntity (int part, int segment, int layer)
 
 MucEntity (int part, int segment, int layer, int id)
 
 MucEntity (int part, int segment, int layer, int upDown, int id)
 
 MucEntity (int part, int segment, int layer, int upDown, int rpcId, int id)
 
 MucEntity (const MucEntity &other)
 
MucEntityoperator= (const MucEntity &other)
 
virtual ~MucEntity ()
 
int GetPart ()
 
int GetSegment ()
 
int GetLayer ()
 
int GetUpDown ()
 
int GetRpcId ()
 
int GetID ()
 
double GetTheta ()
 
double GetRin ()
 
double GetRout ()
 
double GetRc ()
 
double GetThin ()
 
double GetW ()
 
double GetH ()
 
double GetL ()
 
double GetWu ()
 
double GetWd ()
 
double GetArea ()
 
double GetLocOrgInBes (int i)
 
double GetObjRotToMot (int i)
 
double GetObjOrgInBes (int i)
 
double GetObjOrgInLoc (int i)
 
double * GetLocOrgInBes ()
 
double * GetObjRotToMot ()
 
double * GetObjOrgInLoc ()
 
double * GetObjOrgInBes ()
 
void TransBesToLoc (double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z)
 
void TransLocToBes (double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z)
 

Protected Member Functions

virtual void Init ()
 
virtual void SetTheta ()
 
virtual void SetRc ()
 
virtual void SetRin ()
 
virtual void SetRout ()
 
virtual void SetThin ()
 
virtual void SetW ()
 
virtual void SetH ()
 
virtual void SetL ()
 
virtual void SetWu ()
 
virtual void SetWd ()
 
virtual void SetLocOrgInBes ()
 
virtual void SetObjOrgInBes ()
 
virtual void SetObjOrgInLoc ()
 
- Protected Member Functions inherited from MucEntity
virtual void SetArea ()
 
virtual void SetObjRotToMot ()
 

Additional Inherited Members

- Protected Attributes inherited from MucEntity
int m_Part
 
int m_Segment
 
int m_Layer
 
int m_UpDown
 
int m_RpcId
 
int m_ID
 
double m_Theta
 
double m_Rin
 
double m_Rout
 
double m_Rc
 
double m_Thin
 
double m_W
 
double m_H
 
double m_L
 
double m_Wu
 
double m_Wd
 
double m_Area
 
double m_LocOrgInBes [3]
 
double m_ObjRotToMot [3]
 
double m_ObjOrgInBes [3]
 
double m_ObjOrgInLoc [3]
 

Detailed Description

Definition at line 19 of file MucStripPlane.h.

Constructor & Destructor Documentation

◆ MucStripPlane() [1/2]

MucStripPlane::MucStripPlane ( int part,
int segment,
int layer,
int id )

Definition at line 17 of file MucStripPlane.cxx.

18 : MucEntity( part, segment, layer, id )
19{
21 m_MucStrip = NULL;
22}
#define NULL
MucEntity(int part, int segment, int layer)
Definition MucEntity.cxx:17
virtual void Init()

◆ MucStripPlane() [2/2]

MucStripPlane::MucStripPlane ( const MucStripPlane & other)

Definition at line 25 of file MucStripPlane.cxx.

25 : MucEntity( other )
26{
27 m_MucStrip = other.m_MucStrip;
28}
Index other(Index i, Index j)

◆ ~MucStripPlane()

MucStripPlane::~MucStripPlane ( )
virtual

Definition at line 41 of file MucStripPlane.cxx.

42{
43 delete m_MucStrip;
44}

Member Function Documentation

◆ GetStrip()

MucStrip * MucStripPlane::GetStrip ( int id)

Definition at line 68 of file MucStripPlane.cxx.

69{
70 if( m_MucStrip != NULL ) delete m_MucStrip;
71 return ( m_MucStrip = new MucStrip( m_Part, m_Segment, m_Layer, id ) );
72}
int m_Layer
Definition MucEntity.h:89
int m_Segment
Definition MucEntity.h:88
int m_Part
Definition MucEntity.h:87

◆ Init()

void MucStripPlane::Init ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 47 of file MucStripPlane.cxx.

48{
49 SetTheta();
50 SetRin();
51 SetRout();
52 SetRc();
53
54 SetThin();
55 SetW();
56 SetWu();
57 SetWd();
58 SetH();
59 SetL();
60
64}
virtual void SetL()
virtual void SetRc()
virtual void SetRout()
virtual void SetH()
virtual void SetTheta()
virtual void SetObjOrgInLoc()
virtual void SetObjOrgInBes()
virtual void SetLocOrgInBes()
virtual void SetThin()
virtual void SetW()
virtual void SetWd()
virtual void SetWu()
virtual void SetRin()

Referenced by MucStripPlane().

◆ operator=()

MucStripPlane & MucStripPlane::operator= ( const MucStripPlane & other)

Definition at line 31 of file MucStripPlane.cxx.

32{
33 if( this == &other) return *this;
35 m_MucStrip = other.m_MucStrip;
36
37 return *this;
38}
MucEntity & operator=(const MucEntity &other)
Definition MucEntity.cxx:92

◆ SetAlignment()

void MucStripPlane::SetAlignment ( double dx,
double dy,
double dz )
virtual

Reimplemented from MucEntity.

Definition at line 342 of file MucStripPlane.cxx.

343{
344 if( m_Part == BRID || m_ID == -1 )
345 {
346 m_ObjOrgInLoc[0] += dx;
347 m_ObjOrgInLoc[1] += dy;
348 m_ObjOrgInLoc[2] += dz;
349 }
350}
double m_ObjOrgInLoc[3]
Definition MucEntity.h:118

Referenced by MucGeoMgr::CreateStripPlane().

◆ SetH()

void MucStripPlane::SetH ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 140 of file MucStripPlane.cxx.

141{
142 if( m_Part == BRID ) m_H = STR_TH;
143 else
144 {
145 if( m_ID == -1 ) // temparory strip plane
146 m_H = E_AS_RMAX - E_BOX_DR - E_GP_DY - (E_STRPLN_DA + E_STRPLN_DB[(m_Layer==0)?0:1]);
147 else
148 {
149 m_H = E_AS_RMAX - E_BOX_DR - E_GP_RMIN[m_Layer] - E_STRPLN_DR - E_STRPLN_DB[(m_Layer==0)?0:1];
150 if(m_ID==1) m_H += (E_STR_DST+5.0)/sqrt(2.0);
151 m_H += 4*OVERLAP_WIDTH;
152 }
153 }
154}
double m_H
Definition MucEntity.h:102

Referenced by Init().

◆ SetL()

void MucStripPlane::SetL ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 156 of file MucStripPlane.cxx.

157{
158 if( m_Part == BRID )
159 {
160 if( m_Segment == B_TOP )
161 {
162 // 0,1,2,3,7: CUT = 1; 2,4,6,8: CUT = 0;
163 if( m_ID == -1) m_L = B_BOX_LT - 2*B_BOX_DZ[SL_DOWN];
164 else if( m_ID == 2 ) m_L = B_BOX_LT - 2*B_BOX_DZ[SL_DOWN] - B_ZSTR_CUT[(m_Layer==0)?1:(m_Layer%2)];
165 else m_L = B_ZSTR_CUT[(m_Layer==0)?1:(m_Layer%2)];
166 }
167 else
168 m_L = B_BOX_LT - 2*B_BOX_DZ[SL_DOWN];
169 }
170 else
171 m_L = STR_TH;
172}
double m_L
Definition MucEntity.h:103

Referenced by Init().

◆ SetLocOrgInBes()

void MucStripPlane::SetLocOrgInBes ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 220 of file MucStripPlane.cxx.

221{
222 double x, y, z=0;
223
224 if( m_Part == BRID )
225 {
226 x = m_Rc*cos( m_Theta );
227 y = m_Rc*sin( m_Theta );
228 z = 0.;
229 } // barrel
230 else
231 {
232 //-------------- set x and y ----------------------
233 // segment 0 as reference
234 if( m_ID == -1 ) {
235 x = (E_AS_RMAX - E_BOX_DR + E_GP_DX) / 2.0;
236 y = (E_AS_RMAX - E_BOX_DR + E_GP_DY) / 2.0;
237 }
238 else {
239 x = (E_AS_RMAX+E_GP_DX+E_STRPLN_DA -E_BOX_DR-E_STRPLN_DB[(m_Layer==0)?0:1])/2.0;
240 y = (E_AS_RMAX+E_GP_DY+E_STRPLN_DA -E_BOX_DR-E_STRPLN_DB[(m_Layer==0)?0:1])/2.0;
241 }
242
243 // x, y signs of coordinate different by segment
244 if ( m_Segment == 0 ) { ; }
245 else if ( m_Segment == 1 ) { x = -x; }
246 else if ( m_Segment == 2 ) { x = -x; y = -y; }
247 else { y = -y; }
248
249 //-------------- set z -----------------------------
250 for( int i=0; i<m_Layer+1; i++ ) z += E_AS_TH[i];
251
252 z += m_Layer * AS_GAP;
253 z += (E_AS_ZMAX - E_AS_TOTAL_TH + z) + AS_GAP/2.0;
254 z *= cos( m_Part*MUC_PI/2.0 );
255 }// endcap
256
257 m_LocOrgInBes[0] = x;
258 m_LocOrgInBes[1] = y;
259 m_LocOrgInBes[2] = z;
260
261 // limit cut
262 for(int i=0;i<3;i++)
263 if( fabs(m_LocOrgInBes[i]) < ERR_LIMIT ) m_LocOrgInBes[i] = 0.;
264
265}
double sin(const BesAngle a)
Definition BesAngle.h:210
double cos(const BesAngle a)
Definition BesAngle.h:213
Double_t x[10]
double m_Theta
Definition MucEntity.h:94
double m_LocOrgInBes[3]
Definition MucEntity.h:108
double m_Rc
Definition MucEntity.h:99
double y[1000]

Referenced by Init().

◆ SetObjOrgInBes()

void MucStripPlane::SetObjOrgInBes ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 267 of file MucStripPlane.cxx.

268{
269 if( m_Part == BRID ) {
270 for( int i=0; i<3; i++ ) m_ObjOrgInBes[i] = m_LocOrgInBes[i];
271 }
272 else // endcap
273 {
274 //------------- set x and y --------------------
275 // segment 0 as reference
276 double x, y;
277 if( m_ID == -1 ) {
278 x = E_GP_DX + E_STRPLN_DA + m_W/2.0;
279 y = E_GP_DY + E_STRPLN_DA + m_H/2.0;
280 }
281 else if( m_ID == 0 ) {
282 x = m_Rc;
283 y = ( m_Rc * tan( m_Theta ) + E_GP_DY + E_STRPLN_DA ) / 2.0;
284 }
285 else if ( m_ID ==1 ) {
286 x = m_Rc * cos( m_Theta );
287 y = m_Rc * sin( m_Theta );
288 }
289 else { // m_ID == 2
290 x = ( m_Rc / tan( m_Theta ) + E_GP_DX + E_STRPLN_DA ) / 2.0;
291 y = m_Rc;
292 }
293
294 // x, y signs of coordinate different by segment
295 if ( m_Segment == 0 ) { ; }
296 else if ( m_Segment == 1 ) { x = -x; }
297 else if ( m_Segment == 2 ) { x = -x; y = -y; }
298 else { y = -y; }
299
300 m_ObjOrgInBes[0] = x;
301 m_ObjOrgInBes[1] = y;
302
303 // limit cut
304 for( int i=0; i<2; i++ )
305 if( fabs(m_ObjOrgInBes[i]) < ERR_LIMIT ) m_ObjOrgInBes[i] = 0.;
306
307 // ---------------- set z ----------------------
309
310 } // else, endcap
311}
double tan(const BesAngle a)
Definition BesAngle.h:216
double m_W
Definition MucEntity.h:101
double m_ObjOrgInBes[3]
Definition MucEntity.h:117

Referenced by Init().

◆ SetObjOrgInLoc()

void MucStripPlane::SetObjOrgInLoc ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 313 of file MucStripPlane.cxx.

314{
315 double x, y, z;
316 if( m_Part == BRID )
317 {
318 if( m_Segment == B_TOP && m_ID !=-1 )
319 {
320 // x
321 if(m_ID == 2) x = 0.0;
322 else if(m_ID == 0) x = (B_PHISTR_CUT + m_W)/2.0;
323 else x = -(B_PHISTR_CUT + m_W)/2.0;
324
325 // y
326 y = 0.0;
327
328 // z
329 if(m_ID == 2) z = - B_ZSTR_CUT[(m_Layer==0)?1:(m_Layer%2)]/2.0;
330 else z = B_BOX_LT/2.0 - B_BOX_DZ[SL_DOWN] - B_ZSTR_CUT[(m_Layer==0)?1:(m_Layer%2)]/2;
331
332 m_ObjOrgInLoc[0] = x;
333 m_ObjOrgInLoc[1] = y;
334 m_ObjOrgInLoc[2] = z;
335 }
336 else { for(int i=0; i<3; i++) m_ObjOrgInLoc[i] = 0.; }
337 }
338 else
339 for(int i=0; i<3; i++) m_ObjOrgInLoc[i] = m_ObjOrgInBes[i] - m_LocOrgInBes[i];
340}

Referenced by Init().

◆ SetRc()

void MucStripPlane::SetRc ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 99 of file MucStripPlane.cxx.

100{
101 if( m_Part == BRID ) m_Rc = B_AS_RMIN[m_Layer] - AS_GAP/2.0;
102 else {
103 if( m_ID == -1 ) m_Rc = sqrt(2.0) * ( E_AS_RMAX - E_BOX_DR - E_STRPLN_DB[(m_Layer==0)?0:1] ) / 2.0;
104 else m_Rc = (m_Rin + m_Rout)/2.0;
105 }
106}
double m_Rin
Definition MucEntity.h:97
double m_Rout
Definition MucEntity.h:98

Referenced by Init().

◆ SetRin()

void MucStripPlane::SetRin ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 84 of file MucStripPlane.cxx.

85{
86 if( m_Part == BRID ) m_Rin = B_AS_RMIN[m_Layer] - ( AS_GAP + STR_TH ) / 2.0;
87 else {
88 if( m_ID == -1 ) m_Rin = 0.;
89 else m_Rin = E_GP_RMIN[m_Layer] + E_STRPLN_DR;
90 }
91}

Referenced by Init().

◆ SetRout()

void MucStripPlane::SetRout ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 93 of file MucStripPlane.cxx.

94{
95 if( m_Part == BRID ) m_Rout = B_AS_RMIN[m_Layer] - ( AS_GAP - STR_TH ) / 2.0;
96 else m_Rout = E_AS_RMAX - E_BOX_DR - E_STRPLN_DB[(m_Layer==0)?0:1];
97}

Referenced by Init().

◆ SetTheta()

void MucStripPlane::SetTheta ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 75 of file MucStripPlane.cxx.

76{
77 if( m_Part == BRID ) m_Theta = m_Segment * ( MUC_PI/4.0 );
78 else {
79 if( m_ID == -1 ) m_Theta = ( 2*m_Segment + 1 ) * ( MUC_PI/4.0 );
80 else m_Theta = ( MUC_PI/4.0 ) + ( m_ID - 1) * MUC_PI / 8.0 ;
81 }
82}

Referenced by Init().

◆ SetThin()

void MucStripPlane::SetThin ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 108 of file MucStripPlane.cxx.

109{
110 m_Thin = STR_TH;
111}
double m_Thin
Definition MucEntity.h:100

Referenced by Init().

◆ SetW()

void MucStripPlane::SetW ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 113 of file MucStripPlane.cxx.

114{
115 double offset = 0;
116 if( (m_Layer+1)%2 == 0 ) offset = 2*B_BOX_DZ[1]; // even layers
117 else offset = 2*B_BOX_DT[1]; // odd layers
118
119 if( m_Part == BRID)
120 {
121 if( m_Segment == B_TOP )
122 {
123 if(m_ID == -1 || m_ID == 2)
124 m_W = B_BOX_WT[m_Layer] - offset;
125 else
126 m_W = (B_BOX_WT[m_Layer] - offset - B_PHISTR_CUT)/2.0;
127 }
128 else
129 m_W = B_BOX_WT[m_Layer] - offset;
130 }
131 else
132 {
133 if( m_ID == -1 ) // temparory strip plane
134 m_W = E_AS_RMAX - E_BOX_DR - E_GP_DX - (E_STRPLN_DA + E_STRPLN_DB[(m_Layer==0)?0:1]);
135 else
136 m_W = 0.;
137 }
138}

Referenced by Init().

◆ SetWd()

void MucStripPlane::SetWd ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 196 of file MucStripPlane.cxx.

197{
198 if( m_Part == BRID ) m_Wd = m_W;
199 else
200 {
201 if( m_ID == -1 ) // temparory strip plane
202 m_Wd = m_W;
203 else if( m_ID == 1 ) // center panel
204 {
205 m_Wd = 2 * VALUE * m_Rout;
206 // zoom in with a small dimension for covering strips
207 m_Wd += VALUE*(E_STR_DST+5.0)/sqrt(2.0);
208 }
209 else if( m_ID == 0 )
210 m_Wd = VALUE * m_Rout - E_GP_DY - E_STRPLN_DA;
211 else
212 m_Wd = VALUE * m_Rout - E_GP_DX - E_STRPLN_DA;
213
214 // for "AND" operation of panels
215 //m_Wd += (VALUE + 1.0)*OVERLAP_WIDTH;
216 m_Wd += 4*OVERLAP_WIDTH;
217 }
218}
double m_Wd
Definition MucEntity.h:105

Referenced by Init().

◆ SetWu()

void MucStripPlane::SetWu ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 174 of file MucStripPlane.cxx.

175{
176 if( m_Part == BRID ) m_Wu = m_W;
177 else
178 {
179 if( m_ID == -1 ) // temparory strip plane
180 m_Wu = m_W;
181 else if( m_ID == 1 ) // center panel
182 {
183 m_Wu = 2 * VALUE * m_Rin ;
184 m_Wu -= VALUE*(E_STR_DST+5.0)/sqrt(2.0);
185 }
186 else if( m_ID == 0 )
187 m_Wu = VALUE * m_Rin - E_GP_DY - E_STRPLN_DA;
188 else
189 m_Wu = VALUE * m_Rin - E_GP_DX - E_STRPLN_DA;
190
191 //m_Wu += (1-VALUE)*OVERLAP_WIDTH;
192 //m_Wu += 2*OVERLAP_WIDTH;
193 }
194}
double m_Wu
Definition MucEntity.h:104

Referenced by Init().


The documentation for this class was generated from the following files: