Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

MucGas Class Reference

#include <MucGas.h>

Inheritance diagram for MucGas:

MucEntity MucEntity List of all members.

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 GetPhi ()
double GetPhi ()
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 ()
 MucGas (const MucGas &other)
 MucGas (int part, int segment, int layer, int upDown, int rpcId, int id)
 MucGas (const MucGas &other)
 MucGas (int part, int segment, int layer, int upDown, int rpcId, int id)
MucGasoperator= (const MucGas &other)
MucGasoperator= (const MucGas &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)
 ~MucGas ()
 ~MucGas ()

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 ()
int SetBarrelRpcInBes ()
int SetBarrelRpcInBes ()
int SetEndcapRpcInBes ()
int SetEndcapRpcInBes ()
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 ()
void SetPhi ()
void SetPhi ()
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

Private Attributes

double m_Phi

Constructor & Destructor Documentation

MucGas::MucGas int  part,
int  segment,
int  layer,
int  upDown,
int  rpcId,
int  id
 

00018         : MucEntity( part, segment, layer, upDown, rpcId, id )
00019 {
00020         MucGas::Init();
00021 }

MucGas::MucGas const MucGas other  ) 
 

00024                                     : MucEntity( other )
00025 {
00026         m_Phi           = other.m_Phi;
00027 }

MucGas::~MucGas  ) 
 

00044 {       
00045         ;
00046 }

MucGas::MucGas int  part,
int  segment,
int  layer,
int  upDown,
int  rpcId,
int  id
 

MucGas::MucGas const MucGas other  ) 
 

MucGas::~MucGas  ) 
 


Member Function Documentation

double MucEntity::GetArea  )  [inherited]
 

double MucEntity::GetArea  )  [inherited]
 

00150 { return m_Area;        }

double MucEntity::GetH  )  [inherited]
 

double MucEntity::GetH  )  [inherited]
 

00146 { return m_H;           }

int MucEntity::GetID  )  [inherited]
 

int MucEntity::GetID  )  [inherited]
 

00139 { return m_ID;          }

double MucEntity::GetL  )  [inherited]
 

double MucEntity::GetL  )  [inherited]
 

00147 { return m_L;           }

int MucEntity::GetLayer  )  [inherited]
 

int MucEntity::GetLayer  )  [inherited]
 

00136 { return m_Layer;       }

double* MucEntity::GetLocOrgInBes  )  [inherited]
 

double MucEntity::GetLocOrgInBes int  i  )  [inherited]
 

double * MucEntity::GetLocOrgInBes  )  [inherited]
 

00176 { return &m_LocOrgInBes[0]; }

double MucEntity::GetLocOrgInBes int  i  )  [inherited]
 

00153 {
00154         if( i<1 || i>3 ) i=1;
00155         return m_LocOrgInBes[i-1];
00156 }

double* MucEntity::GetObjOrgInBes  )  [inherited]
 

double MucEntity::GetObjOrgInBes int  i  )  [inherited]
 

double * MucEntity::GetObjOrgInBes  )  [inherited]
 

00178 { return &m_ObjOrgInBes[0]; }

double MucEntity::GetObjOrgInBes int  i  )  [inherited]
 

00165 {
00166         if( i<1 || i>3 ) i=1;
00167         return m_ObjOrgInBes[i-1];
00168 }

double* MucEntity::GetObjOrgInLoc  )  [inherited]
 

double MucEntity::GetObjOrgInLoc int  i  )  [inherited]
 

double * MucEntity::GetObjOrgInLoc  )  [inherited]
 

00179 { return &m_ObjOrgInLoc[0]; }

double MucEntity::GetObjOrgInLoc int  i  )  [inherited]
 

00171 {
00172         if( i<1 || i>3 ) i=1;
00173         return m_ObjOrgInLoc[i-1];
00174 }

double* MucEntity::GetObjRotToMot  )  [inherited]
 

double MucEntity::GetObjRotToMot int  i  )  [inherited]
 

double * MucEntity::GetObjRotToMot  )  [inherited]
 

00177 { return &m_ObjRotToMot[0]; }

double MucEntity::GetObjRotToMot int  i  )  [inherited]
 

00159 {
00160         if( i<1 || i>3 ) i=1;
00161         return m_ObjRotToMot[i-1];
00162 }

int MucEntity::GetPart  )  [inherited]
 

int MucEntity::GetPart  )  [inherited]
 

00134 { return m_Part;        }

double MucGas::GetPhi  ) 
 

double MucGas::GetPhi  ) 
 

00074 {        return m_Phi;          }

double MucEntity::GetRc  )  [inherited]
 

double MucEntity::GetRc  )  [inherited]
 

00143 { return m_Rc;          }

double MucEntity::GetRin  )  [inherited]
 

double MucEntity::GetRin  )  [inherited]
 

00141 { return m_Rin;         }

double MucEntity::GetRout  )  [inherited]
 

double MucEntity::GetRout  )  [inherited]
 

00142 { return m_Rout;        }

int MucEntity::GetRpcId  )  [inherited]
 

int MucEntity::GetRpcId  )  [inherited]
 

00138 { return m_RpcId;       }

int MucEntity::GetSegment  )  [inherited]
 

int MucEntity::GetSegment  )  [inherited]
 

00135 { return m_Segment;     }

double MucEntity::GetTheta  )  [inherited]
 

double MucEntity::GetTheta  )  [inherited]
 

00140 { return m_Theta;       }

double MucEntity::GetThin  )  [inherited]
 

double MucEntity::GetThin  )  [inherited]
 

00144 { return m_Thin;        } 

int MucEntity::GetUpDown  )  [inherited]
 

int MucEntity::GetUpDown  )  [inherited]
 

00137 { return m_UpDown;      }

double MucEntity::GetW  )  [inherited]
 

double MucEntity::GetW  )  [inherited]
 

00145 { return m_W;           }

double MucEntity::GetWd  )  [inherited]
 

double MucEntity::GetWd  )  [inherited]
 

00149 { return m_Wd;          }

double MucEntity::GetWu  )  [inherited]
 

double MucEntity::GetWu  )  [inherited]
 

00148 { return m_Wu;          }

virtual void MucGas::Init  )  [protected, virtual]
 

Reimplemented from MucEntity.

void MucGas::Init  )  [protected, virtual]
 

Reimplemented from MucEntity.

00050 {
00051         SetPhi();
00052         SetTheta();
00053         SetRin();
00054         SetRout();
00055         SetRc();
00056 
00057         SetThin();
00058         SetW();
00059         SetWu();
00060         SetWd();
00061         SetH();
00062         SetL();
00063 
00064         SetEndcapRpcInBes();
00065         SetBarrelRpcInBes();
00066 
00067         SetLocOrgInBes();
00068         SetObjOrgInBes();
00069         SetObjOrgInLoc();
00070 }

MucGas& MucGas::operator= const MucGas other  ) 
 

MucGas & MucGas::operator= const MucGas other  ) 
 

00031 {
00032         if( this == &other)
00033                 return *this;
00034 
00035         MucEntity::operator =(other);
00036 
00037         m_Phi           = other.m_Phi;
00038 
00039         return *this;   
00040 }

virtual void MucEntity::SetAlignment double  dx,
double  dy,
double  dz
[protected, virtual, inherited]
 

Reimplemented in MucBox, MucStripPlane, MucBox, and MucStripPlane.

void MucEntity::SetAlignment double  dx,
double  dy,
double  dz
[protected, virtual, inherited]
 

Reimplemented in MucBox, MucStripPlane, MucBox, and MucStripPlane.

00219 { ; }

virtual void MucEntity::SetArea  )  [protected, virtual, inherited]
 

Reimplemented in MucBox, MucStrip, MucBox, and MucStrip.

void MucEntity::SetArea  )  [protected, virtual, inherited]
 

Reimplemented in MucBox, MucStrip, MucBox, and MucStrip.

00212 { m_Area        = 0.;   }

int MucGas::SetBarrelRpcInBes  )  [protected]
 

int MucGas::SetBarrelRpcInBes  )  [protected]
 

00383 {
00384         if( m_Part != BRID ) return 0;
00385 
00386         double x, y, z;
00387         x = y = z = 0.;
00388 
00389         if( m_Segment != B_TOP )
00390         {
00391                 // set x and y
00392                 double r;
00393                 r = (B_AS_RMIN[m_Layer] - AS_GAP/2.0) + (1-2*m_UpDown)*(STR_TH + RPC_TH)/2.0;
00394                 x = r * cos( m_Theta );
00395                 y = r * sin( m_Theta );
00396 
00397                 // set z
00398                 if( (m_UpDown == SL_UP && m_RpcId == 3) || (m_UpDown == SL_DOWN && m_RpcId == 0) )
00399                 {
00400                         if( m_Layer != 1 ) // not layer NO.2
00401                                 z = (2*m_UpDown - 1) * 3 * B_RPC_LTN/2.0;
00402                         else
00403                                 z = (2*m_UpDown - 1) * 3 * B_RPC_LTS/2.0;
00404                 }
00405                 else if( m_UpDown == SL_UP )
00406                         z = B_BOX_LT/2.0 - B_BOX_DZ[m_UpDown] - (1+2*m_RpcId)*B_RPC_LTN/2.0;
00407                 else
00408                         z = -B_BOX_LT/2.0 + B_BOX_DZ[m_UpDown] + (1+2*(3-m_RpcId))*B_RPC_LTN/2.0;
00409 
00410         } // end not top segment
00411         else // top segment
00412         {
00413                 //---------- set x--------
00414                 if( m_RpcId > 1 )  // NO.3, 4, 5
00415                         x = 0.;
00416                 else  // NO.1 and NO.2
00417                         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 );
00418                 
00419                 //---------- set y--------
00420                 y = (B_AS_RMIN[m_Layer] - AS_GAP / 2.0) + (1-2*m_UpDown)*(STR_TH + RPC_TH)/2.0;
00421 
00422                 //---------- set z--------
00423                 if( m_RpcId < 2 ) // rpc NO.1 and NO.2
00424                         z = B_BOX_LT/2.0 - B_BOX_DZ[m_UpDown] - B_TOPRPC_LTS[ ((m_Layer==0)?1:(m_Layer%2)) ];
00425                 else if( m_UpDown == SL_UP && m_RpcId == 4 ) // up NO.5
00426                         z = -B_RPC_LTN - B_TOPRPC_LTS[ ((m_Layer==0)?1:(m_Layer%2)) ];
00427                 else if( m_UpDown == SL_DOWN && m_RpcId == 2 ) // down NO.3
00428                         z = B_RPC_LTN - B_TOPRPC_LTS[ ((m_Layer==0)?1:(m_Layer%2)) ];
00429                 else if( m_UpDown == SL_UP ) // up NO.3 and NO.4
00430                         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;
00431                 else    // down NO.4 and NO.5
00432                         z = -B_BOX_LT/2.0 - B_BOX_DZ[m_UpDown] + (1+2*(4-m_RpcId))*B_RPC_LTN/2.0;
00433 
00434         } // end top segment
00435 
00436         m_LocOrgInBes[0] = x;
00437         m_LocOrgInBes[1] = y;
00438         m_LocOrgInBes[2] = z;
00439 
00440         // limit cut
00441         for( int i=0; i<2; i++ ) {
00442                 if( fabs(m_LocOrgInBes[i]) < ERR_LIMIT ) m_LocOrgInBes[i] = 0.0;
00443         }
00444         
00445         return 0;
00446 }

int MucGas::SetEndcapRpcInBes  )  [protected]
 

int MucGas::SetEndcapRpcInBes  )  [protected]
 

00449 {
00450         if( m_Part == BRID ) return 0;
00451         
00452         double x, y, z;
00453         x = y = z = 0.;
00454 
00455         //------------ set x and y ---------------
00456         if( m_UpDown == SL_UP )
00457         {
00458                 if( m_RpcId == 0 )
00459                 {
00460                         x = ( VALUE*m_Rc + E_GP_DX + E_STRPLN_DA + RPC_SL_OFFSET ) / 2.0;
00461                         y = m_Rc;
00462                 }       
00463                 else if( m_RpcId == 1 )
00464                 {
00465                         x = m_Rc * cos( MUC_PI/4.0 );
00466                         y = m_Rc * sin( MUC_PI/4.0 );
00467                 }
00468                 else
00469                 {
00470                         x = m_Rc;
00471                         y = ( VALUE*m_Rc + E_GP_DY + E_STRPLN_DA + RPC_SL_OFFSET ) / 2.0;
00472                 }               
00473         }
00474         else
00475         {
00476                 switch( m_RpcId )
00477                 {
00478                         case 0:
00479                                 x = ( VALUE*m_Rc + E_GP_DX + E_STRPLN_DA )/2.0 + RPC_DEATH_EDGE/2.0;
00480                                 y = m_Rc;
00481                                 break;
00482                         case 1:
00483                                 x = VALUE*m_Rc + sin(MUC_PI/4.0)*m_Wd/4.0;
00484                                 x += RPC_DEATH_EDGE * ( 3 - 2*sqrt(2.0) )/4.0;
00485 
00486                                 y = m_Rc - cos(MUC_PI/4.0)*m_Wd/4.0;
00487                                 y += RPC_DEATH_EDGE * ( 1 + 4.0/sqrt(2.0) )/4.0;
00488 
00489                                 break;
00490                         case 2:
00491                                 x = m_Rc * cos( MUC_PI/4.0 ); 
00492                                 y = m_Rc * sin( MUC_PI/4.0 );
00493                                 break;
00494                         case 3:
00495                                 x = m_Rc - cos(MUC_PI/4.0)*m_Wd/4.0;
00496                                 x += RPC_DEATH_EDGE * ( 1 + 4.0/sqrt(2.0) )/4.0;
00497 
00498                                 y = VALUE*m_Rc + sin(MUC_PI/4.0)*m_Wd/4.0;
00499                                 y += RPC_DEATH_EDGE * ( 3 - 2*sqrt(2.0) )/4.0;
00500 
00501                                 break;
00502                         case 4:
00503                                 x = m_Rc;
00504                                 y = ( VALUE*m_Rc + E_GP_DY + E_STRPLN_DA )/2.0 + RPC_DEATH_EDGE/2.0;
00505                 }
00506                 
00507         }
00508         
00509         // sign different by segment
00510         if     ( m_Segment == 0 ) {     ;               }
00511         else if( m_Segment == 1 ) {     x = -x;         }
00512         else if( m_Segment == 2 ) {     x = -x; y = -y; }                                               
00513         else                      {     y = -y;         }
00514 
00515         
00516         //------------ set z ---------------------
00517         for( int i=0; i<m_Layer+1; i++ ) z += E_AS_TH[i]; 
00518         z += m_Layer * AS_GAP;
00519         z += ( (E_AS_ZMAX - E_AS_TOTAL_TH) + AS_GAP/2.0 );  
00520         z += (1-2*m_UpDown) * ( STR_TH + RPC_TH ) / 2.0;        
00521         z *= cos( m_Part*MUC_PI/2.0 );
00522 
00523         m_LocOrgInBes[0] = x;
00524         m_LocOrgInBes[1] = y;
00525         m_LocOrgInBes[2] = z;
00526 
00527         // limit cut
00528         for( int i=0; i<2; i++ ) {
00529                 if( fabs(m_LocOrgInBes[i]) < ERR_LIMIT ) m_LocOrgInBes[i] = 0.;
00530         }
00531                 
00532         return 0;
00533 }

virtual void MucGas::SetH  )  [protected, virtual]
 

Reimplemented from MucEntity.

void MucGas::SetH  )  [protected, virtual]
 

Reimplemented from MucEntity.

00210 {
00211         if( m_Part == BRID )
00212                 m_H = GAS_TH;
00213         else
00214         {
00215                 m_H = m_Rout - m_Rin;
00216 
00217                 // cut rpc chamber death edge
00218                 if( m_UpDown == SL_DOWN && (m_ID == 1 || m_ID == 3) )
00219                         m_H -= RPC_DEATH_EDGE * (1 + 1.0/VALUE);
00220                 else
00221                         m_H -= RPC_DEATH_EDGE * 2.0;
00222         }
00223 }

virtual void MucGas::SetL  )  [protected, virtual]
 

Reimplemented from MucEntity.

void MucGas::SetL  )  [protected, virtual]
 

Reimplemented from MucEntity.

00226 {
00227         if( m_Part == BRID ) // barrel
00228         {
00229                 if( m_Segment != B_TOP ) // not top segment
00230                 {
00231                         // the first rpc of SL_DOWN is constructed as the same as the last rpc of SL_UP
00232                         if( (m_UpDown == SL_UP && m_RpcId == 3) || (m_UpDown == SL_DOWN && m_RpcId == 0) )
00233                         {
00234                                 if( m_Layer != 1 ) // not layer NO.2
00235                                         m_L = B_BOX_LT - 2*B_BOX_DZ[m_UpDown] - 3*B_RPC_LTN;
00236                                 else               // layer NO.2 is special
00237                                         m_L = B_BOX_LT - 2*B_BOX_DZ[m_UpDown] - 3*B_RPC_LTS;
00238                         }
00239                         else
00240                         {
00241                                 if( m_Layer != 1 ) // not layer NO.2
00242                                         m_L = B_RPC_LTN;
00243                                 else               // layer NO.2 is special
00244                                         m_L = B_RPC_LTS;
00245                         }
00246                 }
00247                 else // top segment
00248                 {
00249                         if( m_RpcId < 2 ) // RPC NO.1 and NO.2
00250                         {
00251                                 m_L = B_TOPRPC_LTS[ ((m_Layer == 0)?1:(m_Layer%2)) ];
00252                         }                       
00253                         else if( (m_UpDown == SL_UP && m_RpcId == 4) || (m_UpDown == SL_DOWN && m_RpcId == 2) )
00254                         {
00255                                 m_L = B_BOX_LT - B_TOPRPC_LTS[ ((m_Layer == 0)?1:(m_Layer%2)) ] - 2*(B_BOX_DZ[m_UpDown]+B_RPC_LTN);
00256                         }
00257                         else
00258                                 m_L = B_RPC_LTN;
00259 
00260                 } // else, top segment  
00261 
00262                 m_L -= RPC_DEATH_EDGE * 2.0;    // cut rpc chamber death edge
00263 
00264         } // if, barrel 
00265         else // endcap
00266         {
00267                 m_L = GAS_TH;
00268         }
00269 
00270 }

virtual void MucGas::SetLocOrgInBes  )  [protected, virtual]
 

Reimplemented from MucEntity.

void MucGas::SetLocOrgInBes  )  [protected, virtual]
 

Reimplemented from MucEntity.

00537 {
00538         if( m_Part == BRID )
00539                 SetBarrelRpcInBes();
00540         else
00541                 SetEndcapRpcInBes();
00542 }

virtual void MucGas::SetObjOrgInBes  )  [protected, virtual]
 

Reimplemented from MucEntity.

void MucGas::SetObjOrgInBes  )  [protected, virtual]
 

Reimplemented from MucEntity.

00551 {
00552         MucEntity::TransLocToBes( m_ObjOrgInBes, m_ObjOrgInLoc, m_LocOrgInBes, m_Phi );
00553 
00554         // limit cut
00555         for( int i=0; i<3; i++ ) {
00556                 if( fabs(m_ObjOrgInBes[i]) < ERR_LIMIT ) m_ObjOrgInBes[i] = 0.0;
00557         }
00558 }

virtual void MucGas::SetObjOrgInLoc  )  [protected, virtual]
 

Reimplemented from MucEntity.

void MucGas::SetObjOrgInLoc  )  [protected, virtual]
 

Reimplemented from MucEntity.

00546 {
00547         for( int i=0; i<3; i++ )  m_ObjOrgInLoc[i] = 0.;
00548 }

virtual void MucEntity::SetObjRotToMot  )  [protected, virtual, inherited]
 

Reimplemented in MucAbsorber, MucBox, MucGap, MucAbsorber, MucBox, and MucGap.

void MucEntity::SetObjRotToMot  )  [protected, virtual, inherited]
 

Reimplemented in MucAbsorber, MucBox, MucGap, MucAbsorber, MucBox, and MucGap.

00215 { for( int i=0; i<3; i++) m_ObjRotToMot[i] = 0.; }

void MucGas::SetPhi  )  [protected]
 

void MucGas::SetPhi  )  [protected]
 

00080 {
00081         if( m_Part == BRID )
00082                 m_Phi = B_PHI[m_Segment] * (MUC_PI/4.0);
00083         else
00084                 m_Phi = 0.;
00085 }

virtual void MucGas::SetRc  )  [protected, virtual]
 

Reimplemented from MucEntity.

void MucGas::SetRc  )  [protected, virtual]
 

Reimplemented from MucEntity.

00126 {
00127         m_Rc = (m_Rin + m_Rout)/2.0;
00128 }

virtual void MucGas::SetRin  )  [protected, virtual]
 

Reimplemented from MucEntity.

void MucGas::SetRin  )  [protected, virtual]
 

Reimplemented from MucEntity.

00109 {
00110 
00111         if( m_Part == BRID ) // Rin of gas( same as which of RPC )
00112                 m_Rin = B_AS_RMIN[m_Layer] - AS_GAP/2.0 + (1-2*m_UpDown) * (STR_TH + RPC_TH)/2.0 - GAS_TH/2.0;
00113         else  // Rin of RPC
00114                 m_Rin = E_GP_RMIN[m_Layer] + E_STRPLN_DR + (1-m_UpDown)*RPC_SL_OFFSET;
00115 }

virtual void MucGas::SetRout  )  [protected, virtual]
 

Reimplemented from MucEntity.

void MucGas::SetRout  )  [protected, virtual]
 

Reimplemented from MucEntity.

00118 {
00119         if( m_Part == BRID )
00120                 m_Rout = B_AS_RMIN[m_Layer] - AS_GAP/2.0 + (1-2*m_UpDown) * (STR_TH + RPC_TH)/2.0 + GAS_TH/2.0;
00121         else
00122                 m_Rout = E_AS_RMAX - E_BOX_DR - E_STRPLN_DB[(m_Layer==0)?0:1] + (m_UpDown-1)*RPC_SL_OFFSET;
00123 }

virtual void MucGas::SetTheta  )  [protected, virtual]
 

Reimplemented from MucEntity.

void MucGas::SetTheta  )  [protected, virtual]
 

Reimplemented from MucEntity.

00088 {
00089         if( m_Part == BRID )
00090                 m_Theta = m_Segment * (MUC_PI/4.0);
00091         else
00092         {
00093                 if( m_UpDown == SL_UP )
00094                         m_Theta = ( MUC_PI/4.0 ) + (1 - m_RpcId) * MUC_PI / 8.0 ;
00095                 else
00096                 {
00097                         if( m_RpcId < 2 ) // RPC NO.1 and NO.2 
00098                                 m_Theta = ( MUC_PI/4.0 ) + MUC_PI / 8.0 ;
00099                         else if ( m_RpcId == 2 ) // center RPC, NO.3
00100                                 m_Theta = ( MUC_PI/4.0 ) ;
00101                         else
00102                                 m_Theta = ( MUC_PI/4.0 ) - MUC_PI / 8.0 ;
00103                 }
00104         }
00105 }

virtual void MucGas::SetThin  )  [protected, virtual]
 

Reimplemented from MucEntity.

void MucGas::SetThin  )  [protected, virtual]
 

Reimplemented from MucEntity.

00132 {
00133         m_Thin = GAS_TH;
00134 }

virtual void MucGas::SetW  )  [protected, virtual]
 

Reimplemented from MucEntity.

void MucGas::SetW  )  [protected, virtual]
 

Reimplemented from MucEntity.

00137 {
00138         if( m_Part == BRID)
00139         {
00140                 if( m_Segment == B_TOP && m_RpcId < 2 )         // the first 2 gases in top segment
00141                 {
00142                         if( (m_Layer+1)%2 == 1 ) // odd layer
00143                                 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;
00144                         else                     // even layer
00145                                 m_W = (B_BOX_WT[m_Layer] - 4*B_BOX_DZ[m_UpDown] - B_BOX_SLOT_WT)/2.0;
00146                 }       
00147                 else                                    // other gases
00148                 {
00149                         if( (m_Layer+1)%2 ==1 )  // odd layer
00150                                 m_W = B_BOX_WT[m_Layer] - 2 * B_BOX_DT[m_UpDown];
00151                         else                     // even layer
00152                                 m_W = B_BOX_WT[m_Layer] - 2 * B_BOX_DZ[m_UpDown];
00153 
00154                 }       
00155         } // end barrel
00156         else
00157         {
00158                 if( m_UpDown == SL_UP ) // up layer
00159                 {       if( m_RpcId == 0 )
00160                                 m_W = VALUE * m_Rc - E_GP_DX - E_STRPLN_DA - RPC_SL_OFFSET;
00161                         else if ( m_RpcId == 1 )
00162                                 m_W = 2 * VALUE * m_Rc;
00163                         else 
00164                                 m_W = VALUE * m_Rc - E_GP_DY - E_STRPLN_DA - RPC_SL_OFFSET;
00165                 }
00166                 else // down layer
00167                 {       
00168                         switch( m_RpcId )
00169                         {
00170                                 case 0:
00171                                         m_W = VALUE * m_Rc - E_GP_DX - E_STRPLN_DA;
00172                                         break;
00173                                 case 1:
00174                                 case 3:
00175                                         m_W = VALUE * ( m_Rc - m_Rin );
00176                                         break;
00177                                 case 2:
00178                                         m_W = 2 * VALUE * m_Rin;
00179                                         break;
00180                                 case 4:
00181                                         m_W = VALUE * m_Rc - E_GP_DY - E_STRPLN_DA;     
00182                                         break;
00183                                 default: ;
00184                         }
00185                 }
00186                 
00187         } // else, endcap
00188 
00189         // cut rpc chamber death edge
00190         if( m_Part == BRID )
00191                 m_W -= RPC_DEATH_EDGE * 2.0;
00192         else
00193         {
00194                 if( m_UpDown == SL_UP )
00195                 {
00196                         if( m_RpcId == 1 ) m_W -= RPC_DEATH_EDGE * 2.0; // center rpc
00197                         else            m_W -= ( 1 + 1.0/cos(MUC_PI/8.0) ) * RPC_DEATH_EDGE;
00198                 }
00199                 else
00200                 {
00201                         if( m_RpcId == 2 ) // center rpc
00202                                 m_W -= RPC_DEATH_EDGE * 2.0;
00203                         else // DOWN 0,1,3,4 RPC
00204                                 m_W -= RPC_DEATH_EDGE;
00205                 }
00206         }
00207 }

virtual void MucGas::SetWd  )  [protected, virtual]
 

Reimplemented from MucEntity.

void MucGas::SetWd  )  [protected, virtual]
 

Reimplemented from MucEntity.

00328 {
00329          if( m_Part == BRID )
00330                 m_Wd = m_W;
00331         else
00332         {
00333                 if( m_UpDown == SL_UP )
00334                 {
00335                         if( m_RpcId == 0 )
00336                                 m_Wd = VALUE * m_Rout - E_GP_DX - E_STRPLN_DA - RPC_SL_OFFSET;
00337                         else if( m_RpcId == 1 )
00338                                 m_Wd = 2.0* VALUE * m_Rout;
00339                         else
00340                                 m_Wd = VALUE * m_Rout - E_GP_DY - E_STRPLN_DA - RPC_SL_OFFSET;
00341                 }
00342                 else
00343                 {
00344                         switch( m_RpcId )
00345                         {
00346                                 case 0:
00347                                         m_Wd = VALUE * m_Rout - E_GP_DX - E_STRPLN_DA;
00348                                         break;
00349                                 case 1:
00350                                 case 3:
00351                                         m_Wd = VALUE * (m_Rout - m_Rin);
00352                                         break;
00353                                 case 2:
00354                                         m_Wd = 2.0 * VALUE * m_Rin;
00355                                         break;
00356                                 case 4:
00357                                         m_Wd = VALUE * m_Rout - E_GP_DY - E_STRPLN_DA;
00358                                         break;
00359                                 default: ;
00360                         }
00361                 }
00362 
00363                 // cut rpc chamber death edge
00364                 if( m_UpDown == SL_UP )
00365                 {
00366                         if( m_RpcId == 1 ) m_Wd -= RPC_DEATH_EDGE * 2.0; // center rpc
00367                         else            m_Wd -= ( 1 + 1.0/cos(MUC_PI/8.0) ) * RPC_DEATH_EDGE;
00368                 }
00369                 else
00370                 {
00371                         if( m_RpcId == 2 ) // center rpc
00372                                m_Wd -= RPC_DEATH_EDGE * 2.0;
00373                         else // DOWN 0,4 RPC
00374                                m_Wd -= RPC_DEATH_EDGE;
00375                 }
00376 
00377         } // else, endcap
00378 }

virtual void MucGas::SetWu  )  [protected, virtual]
 

Reimplemented from MucEntity.

void MucGas::SetWu  )  [protected, virtual]
 

Reimplemented from MucEntity.

00273 {
00274         if( m_Part == BRID )
00275                 m_Wu = m_W;
00276         else
00277         {       
00278                 if( m_UpDown == SL_UP )
00279                 {
00280                         if( m_RpcId == 0 )
00281                                 m_Wu = VALUE * m_Rin - E_GP_DX - E_STRPLN_DA - RPC_SL_OFFSET;
00282                         else if( m_RpcId == 1 )
00283                                 m_Wu = 2.0* VALUE * m_Rin;
00284                         else 
00285                                 m_Wu = VALUE * m_Rin - E_GP_DY - E_STRPLN_DA - RPC_SL_OFFSET;
00286                 }
00287                 else
00288                 {
00289                         switch( m_RpcId )
00290                         {
00291                                 case 0:
00292                                         m_Wu = VALUE * m_Rin - E_GP_DX - E_STRPLN_DA;
00293                                         break;
00294                                 case 1:
00295                                 case 3:
00296                                         m_Wu = 0.;              
00297                                         break;
00298                                 case 2:
00299                                         m_Wu = 2.0* VALUE * m_Rin;
00300                                         break;
00301                                 case 4:
00302                                         m_Wu = VALUE * m_Rin - E_GP_DY - E_STRPLN_DA;
00303                                         break;
00304                                 default: ;
00305                         }
00306                 }
00307 
00308                 // cut rpc chamber death edge
00309                 if( m_Wu > 0.0 )
00310                 {
00311                         if( m_UpDown == SL_UP )
00312                         {
00313                                 if( m_RpcId == 1 ) m_Wu -= RPC_DEATH_EDGE * 2.0; // center rpc
00314                                 else            m_Wu -= ( 1 + 1.0/cos(MUC_PI/8.0) ) * RPC_DEATH_EDGE;
00315                         }
00316                         else
00317                         {
00318                                 if( m_RpcId == 2 ) // center rpc
00319                                         m_Wu -= RPC_DEATH_EDGE * 2.0;
00320                                 else // DOWN 0,4 RPC
00321                                         m_W -= RPC_DEATH_EDGE;
00322                         }
00323                 }
00324         } // else, endcap
00325 }

void MucEntity::TransBesToLoc double  LocCoord[],
double  BesCoord[],
double  LocOrgInBes[],
double  Rot_z
[inherited]
 

void MucEntity::TransBesToLoc double  LocCoord[],
double  BesCoord[],
double  LocOrgInBes[],
double  Rot_z
[inherited]
 

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 }

void MucEntity::TransLocToBes double  LocCoord[],
double  BesCoord[],
double  LocOrgInBes[],
double  Rot_z
[inherited]
 

void MucEntity::TransLocToBes double  LocCoord[],
double  BesCoord[],
double  LocOrgInBes[],
double  Rot_z
[inherited]
 

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 }


Member Data Documentation

double MucEntity::m_Area [protected, inherited]
 

double MucEntity::m_H [protected, inherited]
 

int MucEntity::m_ID [protected, inherited]
 

double MucEntity::m_L [protected, inherited]
 

int MucEntity::m_Layer [protected, inherited]
 

double MucEntity::m_LocOrgInBes [protected, inherited]
 

double MucEntity::m_ObjOrgInBes [protected, inherited]
 

double MucEntity::m_ObjOrgInLoc [protected, inherited]
 

double MucEntity::m_ObjRotToMot [protected, inherited]
 

int MucEntity::m_Part [protected, inherited]
 

double MucGas::m_Phi [private]
 

double MucEntity::m_Rc [protected, inherited]
 

double MucEntity::m_Rin [protected, inherited]
 

double MucEntity::m_Rout [protected, inherited]
 

int MucEntity::m_RpcId [protected, inherited]
 

int MucEntity::m_Segment [protected, inherited]
 

double MucEntity::m_Theta [protected, inherited]
 

double MucEntity::m_Thin [protected, inherited]
 

int MucEntity::m_UpDown [protected, inherited]
 

double MucEntity::m_W [protected, inherited]
 

double MucEntity::m_Wd [protected, inherited]
 

double MucEntity::m_Wu [protected, inherited]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 16:34:37 2011 for BOSS6.5.5 by  doxygen 1.3.9.1