BOSS 7.1.1
BESIII Offline Software System
Loading...
Searching...
No Matches
MucBakelite Class Reference

#include <MucBakelite.h>

+ Inheritance diagram for MucBakelite:

Public Member Functions

 MucBakelite (int part, int segment, int layer, int upDown, int rpcId, int id)
 
 MucBakelite (const MucBakelite &other)
 
MucBakeliteoperator= (const MucBakelite &other)
 
 ~MucBakelite ()
 
double GetPhi ()
 
- 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 ()
 
virtual void SetTheta ()
 
virtual void SetPhi ()
 
virtual void SetRin ()
 
virtual void SetRout ()
 
virtual void SetRc ()
 
virtual void SetThin ()
 
virtual void SetW ()
 
virtual void SetH ()
 
virtual void SetL ()
 
virtual void SetWu ()
 
virtual void SetWd ()
 
int SetEndcapRpcInBes ()
 
int SetBarrelRpcInBes ()
 
virtual void SetLocOrgInBes ()
 
virtual void SetObjOrgInLoc ()
 
virtual void SetObjOrgInBes ()
 
- 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 18 of file MucBakelite.h.

Constructor & Destructor Documentation

◆ MucBakelite() [1/2]

MucBakelite::MucBakelite ( int part,
int segment,
int layer,
int upDown,
int rpcId,
int id )

Definition at line 17 of file MucBakelite.cxx.

18 : MucEntity( part, segment, layer, upDown, rpcId, id )
19{
21}
virtual void Init()
MucEntity(int part, int segment, int layer)
Definition MucEntity.cxx:17

◆ MucBakelite() [2/2]

MucBakelite::MucBakelite ( const MucBakelite & other)

Definition at line 24 of file MucBakelite.cxx.

24 : MucEntity( other )
25{
26 m_Phi = other.m_Phi;
27}
Index other(Index i, Index j)

◆ ~MucBakelite()

MucBakelite::~MucBakelite ( )

Definition at line 40 of file MucBakelite.cxx.

40{ ; }

Member Function Documentation

◆ GetPhi()

double MucBakelite::GetPhi ( )

Definition at line 68 of file MucBakelite.cxx.

68{ return m_Phi; }

◆ Init()

void MucBakelite::Init ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 43 of file MucBakelite.cxx.

44{
45 SetPhi();
46 SetTheta();
47 SetRin();
48 SetRout();
49 SetRc();
50
51 SetThin();
52 SetW();
53 SetWu();
54 SetWd();
55 SetH();
56 SetL();
57
60
64}
virtual void SetTheta()
virtual void SetThin()
virtual void SetRin()
virtual void SetL()
virtual void SetRout()
int SetEndcapRpcInBes()
virtual void SetWd()
virtual void SetRc()
virtual void SetObjOrgInBes()
virtual void SetW()
virtual void SetObjOrgInLoc()
virtual void SetPhi()
int SetBarrelRpcInBes()
virtual void SetWu()
virtual void SetLocOrgInBes()
virtual void SetH()

Referenced by MucBakelite().

◆ operator=()

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

Definition at line 30 of file MucBakelite.cxx.

31{
32 if( this == &other) return *this;
34 m_Phi = other.m_Phi;
35
36 return *this;
37}
MucEntity & operator=(const MucEntity &other)
Definition MucEntity.cxx:92

◆ SetBarrelRpcInBes()

int MucBakelite::SetBarrelRpcInBes ( )
protected

Definition at line 361 of file MucBakelite.cxx.

362{
363 if( m_Part != BRID ) return 0;
364
365 double x, y, z;
366 x = y = z = 0.0;
367
368 if( m_Segment != B_TOP )
369 {
370 // set x and y
371 double r;
372 r = (B_AS_RMIN[m_Layer] - AS_GAP / 2.0) + (1-2*m_UpDown)*(STR_TH + RPC_TH)/2.0;
373 x = r * cos( m_Theta );
374 y = r * sin( m_Theta );
375
376 // set z
377 if( (m_UpDown == SL_UP && m_RpcId == 3) || (m_UpDown == SL_DOWN && m_RpcId == 0) )
378 {
379 if( m_Layer != 1 ) // not layer NO.2
380 z = (2*m_UpDown - 1) * 3 * B_RPC_LTN/2.0;
381 else
382 z = (2*m_UpDown - 1) * 3 * B_RPC_LTS/2.0;
383 }
384 else if( m_UpDown == SL_UP )
385 z = B_BOX_LT/2.0 - B_BOX_DZ[m_UpDown] - (1+2*m_RpcId)*B_RPC_LTN/2.0;
386 else
387 z = -B_BOX_LT/2.0 + B_BOX_DZ[m_UpDown] + (1+2*(3-m_RpcId))*B_RPC_LTN/2.0;
388 } // end not top segment
389 else
390 {
391 //---------- set x--------
392 if( m_RpcId > 1 ) // NO.3, 4, 5
393 x = 0.;
394 else // NO.1 and NO.2
395 x = (1-2*m_RpcId) * ( (B_BOX_WT[m_Layer] + B_BOX_SLOT_WT)/4.0 + (B_BOX_DZ[m_UpDown] - B_BOX_DT[m_UpDown])/2.0 );
396
397 //---------- set y--------
398 y = (B_AS_RMIN[m_Layer] - AS_GAP / 2.0) + (1-2*m_UpDown)*(STR_TH + RPC_TH)/2.0;
399
400 //---------- set z--------
401 if( m_RpcId < 2 ) // rpc NO.1 and NO.2
402 z = B_BOX_LT/2.0 - B_BOX_DZ[m_UpDown] - B_TOPRPC_LTS[ ((m_Layer==0)?1:(m_Layer%2)) ];
403 else if( m_UpDown == SL_UP && m_RpcId == 4 )
404 z = -B_RPC_LTN - B_TOPRPC_LTS[ ((m_Layer==0)?1:(m_Layer%2)) ];
405 else if( m_UpDown == SL_DOWN && m_RpcId == 2 )
406 z = B_RPC_LTN - B_TOPRPC_LTS[ ((m_Layer==0)?1:(m_Layer%2)) ];
407 else if( m_UpDown == SL_UP )
408 z = B_BOX_LT/2.0 - B_BOX_DZ[m_UpDown] - B_TOPRPC_LTS[ ((m_Layer==0)?1:(m_Layer%2)) ] + (3-2*m_RpcId)*B_RPC_LTN/2.0;
409 else
410 z = -B_BOX_LT/2.0 - B_BOX_DZ[m_UpDown] + (1+2*(4-m_RpcId))*B_RPC_LTN/2.0;
411 } // end top segment
412
413 m_LocOrgInBes[0] = x;
414 m_LocOrgInBes[1] = y;
415 m_LocOrgInBes[2] = z;
416
417 // limit cut
418 for( int i=0; i<2; i++ ) {
419 if( fabs(m_LocOrgInBes[i]) < ERR_LIMIT ) m_LocOrgInBes[i] = 0.0;
420 }
421
422 return 0;
423}
double sin(const BesAngle a)
Definition BesAngle.h:210
double cos(const BesAngle a)
Definition BesAngle.h:213
Double_t x[10]
int m_RpcId
Definition MucEntity.h:91
int m_Layer
Definition MucEntity.h:89
int m_Segment
Definition MucEntity.h:88
double m_Theta
Definition MucEntity.h:94
int m_Part
Definition MucEntity.h:87
double m_LocOrgInBes[3]
Definition MucEntity.h:108
int m_UpDown
Definition MucEntity.h:90
double y[1000]

Referenced by Init(), and SetLocOrgInBes().

◆ SetEndcapRpcInBes()

int MucBakelite::SetEndcapRpcInBes ( )
protected

Definition at line 425 of file MucBakelite.cxx.

426{
427 if( m_Part == BRID ) return 0;
428
429 double x, y, z;
430 x = y = z = 0.;
431
432 //------------ set x and y ---------------
433 if( m_UpDown == SL_UP )
434 {
435 if( m_RpcId == 0 ) {
436 x = ( VALUE*m_Rc + E_GP_DX + E_STRPLN_DA + RPC_SL_OFFSET ) / 2.0;
437 y = m_Rc;
438 }
439 else if( m_RpcId == 1 ) {
440 x = m_Rc * cos( MUC_PI/4.0 );
441 y = m_Rc * sin( MUC_PI/4.0 );
442 }
443 else {
444 x = m_Rc;
445 y = ( VALUE*m_Rc + E_GP_DY + E_STRPLN_DA + RPC_SL_OFFSET ) / 2.0;
446 }
447 }
448 else
449 {
450 switch( m_RpcId )
451 {
452 case 0:
453 x = ( VALUE*m_Rc + E_GP_DX + E_STRPLN_DA )/2.0 + RPC_DEATH_EDGE/2.0;
454 y = m_Rc;
455 break;
456 case 1:
457 x = VALUE*m_Rc + sin(MUC_PI/4.0)*m_Wd/4.0;
458 x += RPC_DEATH_EDGE * ( 3 - 2*sqrt(2.0) )/4.0;
459 y = m_Rc - cos(MUC_PI/4.0)*m_Wd/4.0;
460 y += RPC_DEATH_EDGE * ( 1 + 4.0/sqrt(2.0) )/4.0;
461 break;
462 case 2:
463 x = m_Rc * cos( MUC_PI/4.0 );
464 y = m_Rc * sin( MUC_PI/4.0 );
465 break;
466 case 3:
467 x = m_Rc - cos(MUC_PI/4.0)*m_Wd/4.0;
468 x += RPC_DEATH_EDGE * ( 1 + 4.0/sqrt(2.0) )/4.0;
469 y = VALUE*m_Rc + sin(MUC_PI/4.0)*m_Wd/4.0;
470 y += RPC_DEATH_EDGE * ( 3 - 2*sqrt(2.0) )/4.0;
471 break;
472 case 4:
473 x = m_Rc;
474 y = ( VALUE*m_Rc + E_GP_DY + E_STRPLN_DA )/2.0 + RPC_DEATH_EDGE/2.0;
475 }
476 }
477
478 // sign different by segment
479 if ( m_Segment == 0 ) { ; }
480 else if( m_Segment == 1 ) { x = -x; }
481 else if( m_Segment == 2 ) { x = -x; y = -y; }
482 else { y = -y; }
483
484 //------------ set z ---------------------
485 for( int i=0; i<m_Layer+1; i++ ) z += E_AS_TH[i];
486
487 z += m_Layer * AS_GAP;
488 z += ( (E_AS_ZMAX - E_AS_TOTAL_TH ) + AS_GAP/2.0 );
489 z += (1-2*m_UpDown) * ( STR_TH + RPC_TH ) / 2.0;
490 z *= cos( m_Part*MUC_PI/2.0 );
491
492 m_LocOrgInBes[0] = x;
493 m_LocOrgInBes[1] = y;
494 m_LocOrgInBes[2] = z;
495
496 // limit cut
497 for( int i=0; i<2; i++ ) {
498 if( fabs(m_LocOrgInBes[i]) < ERR_LIMIT ) m_LocOrgInBes[i] = 0.;
499 }
500
501 return 0;
502}
double m_Wd
Definition MucEntity.h:105
double m_Rc
Definition MucEntity.h:99

Referenced by Init(), and SetLocOrgInBes().

◆ SetH()

void MucBakelite::SetH ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 198 of file MucBakelite.cxx.

199{
200 if( m_Part == BRID )
201 m_H = BKLT_TH;
202 else
203 {
204 m_H = m_Rout - m_Rin;
205
206 // cut rpc chamber death edge
207 if( m_UpDown == SL_DOWN && (m_ID == 1 || m_ID == 3) )
208 m_H -= RPC_DEATH_EDGE * (1 + 1.0/VALUE);
209 else
210 m_H -= RPC_DEATH_EDGE * 2.0;
211 }
212}
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 MucBakelite::SetL ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 214 of file MucBakelite.cxx.

215{
216 if( m_Part == BRID ) // barrel
217 {
218 if( m_Segment != B_TOP ) // not top segment
219 {
220 // the first rpc of SL_DOWN is constructed as the same as the last rpc of SL_UP
221 if( (m_UpDown == SL_UP && m_RpcId == 3) || (m_UpDown == SL_DOWN && m_RpcId == 0) )
222 {
223 if( m_Layer != 1 ) // not layer NO.2
224 m_L = B_BOX_LT - 2*B_BOX_DZ[m_UpDown] - 3*B_RPC_LTN;
225 else // layer NO.2 is special
226 m_L = B_BOX_LT - 2*B_BOX_DZ[m_UpDown] - 3*B_RPC_LTS;
227 }
228 else
229 {
230 if( m_Layer != 1 ) // not layer NO.2
231 m_L = B_RPC_LTN;
232 else // layer NO.2 is special
233 m_L = B_RPC_LTS;
234 }
235 }
236 else // top segment
237 {
238 if( m_RpcId < 2 ) { // RPC NO.1 and NO.2
239 m_L = B_TOPRPC_LTS[ ((m_Layer == 0)?1:(m_Layer%2)) ];
240 }
241 else if( (m_UpDown == SL_UP && m_RpcId == 4) || (m_UpDown == SL_DOWN && m_RpcId == 2) ) {
242 m_L = B_BOX_LT - B_TOPRPC_LTS[ ((m_Layer == 0)?1:(m_Layer%2)) ] - 2*(B_BOX_DZ[m_UpDown]+B_RPC_LTN);
243 }
244 else
245 m_L = B_RPC_LTN;
246
247 } // else, top segment
248
249 m_L -= RPC_DEATH_EDGE * 2.0; // cut rpc chamber death edge
250
251 } // if, barrel
252 else { // endcap
253 m_L = BKLT_TH;
254 }
255}
double m_L
Definition MucEntity.h:103

Referenced by Init().

◆ SetLocOrgInBes()

void MucBakelite::SetLocOrgInBes ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 505 of file MucBakelite.cxx.

506{
507 if( m_Part == BRID ) SetBarrelRpcInBes();
508 else SetEndcapRpcInBes();
509}

Referenced by Init().

◆ SetObjOrgInBes()

void MucBakelite::SetObjOrgInBes ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 528 of file MucBakelite.cxx.

529{
531
532 // limit cut
533 for( int i=0; i<3; i++ ) {
534 if( fabs(m_ObjOrgInBes[i]) < ERR_LIMIT ) m_ObjOrgInBes[i] = 0.;
535 }
536}
double m_ObjOrgInLoc[3]
Definition MucEntity.h:118
double m_ObjOrgInBes[3]
Definition MucEntity.h:117
void TransLocToBes(double LocCoord[], double BesCoord[], double LocOrgInBes[], double Rot_z)

Referenced by Init().

◆ SetObjOrgInLoc()

void MucBakelite::SetObjOrgInLoc ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 512 of file MucBakelite.cxx.

513{
514 if( m_Part == BRID )
515 {
516 m_ObjOrgInLoc[0] = 0.;
517 m_ObjOrgInLoc[1] = (1-2*m_ID) * (BKLT_TH + GAS_TH)/2.0;
518 m_ObjOrgInLoc[2] = 0.;
519 }
520 else
521 {
522 m_ObjOrgInLoc[0] = 0.;
523 m_ObjOrgInLoc[1] = 0.;
524 m_ObjOrgInLoc[2] = (1-2*m_ID) * (BKLT_TH + GAS_TH)/2.0;
525 }
526}

Referenced by Init().

◆ SetPhi()

void MucBakelite::SetPhi ( )
protectedvirtual

Definition at line 73 of file MucBakelite.cxx.

74{
75 if( m_Part == BRID ) m_Phi = B_PHI[m_Segment] * (MUC_PI/4.0);
76 else m_Phi = 0.;
77}

Referenced by Init().

◆ SetRc()

void MucBakelite::SetRc ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 117 of file MucBakelite.cxx.

118{
119 m_Rc = (m_Rin + m_Rout)/2.0;
120}

Referenced by Init().

◆ SetRin()

void MucBakelite::SetRin ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 99 of file MucBakelite.cxx.

100{
101 if( m_Part == BRID ) // Rin of bakelite
102 m_Rin = B_AS_RMIN[m_Layer] - AS_GAP/2.0 + (1-2*m_UpDown) * (STR_TH + RPC_TH)/2.0
103 + (1-2*m_ID)*(GAS_TH + BKLT_TH)/2.0 - BKLT_TH/2.0;
104 else // Rin of RPC
105 m_Rin = E_GP_RMIN[m_Layer] + E_STRPLN_DR + (1-m_UpDown)*RPC_SL_OFFSET;
106}

Referenced by Init().

◆ SetRout()

void MucBakelite::SetRout ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 108 of file MucBakelite.cxx.

109{
110 if( m_Part == BRID ) // Rout of bakelite
111 m_Rout = B_AS_RMIN[m_Layer] - AS_GAP/2.0 + (1-2*m_UpDown) * (STR_TH + RPC_TH)/2.0
112 + (1-2*m_ID)*(GAS_TH + BKLT_TH)/2.0 + BKLT_TH/2.0;
113 else
114 m_Rout = E_AS_RMAX - E_BOX_DR - E_STRPLN_DB[(m_Layer==0)?0:1] + (m_UpDown-1)*RPC_SL_OFFSET;
115}

Referenced by Init().

◆ SetTheta()

void MucBakelite::SetTheta ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 79 of file MucBakelite.cxx.

80{
81 if( m_Part == BRID )
82 m_Theta = m_Segment * (MUC_PI/4.0);
83 else
84 {
85 if( m_UpDown == SL_UP )
86 m_Theta = ( MUC_PI/4.0 ) + (1 - m_RpcId) * MUC_PI / 8.0 ;
87 else
88 {
89 if( m_RpcId < 2 ) // RPC NO.1 and NO.2
90 m_Theta = ( MUC_PI/4.0 ) + MUC_PI / 8.0 ;
91 else if ( m_RpcId == 2 ) // center RPC, NO.3
92 m_Theta = ( MUC_PI/4.0 ) ;
93 else
94 m_Theta = ( MUC_PI/4.0 ) - MUC_PI / 8.0 ;
95 }
96 }
97}

Referenced by Init().

◆ SetThin()

void MucBakelite::SetThin ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 122 of file MucBakelite.cxx.

123{
124 m_Thin = BKLT_TH;
125}
double m_Thin
Definition MucEntity.h:100

Referenced by Init().

◆ SetW()

void MucBakelite::SetW ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 127 of file MucBakelite.cxx.

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

Referenced by Init().

◆ SetWd()

void MucBakelite::SetWd ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 310 of file MucBakelite.cxx.

311{
312 if( m_Part == BRID ) m_Wd = m_W;
313 else
314 {
315 if( m_UpDown == SL_UP )
316 {
317 if( m_RpcId == 0 )
318 m_Wd = VALUE * m_Rout - E_GP_DX - E_STRPLN_DA - RPC_SL_OFFSET;
319 else if( m_RpcId == 1 )
320 m_Wd = 2.0* VALUE * m_Rout;
321 else
322 m_Wd = VALUE * m_Rout - E_GP_DY - E_STRPLN_DA - RPC_SL_OFFSET;
323 }
324 else
325 {
326 switch( m_RpcId )
327 {
328 case 0:
329 m_Wd = VALUE * m_Rout - E_GP_DX - E_STRPLN_DA;
330 break;
331 case 1:
332 case 3:
333 m_Wd = VALUE * (m_Rout - m_Rin);
334 break;
335 case 2:
336 m_Wd = 2.0 * VALUE * m_Rin;
337 break;
338 case 4:
339 m_Wd = VALUE * m_Rout - E_GP_DY - E_STRPLN_DA;
340 break;
341 default: ;
342 }
343 }
344
345 // cut rpc chamber death edge
346 if( m_UpDown == SL_UP ) {
347 if( m_RpcId == 1 ) m_Wd -= RPC_DEATH_EDGE * 2.0; // center rpc
348 else m_Wd -= ( 1 + 1.0/cos(MUC_PI/8.0) ) * RPC_DEATH_EDGE;
349 }
350 else
351 {
352 if( m_RpcId == 2 ) // center rpc
353 m_Wd -= RPC_DEATH_EDGE * 2.0;
354 else // DOWN 0,4 RPC
355 m_Wd -= RPC_DEATH_EDGE;
356 }
357 } // else, endcap
358}

Referenced by Init().

◆ SetWu()

void MucBakelite::SetWu ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 257 of file MucBakelite.cxx.

258{
259 if( m_Part == BRID ) m_Wu = m_W;
260 else
261 {
262 if( m_UpDown == SL_UP )
263 {
264 if( m_RpcId == 0 )
265 m_Wu = VALUE * m_Rin - E_GP_DX - E_STRPLN_DA - RPC_SL_OFFSET;
266 else if( m_RpcId == 1 )
267 m_Wu = 2.0* VALUE * m_Rin;
268 else
269 m_Wu = VALUE * m_Rin - E_GP_DY - E_STRPLN_DA - RPC_SL_OFFSET;
270 }
271 else
272 {
273 switch( m_RpcId )
274 {
275 case 0:
276 m_Wu = VALUE * m_Rin - E_GP_DX - E_STRPLN_DA;
277 break;
278 case 1:
279 case 3:
280 m_Wu = 0.0;
281 break;
282 case 2:
283 m_Wu = 2.0* VALUE * m_Rin;
284 break;
285 case 4:
286 m_Wu = VALUE * m_Rin - E_GP_DY - E_STRPLN_DA;
287 break;
288 default: ;
289 }
290 }
291
292 // cut rpc chamber death edge
293 if( m_Wu > 0.0 )
294 {
295 if( m_UpDown == SL_UP ) {
296 if( m_RpcId == 1 ) m_Wu -= RPC_DEATH_EDGE * 2.0; // center rpc
297 else m_Wu -= ( 1 + 1.0/cos(MUC_PI/8.0) ) * RPC_DEATH_EDGE;
298 }
299 else
300 {
301 if( m_RpcId == 2 ) // center rpc
302 m_Wu -= RPC_DEATH_EDGE * 2.0;
303 else // DOWN 0,4 RPC
304 m_W -= RPC_DEATH_EDGE;
305 }
306 }
307 } // else, endcap
308}
double m_Wu
Definition MucEntity.h:104

Referenced by Init().


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