#include <MucAbsorber.h>
Inheritance diagram for MucAbsorber:
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 () |
MucAbsorber (const MucAbsorber &other) | |
MucAbsorber (int part, int segment, int layer, int id) | |
MucAbsorber (const MucAbsorber &other) | |
MucAbsorber (int part, int segment, int layer, int id) | |
MucAbsorber & | operator= (const MucAbsorber &other) |
MucAbsorber & | operator= (const MucAbsorber &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) |
virtual | ~MucAbsorber () |
virtual | ~MucAbsorber () |
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, id ) 00018 { 00019 MucAbsorber::Init(); 00020 }
|
|
00023 : MucEntity( other ) { ; }
|
|
00037 { ; }
|
|
|
|
|
|
|
|
|
|
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. 00041 { 00042 SetTheta(); 00043 SetRin(); 00044 SetRout(); 00045 SetRc(); 00046 00047 SetThin(); 00048 SetW(); 00049 SetWu(); 00050 SetWd(); 00051 SetH(); 00052 SetL(); 00053 SetLocOrgInBes(); 00054 SetObjRotToMot(); 00055 SetObjOrgInBes(); 00056 SetObjOrgInLoc(); 00057 }
|
|
|
|
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. 00131 { 00132 if( m_Part == BRID ) 00133 m_H = B_AS_TH[m_Layer]; 00134 else 00135 { 00136 if( m_ID == -1 ) // temporary local 00137 m_H = E_AS_RMAX; 00138 else 00139 m_H = E_AS_RMAX - E_AS_RMIN[m_Layer]; 00140 } 00141 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00144 { 00145 if( m_Part == BRID ) 00146 m_L = B_AS_LMAX; 00147 else 00148 m_L = E_AS_TH[m_Layer]; 00149 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00187 { 00188 double x, y, z; 00189 x = y = z = 0.0; 00190 00191 //---------- set x and y -------- 00192 if( m_Part == BRID || m_ID == -1 ) // the local(mother) in BES 00193 { 00194 x = m_Rc * cos( m_Theta ); 00195 y = m_Rc * sin( m_Theta ); 00196 } // barrel 00197 else // for endcap panel, calculate the origin of temporary local in BES 00198 { 00199 // set x and y 00200 double tempR, tempTheta; 00201 tempR = sqrt(2.0) * E_AS_RMAX / 2.0; 00202 tempTheta = ( 2*m_Segment + 1 ) * ( MUC_PI / 4.0 ); 00203 00204 x = tempR * cos( tempTheta ); 00205 y = tempR * sin( tempTheta ); 00206 00207 }// endcap 00208 00209 //---------- set z ----------- 00210 if( m_Part == BRID ) z = 0.; 00211 else 00212 { 00213 for( int i=0; i<m_Layer+1; i++ ) z += E_AS_TH[i]; 00214 00215 z += m_Layer * AS_GAP; 00216 z += (E_AS_ZMAX - E_AS_TOTAL_TH ) - m_Thin/2.0; 00217 z *= cos( m_Part*MUC_PI/2.0 ); 00218 } 00219 00220 m_LocOrgInBes[0] = x; 00221 m_LocOrgInBes[1] = y; 00222 m_LocOrgInBes[2] = z; 00223 00224 // limit cut 00225 for(int i=0; i<3; i++) { 00226 if( fabs(m_LocOrgInBes[i]) < ERR_LIMIT ) m_LocOrgInBes[i] = 0; 00227 } 00228 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00242 { 00243 double x, y; 00244 00245 if( m_Part == BRID || m_ID == -1 ) // object is concided with local 00246 { 00247 m_ObjOrgInBes[0] = m_LocOrgInBes[0]; 00248 m_ObjOrgInBes[1] = m_LocOrgInBes[1]; 00249 m_ObjOrgInBes[2] = m_LocOrgInBes[2]; 00250 00251 } // local 00252 else 00253 { 00254 //-------- set x and y ------------ 00255 // endcap panels 00256 // setting segment 0 as reference 00257 if( m_ID == 0 ) 00258 { 00259 x = m_Rc; 00260 y = m_Rc * tan( m_Theta ) / 2.0; 00261 } 00262 else if ( m_ID ==1 ) 00263 { 00264 x = m_Rc * cos( m_Theta ); 00265 y = m_Rc * sin( m_Theta ); 00266 } 00267 else // m_ID == 2 00268 { 00269 x = m_Rc / tan( m_Theta ) / 2.0; 00270 y = m_Rc; 00271 } 00272 00273 // x, y signs of coordinate different by segment 00274 if( m_Segment == 0 ) { ; } 00275 else if ( m_Segment == 1 ) { x = -x; } 00276 else if ( m_Segment == 2 ) { x = -x; y = -y; } 00277 else { y = -y; } 00278 00279 m_ObjOrgInBes[0] = x; 00280 m_ObjOrgInBes[1] = y; 00281 00282 // limit cut 00283 for( int i=0; i<2; i++ ) { 00284 if( fabs(m_ObjOrgInBes[i]) < ERR_LIMIT ) m_ObjOrgInBes[i] = 0; 00285 } 00286 00287 //---------- set z-------------- 00288 m_ObjOrgInBes[2] = m_LocOrgInBes[2]; 00289 00290 } // else, endcap panels 00291 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00294 { 00295 if( m_Part == BRID || m_ID == -1 ) // for barrel and endcap local 00296 for(int i=0; i<3; i++) m_ObjOrgInLoc[i] = 0.; 00297 else // for endcap panels 00298 for(int i=0; i<3; i++) m_ObjOrgInLoc[i] = m_ObjOrgInBes[i] - m_LocOrgInBes[i]; 00299 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00231 { 00232 m_ObjRotToMot[0] = 0.; 00233 m_ObjRotToMot[1] = 0.; 00234 00235 if( m_Part == BRID ) 00236 m_ObjRotToMot[2] = MUC_PI * (m_Segment - 2) / 4.0; 00237 else 00238 m_ObjRotToMot[2] = 0.; 00239 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00097 { 00098 if( m_Part == BRID ) 00099 m_Rc = B_AS_RMIN[m_Layer] + B_AS_TH[m_Layer]/2.0; 00100 else 00101 { 00102 if( m_ID == -1 ) 00103 m_Rc = sqrt(2.0) * E_AS_RMAX / 2.0; 00104 else 00105 m_Rc = (m_Rin + m_Rout)/2.0; 00106 } 00107 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00075 { 00076 if( m_Part == BRID ) 00077 m_Rin = B_AS_RMIN[m_Layer]; 00078 else 00079 { 00080 if( m_ID == -1 ) 00081 m_Rin = 0.0; 00082 else 00083 m_Rin = E_AS_RMIN[m_Layer]; 00084 } 00085 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00088 { 00089 if( m_Part == BRID ) 00090 m_Rout = B_AS_RMIN[m_Layer] + B_AS_TH[m_Layer] ; 00091 else 00092 m_Rout = E_AS_RMAX; 00093 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00062 { 00063 if( m_Part == BRID ) 00064 m_Theta = m_Segment * ( MUC_PI/4.0 ); 00065 else 00066 { 00067 if( m_ID == -1 ) 00068 m_Theta = ( 2*m_Segment + 1 ) * ( MUC_PI/4.0 ); 00069 else 00070 m_Theta = ( MUC_PI/4.0 ) + ( m_ID - 1) * MUC_PI / 8.0 ; 00071 } 00072 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00110 { 00111 if( m_Part == BRID ) 00112 m_Thin = B_AS_TH[m_Layer]; 00113 else 00114 m_Thin = E_AS_TH[m_Layer]; 00115 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00118 { 00119 if( m_Part == BRID) 00120 m_W = 2.0 * VALUE * m_Rout; 00121 else 00122 { 00123 if( m_ID == -1 ) // temporary local 00124 m_W = E_AS_RMAX; 00125 else 00126 m_W = 0; 00127 } 00128 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00169 { 00170 if( m_Part == BRID ) 00171 m_Wd = 2.0 * VALUE * m_Rout; 00172 else 00173 { 00174 if( m_ID == -1 ) // temporary local 00175 m_Wd = m_W; 00176 if( m_ID == 1 ) // center panel 00177 m_Wd = 2.0 * VALUE * E_AS_RMAX; 00178 else 00179 m_Wd = VALUE * E_AS_RMAX; 00180 } 00181 00182 m_Wd -= 0.8; //mm, avoid overlaping 00183 }
|
|
Reimplemented from MucEntity. |
|
Reimplemented from MucEntity. 00152 { 00153 if( m_Part == BRID ) 00154 m_Wu = 2 * VALUE * m_Rin; 00155 else 00156 { 00157 if( m_ID == -1 ) // temporary local 00158 m_Wu = m_W; 00159 else if( m_ID == 1 ) // center panel 00160 m_Wu = 2 * VALUE * m_Rin; 00161 else 00162 m_Wu = VALUE * m_Rin; 00163 } 00164 00165 m_Wu -= 0.8; //mm, avoid overlaping 00166 }
|
|
|
|
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 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|