BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
MucStrip Class Reference

#include <MucStrip.h>

Inheritance diagram for MucStrip:

Public Member Functions

 MucStrip (int part, int segment, int layer, int id)
 MucStrip (const MucStrip &other)
MucStripoperator= (const MucStrip &other)
virtual ~MucStrip ()
int GetType ()
double GetCenterLine ()
double GetHead ()
double GetTail ()
double GetPhi ()
int GetPadNumber ()
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 ()
void SetType ()
void SetCenterLine ()
void SetHead ()
void SetTail ()
void SetPhi ()
virtual void SetThin ()
virtual void SetW ()
virtual void SetWu ()
virtual void SetWd ()
virtual void SetH ()
virtual void SetL ()
virtual void SetArea ()
void SetPadNumber ()
void SetEndcapStripInBes ()
void SetBarrelStripInLoc ()
virtual void SetLocOrgInBes ()
virtual void SetObjOrgInBes ()
virtual void SetObjOrgInLoc ()
Protected Member Functions inherited from MucEntity
virtual void SetTheta ()
virtual void SetRin ()
virtual void SetRout ()
virtual void SetRc ()
virtual void SetObjRotToMot ()
virtual void SetAlignment (double dx, double dy, double dz)

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 33 of file MucStrip.h.

Constructor & Destructor Documentation

◆ MucStrip() [1/2]

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

Definition at line 18 of file MucStrip.cxx.

19 : MucEntity( part, segment, layer, id ) {
21 // m_MucPadChain = NULL;
22}
MucEntity(int part, int segment, int layer)
Definition MucEntity.cxx:17
virtual void Init()
Definition MucStrip.cxx:58

Referenced by MucStrip(), and operator=().

◆ MucStrip() [2/2]

MucStrip::MucStrip ( const MucStrip & other)

Definition at line 25 of file MucStrip.cxx.

25 : MucEntity( other ) {
26 m_Type = other.m_Type;
27 m_CenterLine = other.m_CenterLine;
28 m_Head = other.m_Head;
29 m_Tail = other.m_Tail;
30 m_Phi = other.m_Phi;
31
32 // m_MucPadChain = other.m_MucPadChain;
33}
Index other(Index i, Index j)

◆ ~MucStrip()

MucStrip::~MucStrip ( )
virtual

Definition at line 53 of file MucStrip.cxx.

53 {
54 // delete m_MucPadChain;
55}

Member Function Documentation

◆ GetCenterLine()

double MucStrip::GetCenterLine ( )

Definition at line 85 of file MucStrip.cxx.

85{ return m_CenterLine; }

◆ GetHead()

double MucStrip::GetHead ( )

Definition at line 86 of file MucStrip.cxx.

86{ return m_Head; }

◆ GetPadNumber()

int MucStrip::GetPadNumber ( )

Definition at line 89 of file MucStrip.cxx.

89{ return m_PadNumber; }

◆ GetPhi()

double MucStrip::GetPhi ( )

Definition at line 88 of file MucStrip.cxx.

88{ return m_Phi; }

◆ GetTail()

double MucStrip::GetTail ( )

Definition at line 87 of file MucStrip.cxx.

87{ return m_Tail; }

◆ GetType()

int MucStrip::GetType ( )

Definition at line 84 of file MucStrip.cxx.

84{ return m_Type; }

Referenced by MucGeoMgr::CreateOnlineStripGeo(), and MucGeoMgr::CreateStrip().

◆ Init()

void MucStrip::Init ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 58 of file MucStrip.cxx.

58 {
59 SetType();
60 SetW();
61 SetWu();
62 SetWd();
63 SetCenterLine(); // use strip width
64 SetHead();
65 SetTail();
66 SetPhi();
67
68 SetThin();
69 SetH();
70 SetL();
72
75
78
81}
virtual void SetObjRotToMot()
virtual void SetWu()
Definition MucStrip.cxx:276
virtual void SetLocOrgInBes()
Definition MucStrip.cxx:347
virtual void SetL()
Definition MucStrip.cxx:285
void SetPadNumber()
Definition MucStrip.cxx:327
virtual void SetWd()
Definition MucStrip.cxx:279
virtual void SetThin()
Definition MucStrip.cxx:223
virtual void SetH()
Definition MucStrip.cxx:282
void SetEndcapStripInBes()
Definition MucStrip.cxx:404
void SetCenterLine()
Definition MucStrip.cxx:118
void SetType()
Definition MucStrip.cxx:104
void SetBarrelStripInLoc()
Definition MucStrip.cxx:436
virtual void SetObjOrgInBes()
Definition MucStrip.cxx:557
virtual void SetW()
Definition MucStrip.cxx:226
void SetPhi()
Definition MucStrip.cxx:215
void SetTail()
Definition MucStrip.cxx:178
void SetHead()
Definition MucStrip.cxx:151
virtual void SetObjOrgInLoc()
Definition MucStrip.cxx:568

Referenced by MucStrip().

◆ operator=()

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

Definition at line 36 of file MucStrip.cxx.

36 {
37 if ( this == &other ) return *this;
38
39 MucEntity::operator=( other );
40
41 m_Type = other.m_Type;
42 m_CenterLine = other.m_CenterLine;
43 m_Head = other.m_Head;
44 m_Tail = other.m_Tail;
45 m_Phi = other.m_Phi;
46
47 // m_MucPadChain = other.m_MucPadChain;
48
49 return *this;
50}
MucEntity & operator=(const MucEntity &other)
Definition MucEntity.cxx:87

◆ SetArea()

void MucStrip::SetArea ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 324 of file MucStrip.cxx.

324{ m_Area = m_W * m_L / 100; }
double m_W
Definition MucEntity.h:101
double m_Area
Definition MucEntity.h:106
double m_L
Definition MucEntity.h:103

◆ SetBarrelStripInLoc()

void MucStrip::SetBarrelStripInLoc ( )
protected

Definition at line 436 of file MucStrip.cxx.

436 {
437 int j = m_Layer;
438 int n = m_ID;
439
440 int maxStrip = 0;
441 double x, y, z = 0;
442
443 if ( m_Type == ZSTR ) maxStrip = B_ZSTR_NUM; // odd layer
444 else if ( m_Segment != B_TOP ) maxStrip = B_PHISTR_NUM; // even layer not top segment
445 else maxStrip = B_TOPSTR_NUM; // even layer top segment
446
447 if ( m_Segment != B_TOP ) // not top segment
448 {
449 if ( m_Type == ZSTR ) // odd layer, ZSTR
450 {
451 // Set x
452 if ( n == 0 )
453 x = ( B_BOX_WT[j] - 2 * B_BOX_DT[SL_DOWN] + ( maxStrip - 2 ) * B_STR_DST[j] +
454 STR_GAP ) /
455 4.0;
456 else if ( n == ( maxStrip - 1 ) )
457 x = ( 2 * B_BOX_DT[SL_DOWN] - B_BOX_WT[j] - ( maxStrip - 2 ) * B_STR_DST[j] -
458 STR_GAP ) /
459 4.0;
460 else x = ( ( ( maxStrip - 1 ) - 2 * n ) * B_STR_DST[j] ) / 2.0;
461
462 // Set y
463 y = 0.;
464
465 // Set z
466 z = 0.;
467 }
468 else // even layer, phi
469 {
470 // Set x
471 x = 0.;
472
473 // Set y
474 y = 0.;
475
476 // Set Z
477 if ( n == 0 )
478 z = -B_BOX_LT / 4.0 + B_BOX_DZ[SL_DOWN] / 2.0 -
479 B_STR_DST[j] * ( B_PHISTR_NUM - 2 ) / 4.0;
480 else if ( n == ( B_PHISTR_NUM - 1 ) )
481 z = B_BOX_LT / 4.0 - B_BOX_DZ[SL_DOWN] / 2.0 +
482 B_STR_DST[j] * ( B_PHISTR_NUM - 2 ) / 4.0;
483 else z = ( 2 * n - B_PHISTR_NUM + 1 ) * B_STR_DST[j] / 2.0;
484 }
485 } // end not top segment
486 else // top segment
487 {
488 if ( m_Type == ZSTR ) // odd layer, z
489 {
490 // Set x
491 if ( n == 0 )
492 x = B_BOX_WT[j] / 4.0 - B_BOX_DT[SL_DOWN] / 2.0 +
493 ( maxStrip - 2 ) * B_STR_DST[j] / 4.0 + STR_GAP / 4.0;
494 else if ( n == ( maxStrip - 1 ) )
495 x = -B_BOX_WT[j] / 4.0 + B_BOX_DT[SL_DOWN] / 2.0 -
496 ( maxStrip - 2 ) * B_STR_DST[j] / 4.0 - STR_GAP / 4.0;
497 else x = ( ( maxStrip - 1 ) - 2 * n ) * B_STR_DST[j] / 2.0;
498
499 // Set y
500 y = 0.;
501
502 // Set z
503 if ( ( n > ( B_ZSTR_NUM / 2 - 1 - B_ZSTR_CUT_NUM[j] ) ) &&
504 ( n < ( B_ZSTR_NUM / 2 + B_ZSTR_CUT_NUM[j] ) ) ) // be cut
505 z = -( ( j == 0 ) ? B_ZSTR_CUT[1] : B_ZSTR_CUT[0] ) / 2;
506 else // no cut
507 z = 0.;
508 }
509 else // even layer, phi
510 {
511 // Set x
512 if ( n < B_PHISTR_CUT_NUM ) // no cut
513 x = 0.;
514 else // be cut
515 {
516 if ( n < B_PHISTR_NUM )
517 x = -B_BOX_WT[j] / 4.0 - B_PHISTR_CUT / 4.0 + B_BOX_DZ[SL_DOWN] / 2.0;
518 else x = B_BOX_WT[j] / 4.0 + B_PHISTR_CUT / 4.0 - B_BOX_DZ[SL_DOWN] / 2.0;
519 }
520
521 // Set y
522 y = 0.;
523
524 // Set z
525 if ( n < B_PHISTR_NUM )
526 {
527 if ( n == 0 )
528 z = -B_BOX_LT / 4.0 + B_BOX_DZ[SL_DOWN] / 2.0 -
529 B_STR_DST[j] * ( B_PHISTR_NUM - 2 ) / 4.0;
530 else if ( n == ( B_PHISTR_NUM - 1 ) )
531 z = B_BOX_LT / 4.0 - B_BOX_DZ[SL_DOWN] / 2.0 +
532 B_STR_DST[j] * ( B_PHISTR_NUM - 2 ) / 4.0;
533 else z = ( 2 * n - B_PHISTR_NUM + 1 ) * B_STR_DST[j] / 2.0;
534 }
535 else
536 {
537 if ( n == ( B_TOPSTR_NUM - 1 ) )
538 z = B_BOX_LT / 4.0 - B_BOX_DZ[SL_DOWN] / 2.0 +
539 B_STR_DST[j] * ( B_PHISTR_NUM - 2 ) / 4.0;
540 else z = ( 2 * n - 3 * B_PHISTR_NUM + 2 * B_PHISTR_CUT_NUM + 1 ) * B_STR_DST[j] / 2.0;
541 }
542 } // end even
543 } // end top segment
544
545 m_ObjOrgInLoc[0] = x;
546 m_ObjOrgInLoc[1] = y;
547 m_ObjOrgInLoc[2] = z;
548
549 // limit cut
550 for ( int i = 0; i < 3; i++ )
551 {
552 if ( fabs( m_ObjOrgInLoc[i] ) < ERR_LIMIT ) m_ObjOrgInLoc[i] = 0.;
553 }
554}
const Int_t n
Double_t x[10]
const int B_ZSTR_CUT_NUM[B_LAY_NUM]
int m_Layer
Definition MucEntity.h:89
double m_ObjOrgInLoc[3]
Definition MucEntity.h:118
int m_Segment
Definition MucEntity.h:88

Referenced by Init().

◆ SetCenterLine()

void MucStrip::SetCenterLine ( )
protected

Definition at line 118 of file MucStrip.cxx.

118 {
119 // Base on strips width and structure correlations
120 // Endcap only
121
122 int segFlag = 0;
123
124 if ( ( m_Layer + 1 ) % 2 == 1 ) // 1,3,5,7
125 {
126 if ( m_Segment < 2 ) segFlag = 1;
127 else segFlag = -1;
128
129 if ( m_ID == 0 ) m_CenterLine = segFlag * ( E_GP_DY + E_STRPLN_DA + m_W / 2.0 ); // NO.0
130 else if ( m_ID != E_STR_NUM - 1 ) // NO.1~62
131 m_CenterLine = segFlag * ( E_XSTR_OFFSET + m_ID * E_STR_DST );
132 else // NO.63 end strip
133 m_CenterLine = segFlag * ( E_XSTR_OFFSET + ( E_STR_NUM - 2 ) * E_STR_DST +
134 ( E_STR_DST + m_W + STR_GAP ) / 2 );
135 }
136 else // 2,4,6,8
137 {
138 if ( m_Segment % 3 == 0 ) segFlag = 1;
139 else segFlag = -1;
140
141 if ( m_ID == 0 ) m_CenterLine = segFlag * ( E_GP_DX + E_STRPLN_DA + m_W / 2.0 ); // NO.0
142 else if ( m_ID != E_STR_NUM - 1 ) // NO.1~62
143 m_CenterLine = segFlag * ( E_YSTR_OFFSET + m_ID * E_STR_DST );
144 else // NO.63 end strip
145 m_CenterLine = segFlag * ( E_YSTR_OFFSET + ( E_STR_NUM - 2 ) * E_STR_DST +
146 ( E_STR_DST + m_W + STR_GAP ) / 2 );
147 }
148}

Referenced by Init().

◆ SetEndcapStripInBes()

void MucStrip::SetEndcapStripInBes ( )
protected

Definition at line 404 of file MucStrip.cxx.

404 {
405 double x, y, z;
406
407 // Set x
408 if ( ( m_Layer + 1 ) % 2 == 0 ) // even layer
409 x = m_CenterLine;
410 else // odd layer
411 x = ( m_Head + m_Tail ) / 2;
412
413 // Set y
414 if ( ( m_Layer + 1 ) % 2 == 0 ) // even layer
415 y = ( m_Head + m_Tail ) / 2;
416 else // odd layer
417 y = m_CenterLine;
418
419 // Set z
420 z = 0.;
421 for ( int i = 0; i < m_Layer + 1; i++ ) z += E_AS_TH[i];
422
423 z += m_Layer * AS_GAP;
424 z = ( ( E_AS_ZMAX - E_AS_TOTAL_TH + z ) + AS_GAP / 2.0 ) * cos( m_Part * MUC_PI / 2.0 );
425
426 m_ObjOrgInBes[0] = x;
427 m_ObjOrgInBes[1] = y;
428 m_ObjOrgInBes[2] = z;
429
430 // limit cut
431 for ( int i = 0; i < 3; i++ )
432 if ( fabs( m_ObjOrgInBes[i] ) < ERR_LIMIT ) m_ObjOrgInBes[i] = 0.;
433}
int m_Part
Definition MucEntity.h:87
double m_ObjOrgInBes[3]
Definition MucEntity.h:117

Referenced by Init().

◆ SetH()

void MucStrip::SetH ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 282 of file MucStrip.cxx.

282{ m_H = STR_TH; }
double m_H
Definition MucEntity.h:102

Referenced by Init().

◆ SetHead()

void MucStrip::SetHead ( )
protected

Definition at line 151 of file MucStrip.cxx.

151 {
152 int segFlag = 0;
153
154 // base on strips width and correlations
155 if ( m_ID + 1 < HEAD_TURN_STR_NUM[m_Layer][0] ) m_Head = FIRST_TURN_HEAD[m_Layer][0];
156 else if ( m_ID + 1 == HEAD_TURN_STR_NUM[m_Layer][0] ) m_Head = FIRST_TURN_HEAD[m_Layer][1];
157 else if ( ( m_ID + 1 > HEAD_TURN_STR_NUM[m_Layer][0] ) &&
158 ( m_ID + 1 < HEAD_TURN_STR_NUM[m_Layer][1] ) )
159 m_Head =
160 FIRST_TURN_HEAD[m_Layer][1] - ( m_ID + 1 - HEAD_TURN_STR_NUM[m_Layer][0] ) * E_STR_DST;
161 else if ( m_ID + 1 >= HEAD_TURN_STR_NUM[m_Layer][1] ) m_Head = SECOND_TURN_HEAD[m_Layer % 2];
162
163 if ( ( m_Layer + 1 ) % 2 == 1 ) // 1,3,5,7
164 {
165 if ( m_Segment % 3 == 0 ) segFlag = 1;
166 else segFlag = -1;
167 }
168 else // 2,4,6,8
169 {
170 if ( m_Segment < 2 ) segFlag = 1;
171 else segFlag = -1;
172 }
173
174 m_Head *= segFlag;
175}
const double SECOND_TURN_HEAD[2]
Definition MucStrip.h:26
const int HEAD_TURN_STR_NUM[8][2]
Definition MucStrip.h:21
const double FIRST_TURN_HEAD[8][2]
Definition MucStrip.h:23

Referenced by Init().

◆ SetL()

void MucStrip::SetL ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 285 of file MucStrip.cxx.

285 {
286 if ( m_Part == BRID ) // barrel
287 {
288 int ZCUT_HEAD_NUM = B_ZSTR_NUM / 2 - B_ZSTR_CUT_NUM[m_Layer] - 1;
289 int ZCUT_TAIL_NUM = B_ZSTR_NUM / 2 + B_ZSTR_CUT_NUM[m_Layer];
290
291 if ( m_Segment != B_TOP ) // not top segment
292 {
293 if ( ( m_Layer + 1 ) % 2 == 1 ) // odd layer, Z
294 m_L = B_BOX_LT - 2 * B_BOX_DZ[SL_DOWN];
295 else // even layer, phi
296 m_L = B_BOX_WT[m_Layer] - 2 * B_BOX_DZ[SL_DOWN];
297 }
298 else // top segment
299 {
300 if ( ( m_Layer + 1 ) % 2 == 1 ) // odd layer, z
301 {
302 if ( m_ID > ZCUT_HEAD_NUM && m_ID < ZCUT_TAIL_NUM ) // be cut
303 {
304 if ( m_Layer == 0 ) m_L = B_BOX_LT - 2 * B_BOX_DZ[SL_DOWN] - B_ZSTR_CUT[1];
305 else m_L = B_BOX_LT - 2 * B_BOX_DZ[SL_DOWN] - B_ZSTR_CUT[0];
306 }
307 else // no cut
308 m_L = B_BOX_LT - 2 * B_BOX_DZ[SL_DOWN];
309 }
310 else // even layer, phi
311 {
312 if ( m_ID < B_PHISTR_CUT_NUM ) // no cut
313 m_L = B_BOX_WT[m_Layer] - 2 * B_BOX_DZ[SL_DOWN];
314 else // be cut
315 m_L = ( B_BOX_WT[m_Layer] - 2 * B_BOX_DZ[SL_DOWN] - B_PHISTR_CUT ) / 2;
316 }
317 } // End top segment
318 }
319 else // endcap
320 m_L = fabs( m_Head - m_Tail );
321}

Referenced by Init().

◆ SetLocOrgInBes()

void MucStrip::SetLocOrgInBes ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 347 of file MucStrip.cxx.

347 {
348 double x, y, z = 0;
349
350 if ( m_Part == BRID )
351 {
352 x = ( B_AS_RMIN[m_Layer] - AS_GAP / 2.0 ) * cos( m_Segment * ( MUC_PI / 4.0 ) );
353 y = ( B_AS_RMIN[m_Layer] - AS_GAP / 2.0 ) * sin( m_Segment * ( MUC_PI / 4.0 ) );
354 z = 0.;
355 } // barrel
356 else
357 {
358 //------------- set x and y --------------------
359 // segment 0 as reference
360 x = ( E_AS_RMAX - E_BOX_DR - E_STRPLN_DB[( m_Layer == 0 ) ? 0 : 1] + E_GP_DX +
361 E_STRPLN_DA ) /
362 2.0;
363 y = ( E_AS_RMAX - E_BOX_DR - E_STRPLN_DB[( m_Layer == 0 ) ? 0 : 1] + E_GP_DY +
364 E_STRPLN_DA ) /
365 2.0;
366
367 // x, y signs of coordinate different by segment
368 if ( m_Segment == 0 ) { ; }
369 else if ( m_Segment == 1 ) { x = -x; }
370 else if ( m_Segment == 2 )
371 {
372 x = -x;
373 y = -y;
374 }
375 else { y = -y; }
376
377 //-------------- set z --------------------------
378 for ( int i = 0; i < m_Layer + 1; i++ ) z += E_AS_TH[i];
379
380 z += m_Layer * AS_GAP;
381 z += ( E_AS_ZMAX - E_AS_TOTAL_TH ) + AS_GAP / 2.0;
382 z *= cos( m_Part * MUC_PI / 2.0 );
383 } // else, endcap
384
385 m_LocOrgInBes[0] = x;
386 m_LocOrgInBes[1] = y;
387 m_LocOrgInBes[2] = z;
388
389 // limit cut
390 for ( int i = 0; i < 3; i++ )
391 if ( fabs( m_LocOrgInBes[i] ) < ERR_LIMIT ) m_LocOrgInBes[i] = 0;
392}
double m_LocOrgInBes[3]
Definition MucEntity.h:108

Referenced by Init().

◆ SetObjOrgInBes()

void MucStrip::SetObjOrgInBes ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 557 of file MucStrip.cxx.

557 {
558 if ( m_Part == BRID )
559 {
561 // limit cut
562 for ( int i = 0; i < 3; i++ )
563 if ( fabs( m_ObjOrgInBes[i] ) < ERR_LIMIT ) m_ObjOrgInBes[i] = 0.0;
564 }
565}
void TransLocToBes(double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z)

Referenced by Init().

◆ SetObjOrgInLoc()

void MucStrip::SetObjOrgInLoc ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 568 of file MucStrip.cxx.

568 {
569 if ( m_Part != BRID )
570 {
572 // limit cut
573 for ( int i = 0; i < 3; i++ )
574 if ( fabs( m_ObjOrgInLoc[i] ) < ERR_LIMIT ) m_ObjOrgInLoc[i] = 0.;
575 }
576}
void TransBesToLoc(double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z)

Referenced by Init().

◆ SetPadNumber()

void MucStrip::SetPadNumber ( )
protected

Definition at line 327 of file MucStrip.cxx.

327 {
328 int n = 0;
329 double fn = 0;
330
331 if ( m_W == 0 )
332 {
333 cout << "Error, strip width = 0!" << endl;
334 m_PadNumber = 0;
335 }
336 else
337 {
338 fn = ( m_L / m_W );
339 n = (int)fn;
340
341 if ( ( fn - n ) > 0.3 ) m_PadNumber = n + 1;
342 else m_PadNumber = n;
343 }
344}

Referenced by Init().

◆ SetPhi()

void MucStrip::SetPhi ( )
protected

Definition at line 215 of file MucStrip.cxx.

215 {
216 if ( m_Part == BRID ) // barrel
217 m_Phi = B_PHI[m_Segment] * ( MUC_PI / 4.0 );
218 else // endcap , all phi is zer
219 m_Phi = 0.;
220}

Referenced by Init().

◆ SetTail()

void MucStrip::SetTail ( )
protected

Definition at line 178 of file MucStrip.cxx.

178 {
179 int segFlag = 0;
180
181 if ( ( m_Layer + 1 ) % 2 == 1 ) // 1,3,5,7
182 {
183 if ( m_Segment % 3 == 0 ) segFlag = 1;
184 else segFlag = -1;
185
186 if ( m_ID + 1 < TAIL_TURN_STR_NUM[0] )
187 m_Tail = ODD_TURN_POINT_TAIL[( m_Layer == 0 ) ? 0 : 1][0];
188 else if ( m_ID + 1 == TAIL_TURN_STR_NUM[0] )
189 m_Tail = ODD_TURN_POINT_TAIL[( m_Layer == 0 ) ? 0 : 1][1];
190 else if ( m_ID + 1 > TAIL_TURN_STR_NUM[0] )
191 m_Tail = ODD_TURN_POINT_TAIL[( m_Layer == 0 ) ? 0 : 1][1] -
192 ( m_ID + 1 - TAIL_TURN_STR_NUM[0] ) * E_STR_DST;
193 if ( m_ID == E_STR_NUM - 1 )
194 m_Tail = ODD_TURN_POINT_TAIL[( m_Layer == 0 ) ? 0 : 1][1] -
195 ( m_ID - TAIL_TURN_STR_NUM[0] ) * E_STR_DST - ( E_STR_DST + m_W + STR_GAP ) / 2;
196 }
197 else // 2,4,6,8
198 {
199 if ( m_Segment < 2 ) segFlag = 1;
200 else segFlag = -1;
201
202 if ( m_ID + 1 < TAIL_TURN_STR_NUM[1] ) m_Tail = EVEN_TURN_POINT_TAIL[0];
203 if ( m_ID + 1 == TAIL_TURN_STR_NUM[1] ) m_Tail = EVEN_TURN_POINT_TAIL[1];
204 if ( m_ID + 1 > TAIL_TURN_STR_NUM[1] )
205 m_Tail = EVEN_TURN_POINT_TAIL[1] - ( m_ID + 1 - TAIL_TURN_STR_NUM[1] ) * E_STR_DST;
206 if ( m_ID == E_STR_NUM - 1 )
207 m_Tail = EVEN_TURN_POINT_TAIL[1] - ( m_ID - TAIL_TURN_STR_NUM[1] ) * E_STR_DST -
208 ( E_STR_DST + m_W + STR_GAP ) / 2;
209 }
210
211 m_Tail *= segFlag;
212}
const double EVEN_TURN_POINT_TAIL[2]
Definition MucStrip.h:29
const double ODD_TURN_POINT_TAIL[2][2]
Definition MucStrip.h:28
const int TAIL_TURN_STR_NUM[2]
Definition MucStrip.h:27

Referenced by Init().

◆ SetThin()

void MucStrip::SetThin ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 223 of file MucStrip.cxx.

223{ m_Thin = STR_TH; }
double m_Thin
Definition MucEntity.h:100

Referenced by Init().

◆ SetType()

void MucStrip::SetType ( )
protected

Definition at line 104 of file MucStrip.cxx.

104 {
105 if ( m_Part == BRID )
106 {
107 if ( ( m_Layer + 1 ) % 2 == 1 ) m_Type = ZSTR;
108 else m_Type = PHISTR;
109 }
110 else
111 {
112 if ( ( m_Layer + 1 ) % 2 == 1 ) m_Type = XSTR;
113 else m_Type = YSTR;
114 }
115}

Referenced by Init().

◆ SetW()

void MucStrip::SetW ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 226 of file MucStrip.cxx.

226 {
227 if ( m_Part == BRID )
228 {
229 // Set maximum strip
230 int maxStrip;
231 if ( ( m_Layer + 1 ) % 2 == 1 ) maxStrip = B_ZSTR_NUM; // odd layer
232 else if ( m_Segment != B_TOP ) maxStrip = B_PHISTR_NUM; // even layer not top segment
233 else maxStrip = B_TOPSTR_NUM; // even layer top segment
234
235 if ( ( m_Layer + 1 ) % 2 == 1 ) // odd layer, z
236 {
237 if ( m_ID > 0 && m_ID < ( maxStrip - 1 ) ) // not marginal strip
238 m_W = B_STR_DST[m_Layer] - STR_GAP;
239 else // marginal strip
240 m_W = ( B_BOX_WT[m_Layer] - 2 * B_BOX_DT[SL_DOWN] -
241 ( maxStrip - 2 ) * B_STR_DST[m_Layer] - STR_GAP ) /
242 2;
243 }
244 else // even layer, phi
245 {
246 if ( m_ID > 0 && m_ID < ( maxStrip - 1 ) ) // not marginal strip
247 m_W = B_STR_DST[m_Layer] - STR_GAP;
248 else // marginal strip
249 m_W = B_BOX_LT / 2 - B_BOX_DZ[SL_DOWN] - B_STR_DST[m_Layer] * ( B_PHISTR_NUM - 2 ) / 2;
250
251 if ( ( maxStrip == B_TOPSTR_NUM ) && ( m_ID == ( B_PHISTR_NUM - 1 ) ) ) // special
252 // marginal strip
253 m_W = B_BOX_LT / 2 - B_BOX_DZ[SL_DOWN] - B_STR_DST[m_Layer] * ( B_PHISTR_NUM - 2 ) / 2;
254 }
255 } // End barrel
256 else
257 {
258 // Strip0:48;
259 // Strip1~62: 33;
260 // Strip63: L0: 34; L2/4/6: 43; L1/3/5/7: 53
261 if ( m_ID == 0 ) m_W = E_FIRST_STR_WT;
262 else if ( m_ID != E_STR_NUM - 1 ) m_W = E_STR_WT; // NO.1~62
263 else // NO.63, end strip
264 {
265 if ( ( m_Layer + 1 ) % 2 != 0 ) // 0,2,4,6
266 {
267 if ( m_Layer == 0 ) m_W = 31;
268 else m_W = 43;
269 }
270 else m_W = 53; // 1,3,5,7
271 }
272 }
273}
const double E_FIRST_STR_WT
Definition MucStrip.h:30

Referenced by Init().

◆ SetWd()

void MucStrip::SetWd ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 279 of file MucStrip.cxx.

279{ m_Wd = m_W; }
double m_Wd
Definition MucEntity.h:105

Referenced by Init().

◆ SetWu()

void MucStrip::SetWu ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 276 of file MucStrip.cxx.

276{ m_Wu = m_W; }
double m_Wu
Definition MucEntity.h:104

Referenced by Init().


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