CGEM BOSS 6.6.5.g
BESIII Offline Software System
Loading...
Searching...
No Matches
MucStripPlane Class Reference

#include <MucStripPlane.h>

+ Inheritance diagram for MucStripPlane:

Public Member Functions

 MucStripPlane (int part, int segment, int layer, int id)
 
 MucStripPlane (const MucStripPlane &other)
 
MucStripPlaneoperator= (const MucStripPlane &other)
 
virtual ~MucStripPlane ()
 
virtual void SetAlignment (double dx, double dy, double dz)
 
MucStripGetStrip (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 ()
 
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 ()
 
virtual void SetLocOrgInBes ()
 
virtual void SetObjOrgInBes ()
 
virtual void SetObjOrgInLoc ()
 
- Protected Member Functions inherited from MucEntity
virtual void Init ()
 
virtual void SetTheta ()
 
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 ()
 
virtual void SetArea ()
 
virtual void SetLocOrgInBes ()
 
virtual void SetObjRotToMot ()
 
virtual void SetObjOrgInBes ()
 
virtual void SetObjOrgInLoc ()
 
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 19 of file MucStripPlane.h.

Constructor & Destructor Documentation

◆ MucStripPlane() [1/2]

MucStripPlane::MucStripPlane ( int  part,
int  segment,
int  layer,
int  id 
)

Definition at line 17 of file MucStripPlane.cxx.

17 : MucEntity( part, segment, layer, id )
18{
20 m_MucStrip = NULL;
21}
virtual void Init()

◆ MucStripPlane() [2/2]

MucStripPlane::MucStripPlane ( const MucStripPlane other)

Definition at line 24 of file MucStripPlane.cxx.

24 : MucEntity( other )
25{
26 m_MucStrip = other.m_MucStrip;
27}
Index other(Index i, Index j)
Definition: EvtCyclic3.cc:118

◆ ~MucStripPlane()

MucStripPlane::~MucStripPlane ( )
virtual

Definition at line 43 of file MucStripPlane.cxx.

44{
45 delete m_MucStrip;
46}

Member Function Documentation

◆ GetStrip()

MucStrip * MucStripPlane::GetStrip ( int  id)

Definition at line 70 of file MucStripPlane.cxx.

71{
72 if( m_MucStrip != NULL ) delete m_MucStrip;
73
74 return ( m_MucStrip = new MucStrip( m_Part, m_Segment, m_Layer, id ) );
75}
int m_Layer
Definition: MucEntity.h:90
int m_Segment
Definition: MucEntity.h:89
int m_Part
Definition: MucEntity.h:88

◆ Init()

void MucStripPlane::Init ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 49 of file MucStripPlane.cxx.

50{
51 SetTheta();
52 SetRin();
53 SetRout();
54 SetRc();
55
56 SetThin();
57 SetW();
58 SetWu();
59 SetWd();
60 SetH();
61 SetL();
62
66}
virtual void SetL()
virtual void SetRc()
virtual void SetRout()
virtual void SetH()
virtual void SetTheta()
virtual void SetObjOrgInLoc()
virtual void SetObjOrgInBes()
virtual void SetLocOrgInBes()
virtual void SetThin()
virtual void SetW()
virtual void SetWd()
virtual void SetWu()
virtual void SetRin()

Referenced by MucStripPlane().

◆ operator=()

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

Definition at line 30 of file MucStripPlane.cxx.

31{
32 if( this == &other)
33 return *this;
34
36
37 m_MucStrip = other.m_MucStrip;
38
39 return *this;
40}
MucEntity & operator=(const MucEntity &other)
Definition: MucEntity.cxx:92

◆ SetAlignment()

void MucStripPlane::SetAlignment ( double  dx,
double  dy,
double  dz 
)
virtual

Reimplemented from MucEntity.

Definition at line 377 of file MucStripPlane.cxx.

378{
379
380 if( m_Part == BRID || m_ID == -1 )
381 {
382 m_ObjOrgInLoc[0] += dx;
383 m_ObjOrgInLoc[1] += dy;
384 m_ObjOrgInLoc[2] += dz;
385 }
386}
double m_ObjOrgInLoc[3]
Definition: MucEntity.h:119
int m_ID
Definition: MucEntity.h:93

Referenced by MucGeoMgr::CreateStripPlane().

◆ SetH()

void MucStripPlane::SetH ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 157 of file MucStripPlane.cxx.

158{
159 if( m_Part == BRID )
160 m_H = STR_TH;
161 else
162 {
163 if( m_ID == -1 ) // temparory strip plane
164 m_H = E_AS_RMAX - E_BOX_DR - E_GP_DY - (E_STRPLN_DA + E_STRPLN_DB[(m_Layer==0)?0:1]);
165 else
166 {
167 m_H = E_AS_RMAX - E_BOX_DR - E_GP_RMIN[m_Layer] - E_STRPLN_DR - E_STRPLN_DB[(m_Layer==0)?0:1];
168 if(m_ID==1) m_H += (E_STR_DST+5.0)/sqrt(2.0);
169
170 m_H += 4*OVERLAP_WIDTH;
171 }
172 }
173}
double m_H
Definition: MucEntity.h:103

Referenced by Init().

◆ SetL()

void MucStripPlane::SetL ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 175 of file MucStripPlane.cxx.

176{
177 if( m_Part == BRID )
178 {
179 if( m_Segment == B_TOP )
180 {
181 // 0,1,2,3,7: CUT = 1; 2,4,6,8: CUT = 0;
182 if( m_ID == -1) m_L = B_BOX_LT - 2*B_BOX_DZ[SL_DOWN];
183 else if( m_ID == 2 ) m_L = B_BOX_LT - 2*B_BOX_DZ[SL_DOWN] - B_ZSTR_CUT[(m_Layer==0)?1:(m_Layer%2)];
184 else m_L = B_ZSTR_CUT[(m_Layer==0)?1:(m_Layer%2)];
185 }
186 else
187 m_L = B_BOX_LT - 2*B_BOX_DZ[SL_DOWN];
188 }
189 else
190 m_L = STR_TH;
191}
double m_L
Definition: MucEntity.h:104

Referenced by Init().

◆ SetLocOrgInBes()

void MucStripPlane::SetLocOrgInBes ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 244 of file MucStripPlane.cxx.

245{
246 double x, y, z=0;
247
248 if( m_Part == BRID )
249 {
250 x = m_Rc*cos( m_Theta );
251 y = m_Rc*sin( m_Theta );
252 z = 0.;
253 } // barrel
254 else
255 {
256 //-------------- set x and y ----------------------
257 // segment 0 as reference
258 if( m_ID == -1 )
259 {
260 x = (E_AS_RMAX - E_BOX_DR + E_GP_DX) / 2.0;
261 y = (E_AS_RMAX - E_BOX_DR + E_GP_DY) / 2.0;
262 }
263 else
264 {
265 x = (E_AS_RMAX+E_GP_DX+E_STRPLN_DA -E_BOX_DR-E_STRPLN_DB[(m_Layer==0)?0:1])/2.0;
266 y = (E_AS_RMAX+E_GP_DY+E_STRPLN_DA -E_BOX_DR-E_STRPLN_DB[(m_Layer==0)?0:1])/2.0;
267 }
268
269 // x, y signs of coordinate different by segment
270 if( m_Segment == 0 ) { ; }
271 else if ( m_Segment == 1 ) { x = -x; }
272 else if ( m_Segment == 2 ) { x = -x; y = -y; }
273 else { y = -y; }
274
275 //-------------- set z -----------------------------
276 for( int i=0; i<m_Layer+1; i++ ) z += E_AS_TH[i];
277
278 z += m_Layer * AS_GAP;
279 z += (E_AS_ZMAX - E_AS_TOTAL_TH + z) + AS_GAP/2.0;
280 z *= cos( m_Part*MUC_PI/2.0 );
281
282 }// endcap
283
284 m_LocOrgInBes[0] = x;
285 m_LocOrgInBes[1] = y;
286 m_LocOrgInBes[2] = z;
287
288 // limit cut
289 for(int i=0;i<3;i++) {
290 if( fabs(m_LocOrgInBes[i]) < ERR_LIMIT ) m_LocOrgInBes[i] = 0.;
291 }
292}
double sin(const BesAngle a)
Definition: BesAngle.h:210
double cos(const BesAngle a)
Definition: BesAngle.h:213
Double_t x[10]
double m_Theta
Definition: MucEntity.h:95
double m_LocOrgInBes[3]
Definition: MucEntity.h:109
double m_Rc
Definition: MucEntity.h:100

Referenced by Init().

◆ SetObjOrgInBes()

void MucStripPlane::SetObjOrgInBes ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 294 of file MucStripPlane.cxx.

295{
296 if( m_Part == BRID )
297 {
298 for( int i=0; i<3; i++ )
300 }
301 else // endcap
302 {
303 //------------- set x and y --------------------
304 // segment 0 as reference
305 double x, y;
306 if( m_ID == -1 )
307 {
308 x = E_GP_DX + E_STRPLN_DA + m_W/2.0;
309 y = E_GP_DY + E_STRPLN_DA + m_H/2.0;
310 }
311 else if( m_ID == 0 )
312 {
313 x = m_Rc;
314 y = ( m_Rc * tan( m_Theta ) + E_GP_DY + E_STRPLN_DA ) / 2.0;
315 }
316 else if ( m_ID ==1 )
317 {
318 x = m_Rc * cos( m_Theta );
319 y = m_Rc * sin( m_Theta );
320 }
321 else // m_ID == 2
322 {
323 x = ( m_Rc / tan( m_Theta ) + E_GP_DX + E_STRPLN_DA ) / 2.0;
324 y = m_Rc;
325 }
326
327 // x, y signs of coordinate different by segment
328 if( m_Segment == 0 ) { ; }
329 else if ( m_Segment == 1 ) { x = -x; }
330 else if ( m_Segment == 2 ) { x = -x; y = -y; }
331 else { y = -y; }
332
333 m_ObjOrgInBes[0] = x;
334 m_ObjOrgInBes[1] = y;
335
336 // limit cut
337 for( int i=0; i<2; i++ ) {
338 if( fabs(m_ObjOrgInBes[i]) < ERR_LIMIT ) m_ObjOrgInBes[i] = 0.;
339 }
340
341 // ---------------- set z ----------------------
343
344 } // else, endcap
345}
double tan(const BesAngle a)
Definition: BesAngle.h:216
double m_W
Definition: MucEntity.h:102
double m_ObjOrgInBes[3]
Definition: MucEntity.h:118

Referenced by Init().

◆ SetObjOrgInLoc()

void MucStripPlane::SetObjOrgInLoc ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 347 of file MucStripPlane.cxx.

348{
349 double x, y, z;
350 if( m_Part == BRID )
351 {
352 if( m_Segment == B_TOP && m_ID !=-1 )
353 {
354 // x
355 if(m_ID == 2) x = 0.0;
356 else if(m_ID == 0) x = (B_PHISTR_CUT + m_W)/2.0;
357 else x = -(B_PHISTR_CUT + m_W)/2.0;
358
359 // y
360 y = 0.0;
361
362 // z
363 if(m_ID == 2) z = - B_ZSTR_CUT[(m_Layer==0)?1:(m_Layer%2)]/2.0;
364 else z = B_BOX_LT/2.0 - B_BOX_DZ[SL_DOWN] - B_ZSTR_CUT[(m_Layer==0)?1:(m_Layer%2)]/2;
365
366 m_ObjOrgInLoc[0] = x;
367 m_ObjOrgInLoc[1] = y;
368 m_ObjOrgInLoc[2] = z;
369 }
370 else
371 { for(int i=0; i<3; i++) m_ObjOrgInLoc[i] = 0.; }
372 }
373 else
374 for(int i=0; i<3; i++) m_ObjOrgInLoc[i] = m_ObjOrgInBes[i] - m_LocOrgInBes[i];
375}

Referenced by Init().

◆ SetRc()

void MucStripPlane::SetRc ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 112 of file MucStripPlane.cxx.

113{
114 if( m_Part == BRID )
115 m_Rc = B_AS_RMIN[m_Layer] - AS_GAP/2.0;
116 else
117 {
118 if( m_ID == -1 )
119 m_Rc = sqrt(2.0) * ( E_AS_RMAX - E_BOX_DR - E_STRPLN_DB[(m_Layer==0)?0:1] ) / 2.0;
120 else
121 m_Rc = (m_Rin + m_Rout)/2.0;
122 }
123}
double m_Rin
Definition: MucEntity.h:98
double m_Rout
Definition: MucEntity.h:99

Referenced by Init().

◆ SetRin()

void MucStripPlane::SetRin ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 91 of file MucStripPlane.cxx.

92{
93 if( m_Part == BRID )
94 m_Rin = B_AS_RMIN[m_Layer] - ( AS_GAP + STR_TH ) / 2.0;
95 else
96 {
97 if( m_ID == -1 )
98 m_Rin = 0.;
99 else
100 m_Rin = E_GP_RMIN[m_Layer] + E_STRPLN_DR;
101 }
102}

Referenced by Init().

◆ SetRout()

void MucStripPlane::SetRout ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 104 of file MucStripPlane.cxx.

105{
106 if( m_Part == BRID )
107 m_Rout = B_AS_RMIN[m_Layer] - ( AS_GAP - STR_TH ) / 2.0;
108 else
109 m_Rout = E_AS_RMAX - E_BOX_DR - E_STRPLN_DB[(m_Layer==0)?0:1];
110}

Referenced by Init().

◆ SetTheta()

void MucStripPlane::SetTheta ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 78 of file MucStripPlane.cxx.

79{
80 if( m_Part == BRID )
81 m_Theta = m_Segment * ( MUC_PI/4.0 );
82 else
83 {
84 if( m_ID == -1 )
85 m_Theta = ( 2*m_Segment + 1 ) * ( MUC_PI/4.0 );
86 else
87 m_Theta = ( MUC_PI/4.0 ) + ( m_ID - 1) * MUC_PI / 8.0 ;
88 }
89}

Referenced by Init().

◆ SetThin()

void MucStripPlane::SetThin ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 125 of file MucStripPlane.cxx.

126{
127 m_Thin = STR_TH;
128}
double m_Thin
Definition: MucEntity.h:101

Referenced by Init().

◆ SetW()

void MucStripPlane::SetW ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 130 of file MucStripPlane.cxx.

131{
132 double offset = 0;
133 if( (m_Layer+1)%2 == 0 ) offset = 2*B_BOX_DZ[1]; // even layers
134 else offset = 2*B_BOX_DT[1]; // odd layers
135
136 if( m_Part == BRID)
137 {
138 if( m_Segment == B_TOP )
139 {
140 if(m_ID == -1 || m_ID == 2)
141 m_W = B_BOX_WT[m_Layer] - offset;
142 else
143 m_W = (B_BOX_WT[m_Layer] - offset - B_PHISTR_CUT)/2.0;
144 }
145 else
146 m_W = B_BOX_WT[m_Layer] - offset;
147 }
148 else
149 {
150 if( m_ID == -1 ) // temparory strip plane
151 m_W = E_AS_RMAX - E_BOX_DR - E_GP_DX - (E_STRPLN_DA + E_STRPLN_DB[(m_Layer==0)?0:1]);
152 else
153 m_W = 0.;
154 }
155}

Referenced by Init().

◆ SetWd()

void MucStripPlane::SetWd ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 216 of file MucStripPlane.cxx.

217{
218 if( m_Part == BRID )
219 m_Wd = m_W;
220 else
221 {
222 if( m_ID == -1 ) // temparory strip plane
223 m_Wd = m_W;
224 else if( m_ID == 1 ) // center panel
225 {
226 m_Wd = 2 * VALUE * m_Rout;
227 // zoom in with a small dimension for covering strips
228 m_Wd += VALUE*(E_STR_DST+5.0)/sqrt(2.0);
229 }
230 else if( m_ID == 0 )
231 m_Wd = VALUE * m_Rout - E_GP_DY - E_STRPLN_DA;
232 else
233 m_Wd = VALUE * m_Rout - E_GP_DX - E_STRPLN_DA;
234
235 // for "AND" operation of panels
236 //m_Wd += (VALUE + 1.0)*OVERLAP_WIDTH;
237 m_Wd += 4*OVERLAP_WIDTH;
238 }
239}
double m_Wd
Definition: MucEntity.h:106

Referenced by Init().

◆ SetWu()

void MucStripPlane::SetWu ( )
protectedvirtual

Reimplemented from MucEntity.

Definition at line 193 of file MucStripPlane.cxx.

194{
195 if( m_Part == BRID )
196 m_Wu = m_W;
197 else
198 {
199 if( m_ID == -1 ) // temparory strip plane
200 m_Wu = m_W;
201 else if( m_ID == 1 ) // center panel
202 {
203 m_Wu = 2 * VALUE * m_Rin ;
204 m_Wu -= VALUE*(E_STR_DST+5.0)/sqrt(2.0);
205 }
206 else if( m_ID == 0 )
207 m_Wu = VALUE * m_Rin - E_GP_DY - E_STRPLN_DA;
208 else
209 m_Wu = VALUE * m_Rin - E_GP_DX - E_STRPLN_DA;
210
211 //m_Wu += (1-VALUE)*OVERLAP_WIDTH;
212 //m_Wu += 2*OVERLAP_WIDTH;
213 }
214}
double m_Wu
Definition: MucEntity.h:105

Referenced by Init().


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