17MucGas::MucGas(
int part,
int segment,
int layer,
int upDown,
int rpcId,
int id )
18 :
MucEntity( part, segment, layer, upDown, rpcId, id ) {
27 if (
this == &other )
return *
this;
80 m_Theta = ( MUC_PI / 4.0 ) + MUC_PI / 8.0;
83 else m_Theta = ( MUC_PI / 4.0 ) - MUC_PI / 8.0;
91 ( 1 - 2 *
m_UpDown ) * ( STR_TH + RPC_TH ) / 2.0 - GAS_TH / 2.0;
99 ( 1 - 2 *
m_UpDown ) * ( STR_TH + RPC_TH ) / 2.0 + GAS_TH / 2.0;
101 m_Rout = E_AS_RMAX - E_BOX_DR - E_STRPLN_DB[(
m_Layer == 0 ) ? 0 : 1] +
114 if ( (
m_Layer + 1 ) % 2 == 1 )
123 if ( (
m_Layer + 1 ) % 2 == 1 )
133 if (
m_RpcId == 0 )
m_W = VALUE *
m_Rc - E_GP_DX - E_STRPLN_DA - RPC_SL_OFFSET;
135 else m_W = VALUE *
m_Rc - E_GP_DY - E_STRPLN_DA - RPC_SL_OFFSET;
141 case 0:
m_W = VALUE *
m_Rc - E_GP_DX - E_STRPLN_DA;
break;
144 case 2:
m_W = 2 * VALUE *
m_Rin;
break;
145 case 4:
m_W = VALUE *
m_Rc - E_GP_DY - E_STRPLN_DA;
break;
152 if (
m_Part == BRID )
m_W -= RPC_DEATH_EDGE * 2.0;
157 if (
m_RpcId == 1 )
m_W -= RPC_DEATH_EDGE * 2.0;
158 else m_W -= ( 1 + 1.0 /
cos( MUC_PI / 8.0 ) ) * RPC_DEATH_EDGE;
163 m_W -= RPC_DEATH_EDGE * 2.0;
165 m_W -= RPC_DEATH_EDGE;
178 m_H -= RPC_DEATH_EDGE * ( 1 + 1.0 / VALUE );
179 else m_H -= RPC_DEATH_EDGE * 2.0;
192 m_L = B_BOX_LT - 2 * B_BOX_DZ[
m_UpDown] - 3 * B_RPC_LTN;
194 m_L = B_BOX_LT - 2 * B_BOX_DZ[
m_UpDown] - 3 * B_RPC_LTS;
211 2 * ( B_BOX_DZ[
m_UpDown] + B_RPC_LTN );
212 else m_L = B_RPC_LTN;
215 m_L -= RPC_DEATH_EDGE * 2.0;
228 if (
m_RpcId == 0 )
m_Wu = VALUE *
m_Rin - E_GP_DX - E_STRPLN_DA - RPC_SL_OFFSET;
230 else m_Wu = VALUE *
m_Rin - E_GP_DY - E_STRPLN_DA - RPC_SL_OFFSET;
236 case 0:
m_Wu = VALUE *
m_Rin - E_GP_DX - E_STRPLN_DA;
break;
238 case 3:
m_Wu = 0.;
break;
239 case 2:
m_Wu = 2.0 * VALUE *
m_Rin;
break;
240 case 4:
m_Wu = VALUE *
m_Rin - E_GP_DY - E_STRPLN_DA;
break;
251 else m_Wu -= ( 1 + 1.0 /
cos( MUC_PI / 8.0 ) ) * RPC_DEATH_EDGE;
256 m_Wu -= RPC_DEATH_EDGE * 2.0;
258 m_W -= RPC_DEATH_EDGE;
270 if (
m_RpcId == 0 )
m_Wd = VALUE *
m_Rout - E_GP_DX - E_STRPLN_DA - RPC_SL_OFFSET;
272 else m_Wd = VALUE *
m_Rout - E_GP_DY - E_STRPLN_DA - RPC_SL_OFFSET;
278 case 0:
m_Wd = VALUE *
m_Rout - E_GP_DX - E_STRPLN_DA;
break;
281 case 2:
m_Wd = 2.0 * VALUE *
m_Rin;
break;
282 case 4:
m_Wd = VALUE *
m_Rout - E_GP_DY - E_STRPLN_DA;
break;
291 else m_Wd -= ( 1 + 1.0 /
cos( MUC_PI / 8.0 ) ) * RPC_DEATH_EDGE;
296 m_Wd -= RPC_DEATH_EDGE * 2.0;
298 m_Wd -= RPC_DEATH_EDGE;
305 if (
m_Part != BRID )
return 0;
314 r = ( B_AS_RMIN[
m_Layer] - AS_GAP / 2.0 ) +
315 ( 1 - 2 *
m_UpDown ) * ( STR_TH + RPC_TH ) / 2.0;
323 z = ( 2 *
m_UpDown - 1 ) * 3 * B_RPC_LTN / 2.0;
324 else z = ( 2 *
m_UpDown - 1 ) * 3 * B_RPC_LTS / 2.0;
327 z = B_BOX_LT / 2.0 - B_BOX_DZ[
m_UpDown] - ( 1 + 2 *
m_RpcId ) * B_RPC_LTN / 2.0;
329 z = -B_BOX_LT / 2.0 + B_BOX_DZ[
m_UpDown] + ( 1 + 2 * ( 3 -
m_RpcId ) ) * B_RPC_LTN / 2.0;
338 x = ( 1 - 2 *
m_RpcId ) * ( ( B_BOX_WT[
m_Layer] + B_BOX_SLOT_WT ) / 4.0 +
342 y = ( B_AS_RMIN[
m_Layer] - AS_GAP / 2.0 ) +
343 ( 1 - 2 *
m_UpDown ) * ( STR_TH + RPC_TH ) / 2.0;
347 z = B_BOX_LT / 2.0 - B_BOX_DZ[
m_UpDown] -
350 z = -B_RPC_LTN - B_TOPRPC_LTS[( (
m_Layer == 0 ) ? 1 : (
m_Layer % 2 ) )];
352 z = B_RPC_LTN - B_TOPRPC_LTS[( (
m_Layer == 0 ) ? 1 : (
m_Layer % 2 ) )];
354 z = B_BOX_LT / 2.0 - B_BOX_DZ[
m_UpDown] -
356 ( 3 - 2 *
m_RpcId ) * B_RPC_LTN / 2.0;
358 z = -B_BOX_LT / 2.0 - B_BOX_DZ[
m_UpDown] + ( 1 + 2 * ( 4 -
m_RpcId ) ) * B_RPC_LTN / 2.0;
366 for (
int i = 0; i < 2; i++ )
373 if (
m_Part == BRID )
return 0;
383 x = ( VALUE *
m_Rc + E_GP_DX + E_STRPLN_DA + RPC_SL_OFFSET ) / 2.0;
388 x =
m_Rc *
cos( MUC_PI / 4.0 );
389 y =
m_Rc *
sin( MUC_PI / 4.0 );
394 y = ( VALUE *
m_Rc + E_GP_DY + E_STRPLN_DA + RPC_SL_OFFSET ) / 2.0;
402 x = ( VALUE *
m_Rc + E_GP_DX + E_STRPLN_DA ) / 2.0 + RPC_DEATH_EDGE / 2.0;
406 x = VALUE *
m_Rc +
sin( MUC_PI / 4.0 ) *
m_Wd / 4.0;
407 x += RPC_DEATH_EDGE * ( 3 - 2 * sqrt( 2.0 ) ) / 4.0;
409 y += RPC_DEATH_EDGE * ( 1 + 4.0 / sqrt( 2.0 ) ) / 4.0;
412 x =
m_Rc *
cos( MUC_PI / 4.0 );
413 y =
m_Rc *
sin( MUC_PI / 4.0 );
417 x += RPC_DEATH_EDGE * ( 1 + 4.0 / sqrt( 2.0 ) ) / 4.0;
418 y = VALUE *
m_Rc +
sin( MUC_PI / 4.0 ) *
m_Wd / 4.0;
419 y += RPC_DEATH_EDGE * ( 3 - 2 * sqrt( 2.0 ) ) / 4.0;
423 y = ( VALUE *
m_Rc + E_GP_DY + E_STRPLN_DA ) / 2.0 + RPC_DEATH_EDGE / 2.0;
438 for (
int i = 0; i <
m_Layer + 1; i++ ) z += E_AS_TH[i];
440 z += ( ( E_AS_ZMAX - E_AS_TOTAL_TH ) + AS_GAP / 2.0 );
441 z += ( 1 - 2 *
m_UpDown ) * ( STR_TH + RPC_TH ) / 2.0;
449 for (
int i = 0; i < 2; i++ )
469 for (
int i = 0; i < 3; i++ )
double sin(const BesAngle a)
double cos(const BesAngle a)
MucEntity(int part, int segment, int layer)
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()