BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
MucRpc Class Reference

#include <MucRpc.h>

Inheritance diagram for MucRpc:

Public Member Functions

 MucRpc (int part, int segment, int layer, int upDown, int id)
 MucRpc (const MucRpc &other)
MucRpcoperator= (const MucRpc &other)
virtual ~MucRpc ()
double GetPhi ()
MucGasGetGas ()
MucBakeliteGetBakelite (int id)
Public Member Functions inherited from MucEntity
 MucEntity (int part, int segment, int layer)
 MucEntity (int part, int segment, int layer, int id)
 MucEntity (int part, int segment, int layer, int upDown, int id)
 MucEntity (int part, int segment, int layer, int upDown, int rpcId, int id)
 MucEntity (const MucEntity &other)
MucEntityoperator= (const MucEntity &other)
virtual ~MucEntity ()
int GetPart ()
int GetSegment ()
int GetLayer ()
int GetUpDown ()
int GetRpcId ()
int GetID ()
double GetTheta ()
double GetRin ()
double GetRout ()
double GetRc ()
double GetThin ()
double GetW ()
double GetH ()
double GetL ()
double GetWu ()
double GetWd ()
double GetArea ()
double GetLocOrgInBes (int i)
double GetObjRotToMot (int i)
double GetObjOrgInBes (int i)
double GetObjOrgInLoc (int i)
double * GetLocOrgInBes ()
double * GetObjRotToMot ()
double * GetObjOrgInLoc ()
double * GetObjOrgInBes ()
void TransBesToLoc (double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z)
void TransLocToBes (double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z)

Protected Member Functions

virtual void Init ()
void SetPhi ()
virtual void SetTheta ()
virtual void SetRc ()
virtual void SetRin ()
virtual void SetRout ()
virtual void SetThin ()
virtual void SetW ()
virtual void SetH ()
virtual void SetL ()
virtual void SetWu ()
virtual void SetWd ()
int SetEndcapRpcInBes ()
int SetBarrelRpcInLoc ()
virtual void SetLocOrgInBes ()
virtual void SetObjOrgInBes ()
virtual void SetObjOrgInLoc ()
Protected Member Functions inherited from MucEntity
virtual void SetArea ()
virtual void SetObjRotToMot ()
virtual void SetAlignment (double dx, double dy, double dz)

Additional Inherited Members

Protected Attributes inherited from MucEntity
int m_Part
int m_Segment
int m_Layer
int m_UpDown
int m_RpcId
int m_ID
double m_Theta
double m_Rin
double m_Rout
double m_Rc
double m_Thin
double m_W
double m_H
double m_L
double m_Wu
double m_Wd
double m_Area
double m_LocOrgInBes [3]
double m_ObjRotToMot [3]
double m_ObjOrgInBes [3]
double m_ObjOrgInLoc [3]

Detailed Description

Definition at line 20 of file MucRpc.h.

Constructor & Destructor Documentation

◆ MucRpc() [1/2]

MucRpc::MucRpc ( int part,
int segment,
int layer,
int upDown,
int id )

Definition at line 17 of file MucRpc.cxx.

18 : MucEntity( part, segment, layer, upDown, id ) {
20 m_MucGas = NULL;
21 m_MucBakelite = NULL;
22}
MucEntity(int part, int segment, int layer)
Definition MucEntity.cxx:17
virtual void Init()
Definition MucRpc.cxx:49

Referenced by MucRpc(), and operator=().

◆ MucRpc() [2/2]

MucRpc::MucRpc ( const MucRpc & other)

Definition at line 25 of file MucRpc.cxx.

25 : MucEntity( other ) {
26 m_Phi = other.m_Phi;
27 m_MucGas = other.m_MucGas;
28 m_MucBakelite = other.m_MucBakelite;
29}
Index other(Index i, Index j)

◆ ~MucRpc()

MucRpc::~MucRpc ( )
virtual

Definition at line 43 of file MucRpc.cxx.

43 {
44 delete m_MucGas;
45 delete m_MucBakelite;
46}

Member Function Documentation

◆ GetBakelite()

MucBakelite * MucRpc::GetBakelite ( int id)

Definition at line 79 of file MucRpc.cxx.

79 {
80 if ( m_MucBakelite != NULL ) delete m_MucBakelite;
81 return ( m_MucBakelite =
82 new MucBakelite( m_Part, m_Segment, m_Layer, m_UpDown, m_RpcId, id ) );
83}
int m_RpcId
Definition MucEntity.h:91
int m_Layer
Definition MucEntity.h:89
int m_Segment
Definition MucEntity.h:88
int m_Part
Definition MucEntity.h:87
int m_UpDown
Definition MucEntity.h:90

◆ GetGas()

MucGas * MucRpc::GetGas ( )

Definition at line 74 of file MucRpc.cxx.

74 {
75 if ( m_MucGas != NULL ) delete m_MucGas;
76 return ( m_MucGas = new MucGas( m_Part, m_Segment, m_Layer, m_UpDown, m_ID, 0 ) );
77}

◆ GetPhi()

double MucRpc::GetPhi ( )

Definition at line 72 of file MucRpc.cxx.

72{ return m_Phi; }

◆ Init()

void MucRpc::Init ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 49 of file MucRpc.cxx.

49 {
50 SetPhi();
51 SetTheta();
52 SetRin();
53 SetRout();
54 SetRc();
55
56 SetThin();
57 SetW();
58 SetWu();
59 SetWd();
60 SetH();
61 SetL();
62
65
69}
virtual void SetWu()
Definition MucRpc.cxx:231
virtual void SetRout()
Definition MucRpc.cxx:114
virtual void SetThin()
Definition MucRpc.cxx:125
virtual void SetLocOrgInBes()
Definition MucRpc.cxx:508
virtual void SetW()
Definition MucRpc.cxx:127
void SetPhi()
Definition MucRpc.cxx:86
int SetBarrelRpcInLoc()
Definition MucRpc.cxx:392
int SetEndcapRpcInBes()
Definition MucRpc.cxx:302
virtual void SetTheta()
Definition MucRpc.cxx:91
virtual void SetRin()
Definition MucRpc.cxx:107
virtual void SetObjOrgInBes()
Definition MucRpc.cxx:552
virtual void SetRc()
Definition MucRpc.cxx:123
virtual void SetWd()
Definition MucRpc.cxx:263
virtual void SetObjOrgInLoc()
Definition MucRpc.cxx:562
virtual void SetH()
Definition MucRpc.cxx:183
virtual void SetL()
Definition MucRpc.cxx:188

Referenced by MucRpc().

◆ operator=()

MucRpc & MucRpc::operator= ( const MucRpc & other)

Definition at line 32 of file MucRpc.cxx.

32 {
33 if ( this == &other ) return *this;
34 MucEntity::operator=( other );
35 m_Phi = other.m_Phi;
36 m_MucGas = other.m_MucGas;
37 m_MucBakelite = other.m_MucBakelite;
38
39 return *this;
40}
MucEntity & operator=(const MucEntity &other)
Definition MucEntity.cxx:87

◆ SetBarrelRpcInLoc()

int MucRpc::SetBarrelRpcInLoc ( )
protected

Definition at line 392 of file MucRpc.cxx.

392 {
393 if ( m_Part != BRID ) return 0;
394 else
395 {
396 double x, y, z;
397 x = y = z = 0.;
398
399 if ( m_Segment != B_TOP ) // not top segment
400 {
401 //---------- set x--------
402 x = 0.;
403
404 //---------- set y--------
405 y = ( 1 - 2 * m_UpDown ) * ( RPC_TH + STR_TH ) / 2.0;
406
407 //---------- set z--------
408 if ( ( m_UpDown == SL_UP && m_ID == 3 ) || ( m_UpDown == SL_DOWN && m_ID == 0 ) )
409 {
410 if ( m_Layer != 1 ) // not layer NO.2
411 z = ( 2 * m_UpDown - 1 ) * 3 * B_RPC_LTN / 2.0;
412 else z = ( 2 * m_UpDown - 1 ) * 3 * B_RPC_LTS / 2.0;
413 }
414 else
415 {
416 if ( m_Layer != 1 ) // not layer NO.2
417 {
418 if ( m_UpDown == SL_UP )
419 z = B_BOX_LT / 2.0 - B_BOX_DZ[m_UpDown] - ( 1 + 2 * m_ID ) * B_RPC_LTN / 2.0;
420 else
421 z = -B_BOX_LT / 2.0 + B_BOX_DZ[m_UpDown] +
422 ( 1 + 2 * ( 3 - m_ID ) ) * B_RPC_LTN / 2.0;
423 }
424 else
425 {
426 if ( m_UpDown == SL_UP )
427 z = B_BOX_LT / 2.0 - B_BOX_DZ[m_UpDown] - ( 1 + 2 * m_ID ) * B_RPC_LTS / 2.0;
428 else
429 z = -B_BOX_LT / 2.0 + B_BOX_DZ[m_UpDown] +
430 ( 1 + 2 * ( 3 - m_ID ) ) * B_RPC_LTS / 2.0;
431 }
432 }
433 }
434 else // top segment
435 {
436 //---------- set x--------
437 if ( m_ID > 1 ) x = 0.;
438 else
439 x = ( 1 - 2 * m_ID ) * ( ( B_BOX_WT[m_Layer] + B_BOX_SLOT_WT ) / 4.0 +
440 ( B_BOX_DZ[m_UpDown] - B_BOX_DT[m_UpDown] ) / 2.0 );
441
442 //---------- set y--------
443 y = ( 1 - 2 * m_UpDown ) * ( RPC_TH + STR_TH ) / 2.0;
444
445 //---------- set z--------
446 if ( m_UpDown == SL_UP )
447 {
448 switch ( m_ID )
449 {
450 case 0:
451 case 1:
452 if ( m_Layer == 0 ) z = B_BOX_LT / 2.0 - B_BOX_DZ[m_UpDown] - B_TOPRPC_LTS[1] / 2.0;
453 else z = B_BOX_LT / 2.0 - B_BOX_DZ[m_UpDown] - B_TOPRPC_LTS[m_Layer % 2] / 2.0;
454 break;
455 case 2:
456 case 3:
457 if ( m_Layer == 0 )
458 z = B_BOX_LT / 2.0 - B_BOX_DZ[m_UpDown] - B_TOPRPC_LTS[1] +
459 ( 3 - 2 * m_ID ) * B_RPC_LTN / 2.0;
460 else
461 z = B_BOX_LT / 2.0 - B_BOX_DZ[m_UpDown] - B_TOPRPC_LTS[m_Layer % 2] +
462 ( 3 - 2 * m_ID ) * B_RPC_LTN / 2.0;
463 break;
464 case 4:
465 if ( m_Layer == 0 ) z = -B_RPC_LTN - B_TOPRPC_LTS[1] / 2.0;
466 else z = -B_RPC_LTN - B_TOPRPC_LTS[m_Layer % 2] / 2.0;
467 break;
468 default:;
469 }
470 }
471 else // down super layer
472 {
473 switch ( m_ID )
474 {
475 case 0:;
476 case 1:
477 if ( m_Layer == 0 ) z = B_BOX_LT / 2.0 - B_BOX_DZ[m_UpDown] - B_TOPRPC_LTS[1] / 2.0;
478 else z = B_BOX_LT / 2.0 - B_BOX_DZ[m_UpDown] - B_TOPRPC_LTS[m_Layer % 2] / 2.0;
479 break;
480 case 2:
481 if ( m_Layer == 0 ) z = B_RPC_LTN - B_TOPRPC_LTS[1] / 2.0;
482 else z = B_RPC_LTN - B_TOPRPC_LTS[m_Layer % 2] / 2.0;
483 break;
484 case 3:
485 case 4:
486 z = -B_BOX_LT / 2.0 + B_BOX_DZ[m_UpDown] +
487 ( 1 + 2 * ( 4 - m_ID ) ) * B_RPC_LTN / 2.0;
488 break;
489 default:;
490 }
491 } // else, down super layer
492 } // else, top segment
493
494 m_ObjOrgInLoc[0] = x;
495 m_ObjOrgInLoc[1] = y;
496 m_ObjOrgInLoc[2] = z;
497
498 // limit cut
499 for ( int i = 0; i < 3; i++ )
500 if ( fabs( m_ObjOrgInLoc[i] ) < ERR_LIMIT ) m_ObjOrgInLoc[i] = 0.;
501
502 } // else, barrel
503
504 return 0;
505}
Double_t x[10]
double m_ObjOrgInLoc[3]
Definition MucEntity.h:118

Referenced by Init().

◆ SetEndcapRpcInBes()

int MucRpc::SetEndcapRpcInBes ( )
protected

Definition at line 302 of file MucRpc.cxx.

302 {
303 if ( m_Part == BRID ) return 0;
304 else
305 {
306 double x, y, z;
307 x = y = z = 0.;
308
309 // -----------------set x and y -----------------
310 if ( m_UpDown == SL_UP ) // up super layer
311 {
312 if ( m_ID == 0 )
313 {
314 x = ( VALUE * m_Rc + E_GP_DX + E_STRPLN_DA + RPC_SL_OFFSET ) / 2.0;
315 y = m_Rc;
316 }
317 else if ( m_ID == 1 )
318 {
319 x = m_Rc * cos( m_Theta );
320 y = m_Rc * sin( m_Theta );
321 }
322 else
323 {
324 x = m_Rc;
325 y = ( VALUE * m_Rc + E_GP_DY + E_STRPLN_DA + RPC_SL_OFFSET ) / 2.0;
326 }
327 }
328 else // down super layer
329 {
330 if ( m_ID == 0 )
331 {
332 x = ( VALUE * m_Rc + E_GP_DX + E_STRPLN_DA ) / 2.0 + OVERLAP_WIDTH / 2.0;
333 y = m_Rc;
334 }
335 else if ( m_ID == 1 )
336 {
337 x = VALUE * m_Rc + sin( MUC_PI / 4.0 ) * m_Wd / 4.0;
338 // x += OVERLAP_WIDTH * ( 3 - 2*sqrt(2.0) )/4.0;
339 y = m_Rc - cos( MUC_PI / 4.0 ) * m_Wd / 4.0;
340 // y += OVERLAP_WIDTH * ( 1 + 4.0/sqrt(2.0) )/4.0;
341 }
342 else if ( m_ID == 2 )
343 {
344 x = m_Rc * cos( MUC_PI / 4.0 );
345 y = m_Rc * sin( MUC_PI / 4.0 );
346 }
347 else if ( m_ID == 3 )
348 {
349 x = m_Rc - cos( MUC_PI / 4.0 ) * m_Wd / 4.0;
350 // x += OVERLAP_WIDTH * ( 1 + 4.0/sqrt(2.0) )/4.0;
351 y = VALUE * m_Rc + sin( MUC_PI / 4.0 ) * m_Wd / 4.0;
352 // y += OVERLAP_WIDTH * ( 3 - 2*sqrt(2.0) )/4.0;
353 }
354 else
355 {
356 x = m_Rc;
357 y = ( VALUE * m_Rc + E_GP_DY + E_STRPLN_DA ) / 2.0 + OVERLAP_WIDTH / 2.0;
358 }
359 } // End down super layer
360
361 // x, y signs of coordinate different by segment
362 if ( m_Segment == 0 ) { ; }
363 else if ( m_Segment == 1 ) { x = -x; }
364 else if ( m_Segment == 2 )
365 {
366 x = -x;
367 y = -y;
368 }
369 else { y = -y; }
370
371 //-------------- set z -----------------------------
372 for ( int i = 0; i < m_Layer + 1; i++ ) z += E_AS_TH[i];
373
374 z += m_Layer * AS_GAP;
375 z += ( ( E_AS_ZMAX - E_AS_TOTAL_TH ) + AS_GAP / 2.0 );
376 z += ( 1 - 2 * m_UpDown ) * ( RPC_TH + STR_TH ) / 2.0;
377 z *= cos( m_Part * MUC_PI / 2.0 );
378
379 m_ObjOrgInBes[0] = x;
380 m_ObjOrgInBes[1] = y;
381 m_ObjOrgInBes[2] = z;
382
383 // limit cut
384 for ( int i = 0; i < 3; i++ )
385 if ( fabs( m_ObjOrgInBes[i] ) < ERR_LIMIT ) m_ObjOrgInBes[i] = 0.;
386
387 } // else, endcap
388
389 return 0;
390}
double m_Wd
Definition MucEntity.h:105
double m_Theta
Definition MucEntity.h:94
double m_Rc
Definition MucEntity.h:99
double m_ObjOrgInBes[3]
Definition MucEntity.h:117

Referenced by Init().

◆ SetH()

void MucRpc::SetH ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 183 of file MucRpc.cxx.

183 {
184 if ( m_Part == BRID ) m_H = RPC_TH;
185 else m_H = m_Rout - m_Rin;
186}
double m_Rin
Definition MucEntity.h:97
double m_H
Definition MucEntity.h:102
double m_Rout
Definition MucEntity.h:98

Referenced by Init().

◆ SetL()

void MucRpc::SetL ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 188 of file MucRpc.cxx.

188 {
189 if ( m_Part == BRID ) // barrel
190 {
191 if ( m_Segment != B_TOP ) // not top segment
192 {
193 if ( ( m_UpDown == SL_UP && m_ID == 3 ) || ( m_UpDown == SL_DOWN && m_ID == 0 ) )
194 {
195 if ( m_Layer != 1 ) // not layer NO. 2
196 m_L = B_BOX_LT - 2 * B_BOX_DZ[m_UpDown] - 3 * B_RPC_LTN;
197 else m_L = B_BOX_LT - 2 * B_BOX_DZ[m_UpDown] - 3 * B_RPC_LTS;
198 }
199 else
200 {
201 if ( m_Layer != 1 ) // not layer NO. 2
202 m_L = B_RPC_LTN;
203 else m_L = B_RPC_LTS;
204 }
205 }
206 else // top segment
207 {
208 if ( m_ID < 2 ) // first two RPCs
209 {
210 if ( m_Layer == 0 ) // the first layer
211 m_L = B_TOPRPC_LTS[1];
212 else m_L = B_TOPRPC_LTS[m_Layer % 2];
213 }
214 else if ( ( m_UpDown == SL_UP && m_ID == 4 ) || ( m_UpDown == SL_DOWN && m_ID == 2 ) )
215 {
216 if ( m_Layer == 0 ) // the first layer
217 m_L = B_BOX_LT - B_TOPRPC_LTS[1] - 2 * ( B_BOX_DZ[m_UpDown] + B_TOPRPC_LTN );
218 else
219 m_L =
220 B_BOX_LT - B_TOPRPC_LTS[m_Layer % 2] - 2 * ( B_BOX_DZ[m_UpDown] + B_TOPRPC_LTN );
221 }
222 else m_L = B_TOPRPC_LTN;
223 } // end top segment
224
225 m_L -= OVERLAP_WIDTH * 2.0; // cut rpc chamber death edge
226
227 } // end barrel
228 else m_L = RPC_TH;
229}
double m_L
Definition MucEntity.h:103

Referenced by Init().

◆ SetLocOrgInBes()

void MucRpc::SetLocOrgInBes ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 508 of file MucRpc.cxx.

508 {
509 double x, y, z;
510 x = y = z = 0.;
511
512 if ( m_Part == BRID )
513 {
514 x = ( B_AS_RMIN[m_Layer] - AS_GAP / 2.0 ) * cos( m_Theta );
515 y = ( B_AS_RMIN[m_Layer] - AS_GAP / 2.0 ) * sin( m_Theta );
516 z = 0.;
517 } // barrel
518 else
519 {
520 //-------------- set x and y ----------------------
521 // segment 0 as reference
522 x = ( E_AS_RMAX - E_BOX_DR + E_GP_DX ) / 2.0;
523 y = ( E_AS_RMAX - E_BOX_DR + E_GP_DY ) / 2.0;
524
525 // x, y signs of coordinate different by segment
526 if ( m_Segment == 0 ) { ; }
527 else if ( m_Segment == 1 ) { x = -x; }
528 else if ( m_Segment == 2 )
529 {
530 x = -x;
531 y = -y;
532 }
533 else { y = -y; }
534
535 //-------------- set z -----------------------------
536 for ( int i = 0; i < m_Layer + 1; i++ ) z += E_AS_TH[i];
537
538 z += m_Layer * AS_GAP;
539 z += ( ( E_AS_ZMAX - E_AS_TOTAL_TH ) + AS_GAP / 2.0 );
540 z *= cos( m_Part * MUC_PI / 2.0 );
541 } // endcap
542
543 m_LocOrgInBes[0] = x;
544 m_LocOrgInBes[1] = y;
545 m_LocOrgInBes[2] = z;
546
547 // limit cut
548 for ( int i = 0; i < 3; i++ )
549 if ( fabs( m_LocOrgInBes[i] ) < ERR_LIMIT ) m_LocOrgInBes[i] = 0.;
550}
double m_LocOrgInBes[3]
Definition MucEntity.h:108

Referenced by Init().

◆ SetObjOrgInBes()

void MucRpc::SetObjOrgInBes ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 552 of file MucRpc.cxx.

552 {
553 if ( m_Part == BRID )
554 {
556 // limit cut
557 for ( int i = 0; i < 3; i++ )
558 if ( fabs( m_ObjOrgInBes[i] ) < ERR_LIMIT ) m_ObjOrgInBes[i] = 0.;
559 }
560}
void TransLocToBes(double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z)

Referenced by Init().

◆ SetObjOrgInLoc()

void MucRpc::SetObjOrgInLoc ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 562 of file MucRpc.cxx.

562 {
563 if ( m_Part != BRID )
564 {
566 // limit cut
567 for ( int i = 0; i < 3; i++ )
568 if ( fabs( m_ObjOrgInLoc[i] ) < ERR_LIMIT ) m_ObjOrgInLoc[i] = 0.;
569 }
570}
void TransBesToLoc(double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z)

Referenced by Init().

◆ SetPhi()

void MucRpc::SetPhi ( )
protected

Definition at line 86 of file MucRpc.cxx.

86 {
87 if ( m_Part == BRID ) m_Phi = B_PHI[m_Segment] * ( MUC_PI / 4.0 );
88 else m_Phi = 0.;
89}

Referenced by Init().

◆ SetRc()

void MucRpc::SetRc ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 123 of file MucRpc.cxx.

123{ m_Rc = ( m_Rin + m_Rout ) / 2.0; }

Referenced by Init().

◆ SetRin()

void MucRpc::SetRin ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 107 of file MucRpc.cxx.

107 {
108 if ( m_Part == BRID )
109 m_Rin = B_AS_RMIN[m_Layer] - AS_GAP / 2.0 +
110 ( 1 - 2 * m_UpDown ) * ( STR_TH / 2.0 + m_UpDown * RPC_TH );
111 else m_Rin = E_GP_RMIN[m_Layer] + E_STRPLN_DR + ( 1 - m_UpDown ) * RPC_SL_OFFSET;
112}

Referenced by Init().

◆ SetRout()

void MucRpc::SetRout ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 114 of file MucRpc.cxx.

114 {
115 if ( m_Part == BRID )
116 m_Rout = B_AS_RMIN[m_Layer] - AS_GAP / 2.0 +
117 ( 1 - 2 * m_UpDown ) * ( STR_TH / 2.0 + ( 1 - m_UpDown ) * RPC_TH );
118 else
119 m_Rout = E_AS_RMAX - E_BOX_DR - E_STRPLN_DB[( m_Layer == 0 ) ? 0 : 1] +
120 ( m_UpDown - 1 ) * RPC_SL_OFFSET;
121}

Referenced by Init().

◆ SetTheta()

void MucRpc::SetTheta ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 91 of file MucRpc.cxx.

91 {
92 if ( m_Part == BRID ) m_Theta = m_Segment * ( MUC_PI / 4.0 );
93 else
94 {
95 if ( m_UpDown == SL_UP ) m_Theta = ( MUC_PI / 4.0 ) + ( 1 - m_ID ) * MUC_PI / 8.0;
96 else
97 {
98 if ( m_ID < 2 ) // RPC NO.1 and NO.2
99 m_Theta = ( MUC_PI / 4.0 ) + MUC_PI / 8.0;
100 else if ( m_ID == 2 ) // center RPC, NO.3
101 m_Theta = ( MUC_PI / 4.0 );
102 else m_Theta = ( MUC_PI / 4.0 ) - MUC_PI / 8.0;
103 }
104 }
105}

Referenced by Init().

◆ SetThin()

void MucRpc::SetThin ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 125 of file MucRpc.cxx.

125{ m_Thin = RPC_TH; }
double m_Thin
Definition MucEntity.h:100

Referenced by Init().

◆ SetW()

void MucRpc::SetW ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 127 of file MucRpc.cxx.

127 {
128 if ( m_Part == BRID )
129 {
130 if ( m_Segment == B_TOP && m_ID < 2 ) // the first 2 RPCs in top segment
131 {
132 if ( ( m_Layer + 1 ) % 2 == 1 ) // odd layer
133 m_W = ( B_BOX_WT[m_Layer] - 2 * B_BOX_DT[m_UpDown] - 2 * B_BOX_DZ[m_UpDown] -
134 B_BOX_SLOT_WT ) /
135 2.0;
136 else // even layer
137 m_W = ( B_BOX_WT[m_Layer] - 4 * B_BOX_DZ[m_UpDown] - B_BOX_SLOT_WT ) / 2.0;
138 }
139 else // other RPCs
140 {
141 if ( ( m_Layer + 1 ) % 2 == 1 ) // odd layer
142 m_W = B_BOX_WT[m_Layer] - 2 * B_BOX_DT[m_UpDown];
143 else // even layer
144 m_W = B_BOX_WT[m_Layer] - 2 * B_BOX_DZ[m_UpDown];
145 }
146 } // end barrel
147 else
148 {
149 if ( m_UpDown == SL_UP ) // up super layer RPCs
150 {
151 if ( m_ID == 0 ) m_W = VALUE * m_Rc - E_GP_DX - E_STRPLN_DA - RPC_SL_OFFSET;
152 else if ( m_ID == 1 ) m_W = VALUE * m_Rc * 2.0;
153 else m_W = VALUE * m_Rc - E_GP_DY - E_STRPLN_DA - RPC_SL_OFFSET;
154 }
155 else // down super layer RPCs
156 {
157 if ( m_ID == 0 ) m_W = VALUE * m_Rc - E_GP_DX - E_STRPLN_DA;
158 else if ( m_ID == 1 || m_ID == 3 ) m_W = VALUE * ( m_Rc - m_Rin );
159 else if ( m_ID == 2 ) m_W = VALUE * m_Rin * 2.0;
160 else m_W = VALUE * m_Rc - E_GP_DY - E_STRPLN_DA;
161 }
162 } // else, endcap
163
164 // cut rpc chamber death edge
165 if ( m_Part == BRID ) m_W -= OVERLAP_WIDTH * 2.0;
166 else
167 {
168 if ( m_UpDown == SL_UP )
169 {
170 if ( m_ID == 1 ) m_W -= OVERLAP_WIDTH * 2.0; // center rpc
171 else m_W -= ( 1 + 1.0 / cos( MUC_PI / 8.0 ) ) * OVERLAP_WIDTH;
172 }
173 else
174 {
175 if ( m_ID == 2 ) // center rpc
176 m_W -= OVERLAP_WIDTH * 2.0;
177 else // DOWN 0,1,3,4 RPC
178 m_W -= OVERLAP_WIDTH;
179 }
180 }
181}
double m_W
Definition MucEntity.h:101

Referenced by Init().

◆ SetWd()

void MucRpc::SetWd ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 263 of file MucRpc.cxx.

263 {
264 if ( m_Part == BRID ) m_Wd = m_W;
265 else
266 {
267 if ( m_UpDown == SL_UP )
268 {
269 if ( m_ID == 0 ) m_Wd = VALUE * m_Rout - E_GP_DX - E_STRPLN_DA - RPC_SL_OFFSET;
270 else if ( m_ID == 1 ) m_Wd = VALUE * m_Rout * 2.0;
271 else m_Wd = VALUE * m_Rout - E_GP_DY - E_STRPLN_DA - RPC_SL_OFFSET;
272 }
273 else
274 {
275 switch ( m_ID )
276 {
277 case 0: m_Wd = VALUE * m_Rout - E_GP_DX - E_STRPLN_DA; break;
278 case 1:
279 case 3: m_Wd = VALUE * ( m_Rout - m_Rin ); break;
280 case 2: m_Wd = 2 * VALUE * m_Rin; break;
281 case 4: m_Wd = VALUE * m_Rout - E_GP_DY - E_STRPLN_DA; break;
282 default:;
283 }
284 }
285
286 // cut rpc chamber death edge
287 if ( m_UpDown == SL_UP )
288 {
289 if ( m_ID == 1 )
290 m_Wd -= 2.0 * OVERLAP_WIDTH * ( sin( BETA ) + 1 ) / cos( BETA ); // center rpc
291 else m_Wd -= ( 1 + 1.0 / cos( BETA ) ) * OVERLAP_WIDTH;
292 }
293 else
294 {
295 if ( m_ID == 0 || m_ID == 4 )
296 // m_Wd -= 2.0*OVERLAP_WIDTH*(sin(BETA)-1)/cos(BETA);
297 m_Wd -= 1.5 * OVERLAP_WIDTH;
298 }
299 }
300}

Referenced by Init().

◆ SetWu()

void MucRpc::SetWu ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 231 of file MucRpc.cxx.

231 {
232 if ( m_Part == BRID ) m_Wu = m_W;
233 else
234 {
235 if ( m_UpDown == SL_UP )
236 {
237 if ( m_ID == 0 ) m_Wu = VALUE * m_Rin - E_GP_DX - E_STRPLN_DA - RPC_SL_OFFSET;
238 else if ( m_ID == 1 ) m_Wu = VALUE * m_Rin * 2.0;
239 else m_Wu = VALUE * m_Rin - E_GP_DY - E_STRPLN_DA - RPC_SL_OFFSET;
240 }
241 else
242 {
243 if ( m_ID == 0 ) m_Wu = VALUE * m_Rin - E_GP_DX - E_STRPLN_DA;
244 else if ( m_ID == 1 || m_ID == 3 ) m_Wu = 0.;
245 else if ( m_ID == 2 ) m_Wu = VALUE * m_Rin * 2.0;
246 else m_Wu = VALUE * m_Rin - E_GP_DY - E_STRPLN_DA;
247 }
248
249 // cut rpc chamber death edge
250 if ( m_Wu > 0.0 ) // except for DOWN 1, 3 RPC
251 {
252 if ( m_UpDown == SL_UP )
253 {
254 if ( m_ID == 1 )
255 m_Wu += 2.0 * OVERLAP_WIDTH * ( sin( BETA ) - 1 ) / cos( BETA ); // center rpc
256 else m_Wu -= ( 1 + 1.0 / cos( BETA ) ) * OVERLAP_WIDTH;
257 }
258 else m_Wu -= 1.5 * OVERLAP_WIDTH;
259 }
260 }
261}
double m_Wu
Definition MucEntity.h:104

Referenced by Init().


The documentation for this class was generated from the following files: