BOSS 7.1.1
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 31 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.

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

◆ MucStrip() [2/2]

MucStrip::MucStrip ( const MucStrip & other)

Definition at line 25 of file MucStrip.cxx.

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

◆ ~MucStrip()

MucStrip::~MucStrip ( )
virtual

Definition at line 55 of file MucStrip.cxx.

56{
57 // delete m_MucPadChain;
58}

Member Function Documentation

◆ GetCenterLine()

double MucStrip::GetCenterLine ( )

Definition at line 89 of file MucStrip.cxx.

89{ return m_CenterLine; }

◆ GetHead()

double MucStrip::GetHead ( )

Definition at line 90 of file MucStrip.cxx.

90{ return m_Head; }

◆ GetPadNumber()

int MucStrip::GetPadNumber ( )

Definition at line 93 of file MucStrip.cxx.

93{ return m_PadNumber; }

◆ GetPhi()

double MucStrip::GetPhi ( )

Definition at line 92 of file MucStrip.cxx.

92{ return m_Phi; }

◆ GetTail()

double MucStrip::GetTail ( )

Definition at line 91 of file MucStrip.cxx.

91{ return m_Tail; }

◆ GetType()

int MucStrip::GetType ( )

Definition at line 88 of file MucStrip.cxx.

88{ return m_Type; }

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

◆ Init()

void MucStrip::Init ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 61 of file MucStrip.cxx.

62{
63 SetType();
64 SetW();
65 SetWu();
66 SetWd();
67 SetCenterLine(); // use strip width
68 SetHead();
69 SetTail();
70 SetPhi();
71
72 SetThin();
73 SetH();
74 SetL();
76
79
82
85}
virtual void SetObjRotToMot()
virtual void SetWu()
Definition MucStrip.cxx:286
virtual void SetLocOrgInBes()
Definition MucStrip.cxx:373
virtual void SetL()
Definition MucStrip.cxx:304
void SetPadNumber()
Definition MucStrip.cxx:352
virtual void SetWd()
Definition MucStrip.cxx:292
virtual void SetThin()
Definition MucStrip.cxx:229
virtual void SetH()
Definition MucStrip.cxx:298
void SetEndcapStripInBes()
Definition MucStrip.cxx:423
void SetCenterLine()
Definition MucStrip.cxx:121
void SetType()
Definition MucStrip.cxx:108
void SetBarrelStripInLoc()
Definition MucStrip.cxx:456
virtual void SetObjOrgInBes()
Definition MucStrip.cxx:572
virtual void SetW()
Definition MucStrip.cxx:235
void SetPhi()
Definition MucStrip.cxx:220
void SetTail()
Definition MucStrip.cxx:183
void SetHead()
Definition MucStrip.cxx:153
virtual void SetObjOrgInLoc()
Definition MucStrip.cxx:584

Referenced by MucStrip().

◆ operator=()

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

Definition at line 37 of file MucStrip.cxx.

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

◆ SetArea()

void MucStrip::SetArea ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 346 of file MucStrip.cxx.

347{
348 m_Area = m_W*m_L/100;
349}
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 456 of file MucStrip.cxx.

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

Referenced by Init().

◆ SetCenterLine()

void MucStrip::SetCenterLine ( )
protected

Definition at line 121 of file MucStrip.cxx.

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

Referenced by Init().

◆ SetEndcapStripInBes()

void MucStrip::SetEndcapStripInBes ( )
protected

Definition at line 423 of file MucStrip.cxx.

424{
425 double x, y, z;
426
427 // Set x
428 if( (m_Layer+1)%2 == 0 ) // even layer
429 x = m_CenterLine;
430 else // odd layer
431 x = ( m_Head + m_Tail )/2;
432
433 // Set y
434 if( (m_Layer+1)%2 == 0 ) // even layer
435 y = ( m_Head + m_Tail )/2;
436 else // odd layer
437 y = m_CenterLine;
438
439 // Set z
440 z = 0.;
441 for(int i=0; i<m_Layer+1; i++) z += E_AS_TH[i];
442
443 z += m_Layer * AS_GAP;
444 z = ( (E_AS_ZMAX - E_AS_TOTAL_TH + z) + AS_GAP/2.0 ) * cos( m_Part*MUC_PI/2.0 );
445
446 m_ObjOrgInBes[0] = x;
447 m_ObjOrgInBes[1] = y;
448 m_ObjOrgInBes[2] = z;
449
450 // limit cut
451 for( int i=0; i<3; i++ )
452 if( fabs(m_ObjOrgInBes[i]) < ERR_LIMIT ) m_ObjOrgInBes[i] = 0.;
453}
double cos(const BesAngle a)
Definition BesAngle.h:213
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 298 of file MucStrip.cxx.

299{
300 m_H = STR_TH;
301}
double m_H
Definition MucEntity.h:102

Referenced by Init().

◆ SetHead()

void MucStrip::SetHead ( )
protected

Definition at line 153 of file MucStrip.cxx.

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

Referenced by Init().

◆ SetL()

void MucStrip::SetL ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 304 of file MucStrip.cxx.

305{
306 if( m_Part==BRID ) // barrel
307 {
308 int ZCUT_HEAD_NUM = B_ZSTR_NUM/2 - B_ZSTR_CUT_NUM[m_Layer] - 1;
309 int ZCUT_TAIL_NUM = B_ZSTR_NUM/2 + B_ZSTR_CUT_NUM[m_Layer];
310
311 if( m_Segment != B_TOP ) // not top segment
312 {
313 if( (m_Layer+1)%2 == 1) // odd layer, Z
314 m_L = B_BOX_LT - 2*B_BOX_DZ[SL_DOWN];
315 else // even layer, phi
316 m_L = B_BOX_WT[m_Layer] - 2*B_BOX_DZ[SL_DOWN];
317 }
318 else // top segment
319 {
320 if((m_Layer+1)%2 == 1) // odd layer, z
321 {
322 if( m_ID > ZCUT_HEAD_NUM && m_ID < ZCUT_TAIL_NUM ) // be cut
323 {
324 if( m_Layer == 0 )
325 m_L = B_BOX_LT - 2*B_BOX_DZ[SL_DOWN] - B_ZSTR_CUT[1];
326 else
327 m_L = B_BOX_LT - 2*B_BOX_DZ[SL_DOWN] - B_ZSTR_CUT[0];
328 }
329 else // no cut
330 m_L = B_BOX_LT - 2*B_BOX_DZ[SL_DOWN];
331 }
332 else // even layer, phi
333 {
334 if( m_ID < B_PHISTR_CUT_NUM ) // no cut
335 m_L = B_BOX_WT[m_Layer] - 2*B_BOX_DZ[SL_DOWN];
336 else // be cut
337 m_L = (B_BOX_WT[m_Layer] - 2*B_BOX_DZ[SL_DOWN] - B_PHISTR_CUT)/2;
338 }
339 } // End top segment
340 }
341 else // endcap
342 m_L = fabs( m_Head - m_Tail );
343}

Referenced by Init().

◆ SetLocOrgInBes()

void MucStrip::SetLocOrgInBes ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 373 of file MucStrip.cxx.

374{
375 double x, y, z = 0 ;
376
377 if( m_Part == BRID )
378 {
379 x = ( B_AS_RMIN[m_Layer] - AS_GAP/2.0 ) * cos( m_Segment * ( MUC_PI/4.0 ) );
380 y = ( B_AS_RMIN[m_Layer] - AS_GAP/2.0 ) * sin( m_Segment * ( MUC_PI/4.0 ) );
381 z = 0.;
382 } // barrel
383 else
384 {
385 //------------- set x and y --------------------
386 // segment 0 as reference
387 x = (E_AS_RMAX - E_BOX_DR - E_STRPLN_DB[(m_Layer==0)?0:1] + E_GP_DX + E_STRPLN_DA) / 2.0;
388 y = (E_AS_RMAX - E_BOX_DR - E_STRPLN_DB[(m_Layer==0)?0:1] + E_GP_DY + E_STRPLN_DA) / 2.0;
389
390 // x, y signs of coordinate different by segment
391 if ( m_Segment == 0 ) { ; }
392 else if ( m_Segment == 1 ) { x = -x; }
393 else if ( m_Segment == 2 ) { x = -x; y = -y; }
394 else { y = -y; }
395
396 //-------------- set z --------------------------
397 for( int i=0; i<m_Layer+1; i++ ) z += E_AS_TH[i];
398
399 z += m_Layer * AS_GAP;
400 z += (E_AS_ZMAX - E_AS_TOTAL_TH) + AS_GAP/2.0;
401 z *= cos( m_Part*MUC_PI/2.0 );
402 } // else, endcap
403
404 m_LocOrgInBes[0] = x;
405 m_LocOrgInBes[1] = y;
406 m_LocOrgInBes[2] = z;
407
408 // limit cut
409 for( int i=0; i<3; i++ )
410 if( fabs(m_LocOrgInBes[i]) < ERR_LIMIT ) m_LocOrgInBes[i] = 0;
411}
double sin(const BesAngle a)
Definition BesAngle.h:210
double m_LocOrgInBes[3]
Definition MucEntity.h:108

Referenced by Init().

◆ SetObjOrgInBes()

void MucStrip::SetObjOrgInBes ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 572 of file MucStrip.cxx.

573{
574 if( m_Part == BRID )
575 {
577 // limit cut
578 for( int i=0; i<3; i++ )
579 if( fabs(m_ObjOrgInBes[i]) < ERR_LIMIT ) m_ObjOrgInBes[i] = 0.0;
580 }
581}
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 584 of file MucStrip.cxx.

585{
586 if( m_Part != BRID )
587 {
589 // limit cut
590 for( int i=0; i<3; i++ )
591 if( fabs(m_ObjOrgInLoc[i]) < ERR_LIMIT ) m_ObjOrgInLoc[i] = 0.;
592 }
593}
void TransBesToLoc(double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z)

Referenced by Init().

◆ SetPadNumber()

void MucStrip::SetPadNumber ( )
protected

Definition at line 352 of file MucStrip.cxx.

353{
354 int n = 0;
355 double fn = 0;
356
357 if(m_W == 0) {
358 cout<<"Error, strip width = 0!"<<endl;
359 m_PadNumber = 0;
360 }
361 else
362 {
363 fn = (m_L/m_W);
364 n = (int)fn;
365
366 if( (fn - n) > 0.3 ) m_PadNumber = n + 1;
367 else m_PadNumber = n;
368 }
369}

Referenced by Init().

◆ SetPhi()

void MucStrip::SetPhi ( )
protected

Definition at line 220 of file MucStrip.cxx.

221{
222 if ( m_Part == BRID ) // barrel
223 m_Phi = B_PHI[m_Segment] * (MUC_PI/4.0);
224 else // endcap , all phi is zer
225 m_Phi = 0.;
226}

Referenced by Init().

◆ SetTail()

void MucStrip::SetTail ( )
protected

Definition at line 183 of file MucStrip.cxx.

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

Referenced by Init().

◆ SetThin()

void MucStrip::SetThin ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 229 of file MucStrip.cxx.

230{
231 m_Thin = STR_TH;
232}
double m_Thin
Definition MucEntity.h:100

Referenced by Init().

◆ SetType()

void MucStrip::SetType ( )
protected

Definition at line 108 of file MucStrip.cxx.

109{
110 if( m_Part == BRID ) {
111 if( (m_Layer+1)%2 == 1 ) m_Type = ZSTR;
112 else m_Type = PHISTR;
113 }
114 else {
115 if( (m_Layer+1)%2 == 1 ) m_Type = XSTR;
116 else m_Type = YSTR;
117 }
118}

Referenced by Init().

◆ SetW()

void MucStrip::SetW ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 235 of file MucStrip.cxx.

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

Referenced by Init().

◆ SetWd()

void MucStrip::SetWd ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 292 of file MucStrip.cxx.

293{
294 m_Wd = m_W;
295}
double m_Wd
Definition MucEntity.h:105

Referenced by Init().

◆ SetWu()

void MucStrip::SetWu ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 286 of file MucStrip.cxx.

287{
288 m_Wu = m_W;
289}
double m_Wu
Definition MucEntity.h:104

Referenced by Init().


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