14#include "MucGeoCreateAlg/MucGeoConst.h"
15#include "MucGeoCreateAlg/MucStrip.h"
28 m_Type = other.m_Type;
29 m_CenterLine = other.m_CenterLine;
30 m_Head = other.m_Head;
31 m_Tail = other.m_Tail;
45 m_Type = other.m_Type;
46 m_CenterLine = other.m_CenterLine;
47 m_Head = other.m_Head;
48 m_Tail = other.m_Tail;
116 if( (
m_Layer+1)%2 == 1 ) m_Type = ZSTR;
117 else m_Type = PHISTR;
121 if( (
m_Layer+1)%2 == 1 ) m_Type = XSTR;
140 if(
m_ID == 0 ) m_CenterLine = segFlag * (E_GP_DY+E_STRPLN_DA+
m_W/2.0);
141 else if(
m_ID != E_STR_NUM-1 )
142 m_CenterLine = segFlag * ( E_XSTR_OFFSET +
m_ID*E_STR_DST );
144 m_CenterLine = segFlag * ( E_XSTR_OFFSET + (E_STR_NUM-2)*E_STR_DST + (E_STR_DST +
m_W +
STR_GAP)/2);
151 if(
m_ID == 0 ) m_CenterLine = segFlag * (E_GP_DX+E_STRPLN_DA+
m_W/2.0);
152 else if(
m_ID != E_STR_NUM-1)
153 m_CenterLine = segFlag * ( E_YSTR_OFFSET +
m_ID*E_STR_DST );
155 m_CenterLine = segFlag * ( E_YSTR_OFFSET + (E_STR_NUM-2)*E_STR_DST + (E_STR_DST +
m_W +
STR_GAP)/2);
205 if(
m_ID == E_STR_NUM - 1 )
219 if(
m_ID == E_STR_NUM - 1 )
251 maxStrip = B_PHISTR_NUM;
253 maxStrip = B_TOPSTR_NUM;
258 if(
m_ID > 0 &&
m_ID < (maxStrip-1))
265 if(
m_ID >0 &&
m_ID < (maxStrip-1) )
268 m_W = B_BOX_LT/2 - B_BOX_DZ[SL_DOWN] - B_STR_DST[
m_Layer]*(B_PHISTR_NUM-2)/2;
270 if( (maxStrip == B_TOPSTR_NUM) && (
m_ID == (B_PHISTR_NUM - 1)) )
271 m_W = B_BOX_LT/2 - B_BOX_DZ[SL_DOWN] - B_STR_DST[
m_Layer]*(B_PHISTR_NUM-2)/2;
280 else if(
m_ID != E_STR_NUM-1)
m_W = E_STR_WT;
323 m_L = B_BOX_LT - 2*B_BOX_DZ[SL_DOWN];
325 m_L = B_BOX_WT[
m_Layer] - 2*B_BOX_DZ[SL_DOWN];
331 if(
m_ID > ZCUT_HEAD_NUM &&
m_ID < ZCUT_TAIL_NUM )
339 m_L = B_BOX_LT - 2*B_BOX_DZ[SL_DOWN];
343 if(
m_ID < B_PHISTR_CUT_NUM )
344 m_L = B_BOX_WT[
m_Layer] - 2*B_BOX_DZ[SL_DOWN];
346 m_L = (B_BOX_WT[
m_Layer] - 2*B_BOX_DZ[SL_DOWN] - B_PHISTR_CUT)/2;
352 m_L = fabs( m_Head - m_Tail );
370 cout<<
"Error, strip width = 0!"<<endl;
402 x = (E_AS_RMAX - E_BOX_DR - E_STRPLN_DB[(
m_Layer==0)?0:1] + E_GP_DX + E_STRPLN_DA) / 2.0;
403 y = (E_AS_RMAX - E_BOX_DR - E_STRPLN_DB[(
m_Layer==0)?0:1] + E_GP_DY + E_STRPLN_DA) / 2.0;
412 for(
int i=0; i<
m_Layer+1; i++ ) z += E_AS_TH[i];
415 z += (E_AS_ZMAX - E_AS_TOTAL_TH) + AS_GAP/2.0;
425 for(
int i=0; i<3; i++ ) {
448 x = ( m_Head + m_Tail )/2;
452 y = ( m_Head + m_Tail )/2;
458 for(
int i=0; i<
m_Layer+1; i++) z += E_AS_TH[i];
461 z = ( (E_AS_ZMAX - E_AS_TOTAL_TH + z) + AS_GAP/2.0 ) *
cos(
m_Part*MUC_PI/2.0 );
468 for(
int i=0; i<3; i++ ) {
483 else if(
m_Segment != B_TOP ) maxStrip = B_PHISTR_NUM;
484 else maxStrip = B_TOPSTR_NUM;
492 x = ( B_BOX_WT[j] - 2*B_BOX_DT[SL_DOWN] + (maxStrip-2)*B_STR_DST[j] +
STR_GAP )/4.0;
493 else if(
n == (maxStrip-1) )
494 x = ( 2*B_BOX_DT[SL_DOWN] - B_BOX_WT[j] - (maxStrip-2)*B_STR_DST[j] -
STR_GAP )/4.0;
496 x =( ((maxStrip-1) - 2*
n) * B_STR_DST[j] )/2.0;
515 z = -B_BOX_LT/4.0 + B_BOX_DZ[SL_DOWN]/2.0 - B_STR_DST[j]*(B_PHISTR_NUM-2)/4.0;
516 else if(
n == (B_PHISTR_NUM - 1) )
517 z = B_BOX_LT/4.0 - B_BOX_DZ[SL_DOWN]/2.0 + B_STR_DST[j]*(B_PHISTR_NUM-2)/4.0;
519 z = ( 2*
n - B_PHISTR_NUM + 1 ) * B_STR_DST[j] / 2.0;
529 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;
530 else if(
n == (maxStrip-1) )
531 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;
533 x = ( (maxStrip-1) - 2*
n ) * B_STR_DST[j] / 2.0;
547 if(
n < B_PHISTR_CUT_NUM )
551 if(
n < B_PHISTR_NUM )
552 x = -B_BOX_WT[j]/4.0 - B_PHISTR_CUT/4.0 + B_BOX_DZ[SL_DOWN]/2.0;
554 x = B_BOX_WT[j]/4.0 + B_PHISTR_CUT/4.0 - B_BOX_DZ[SL_DOWN]/2.0;
561 if(
n < B_PHISTR_NUM )
564 z = -B_BOX_LT/4.0 + B_BOX_DZ[SL_DOWN]/2.0 - B_STR_DST[j]*(B_PHISTR_NUM-2)/4.0;
565 else if(
n == (B_PHISTR_NUM - 1) )
566 z = B_BOX_LT/4.0 - B_BOX_DZ[SL_DOWN]/2.0 + B_STR_DST[j]*(B_PHISTR_NUM-2)/4.0;
568 z = ( 2*
n - B_PHISTR_NUM + 1 ) * B_STR_DST[j] / 2.0;
572 if(
n == (B_TOPSTR_NUM-1) )
573 z = B_BOX_LT/4.0 - B_BOX_DZ[SL_DOWN]/2.0 + B_STR_DST[j]*(B_PHISTR_NUM-2)/4.0;
575 z = ( 2*
n - 3*B_PHISTR_NUM + 2*B_PHISTR_CUT_NUM + 1 ) * B_STR_DST[j]/2.0;
585 for(
int i=0; i<3; i++ ) {
599 for(
int i=0; i<3; i++ ) {
613 for(
int i=0; i<3; i++ ) {
double sin(const BesAngle a)
double cos(const BesAngle a)
const int B_ZSTR_CUT_NUM[B_LAY_NUM]
const double B_ZSTR_CUT[2]
const double SECOND_TURN_HEAD[2]
const double EVEN_TURN_POINT_TAIL[2]
const int HEAD_TURN_STR_NUM[8][2]
const double ODD_TURN_POINT_TAIL[2][2]
const int TAIL_TURN_STR_NUM[2]
const double FIRST_TURN_HEAD[8][2]
const double E_FIRST_STR_WT
virtual void SetObjRotToMot()
MucEntity & operator=(const MucEntity &other)
void TransBesToLoc(double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z)
void TransLocToBes(double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z)
virtual void SetLocOrgInBes()
MucStrip(int part, int segment, int layer, int id)
void SetEndcapStripInBes()
void SetBarrelStripInLoc()
virtual void SetObjOrgInBes()
MucStrip & operator=(const MucStrip &other)
virtual void SetObjOrgInLoc()