11#include "MucGeoCreateAlg/MucGeoConst.h"
12#include "MucGeoCreateAlg/MucBakelite.h"
18 :
MucEntity( part, segment, layer, upDown, rpcId, id )
95 m_Theta = ( MUC_PI/4.0 ) + MUC_PI / 8.0 ;
99 m_Theta = ( MUC_PI/4.0 ) - MUC_PI / 8.0 ;
108 + (1-2*
m_ID)*(GAS_TH + BKLT_TH)/2.0 - BKLT_TH/2.0;
117 + (1-2*
m_ID)*(GAS_TH + BKLT_TH)/2.0 + BKLT_TH/2.0;
158 m_W = VALUE *
m_Rc - E_GP_DX - E_STRPLN_DA - RPC_SL_OFFSET;
162 m_W = VALUE *
m_Rc - E_GP_DY - E_STRPLN_DA - RPC_SL_OFFSET;
169 m_W = VALUE *
m_Rc - E_GP_DX - E_STRPLN_DA;
179 m_W = VALUE *
m_Rc - E_GP_DY - E_STRPLN_DA;
189 m_W -= RPC_DEATH_EDGE * 2.0;
194 if(
m_RpcId == 1 )
m_W -= RPC_DEATH_EDGE * 2.0;
195 else m_W -= ( 1 + 1.0/
cos(MUC_PI/8.0) ) * RPC_DEATH_EDGE;
200 m_W -= RPC_DEATH_EDGE * 2.0;
202 m_W -= RPC_DEATH_EDGE;
217 m_H -= RPC_DEATH_EDGE * (1 + 1.0/VALUE);
219 m_H -= RPC_DEATH_EDGE * 2.0;
233 m_L = B_BOX_LT - 2*B_BOX_DZ[
m_UpDown] - 3*B_RPC_LTN;
235 m_L = B_BOX_LT - 2*B_BOX_DZ[
m_UpDown] - 3*B_RPC_LTS;
260 m_L -= RPC_DEATH_EDGE * 2.0;
279 m_Wu = VALUE *
m_Rin - E_GP_DX - E_STRPLN_DA - RPC_SL_OFFSET;
283 m_Wu = VALUE *
m_Rin - E_GP_DY - E_STRPLN_DA - RPC_SL_OFFSET;
290 m_Wu = VALUE *
m_Rin - E_GP_DX - E_STRPLN_DA;
300 m_Wu = VALUE *
m_Rin - E_GP_DY - E_STRPLN_DA;
312 else m_Wu -= ( 1 + 1.0/
cos(MUC_PI/8.0) ) * RPC_DEATH_EDGE;
317 m_Wu -= RPC_DEATH_EDGE * 2.0;
319 m_W -= RPC_DEATH_EDGE;
334 m_Wd = VALUE *
m_Rout - E_GP_DX - E_STRPLN_DA - RPC_SL_OFFSET;
338 m_Wd = VALUE *
m_Rout - E_GP_DY - E_STRPLN_DA - RPC_SL_OFFSET;
345 m_Wd = VALUE *
m_Rout - E_GP_DX - E_STRPLN_DA;
355 m_Wd = VALUE *
m_Rout - E_GP_DY - E_STRPLN_DA;
365 else m_Wd -= ( 1 + 1.0/
cos(MUC_PI/8.0) ) * RPC_DEATH_EDGE;
370 m_Wd -= RPC_DEATH_EDGE * 2.0;
372 m_Wd -= RPC_DEATH_EDGE;
390 r = (B_AS_RMIN[
m_Layer] - AS_GAP / 2.0) + (1-2*
m_UpDown)*(STR_TH + RPC_TH)/2.0;
398 z = (2*
m_UpDown - 1) * 3 * B_RPC_LTN/2.0;
400 z = (2*
m_UpDown - 1) * 3 * B_RPC_LTS/2.0;
405 z = -B_BOX_LT/2.0 + B_BOX_DZ[
m_UpDown] + (1+2*(3-
m_RpcId))*B_RPC_LTN/2.0;
417 y = (B_AS_RMIN[
m_Layer] - AS_GAP / 2.0) + (1-2*
m_UpDown)*(STR_TH + RPC_TH)/2.0;
429 z = -B_BOX_LT/2.0 - B_BOX_DZ[
m_UpDown] + (1+2*(4-
m_RpcId))*B_RPC_LTN/2.0;
438 for(
int i=0; i<2; i++ ) {
457 x = ( VALUE*
m_Rc + E_GP_DX + E_STRPLN_DA + RPC_SL_OFFSET ) / 2.0;
468 y = ( VALUE*
m_Rc + E_GP_DY + E_STRPLN_DA + RPC_SL_OFFSET ) / 2.0;
476 x = ( VALUE*
m_Rc + E_GP_DX + E_STRPLN_DA )/2.0 + RPC_DEATH_EDGE/2.0;
481 x += RPC_DEATH_EDGE * ( 3 - 2*sqrt(2.0) )/4.0;
484 y += RPC_DEATH_EDGE * ( 1 + 4.0/sqrt(2.0) )/4.0;
493 x += RPC_DEATH_EDGE * ( 1 + 4.0/sqrt(2.0) )/4.0;
496 y += RPC_DEATH_EDGE * ( 3 - 2*sqrt(2.0) )/4.0;
501 y = ( VALUE*
m_Rc + E_GP_DY + E_STRPLN_DA )/2.0 + RPC_DEATH_EDGE/2.0;
514 for(
int i=0; i<
m_Layer+1; i++ ) z += E_AS_TH[i];
517 z += ( (E_AS_ZMAX - E_AS_TOTAL_TH ) + AS_GAP/2.0 );
518 z += (1-2*
m_UpDown) * ( STR_TH + RPC_TH ) / 2.0;
526 for(
int i=0; i<2; i++ ) {
566 for(
int i=0; i<3; i++ ) {
double sin(const BesAngle a)
double cos(const BesAngle a)
virtual void SetObjOrgInBes()
MucBakelite(int part, int segment, int layer, int upDown, int rpcId, int id)
virtual void SetObjOrgInLoc()
MucBakelite & operator=(const MucBakelite &other)
virtual void SetLocOrgInBes()
MucEntity & operator=(const MucEntity &other)
void TransLocToBes(double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z)