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

MucStripCal Class Reference

#include <MucStripCal.h>

Inheritance diagram for MucStripCal:

MucEntityCal MucEntityCal List of all members.

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)
MucStripCaloperator= (const MucStripCal &other)
MucStripCaloperator= (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

Constructor & Destructor Documentation

MucStripCal::MucStripCal int  part,
int  segment,
int  layer,
int  id
 

00018                                                                    : MucEntityCal( part, segment, layer, id )
00019 {
00020   MucStripCal::Init();
00021 
00022   //  m_MucPadChain = NULL;
00023 }

MucStripCal::MucStripCal const MucStripCal other  ) 
 

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 }

MucStripCal::~MucStripCal  )  [virtual]
 

00057 {
00058   //  delete m_MucPadChain;
00059   ;
00060 }

MucStripCal::MucStripCal int  part,
int  segment,
int  layer,
int  id
 

MucStripCal::MucStripCal const MucStripCal other  ) 
 

virtual MucStripCal::~MucStripCal  )  [virtual]
 


Member Function Documentation

double MucEntityCal::GetArea  )  [inherited]
 

double MucEntityCal::GetArea  )  [inherited]
 

00095 { return m_Area;    }

double MucStripCal::GetCenterLine  ) 
 

double MucStripCal::GetCenterLine  ) 
 

00084 {   return m_CenterLine;  }

double MucEntityCal::GetH  )  [inherited]
 

double MucEntityCal::GetH  )  [inherited]
 

00091 { return m_H;       }

double MucStripCal::GetHead  ) 
 

double MucStripCal::GetHead  ) 
 

00085 {   return m_Head;        }

int MucEntityCal::GetID  )  [inherited]
 

int MucEntityCal::GetID  )  [inherited]
 

00084 { return m_ID;      }

double MucEntityCal::GetL  )  [inherited]
 

double MucEntityCal::GetL  )  [inherited]
 

00092 { return m_L;       }

int MucEntityCal::GetLayer  )  [inherited]
 

int MucEntityCal::GetLayer  )  [inherited]
 

00083 { return m_Layer;   }

int MucStripCal::GetPadNumber  ) 
 

int MucStripCal::GetPadNumber  ) 
 

00088 {   return m_PadNumber;   }

int MucEntityCal::GetPart  )  [inherited]
 

int MucEntityCal::GetPart  )  [inherited]
 

00081 { return m_Part;    }

double MucStripCal::GetPhi  ) 
 

double MucStripCal::GetPhi  ) 
 

00087 {   return m_Phi;         }

double MucEntityCal::GetRc  )  [inherited]
 

double MucEntityCal::GetRc  )  [inherited]
 

00088 { return m_Rc;      }

double MucEntityCal::GetRin  )  [inherited]
 

double MucEntityCal::GetRin  )  [inherited]
 

00086 { return m_Rin;     }

double MucEntityCal::GetRout  )  [inherited]
 

double MucEntityCal::GetRout  )  [inherited]
 

00087 { return m_Rout;    }

int MucEntityCal::GetSegment  )  [inherited]
 

int MucEntityCal::GetSegment  )  [inherited]
 

00082 { return m_Segment; }

double MucStripCal::GetTail  ) 
 

double MucStripCal::GetTail  ) 
 

00086 {   return m_Tail;        }

double MucEntityCal::GetTheta  )  [inherited]
 

double MucEntityCal::GetTheta  )  [inherited]
 

00085 { return m_Theta;   }

double MucEntityCal::GetThin  )  [inherited]
 

double MucEntityCal::GetThin  )  [inherited]
 

00089 { return m_Thin;    } 

int MucStripCal::GetType  ) 
 

int MucStripCal::GetType  ) 
 

00083 {   return m_Type;        }

double MucEntityCal::GetW  )  [inherited]
 

double MucEntityCal::GetW  )  [inherited]
 

00090 { return m_W;       }

double MucEntityCal::GetWd  )  [inherited]
 

double MucEntityCal::GetWd  )  [inherited]
 

00094 { return m_Wd;      }

double MucEntityCal::GetWu  )  [inherited]
 

double MucEntityCal::GetWu  )  [inherited]
 

00093 { return m_Wu;      }

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

Reimplemented from MucEntityCal.

void MucStripCal::Init  )  [protected, virtual]
 

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 }

MucStripCal& MucStripCal::operator= const MucStripCal other  ) 
 

MucStripCal & MucStripCal::operator= const MucStripCal other  ) 
 

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 }

virtual void MucStripCal::SetArea  )  [protected, virtual]
 

Reimplemented from MucEntityCal.

void MucStripCal::SetArea  )  [protected, virtual]
 

Reimplemented from MucEntityCal.

00342 {
00343   m_Area = m_W*m_L/100;
00344 }

void MucStripCal::SetCenterLine  )  [protected]
 

void MucStripCal::SetCenterLine  )  [protected]
 

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 }

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

Reimplemented from MucEntityCal.

void MucStripCal::SetH  )  [protected, virtual]
 

Reimplemented from MucEntityCal.

00292 {
00293   m_H = STR_TH;
00294 }

void MucStripCal::SetHead  )  [protected]
 

void MucStripCal::SetHead  )  [protected]
 

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 }

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

Reimplemented from MucEntityCal.

void MucStripCal::SetL  )  [protected, virtual]
 

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 }

void MucStripCal::SetPadNumber  )  [protected]
 

void MucStripCal::SetPadNumber  )  [protected]
 

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 }

void MucStripCal::SetPhi  )  [protected]
 

void MucStripCal::SetPhi  )  [protected]
 

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 }

virtual void MucEntityCal::SetRc  )  [protected, virtual, inherited]
 

Reimplemented in MucBoxCal, MucGapCal, MucBoxCal, and MucGapCal.

void MucEntityCal::SetRc  )  [protected, virtual, inherited]
 

Reimplemented in MucBoxCal, MucGapCal, MucBoxCal, and MucGapCal.

00116 { m_Rc     = 0.;   }

virtual void MucEntityCal::SetRin  )  [protected, virtual, inherited]
 

Reimplemented in MucBoxCal, MucGapCal, MucBoxCal, and MucGapCal.

void MucEntityCal::SetRin  )  [protected, virtual, inherited]
 

Reimplemented in MucBoxCal, MucGapCal, MucBoxCal, and MucGapCal.

00114 { m_Rin    = 0.;   }

virtual void MucEntityCal::SetRout  )  [protected, virtual, inherited]
 

Reimplemented in MucBoxCal, MucGapCal, MucBoxCal, and MucGapCal.

void MucEntityCal::SetRout  )  [protected, virtual, inherited]
 

Reimplemented in MucBoxCal, MucGapCal, MucBoxCal, and MucGapCal.

00115 { m_Rout   = 0.;   }

void MucStripCal::SetTail  )  [protected]
 

void MucStripCal::SetTail  )  [protected]
 

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 }

virtual void MucEntityCal::SetTheta  )  [protected, virtual, inherited]
 

Reimplemented in MucBoxCal, MucGapCal, MucBoxCal, and MucGapCal.

void MucEntityCal::SetTheta  )  [protected, virtual, inherited]
 

Reimplemented in MucBoxCal, MucGapCal, MucBoxCal, and MucGapCal.

00113 { m_Theta  = 0.;   }

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

Reimplemented from MucEntityCal.

void MucStripCal::SetThin  )  [protected, virtual]
 

Reimplemented from MucEntityCal.

00224 {
00225   m_Thin = STR_TH;
00226 }

void MucStripCal::SetType  )  [protected]
 

void MucStripCal::SetType  )  [protected]
 

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 }

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

Reimplemented from MucEntityCal.

void MucStripCal::SetW  )  [protected, virtual]
 

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 }

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

Reimplemented from MucEntityCal.

void MucStripCal::SetWd  )  [protected, virtual]
 

Reimplemented from MucEntityCal.

00286 {
00287   m_Wd = m_W;
00288 }

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

Reimplemented from MucEntityCal.

void MucStripCal::SetWu  )  [protected, virtual]
 

Reimplemented from MucEntityCal.

00280 {
00281   m_Wu = m_W;
00282 }


Member Data Documentation

double MucEntityCal::m_Area [protected, inherited]
 

double MucStripCal::m_CenterLine [private]
 

double MucEntityCal::m_H [protected, inherited]
 

double MucStripCal::m_Head [private]
 

int MucEntityCal::m_ID [protected, inherited]
 

double MucEntityCal::m_L [protected, inherited]
 

int MucEntityCal::m_Layer [protected, inherited]
 

int MucStripCal::m_PadNumber [private]
 

int MucEntityCal::m_Part [protected, inherited]
 

double MucStripCal::m_Phi [private]
 

double MucEntityCal::m_Rc [protected, inherited]
 

double MucEntityCal::m_Rin [protected, inherited]
 

double MucEntityCal::m_Rout [protected, inherited]
 

int MucEntityCal::m_Segment [protected, inherited]
 

double MucStripCal::m_Tail [private]
 

double MucEntityCal::m_Theta [protected, inherited]
 

double MucEntityCal::m_Thin [protected, inherited]
 

int MucStripCal::m_Type [private]
 

double MucEntityCal::m_W [protected, inherited]
 

double MucEntityCal::m_Wd [protected, inherited]
 

double MucEntityCal::m_Wu [protected, inherited]
 


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