#include <MucBoxCover.h>
Inheritance diagram for MucBoxCover:
Public Member Functions | |
double | GetArea () |
double | GetArea () |
double | GetH () |
double | GetH () |
int | GetID () |
int | GetID () |
double | GetL () |
double | GetL () |
int | GetLayer () |
int | GetLayer () |
double * | GetLocOrgInBes () |
double | GetLocOrgInBes (int i) |
double * | GetLocOrgInBes () |
double | GetLocOrgInBes (int i) |
double * | GetObjOrgInBes () |
double | GetObjOrgInBes (int i) |
double * | GetObjOrgInBes () |
double | GetObjOrgInBes (int i) |
double * | GetObjOrgInLoc () |
double | GetObjOrgInLoc (int i) |
double * | GetObjOrgInLoc () |
double | GetObjOrgInLoc (int i) |
double * | GetObjRotToMot () |
double | GetObjRotToMot (int i) |
double * | GetObjRotToMot () |
double | GetObjRotToMot (int i) |
int | GetPart () |
int | GetPart () |
double | GetRc () |
double | GetRc () |
double | GetRin () |
double | GetRin () |
double | GetRout () |
double | GetRout () |
int | GetRpcId () |
int | GetRpcId () |
int | GetSegment () |
int | GetSegment () |
double | GetTheta () |
double | GetTheta () |
double | GetThin () |
double | GetThin () |
int | GetUpDown () |
int | GetUpDown () |
double | GetW () |
double | GetW () |
double | GetWd () |
double | GetWd () |
double | GetWu () |
double | GetWu () |
MucBoxCover (const MucBoxCover &other) | |
MucBoxCover (int part, int segment, int layer, int upDown, int id) | |
MucBoxCover (const MucBoxCover &other) | |
MucBoxCover (int part, int segment, int layer, int upDown, int id) | |
MucBoxCover & | operator= (const MucBoxCover &other) |
MucBoxCover & | operator= (const MucBoxCover &other) |
void | TransBesToLoc (double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z) |
void | TransBesToLoc (double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z) |
void | TransLocToBes (double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z) |
void | TransLocToBes (double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z) |
~MucBoxCover () | |
~MucBoxCover () | |
Protected Member Functions | |
virtual void | Init () |
virtual void | Init () |
virtual void | SetAlignment (double dx, double dy, double dz) |
virtual void | SetAlignment (double dx, double dy, double dz) |
virtual void | SetArea () |
virtual void | SetArea () |
virtual void | SetH () |
virtual void | SetH () |
virtual void | SetL () |
virtual void | SetL () |
virtual void | SetLocOrgInBes () |
virtual void | SetLocOrgInBes () |
virtual void | SetObjOrgInBes () |
virtual void | SetObjOrgInBes () |
virtual void | SetObjOrgInLoc () |
virtual void | SetObjOrgInLoc () |
virtual void | SetObjRotToMot () |
virtual void | SetObjRotToMot () |
virtual void | SetRc () |
virtual void | SetRc () |
virtual void | SetRin () |
virtual void | SetRin () |
virtual void | SetRout () |
virtual void | SetRout () |
virtual void | SetTheta () |
virtual void | SetTheta () |
virtual void | SetThin () |
virtual void | SetThin () |
virtual void | SetW () |
virtual void | SetW () |
virtual void | SetWd () |
virtual void | SetWd () |
virtual void | SetWu () |
virtual void | SetWu () |
Protected Attributes | |
double | m_Area |
double | m_H |
int | m_ID |
double | m_L |
int | m_Layer |
double | m_LocOrgInBes [3] |
double | m_ObjOrgInBes [3] |
double | m_ObjOrgInLoc [3] |
double | m_ObjRotToMot [3] |
int | m_Part |
double | m_Rc |
double | m_Rin |
double | m_Rout |
int | m_RpcId |
int | m_Segment |
double | m_Theta |
double | m_Thin |
int | m_UpDown |
double | m_W |
double | m_Wd |
double | m_Wu |
|
00017 : MucEntity( part, segment, layer, upDown, id ) 00018 { 00019 MucBoxCover::Init(); 00020 }
|
|
00023 : MucEntity( other ) { ; }
|
|
00038 { 00039 ; 00040 }
|
|
|
|
|
|
|
|
|
|
00150 { return m_Area; }
|
|
|
|
00146 { return m_H; }
|
|
|
|
00139 { return m_ID; }
|
|
|
|
00147 { return m_L; }
|
|
|
|
00136 { return m_Layer; }
|
|
|
|
|
|
00176 { return &m_LocOrgInBes[0]; }
|
|
00153 { 00154 if( i<1 || i>3 ) i=1; 00155 return m_LocOrgInBes[i-1]; 00156 }
|
|
|
|
|
|
00178 { return &m_ObjOrgInBes[0]; }
|
|
00165 { 00166 if( i<1 || i>3 ) i=1; 00167 return m_ObjOrgInBes[i-1]; 00168 }
|
|
|
|
|
|
00179 { return &m_ObjOrgInLoc[0]; }
|
|
00171 { 00172 if( i<1 || i>3 ) i=1; 00173 return m_ObjOrgInLoc[i-1]; 00174 }
|
|
|
|
|
|
00177 { return &m_ObjRotToMot[0]; }
|
|
00159 { 00160 if( i<1 || i>3 ) i=1; 00161 return m_ObjRotToMot[i-1]; 00162 }
|
|
|
|
00134 { return m_Part; }
|
|
|
|
00143 { return m_Rc; }
|
|
|
|
00141 { return m_Rin; }
|
|
|
|
00142 { return m_Rout; }
|
|
|
|
00138 { return m_RpcId; }
|
|
|
|
00135 { return m_Segment; }
|
|
|
|
00140 { return m_Theta; }
|
|
|
|
00144 { return m_Thin; }
|
|
|
|
00137 { return m_UpDown; }
|
|
|
|
00145 { return m_W; }
|
|
|
|
00149 { return m_Wd; }
|
|
|
|
00148 { return m_Wu; }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00044 { 00045 SetTheta(); 00046 SetRin(); 00047 SetRout(); 00048 SetRc(); 00049 00050 SetThin(); 00051 SetW(); 00052 SetWu(); 00053 SetWd(); 00054 SetH(); 00055 SetL(); 00056 00057 SetLocOrgInBes(); 00058 SetObjOrgInBes(); 00059 SetObjOrgInLoc(); 00060 }
|
|
|
|
00027 { 00028 if( this == &other) 00029 return *this; 00030 00031 MucEntity::operator =(other); 00032 00033 return *this; 00034 }
|
|
Reimplemented in MucBox, MucStripPlane, MucBox, and MucStripPlane. |
|
Reimplemented in MucBox, MucStripPlane, MucBox, and MucStripPlane. 00219 { ; }
|
|
|
|
Reimplemented in MucBox, MucStrip, MucBox, and MucStrip. 00212 { m_Area = 0.; }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00143 { 00144 if( m_Part == BRID ) 00145 m_H = BOX_COVER_TH; 00146 else 00147 { 00148 if( m_ID == -1 ) // virtual encap gap 00149 m_H = E_AS_RMAX - E_BOX_DR - E_GP_DY; 00150 else 00151 m_H = E_AS_RMAX - E_BOX_DR - E_GP_RMIN[m_Layer]; 00152 } 00153 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00156 { 00157 if( m_Part == BRID ) 00158 { 00159 if( m_Segment != B_TOP || m_ID == -1 ) 00160 m_L = B_BOX_LT; 00161 else // top segment 00162 { 00163 if( m_ID == 2 ) 00164 m_L = B_BOX_LT - B_TOPRPC_LTS[(m_Layer==0)?1:(m_Layer%2)]; 00165 else 00166 m_L = B_TOPRPC_LTS[(m_Layer==0)?1:(m_Layer%2)]; 00167 } 00168 } 00169 else 00170 m_L = BOX_COVER_TH; 00171 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00209 { 00210 double x, y, z; 00211 x = y = z = 0.; 00212 00213 if( m_Part == BRID ) 00214 { 00215 x = m_Rc*cos( m_Theta ); 00216 y = m_Rc*sin( m_Theta ); 00217 z = 0.; 00218 00219 } // barrel 00220 else 00221 { 00222 //------------ set x and y --------------- 00223 // segment 0 as reference 00224 x = (E_AS_RMAX - E_BOX_DR + E_GP_DX) / 2.0; 00225 y = (E_AS_RMAX - E_BOX_DR + E_GP_DY) / 2.0; 00226 00227 // sign different by segment 00228 if ( m_Segment == 0 ) { ; } 00229 else if( m_Segment == 1 ) { x = -x; } 00230 else if( m_Segment == 2 ) { x = -x; y = -y; } 00231 else { y = -y; } 00232 00233 //------------- set z -------------------- 00234 for( int i=0; i<m_Layer+1; i++ ) z += E_AS_TH[i]; 00235 00236 z += m_Layer * AS_GAP; 00237 z += (E_AS_ZMAX - E_AS_TOTAL_TH) + AS_GAP/2.0; 00238 z *= cos( m_Part*MUC_PI/2.0 ); 00239 00240 if( m_ID != -1 ) z += (1-2*m_UpDown)*(BOX_TH - BOX_COVER_TH)/2.0; 00241 00242 }// endcap 00243 00244 m_LocOrgInBes[0] = x; 00245 m_LocOrgInBes[1] = y; 00246 m_LocOrgInBes[2] = z; 00247 00248 // limit cut 00249 for(int i=0;i<3;i++) { 00250 if( fabs(m_LocOrgInBes[i]) < ERR_LIMIT ) m_LocOrgInBes[i] = 0.; 00251 } 00252 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00255 { 00256 double x, y, z; 00257 x = y = z =0.; 00258 00259 if( m_Part == BRID ) // barrel 00260 { 00261 if( m_Segment != B_TOP || m_ID ==-1 ) 00262 { 00263 double r; 00264 r = m_Rc + (1-2*m_UpDown)*(BOX_TH - BOX_COVER_TH) / 2.0; 00265 x = r * cos( m_Theta ); 00266 y = r * sin( m_Theta ); 00267 z = 0.; 00268 } 00269 else // top segment 00270 { 00271 // set x 00272 if( m_ID == 2 ) x = 0.; 00273 else x = (1-2*m_ID) * ( B_BOX_WT[m_Layer] + B_BOX_SLOT_WT )/4.0; 00274 00275 // set y 00276 y = m_Rc + (1-2*m_UpDown)*(BOX_TH - BOX_COVER_TH) / 2.0; 00277 00278 // set z 00279 if( m_ID == 2 ) z = -B_TOPRPC_LTS[(m_Layer==0)?1:(m_Layer%2)] / 2.0; 00280 else z = ( B_BOX_LT - B_TOPRPC_LTS[(m_Layer==0)?1:(m_Layer%2)] )/2.0; 00281 } 00282 } 00283 else // endcap 00284 { 00285 //------------- set x, y -------------------------- 00286 // segment 0 as reference 00287 if( m_ID == -1 ) // box cover 00288 { 00289 x = (E_AS_RMAX - E_BOX_DR + E_GP_DX) / 2.0; 00290 y = (E_AS_RMAX - E_BOX_DR + E_GP_DY) / 2.0; 00291 } 00292 else if( m_ID == 0 ) // box cover panels 00293 { 00294 x = m_Rc; 00295 y = ( m_Rc * tan( m_Theta ) + E_GP_DY ) / 2.0; 00296 } 00297 else if ( m_ID == 1 ) 00298 { 00299 x = m_Rc * cos( m_Theta ); 00300 y = m_Rc * sin( m_Theta ); 00301 } 00302 else // m_ID == 2 00303 { 00304 x = ( m_Rc / tan( m_Theta ) + E_GP_DX ) / 2.0; 00305 y = m_Rc; 00306 } 00307 00308 // sign different by segment 00309 if ( m_Segment == 0 ) { ; } 00310 else if( m_Segment == 1 ) { x = -x; } 00311 else if( m_Segment == 2 ) { x = -x; y = -y; } 00312 else { y = -y; } 00313 00314 //---------- set z -------------------- 00315 if( m_ID == -1 ) 00316 z = m_LocOrgInBes[2] + (1-2*m_UpDown)*(BOX_TH - BOX_COVER_TH)/2.0; 00317 else 00318 z = m_LocOrgInBes[2]; 00319 00320 } // else, endcap 00321 00322 m_ObjOrgInBes[0] = x; 00323 m_ObjOrgInBes[1] = y; 00324 m_ObjOrgInBes[2] = z; 00325 00326 // limit cut 00327 for( int i=0; i<3; i++ ) { 00328 if( fabs(m_ObjOrgInBes[i]) < ERR_LIMIT ) m_ObjOrgInBes[i] = 0.; 00329 } 00330 00331 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00334 { 00335 if( m_Part == BRID ) 00336 { 00337 00338 // set local x 00339 if( m_Segment != B_TOP || m_ID == -1 || m_ID == 2 ) 00340 m_ObjOrgInLoc[0] = 0.; 00341 else 00342 m_ObjOrgInLoc[0] = (1-2*m_ID) * ( B_BOX_WT[m_Layer] + B_BOX_SLOT_WT )/4.0; 00343 00344 // set local y 00345 m_ObjOrgInLoc[1] = (1-2*m_UpDown)*(BOX_TH - BOX_COVER_TH)/2.0; 00346 // m_ObjOrgInLoc[1] = 0.; 00347 00348 // set local z 00349 if( m_Segment != B_TOP || m_ID == -1 ) 00350 m_ObjOrgInLoc[2] = 0.; 00351 else 00352 { 00353 if( m_ID == 2 ) m_ObjOrgInLoc[2] = -B_TOPRPC_LTS[(m_Layer==0)?1:(m_Layer%2)] / 2.0; 00354 else m_ObjOrgInLoc[2] = ( B_BOX_LT - B_TOPRPC_LTS[(m_Layer==0)?1:(m_Layer%2)] )/2.0; 00355 } 00356 } 00357 else // endcap 00358 { 00359 for(int i=0; i<3; i++) 00360 m_ObjOrgInLoc[i] = m_ObjOrgInBes[i] - m_LocOrgInBes[i]; 00361 } 00362 00363 // limit cut 00364 for( int i=0; i<3; i++ ) { 00365 if( fabs(m_ObjOrgInLoc[i]) < ERR_LIMIT ) m_ObjOrgInLoc[i] = 0.; 00366 } 00367 00368 }
|
|
Reimplemented in MucAbsorber, MucBox, MucGap, MucAbsorber, MucBox, and MucGap. |
|
Reimplemented in MucAbsorber, MucBox, MucGap, MucAbsorber, MucBox, and MucGap. 00215 { for( int i=0; i<3; i++) m_ObjRotToMot[i] = 0.; }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00102 { 00103 if( m_Part == BRID ) 00104 m_Rc = B_AS_RMIN[m_Layer] - AS_GAP/2.0; 00105 else 00106 { 00107 if( m_ID == -1 ) 00108 m_Rc = sqrt(2.0) * ( E_AS_RMAX - E_BOX_DR ) / 2.0; 00109 else 00110 m_Rc = (m_Rin + m_Rout)/2.0; 00111 } 00112 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00079 { 00080 if( m_Part == BRID ) 00081 m_Rin = B_AS_RMIN[m_Layer] - ( AS_GAP + BOX_TH ) / 2.0; 00082 else 00083 { 00084 if( m_ID == -1 ) 00085 m_Rin = 0.0; 00086 else 00087 m_Rin = E_GP_RMIN[m_Layer]; 00088 } 00089 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00093 { 00094 if( m_Part == BRID ) 00095 m_Rout = B_AS_RMIN[m_Layer] -( AS_GAP - BOX_TH ) / 2.0; 00096 else 00097 m_Rout = E_AS_RMAX - E_BOX_DR; 00098 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00065 { 00066 if( m_Part == BRID ) 00067 m_Theta = m_Segment * ( MUC_PI/4.0 ); 00068 else 00069 { 00070 if( m_ID == -1 ) 00071 m_Theta = ( 2*m_Segment + 1 ) * ( MUC_PI/4.0 ); 00072 else 00073 m_Theta = ( MUC_PI/4.0 ) + ( m_ID - 1) * MUC_PI / 8.0 ; 00074 } 00075 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00115 { 00116 m_Thin = BOX_COVER_TH; 00117 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00120 { 00121 if( m_Part == BRID) 00122 { 00123 if( m_Segment != B_TOP ) 00124 m_W = B_BOX_WT[m_Layer]; 00125 else // top segment 00126 { 00127 if( m_ID == -1 || m_ID == 2 ) 00128 m_W = B_BOX_WT[m_Layer]; 00129 else 00130 m_W = ( B_BOX_WT[m_Layer] - B_BOX_SLOT_WT )/2.0; 00131 } 00132 } 00133 else 00134 { 00135 if( m_ID == -1 ) // virtual encap gap 00136 m_W = E_AS_RMAX - E_BOX_DR - E_GP_DX; 00137 else 00138 m_W = 0.; 00139 } 00140 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00191 { 00192 if( m_Part == BRID ) 00193 m_Wd = m_W; 00194 else 00195 { 00196 if( m_ID == -1 ) // virtual box 00197 m_Wd = m_W; 00198 else if( m_ID == 1 ) // center fraction 00199 m_Wd = 2 * VALUE * m_Rout; 00200 else if( m_ID == 0 ) 00201 m_Wd = VALUE * m_Rout - E_GP_DY; 00202 else 00203 m_Wd = VALUE * m_Rout - E_GP_DX; 00204 } 00205 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00174 { 00175 if( m_Part == BRID ) 00176 m_Wu = m_W; 00177 else 00178 { 00179 if( m_ID == -1 ) // virtual box 00180 m_Wu = m_W; 00181 else if( m_ID == 1 ) // center fraction 00182 m_Wu = 2 * VALUE * m_Rin ; 00183 else if( m_ID == 0 ) 00184 m_Wu = VALUE * m_Rin - E_GP_DY; 00185 else 00186 m_Wu = VALUE * m_Rin - E_GP_DX; 00187 } 00188 }
|
|
|
|
00224 { 00225 LocCoord[0] = (BesCoord[0] - LocOrgInBes[0])*cos(Rot_z) + (BesCoord[1] - LocOrgInBes[1])*sin(Rot_z); 00226 LocCoord[1] = -(BesCoord[0] - LocOrgInBes[0])*sin(Rot_z) + (BesCoord[1] - LocOrgInBes[1])*cos(Rot_z); 00227 LocCoord[2] = BesCoord[2] - LocOrgInBes[2]; 00228 }
|
|
|
|
00233 { 00234 BesCoord[0] = LocCoord[0]*cos(Rot_z) - LocCoord[1]*sin(Rot_z) + LocOrgInBes[0]; 00235 BesCoord[1] = LocCoord[0]*sin(Rot_z) + LocCoord[1]*cos(Rot_z) + LocOrgInBes[1]; 00236 BesCoord[2] = LocCoord[2] + LocOrgInBes[2]; 00237 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|