17MucGas::MucGas(
int part,
int segment,
int layer,
int upDown,
int rpcId,
int id )
18 :
MucEntity( part, segment, layer, upDown, rpcId, id )
32 if(
this == &other)
return *
this;
88 m_Theta = ( MUC_PI/4.0 ) + MUC_PI / 8.0 ;
92 m_Theta = ( MUC_PI/4.0 ) - MUC_PI / 8.0 ;
148 m_W = VALUE *
m_Rc - E_GP_DX - E_STRPLN_DA - RPC_SL_OFFSET;
152 m_W = VALUE *
m_Rc - E_GP_DY - E_STRPLN_DA - RPC_SL_OFFSET;
159 m_W = VALUE *
m_Rc - E_GP_DX - E_STRPLN_DA;
169 m_W = VALUE *
m_Rc - E_GP_DY - E_STRPLN_DA;
181 if(
m_RpcId == 1 )
m_W -= RPC_DEATH_EDGE * 2.0;
182 else m_W -= ( 1 + 1.0/
cos(MUC_PI/8.0) ) * RPC_DEATH_EDGE;
187 m_W -= RPC_DEATH_EDGE * 2.0;
189 m_W -= RPC_DEATH_EDGE;
204 m_H -= RPC_DEATH_EDGE * (1 + 1.0/VALUE);
206 m_H -= RPC_DEATH_EDGE * 2.0;
220 m_L = B_BOX_LT - 2*B_BOX_DZ[
m_UpDown] - 3*B_RPC_LTN;
222 m_L = B_BOX_LT - 2*B_BOX_DZ[
m_UpDown] - 3*B_RPC_LTS;
242 m_L -= RPC_DEATH_EDGE * 2.0;
257 m_Wu = VALUE *
m_Rin - E_GP_DX - E_STRPLN_DA - RPC_SL_OFFSET;
261 m_Wu = VALUE *
m_Rin - E_GP_DY - E_STRPLN_DA - RPC_SL_OFFSET;
268 m_Wu = VALUE *
m_Rin - E_GP_DX - E_STRPLN_DA;
278 m_Wu = VALUE *
m_Rin - E_GP_DY - E_STRPLN_DA;
290 else m_Wu -= ( 1 + 1.0/
cos(MUC_PI/8.0) ) * RPC_DEATH_EDGE;
295 m_Wu -= RPC_DEATH_EDGE * 2.0;
297 m_W -= RPC_DEATH_EDGE;
311 m_Wd = VALUE *
m_Rout - E_GP_DX - E_STRPLN_DA - RPC_SL_OFFSET;
315 m_Wd = VALUE *
m_Rout - E_GP_DY - E_STRPLN_DA - RPC_SL_OFFSET;
322 m_Wd = VALUE *
m_Rout - E_GP_DX - E_STRPLN_DA;
332 m_Wd = VALUE *
m_Rout - E_GP_DY - E_STRPLN_DA;
342 else m_Wd -= ( 1 + 1.0/
cos(MUC_PI/8.0) ) * RPC_DEATH_EDGE;
347 m_Wd -= RPC_DEATH_EDGE * 2.0;
349 m_Wd -= RPC_DEATH_EDGE;
366 r = (B_AS_RMIN[
m_Layer] - AS_GAP/2.0) + (1-2*
m_UpDown)*(STR_TH + RPC_TH)/2.0;
374 z = (2*
m_UpDown - 1) * 3 * B_RPC_LTN/2.0;
376 z = (2*
m_UpDown - 1) * 3 * B_RPC_LTS/2.0;
381 z = -B_BOX_LT/2.0 + B_BOX_DZ[
m_UpDown] + (1+2*(3-
m_RpcId))*B_RPC_LTN/2.0;
393 y = (B_AS_RMIN[
m_Layer] - AS_GAP / 2.0) + (1-2*
m_UpDown)*(STR_TH + RPC_TH)/2.0;
405 z = -B_BOX_LT/2.0 - B_BOX_DZ[
m_UpDown] + (1+2*(4-
m_RpcId))*B_RPC_LTN/2.0;
413 for(
int i=0; i<2; i++ )
430 x = ( VALUE*
m_Rc + E_GP_DX + E_STRPLN_DA + RPC_SL_OFFSET ) / 2.0;
439 y = ( VALUE*
m_Rc + E_GP_DY + E_STRPLN_DA + RPC_SL_OFFSET ) / 2.0;
447 x = ( VALUE*
m_Rc + E_GP_DX + E_STRPLN_DA )/2.0 + RPC_DEATH_EDGE/2.0;
452 x += RPC_DEATH_EDGE * ( 3 - 2*sqrt(2.0) )/4.0;
454 y += RPC_DEATH_EDGE * ( 1 + 4.0/sqrt(2.0) )/4.0;
462 x += RPC_DEATH_EDGE * ( 1 + 4.0/sqrt(2.0) )/4.0;
464 y += RPC_DEATH_EDGE * ( 3 - 2*sqrt(2.0) )/4.0;
468 y = ( VALUE*
m_Rc + E_GP_DY + E_STRPLN_DA )/2.0 + RPC_DEATH_EDGE/2.0;
479 for(
int i=0; i<
m_Layer+1; i++ ) z += E_AS_TH[i];
481 z += ( (E_AS_ZMAX - E_AS_TOTAL_TH) + AS_GAP/2.0 );
482 z += (1-2*
m_UpDown) * ( STR_TH + RPC_TH ) / 2.0;
490 for(
int i=0; i<2; i++ )
513 for(
int i=0; i<3; i++ )
double sin(const BesAngle a)
double cos(const BesAngle a)
MucEntity & operator=(const MucEntity &other)
void TransLocToBes(double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z)
MucGas(int part, int segment, int layer, int upDown, int rpcId, int id)
MucGas & operator=(const MucGas &other)
virtual void SetObjOrgInLoc()
virtual void SetObjOrgInBes()
virtual void SetLocOrgInBes()