#include <MucStripCal.h>
Inheritance diagram for MucStripCal:
Public Member Functions | |
double | GetArea () |
double | GetArea () |
double | GetCenterLine () |
double | GetCenterLine () |
double | GetH () |
double | GetH () |
double | GetHead () |
double | GetHead () |
int | GetID () |
int | GetID () |
double | GetL () |
double | GetL () |
int | GetLayer () |
int | GetLayer () |
int | GetPadNumber () |
int | GetPadNumber () |
int | GetPart () |
int | GetPart () |
double | GetPhi () |
double | GetPhi () |
double | GetRc () |
double | GetRc () |
double | GetRin () |
double | GetRin () |
double | GetRout () |
double | GetRout () |
int | GetSegment () |
int | GetSegment () |
double | GetTail () |
double | GetTail () |
double | GetTheta () |
double | GetTheta () |
double | GetThin () |
double | GetThin () |
int | GetType () |
int | GetType () |
double | GetW () |
double | GetW () |
double | GetWd () |
double | GetWd () |
double | GetWu () |
double | GetWu () |
MucStripCal (const MucStripCal &other) | |
MucStripCal (int part, int segment, int layer, int id) | |
MucStripCal (const MucStripCal &other) | |
MucStripCal (int part, int segment, int layer, int id) | |
MucStripCal & | operator= (const MucStripCal &other) |
MucStripCal & | operator= (const MucStripCal &other) |
virtual | ~MucStripCal () |
virtual | ~MucStripCal () |
Protected Member Functions | |
virtual void | Init () |
virtual void | Init () |
virtual void | SetArea () |
virtual void | SetArea () |
void | SetCenterLine () |
void | SetCenterLine () |
virtual void | SetH () |
virtual void | SetH () |
void | SetHead () |
void | SetHead () |
virtual void | SetL () |
virtual void | SetL () |
void | SetPadNumber () |
void | SetPadNumber () |
void | SetPhi () |
void | SetPhi () |
virtual void | SetRc () |
virtual void | SetRc () |
virtual void | SetRin () |
virtual void | SetRin () |
virtual void | SetRout () |
virtual void | SetRout () |
void | SetTail () |
void | SetTail () |
virtual void | SetTheta () |
virtual void | SetTheta () |
virtual void | SetThin () |
virtual void | SetThin () |
void | SetType () |
void | SetType () |
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 |
int | m_Part |
double | m_Rc |
double | m_Rin |
double | m_Rout |
int | m_Segment |
double | m_Theta |
double | m_Thin |
double | m_W |
double | m_Wd |
double | m_Wu |
Private Attributes | |
double | m_CenterLine |
double | m_Head |
int | m_PadNumber |
double | m_Phi |
double | m_Tail |
int | m_Type |
|
00018 : MucEntityCal( part, segment, layer, id ) 00019 { 00020 MucStripCal::Init(); 00021 00022 // m_MucPadChain = NULL; 00023 }
|
|
00026 : MucEntityCal( other ) 00027 { 00028 m_Type = other.m_Type; 00029 m_CenterLine = other.m_CenterLine; 00030 m_Head = other.m_Head; 00031 m_Tail = other.m_Tail; 00032 m_Phi = other.m_Phi; 00033 00034 // m_MucPadChain = other.m_MucPadChain; 00035 }
|
|
00057 {
00058 // delete m_MucPadChain;
00059 ;
00060 }
|
|
|
|
|
|
|
|
|
|
00095 { return m_Area; }
|
|
|
|
00084 { return m_CenterLine; }
|
|
|
|
00091 { return m_H; }
|
|
|
|
00085 { return m_Head; }
|
|
|
|
00084 { return m_ID; }
|
|
|
|
00092 { return m_L; }
|
|
|
|
00083 { return m_Layer; }
|
|
|
|
00088 { return m_PadNumber; }
|
|
|
|
00081 { return m_Part; }
|
|
|
|
00087 { return m_Phi; }
|
|
|
|
00088 { return m_Rc; }
|
|
|
|
00086 { return m_Rin; }
|
|
|
|
00087 { return m_Rout; }
|
|
|
|
00082 { return m_Segment; }
|
|
|
|
00086 { return m_Tail; }
|
|
|
|
00085 { return m_Theta; }
|
|
|
|
00089 { return m_Thin; }
|
|
|
|
00083 { return m_Type; }
|
|
|
|
00090 { return m_W; }
|
|
|
|
00094 { return m_Wd; }
|
|
|
|
00093 { return m_Wu; }
|
|
Reimplemented from MucEntityCal. |
|
Reimplemented from MucEntityCal. 00064 { 00065 SetType(); 00066 SetW(); 00067 SetWu(); 00068 SetWd(); 00069 SetCenterLine(); // use strip width 00070 SetHead(); 00071 SetTail(); 00072 SetPhi(); 00073 00074 SetThin(); 00075 SetH(); 00076 SetL(); 00077 SetArea(); 00078 SetPadNumber(); 00079 }
|
|
|
|
00039 { 00040 if( this == &other) return *this; 00041 00042 MucEntityCal::operator = (other); 00043 00044 m_Type = other.m_Type; 00045 m_CenterLine = other.m_CenterLine; 00046 m_Head = other.m_Head; 00047 m_Tail = other.m_Tail; 00048 m_Phi = other.m_Phi; 00049 00050 // m_MucPadChain = other.m_MucPadChain; 00051 00052 return *this; 00053 }
|
|
Reimplemented from MucEntityCal. |
|
Reimplemented from MucEntityCal.
|
|
|
|
00116 { 00117 // Base on strips width and structure correlations 00118 // Endcap only 00119 00120 int segFlag = 0; 00121 00122 if( (m_Layer+1)%2 == 1 ) // 1,3,5,7 00123 { 00124 if( m_Segment < 2 ) segFlag = 1; 00125 else segFlag = -1; 00126 00127 if( m_ID != E_STR_NUM-1 ) // NO.1~62 00128 m_CenterLine = segFlag * ( E_XSTR_OFFSET + m_ID*E_STR_DST ); 00129 else // NO.63 end strip 00130 m_CenterLine = segFlag * ( E_XSTR_OFFSET + (E_STR_NUM-2)*E_STR_DST + (E_STR_DST + m_W + STR_GAP)/2); 00131 } 00132 else // 2,4,6,8 00133 { 00134 if( m_Segment%3 == 0 ) segFlag = 1; 00135 else segFlag = -1; 00136 00137 if(m_ID != E_STR_NUM-1) // NO.1~62 00138 m_CenterLine = segFlag * ( E_YSTR_OFFSET + m_ID*E_STR_DST ); 00139 else // NO.63 end strip 00140 m_CenterLine = segFlag * ( E_YSTR_OFFSET + (E_STR_NUM-2)*E_STR_DST + (E_STR_DST + m_W + STR_GAP)/2); 00141 } 00142 }
|
|
Reimplemented from MucEntityCal. |
|
Reimplemented from MucEntityCal. 00292 { 00293 m_H = STR_TH; 00294 }
|
|
|
|
00146 { 00147 int segFlag = 0; 00148 00149 // base on strips width and correlations 00150 if( m_ID+1 < TURN_STR_ID[m_Layer][0] ) 00151 m_Head = FIRST_TURN_HEAD[m_Layer][0]; 00152 00153 if( m_ID+1 == TURN_STR_ID[m_Layer][0] ) 00154 m_Head = FIRST_TURN_HEAD[m_Layer][1]; 00155 00156 if( (m_ID+1 > TURN_STR_ID[m_Layer][0]) && (m_ID+1 <= TURN_STR_ID[m_Layer][1]) ) 00157 m_Head = FIRST_TURN_HEAD[m_Layer][1] - ( m_ID + 1 - TURN_STR_ID[m_Layer][0] )*E_STR_DST; 00158 00159 if( m_ID+1 > TURN_STR_ID[m_Layer][1] ) 00160 m_Head = SECOND_TURN_HEAD[m_Layer%2]; 00161 00162 if( (m_Layer+1)%2 == 1 ) // 1,3,5,7 00163 { 00164 if( m_Segment%3 ==0 ) segFlag = 1; 00165 else segFlag = -1; 00166 } 00167 else // 2,4,6,8 00168 { 00169 if( m_Segment < 2 ) segFlag = 1; 00170 else segFlag = -1; 00171 } 00172 00173 m_Head *= segFlag; 00174 }
|
|
Reimplemented from MucEntityCal. |
|
Reimplemented from MucEntityCal. 00298 { 00299 if( m_Part==BRID ) // barrel 00300 { 00301 int ZCUT_HEAD_NUM = B_ZSTR_NUM/2 - B_ZSTR_CUT_NUM[m_Layer] - 1; 00302 int ZCUT_TAIL_NUM = B_ZSTR_NUM/2 + B_ZSTR_CUT_NUM[m_Layer]; 00303 00304 if( m_Segment != B_TOP ) // not top segment 00305 { 00306 if( (m_Layer+1)%2 == 1) // odd layer, Z 00307 m_L = B_BOX_LT - 2*B_BOX_DZ[SL_DOWN]; 00308 else // even layer, phi 00309 m_L = B_BOX_WT[m_Layer] - 2*B_BOX_DZ[SL_DOWN]; 00310 } 00311 else // top segment 00312 { 00313 if((m_Layer+1)%2 == 1) // odd layer, z 00314 { 00315 if( m_ID > ZCUT_HEAD_NUM && m_ID < ZCUT_TAIL_NUM ) // be cut 00316 { 00317 if( m_Layer == 0 ) 00318 m_L = B_BOX_LT - 2*B_BOX_DZ[SL_DOWN] - B_ZSTR_CUT[1]; 00319 else 00320 m_L = B_BOX_LT - 2*B_BOX_DZ[SL_DOWN] - B_ZSTR_CUT[0]; 00321 } 00322 else // no cut 00323 m_L = B_BOX_LT - 2*B_BOX_DZ[SL_DOWN]; 00324 } 00325 else // even layer, phi 00326 { 00327 if( m_ID < B_PHISTR_CUT_NUM ) // no cut 00328 m_L = B_BOX_WT[m_Layer] - 2*B_BOX_DZ[SL_DOWN]; 00329 else // be cut 00330 m_L = (B_BOX_WT[m_Layer] - 2*B_BOX_DZ[SL_DOWN] - B_PHISTR_CUT)/2; 00331 } 00332 } 00333 } 00334 else // endcap 00335 { 00336 m_L = fabs( m_Head - m_Tail ); 00337 } 00338 }
|
|
|
|
00348 { 00349 int n = 0; 00350 double fn = 0; 00351 00352 if(m_W == 0) { 00353 cout<<"Error, strip width = 0!"<<endl; 00354 m_PadNumber = 0; 00355 } 00356 else 00357 { 00358 fn = (m_L/m_W); 00359 n = (int)fn; 00360 00361 if( (fn - n) > 0.3 ) 00362 m_PadNumber = n + 1; 00363 else 00364 m_PadNumber = n; 00365 } 00366 }
|
|
|
|
00215 { 00216 if ( m_Part == BRID ) // barrel 00217 m_Phi = B_PHI[m_Segment] * (PI/4.0); 00218 else // endcap , all phi is zer 00219 m_Phi = 0.; 00220 }
|
|
Reimplemented in MucBoxCal, MucGapCal, MucBoxCal, and MucGapCal. |
|
Reimplemented in MucBoxCal, MucGapCal, MucBoxCal, and MucGapCal. 00116 { m_Rc = 0.; }
|
|
Reimplemented in MucBoxCal, MucGapCal, MucBoxCal, and MucGapCal. |
|
Reimplemented in MucBoxCal, MucGapCal, MucBoxCal, and MucGapCal. 00114 { m_Rin = 0.; }
|
|
Reimplemented in MucBoxCal, MucGapCal, MucBoxCal, and MucGapCal. |
|
Reimplemented in MucBoxCal, MucGapCal, MucBoxCal, and MucGapCal. 00115 { m_Rout = 0.; }
|
|
|
|
00178 { 00179 int segFlag = 0; 00180 00181 if( (m_Layer+1)%2 == 1 ) // 1,3,5,7 00182 { 00183 if( m_Segment%3 ==0 ) segFlag = 1; 00184 else segFlag = -1; 00185 00186 if( m_ID+1 < TURN_POINT_NUM ) 00187 m_Tail = ODD_TURN_POINT_TAIL[(m_Layer==0)?0:1][0]; 00188 if( m_ID+1 == TURN_POINT_NUM ) 00189 m_Tail = ODD_TURN_POINT_TAIL[(m_Layer==0)?0:1][1]; 00190 if( m_ID+1 > TURN_POINT_NUM ) 00191 m_Tail = ODD_TURN_POINT_TAIL[(m_Layer==0)?0:1][1]-( m_ID + 1 - TURN_POINT_NUM )* E_STR_DST; 00192 if( m_ID == E_STR_NUM - 1 ) 00193 m_Tail = ODD_TURN_POINT_TAIL[(m_Layer==0)?0:1][1]-( m_ID -TURN_POINT_NUM )*E_STR_DST - ( E_STR_DST + m_W + STR_GAP )/2; 00194 } 00195 else // 2,4,6,8 00196 { 00197 if( m_Segment < 2 ) segFlag = 1; 00198 else segFlag = -1; 00199 00200 if( m_ID+1 < TURN_POINT_NUM ) 00201 m_Tail = EVEN_TURN_POINT_TAIL[0]; 00202 if( m_ID+1 == TURN_POINT_NUM ) 00203 m_Tail = EVEN_TURN_POINT_TAIL[1]; 00204 if( m_ID+1 > TURN_POINT_NUM ) 00205 m_Tail = EVEN_TURN_POINT_TAIL[1] - ( m_ID + 1 - TURN_POINT_NUM ) * E_STR_DST; 00206 if( m_ID == E_STR_NUM - 1 ) 00207 m_Tail = EVEN_TURN_POINT_TAIL[1]-(m_ID - TURN_POINT_NUM)*E_STR_DST - ( E_STR_DST + m_W + STR_GAP )/2; 00208 } 00209 00210 m_Tail *= segFlag; 00211 }
|
|
Reimplemented in MucBoxCal, MucGapCal, MucBoxCal, and MucGapCal. |
|
Reimplemented in MucBoxCal, MucGapCal, MucBoxCal, and MucGapCal. 00113 { m_Theta = 0.; }
|
|
Reimplemented from MucEntityCal. |
|
Reimplemented from MucEntityCal. 00224 { 00225 m_Thin = STR_TH; 00226 }
|
|
|
|
00103 { 00104 if( m_Part == BRID ) { 00105 if( (m_Layer+1)%2 == 1 ) m_Type = ZSTR; 00106 else m_Type = PHISTR; 00107 } 00108 else { 00109 if( (m_Layer+1)%2 == 1 ) m_Type = XSTR; 00110 else m_Type = YSTR; 00111 } 00112 }
|
|
Reimplemented from MucEntityCal. |
|
Reimplemented from MucEntityCal. 00230 { 00231 if( m_Part == BRID ) 00232 { 00233 // Set maximum strip 00234 int maxStrip; 00235 if( (m_Layer+1)%2 == 1 ) 00236 maxStrip = B_ZSTR_NUM; // odd layer 00237 else if( m_Segment != B_TOP ) 00238 maxStrip = B_PHISTR_NUM; // even layer not top segment 00239 else 00240 maxStrip = B_TOPSTR_NUM; // even layer top segment 00241 00242 00243 if( (m_Layer+1)%2 == 1 ) // odd layer, z 00244 { 00245 if( m_ID > 0 && m_ID < (maxStrip-1)) // not marginal strip 00246 m_W = B_STR_DST[m_Layer] - STR_GAP; 00247 else // marginal strip 00248 m_W = (B_BOX_WT[m_Layer] - 2*B_BOX_DT[SL_DOWN] - (maxStrip-2)*B_STR_DST[m_Layer] - STR_GAP)/2; 00249 } 00250 else // even layer, phi 00251 { 00252 if( m_ID >0 && m_ID < (maxStrip-1) ) // not marginal strip 00253 m_W = B_STR_DST[m_Layer] - STR_GAP; 00254 else // marginal strip 00255 m_W = B_BOX_LT/2 - B_BOX_DZ[SL_DOWN] - B_STR_DST[m_Layer]*(B_PHISTR_NUM-2)/2; 00256 00257 if( (maxStrip == B_TOPSTR_NUM) && (m_ID == (B_PHISTR_NUM - 1)) ) // special marginal strip 00258 m_W = B_BOX_LT/2 - B_BOX_DZ[SL_DOWN] - B_STR_DST[m_Layer]*(B_PHISTR_NUM-2)/2; 00259 } 00260 } 00261 else 00262 { 00263 // Strip0~62: 33; 00264 // Strip63: L0: 34; L2/4/6: 43; L1/3/5/7: 53 00265 if(m_ID != E_STR_NUM-1) m_W = E_STR_WT; // NO.1~62 00266 else // NO.63, end strip 00267 { 00268 if((m_Layer+1)%2!=0) // 0,2,4,6 00269 { 00270 if(m_Layer==0) m_W = 34; 00271 else m_W = 43; 00272 } 00273 else m_W = 53; // 1,3,5,7 00274 } 00275 } 00276 }
|
|
Reimplemented from MucEntityCal. |
|
Reimplemented from MucEntityCal. 00286 { 00287 m_Wd = m_W; 00288 }
|
|
Reimplemented from MucEntityCal. |
|
Reimplemented from MucEntityCal. 00280 { 00281 m_Wu = m_W; 00282 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|