BmnRoot
Loading...
Searching...
No Matches
BmnGemStripStation_RunSpring2017.cxx
Go to the documentation of this file.
2
4 Double_t xpos_station, Double_t ypos_station, Double_t zpos_station,
5 Double_t beamradius, BmnGemStripConfiguration::GEM_CONFIG config) {
6
7 //All linear values must be entered in units of cm
8
9 fCurrentConfig = config;
10
11 StationNumber = iStation;
12
13 //Station shift position
14 XPosition = xpos_station;
15 YPosition = ypos_station;
16 ZPosition = zpos_station;
17
18 BeamHoleRadius = beamradius;
19
20
21 //Parameters for each station
22 //ZSizeModuleWithFrames : GEM thickness (frames+sensitive)
23 //ZSizeModule : sensitive volume thickness
24 //XSize : x-size of the station
25 //YSize : y-size of the station
26 //ZSize : z-size of the station
27
28 switch (iStation) {
29
30 case 0: //one plane 66x41
31 LowerLayerStripAngle = 0.0;
32 UpperLayerStripAngle = +15.0;
33 LowerLayerPitch = 0.08;
34 UpperLayerPitch = 0.08;
35 EDriftDirection = ForwardZAxisEDrift;
36 NModules = 1; //Number of modules in the station
37 break;
38
39 case 1: //one plane 66x41
40 LowerLayerStripAngle = 0.0;
41 UpperLayerStripAngle = -15.0;
42 LowerLayerPitch = 0.08;
43 UpperLayerPitch = 0.08;
44 EDriftDirection = BackwardZAxisEDrift;
45 NModules = 1; //Number of modules in the station
46 break;
47
48 case 2: //one plane 66x41
49 LowerLayerStripAngle = 0.0;
50 UpperLayerStripAngle = +15.0;
51 LowerLayerPitch = 0.08;
52 UpperLayerPitch = 0.08;
53 EDriftDirection = ForwardZAxisEDrift;
54 NModules = 1; //Number of modules in the station
55 break;
56
57 case 3: //two plane 66x41
58 LowerLayerStripAngle = 0.0;
59 UpperLayerStripAngle = -15.0;
60 LowerLayerPitch = 0.08;
61 UpperLayerPitch = 0.08;
62 EDriftDirection = BackwardZAxisEDrift;
63 NModules = 2; //Number of modules in the station
64 break;
65
66 case 4: //one plane 163x45
67 LowerLayerStripAngle = 0.0;
68 UpperLayerStripAngle = +15.0;
69 LowerLayerPitch = 0.08;
70 UpperLayerPitch = 0.08;
71 EDriftDirection = ForwardZAxisEDrift;
72 NModules = 2; //Number of modules in the station
73 break;
74
75 case 5: //one plane 163x45
76 LowerLayerStripAngle = 0.0;
77 UpperLayerStripAngle = -15.0;
78 LowerLayerPitch = 0.08;
79 UpperLayerPitch = 0.08;
80 EDriftDirection = BackwardZAxisEDrift;
81 NModules = 2; //Number of modules in the station
82 break;
83 }
84
85 //Planes SIZES
86
87 //station 0-3 (plane 66x41)
88 XModuleSize_Plane66x41 = 66.0;
89 YModuleSize_Plane66x41 = 41.0;
90
91 XHotZoneSize_Plane66x41 = 15.0;
92 YHotZoneSize_Plane66x41 = 10.0;
93
94 //station 4-5 (plane 163x45)
95 XModuleSize_Plane163x45 = 163.2*0.5;
96 YModuleSize_Plane163x45 = 45.0;
97
98 XRectHotZoneSize_Plane163x45 = 40.0;
99 YRectHotZoneSize_Plane163x45 = 15.0;
100
101 XSlopeHotZoneSize_Plane163x45[0] = 37.99;
102 XSlopeHotZoneSize_Plane163x45[1] = 42.01;
103
104 YSlopeHotZoneSize_Plane163x45 = 15.0;
105
106 //Module shifts ------------------------------------------------------------
107 XShiftOfModules = new Double_t[NModules];
108 YShiftOfModules = new Double_t[NModules];
109 ZShiftOfModules = new Double_t[NModules];
110
111 switch(fCurrentConfig) {
113 for(Int_t iModule = 0; iModule < NModules; ++iModule) {
114 XShiftOfModules[iModule] = -BmnGemStationPositions_RunSpring2017::XModuleShifts[iStation][iModule]; //inverted : (bm@n x-coord -> classical x-coord)
117 }
118 break;
119
120 default:
121 for(Int_t iModule = 0; iModule < NModules; ++iModule) {
122 XShiftOfModules[iModule] = -BmnGemStationPositions_RunSpring2017::XModuleShifts[iStation][iModule]; //inverted : (bm@n x-coord -> classical x-coord)
125 }
126 }
127 //--------------------------------------------------------------------------
128
129 //Assembling a station -----------------------------------------------------
130
131 if(StationNumber >= 0 && StationNumber <= 2) {
132 BuildModules_One66x41Plane();
133 }
134
135 if(StationNumber == 3) {
136 BuildModules_Two66x41Plane();
137 }
138
139 if(StationNumber >= 4 && StationNumber <= 5) {
140 BuildModules_One163x45Plane();
141 }
142 //end assembling the station -----------------------------------------------
143
144 //define station borders and sizes
146}
147
151//------------------------------------------------------------------------------
152
153void BmnGemStripStation_RunSpring2017::BuildModules_One66x41Plane() {
154
156
157 Double_t DriftGapThickness = 0.3;
158 Double_t FirstTransferGapThickness = 0.25;
159 Double_t SecondTransferGapThickness = 0.2;
160 Double_t InductionGapThickness = 0.15;
161
162 //module
163 Modules[0] = new BmnGemStripModule(ZPosition+ZShiftOfModules[0], EDriftDirection,
164 DriftGapThickness, FirstTransferGapThickness,
165 SecondTransferGapThickness, InductionGapThickness);
166
167 //zone 0 (big) -------------------------------------------------------------
168
169 //lower strip layer (zone 0) -------------------------------------------
170 BmnGemStripLayer lower_layer_zone0(0, LowerStripLayer,
171 XModuleSize_Plane66x41, YModuleSize_Plane66x41,
172 XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5, YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5,
173 LowerLayerPitch, LowerLayerStripAngle);
174
175 if(UpperLayerStripAngle >= 0.0) {
176 lower_layer_zone0.SetStripNumberingOrder(LeftToRight);
177 lower_layer_zone0.SetStripNumberingBorders(LeftTop, RightBottom);
178 }
179 else {
180 lower_layer_zone0.SetStripNumberingOrder(LeftToRight);
181 lower_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
182 }
183
184 //dead zone for layers in zone 0
185 const Int_t NPoints_DeadZone_zone0 = 4;
186 Double_t XPoints_DeadZone_zone0[NPoints_DeadZone_zone0];
187 Double_t YPoints_DeadZone_zone0[NPoints_DeadZone_zone0];
188
189 if(UpperLayerStripAngle >= 0.0) {
190 XPoints_DeadZone_zone0[0] = XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5;
191 XPoints_DeadZone_zone0[1] = XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5;
192 XPoints_DeadZone_zone0[2] = XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5 + XHotZoneSize_Plane66x41;
193 XPoints_DeadZone_zone0[3] = XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5 + XHotZoneSize_Plane66x41;
194
195 YPoints_DeadZone_zone0[0] = YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5;
196 YPoints_DeadZone_zone0[1] = YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5 + YHotZoneSize_Plane66x41;
197 YPoints_DeadZone_zone0[2] = YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5 + YHotZoneSize_Plane66x41;
198 YPoints_DeadZone_zone0[3] = YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5;
199 }
200 else {
201 XPoints_DeadZone_zone0[0] = XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5;
202 XPoints_DeadZone_zone0[1] = XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5;
203 XPoints_DeadZone_zone0[2] = XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5 + XHotZoneSize_Plane66x41;
204 XPoints_DeadZone_zone0[3] = XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5 + XHotZoneSize_Plane66x41;
205
206 YPoints_DeadZone_zone0[0] = YShiftOfModules[0]+YPosition+YModuleSize_Plane66x41*0.5 - YHotZoneSize_Plane66x41;
207 YPoints_DeadZone_zone0[1] = YShiftOfModules[0]+YPosition+YModuleSize_Plane66x41*0.5;
208 YPoints_DeadZone_zone0[2] = YShiftOfModules[0]+YPosition+YModuleSize_Plane66x41*0.5;
209 YPoints_DeadZone_zone0[3] = YShiftOfModules[0]+YPosition+YModuleSize_Plane66x41*0.5 - YHotZoneSize_Plane66x41;
210 }
211
212 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
213 //----------------------------------------------------------------------
214
215 //upper strip layer (zone 0) -------------------------------------------
216 BmnGemStripLayer upper_layer_zone0(0, UpperStripLayer,
217 XModuleSize_Plane66x41, YModuleSize_Plane66x41,
218 XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5, YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5,
219 UpperLayerPitch, UpperLayerStripAngle);
220
221 if(UpperLayerStripAngle >= 0.0) {
222 upper_layer_zone0.SetStripNumberingOrder(LeftToRight);
223 upper_layer_zone0.SetStripNumberingBorders(LeftTop, RightBottom);
224 }
225 else {
226 upper_layer_zone0.SetStripNumberingOrder(LeftToRight);
227 upper_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
228 }
229
230 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
231 //----------------------------------------------------------------------
232
233 //--------------------------------------------------------------------------
234
235 //zone 1 (hot) -------------------------------------------------------------
236
237 BmnGemStripLayer lower_layer_zone1;
238 BmnGemStripLayer upper_layer_zone1;
239
240 if(UpperLayerStripAngle >= 0.0) {
241 //lower strip layer (zone 1) -------------------------------------------
242 lower_layer_zone1 = BmnGemStripLayer(1, LowerStripLayer,
243 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
244 XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5, YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5,
245 LowerLayerPitch, LowerLayerStripAngle);
246
247 lower_layer_zone1.SetStripNumberingOrder(LeftToRight);
248 lower_layer_zone1.SetStripNumberingBorders(LeftTop, RightBottom);
249 //----------------------------------------------------------------------
250
251 //upper strip layer (zone 1) -------------------------------------------
252 upper_layer_zone1 = BmnGemStripLayer(1, UpperStripLayer,
253 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
254 XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5, YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5,
255 UpperLayerPitch, UpperLayerStripAngle);
256
257 upper_layer_zone1.SetStripNumberingOrder(LeftToRight);
258 upper_layer_zone1.SetStripNumberingBorders(LeftTop, RightBottom);
259 //----------------------------------------------------------------------
260 }
261 else {
262 //lower strip layer (zone 1) -------------------------------------------
263 lower_layer_zone1 = BmnGemStripLayer(1, LowerStripLayer,
264 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
265 XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5, YShiftOfModules[0]+YPosition+YModuleSize_Plane66x41*0.5-YHotZoneSize_Plane66x41,
266 LowerLayerPitch, LowerLayerStripAngle);
267
268 lower_layer_zone1.SetStripNumberingOrder(LeftToRight);
269 lower_layer_zone1.SetStripNumberingBorders(LeftTop, RightBottom);
270 //----------------------------------------------------------------------
271
272 //upper strip layer (zone 1) -------------------------------------------
273 upper_layer_zone1 = BmnGemStripLayer(1, UpperStripLayer,
274 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
275 XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5, YShiftOfModules[0]+YPosition+YModuleSize_Plane66x41*0.5-YHotZoneSize_Plane66x41,
276 UpperLayerPitch, UpperLayerStripAngle);
277
278 upper_layer_zone1.SetStripNumberingOrder(LeftToRight);
279 upper_layer_zone1.SetStripNumberingBorders(LeftBottom, RightTop);
280 //----------------------------------------------------------------------
281 }
282 //--------------------------------------------------------------------------
283
284 Modules[0]->AddStripLayer(lower_layer_zone0);
285 Modules[0]->AddStripLayer(upper_layer_zone0);
286 Modules[0]->AddStripLayer(lower_layer_zone1);
287 Modules[0]->AddStripLayer(upper_layer_zone1);
288
289 return;
290}
291
292void BmnGemStripStation_RunSpring2017::BuildModules_Two66x41Plane() {
293
295
296 //module 0 (left)
297 {
298 Double_t DriftGapThickness = 0.5;
299 Double_t FirstTransferGapThickness = 0.25;
300 Double_t SecondTransferGapThickness = 0.2;
301 Double_t InductionGapThickness = 0.15;
302
303 Modules[0] = new BmnGemStripModule(ZPosition+ZShiftOfModules[0], EDriftDirection,
304 DriftGapThickness, FirstTransferGapThickness,
305 SecondTransferGapThickness, InductionGapThickness);
306
307 //zone 0 (big) -------------------------------------------------------------
308
309 //lower strip layer (zone 0) -------------------------------------------
310 BmnGemStripLayer lower_layer_zone0(0, LowerStripLayer,
311 XModuleSize_Plane66x41, YModuleSize_Plane66x41,
312 XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41, YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5,
313 LowerLayerPitch, LowerLayerStripAngle);
314
315 lower_layer_zone0.SetStripNumberingOrder(RightToLeft);
316 lower_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
317
318
319 //dead zone for layers in zone 0
320 const Int_t NPoints_DeadZone_zone0 = 4;
321 Double_t XPoints_DeadZone_zone0[NPoints_DeadZone_zone0];
322 Double_t YPoints_DeadZone_zone0[NPoints_DeadZone_zone0];
323
324
325 XPoints_DeadZone_zone0[0] = XShiftOfModules[0]+XPosition-0.0-XHotZoneSize_Plane66x41;
326 XPoints_DeadZone_zone0[1] = XShiftOfModules[0]+XPosition-0.0-XHotZoneSize_Plane66x41;
327 XPoints_DeadZone_zone0[2] = XShiftOfModules[0]+XPosition-0.0;
328 XPoints_DeadZone_zone0[3] = XShiftOfModules[0]+XPosition-0.0;
329
330 YPoints_DeadZone_zone0[0] = YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5;
331 YPoints_DeadZone_zone0[1] = YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5 + YHotZoneSize_Plane66x41;
332 YPoints_DeadZone_zone0[2] = YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5 + YHotZoneSize_Plane66x41;
333 YPoints_DeadZone_zone0[3] = YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5;
334
335
336 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
337 //----------------------------------------------------------------------
338
339 //upper strip layer (zone 0) -------------------------------------------
340 BmnGemStripLayer upper_layer_zone0(0, UpperStripLayer,
341 XModuleSize_Plane66x41, YModuleSize_Plane66x41,
342 XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41, YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5,
343 UpperLayerPitch, UpperLayerStripAngle);
344
345 upper_layer_zone0.SetStripNumberingOrder(RightToLeft);
346 upper_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
347
348
349 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
350 //----------------------------------------------------------------------
351
352 //--------------------------------------------------------------------------
353
354 //zone 1 (hot) -------------------------------------------------------------
355
356 BmnGemStripLayer lower_layer_zone1;
357 BmnGemStripLayer upper_layer_zone1;
358
359 //lower strip layer (zone 1) -------------------------------------------
360 lower_layer_zone1 = BmnGemStripLayer(1, LowerStripLayer,
361 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
362 XShiftOfModules[0]+XPosition-XHotZoneSize_Plane66x41, YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5,
363 LowerLayerPitch, LowerLayerStripAngle);
364
365 lower_layer_zone1.SetStripNumberingOrder(RightToLeft);
366 lower_layer_zone1.SetStripNumberingBorders(LeftBottom, RightTop);
367 //----------------------------------------------------------------------
368
369 //upper strip layer (zone 1) -------------------------------------------
370 upper_layer_zone1 = BmnGemStripLayer(1, UpperStripLayer,
371 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
372 XShiftOfModules[0]+XPosition-XHotZoneSize_Plane66x41, YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5,
373 UpperLayerPitch, UpperLayerStripAngle);
374
375 upper_layer_zone1.SetStripNumberingOrder(RightToLeft);
376 upper_layer_zone1.SetStripNumberingBorders(LeftBottom, RightTop);
377 //----------------------------------------------------------------------
378
379 //--------------------------------------------------------------------------
380
381 Modules[0]->AddStripLayer(lower_layer_zone0);
382 Modules[0]->AddStripLayer(upper_layer_zone0);
383 Modules[0]->AddStripLayer(lower_layer_zone1);
384 Modules[0]->AddStripLayer(upper_layer_zone1);
385 }
386 //--------------------------------------------------------------------------
387
388
389 //module 1 (right)
390 {
391 Double_t DriftGapThickness = 0.3;
392 Double_t FirstTransferGapThickness = 0.25;
393 Double_t SecondTransferGapThickness = 0.2;
394 Double_t InductionGapThickness = 0.15;
395
396 Modules[1] = new BmnGemStripModule(ZPosition+ZShiftOfModules[1], EDriftDirection,
397 DriftGapThickness, FirstTransferGapThickness,
398 SecondTransferGapThickness, InductionGapThickness);
399
400 //zone 0 (big) -------------------------------------------------------------
401
402 //lower strip layer (zone 0) -------------------------------------------
403 BmnGemStripLayer lower_layer_zone0(0, LowerStripLayer,
404 XModuleSize_Plane66x41, YModuleSize_Plane66x41,
405 XShiftOfModules[1]+XPosition+0.0, YShiftOfModules[1]+YPosition-YModuleSize_Plane66x41*0.5,
406 LowerLayerPitch, LowerLayerStripAngle);
407
408 lower_layer_zone0.SetStripNumberingOrder(LeftToRight);
409 lower_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
410
411
412 //dead zone for layers in zone 0
413 const Int_t NPoints_DeadZone_zone0 = 4;
414 Double_t XPoints_DeadZone_zone0[NPoints_DeadZone_zone0];
415 Double_t YPoints_DeadZone_zone0[NPoints_DeadZone_zone0];
416
417
418 XPoints_DeadZone_zone0[0] = XShiftOfModules[1]+XPosition+0.0;
419 XPoints_DeadZone_zone0[1] = XShiftOfModules[1]+XPosition+0.0;
420 XPoints_DeadZone_zone0[2] = XShiftOfModules[1]+XPosition+0.0+XHotZoneSize_Plane66x41;
421 XPoints_DeadZone_zone0[3] = XShiftOfModules[1]+XPosition+0.0+XHotZoneSize_Plane66x41;
422
423 YPoints_DeadZone_zone0[0] = YShiftOfModules[1]+YPosition+YModuleSize_Plane66x41*0.5 - YHotZoneSize_Plane66x41;
424 YPoints_DeadZone_zone0[1] = YShiftOfModules[1]+YPosition+YModuleSize_Plane66x41*0.5;
425 YPoints_DeadZone_zone0[2] = YShiftOfModules[1]+YPosition+YModuleSize_Plane66x41*0.5;
426 YPoints_DeadZone_zone0[3] = YShiftOfModules[1]+YPosition+YModuleSize_Plane66x41*0.5 - YHotZoneSize_Plane66x41;
427
428
429 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
430 //----------------------------------------------------------------------
431
432 //upper strip layer (zone 0) -------------------------------------------
433 BmnGemStripLayer upper_layer_zone0(0, UpperStripLayer,
434 XModuleSize_Plane66x41, YModuleSize_Plane66x41,
435 XShiftOfModules[1]+XPosition+0.0, YShiftOfModules[1]+YPosition-YModuleSize_Plane66x41*0.5,
436 UpperLayerPitch, UpperLayerStripAngle);
437
438 upper_layer_zone0.SetStripNumberingOrder(LeftToRight);
439 upper_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
440
441
442 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
443 //----------------------------------------------------------------------
444
445 //--------------------------------------------------------------------------
446
447 //zone 1 (hot) -------------------------------------------------------------
448
449 BmnGemStripLayer lower_layer_zone1;
450 BmnGemStripLayer upper_layer_zone1;
451
452 //lower strip layer (zone 1) -------------------------------------------
453 lower_layer_zone1 = BmnGemStripLayer(1, LowerStripLayer,
454 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
455 XShiftOfModules[1]+XPosition+0.0, YShiftOfModules[1]+YPosition+YModuleSize_Plane66x41*0.5-YHotZoneSize_Plane66x41,
456 LowerLayerPitch, LowerLayerStripAngle);
457
458 lower_layer_zone1.SetStripNumberingOrder(LeftToRight);
459 lower_layer_zone1.SetStripNumberingBorders(LeftBottom, RightTop);
460 //----------------------------------------------------------------------
461
462 //upper strip layer (zone 1) -------------------------------------------
463 upper_layer_zone1 = BmnGemStripLayer(1, UpperStripLayer,
464 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
465 XShiftOfModules[1]+XPosition+0.0, YShiftOfModules[1]+YPosition+YModuleSize_Plane66x41*0.5-YHotZoneSize_Plane66x41,
466 UpperLayerPitch, UpperLayerStripAngle);
467
468 upper_layer_zone1.SetStripNumberingOrder(LeftToRight);
469 upper_layer_zone1.SetStripNumberingBorders(LeftBottom, RightTop);
470 //----------------------------------------------------------------------
471
472 //--------------------------------------------------------------------------
473
474 Modules[1]->AddStripLayer(lower_layer_zone0);
475 Modules[1]->AddStripLayer(upper_layer_zone0);
476 Modules[1]->AddStripLayer(lower_layer_zone1);
477 Modules[1]->AddStripLayer(upper_layer_zone1);
478 }
479
480 return;
481}
482
483void BmnGemStripStation_RunSpring2017::BuildModules_One163x45Plane() {
485
486
487//module 0 (left) --------------------------------------------------------------
488 {
489 Double_t DriftGapThickness = 0.3;
490 Double_t FirstTransferGapThickness = 0.25;
491 Double_t SecondTransferGapThickness = 0.2;
492 Double_t InductionGapThickness = 0.15;
493
494 Modules[0] = new BmnGemStripModule(ZPosition+ZShiftOfModules[0], EDriftDirection,
495 DriftGapThickness, FirstTransferGapThickness,
496 SecondTransferGapThickness, InductionGapThickness);
497
498 //zone 0 (big) ---------------------------------------------------------
499
500 //lower strip layer (zone 0) -------------------------------------------
501 BmnGemStripLayer lower_layer_zone0(0, LowerStripLayer,
502 XModuleSize_Plane163x45, YModuleSize_Plane163x45,
503 XShiftOfModules[0]+XPosition-XModuleSize_Plane163x45, YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5,
504 LowerLayerPitch, LowerLayerStripAngle);
505
506 if(UpperLayerStripAngle >= 0.0) {
507 lower_layer_zone0.SetStripNumberingOrder(LeftToRight);
508 lower_layer_zone0.SetStripNumberingBorders(LeftTop, RightBottom);
509 }
510 else {
511 lower_layer_zone0.SetStripNumberingOrder(RightToLeft);
512 lower_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
513 }
514
515
516 //dead zone for lower layer in zone 0
517 const Int_t NPoints_DeadZone_lower_zone0 = 4;
518 Double_t XPoints_DeadZone_lower_zone0[NPoints_DeadZone_lower_zone0];
519 Double_t YPoints_DeadZone_lower_zone0[NPoints_DeadZone_lower_zone0];
520
521 XPoints_DeadZone_lower_zone0[0] = XShiftOfModules[0]+XPosition-XRectHotZoneSize_Plane163x45;
522 XPoints_DeadZone_lower_zone0[1] = XShiftOfModules[0]+XPosition-XRectHotZoneSize_Plane163x45;
523 XPoints_DeadZone_lower_zone0[2] = XShiftOfModules[0]+XPosition+0.0;
524 XPoints_DeadZone_lower_zone0[3] = XShiftOfModules[0]+XPosition+0.0;
525
526 YPoints_DeadZone_lower_zone0[0] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
527 YPoints_DeadZone_lower_zone0[1] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5 + YRectHotZoneSize_Plane163x45;
528 YPoints_DeadZone_lower_zone0[2] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5 + YRectHotZoneSize_Plane163x45;
529 YPoints_DeadZone_lower_zone0[3] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
530
531 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_lower_zone0, XPoints_DeadZone_lower_zone0, YPoints_DeadZone_lower_zone0);
532 //----------------------------------------------------------------------
533
534 //upper strip layer (zone 0) -------------------------------------------
535 BmnGemStripLayer upper_layer_zone0(0, UpperStripLayer,
536 XModuleSize_Plane163x45, YModuleSize_Plane163x45,
537 XShiftOfModules[0]+XPosition-XModuleSize_Plane163x45, YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5,
538 UpperLayerPitch, UpperLayerStripAngle);
539
540 if(UpperLayerStripAngle >= 0.0) {
541 upper_layer_zone0.SetStripNumberingOrder(LeftToRight);
542 upper_layer_zone0.SetStripNumberingBorders(LeftTop, RightBottom);
543 }
544 else {
545 upper_layer_zone0.SetStripNumberingOrder(RightToLeft);
546 upper_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
547 }
548
549 //dead zone for upper layer in zone 0
550 const Int_t NPoints_DeadZone_upper_zone0 = 4;
551 Double_t XPoints_DeadZone_upper_zone0[NPoints_DeadZone_upper_zone0];
552 Double_t YPoints_DeadZone_upper_zone0[NPoints_DeadZone_upper_zone0];
553
554 if(UpperLayerStripAngle >= 0.0) {
555 XPoints_DeadZone_upper_zone0[0] = XShiftOfModules[0]+XPosition-XSlopeHotZoneSize_Plane163x45[1];
556 XPoints_DeadZone_upper_zone0[1] = XShiftOfModules[0]+XPosition-XSlopeHotZoneSize_Plane163x45[0];
557 XPoints_DeadZone_upper_zone0[2] = XShiftOfModules[0]+XPosition+0.0;
558 XPoints_DeadZone_upper_zone0[3] = XShiftOfModules[0]+XPosition+0.0;
559
560 YPoints_DeadZone_upper_zone0[0] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
561 YPoints_DeadZone_upper_zone0[1] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
562 YPoints_DeadZone_upper_zone0[2] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
563 YPoints_DeadZone_upper_zone0[3] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
564 }
565 else {
566 XPoints_DeadZone_upper_zone0[0] = XShiftOfModules[0]+XPosition-XSlopeHotZoneSize_Plane163x45[0];
567 XPoints_DeadZone_upper_zone0[1] = XShiftOfModules[0]+XPosition-XSlopeHotZoneSize_Plane163x45[1];
568 XPoints_DeadZone_upper_zone0[2] = XShiftOfModules[0]+XPosition+0.0;
569 XPoints_DeadZone_upper_zone0[3] = XShiftOfModules[0]+XPosition+0.0;
570
571 YPoints_DeadZone_upper_zone0[0] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
572 YPoints_DeadZone_upper_zone0[1] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
573 YPoints_DeadZone_upper_zone0[2] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
574 YPoints_DeadZone_upper_zone0[3] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
575 }
576
577
578
579 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_upper_zone0, XPoints_DeadZone_upper_zone0, YPoints_DeadZone_upper_zone0);
580 //----------------------------------------------------------------------
581
582 //lower strip layer (zone 1) -------------------------------------------
583 BmnGemStripLayer lower_layer_zone1(1, LowerStripLayer,
584 XRectHotZoneSize_Plane163x45, YRectHotZoneSize_Plane163x45,
585 XShiftOfModules[0]+XPosition-XRectHotZoneSize_Plane163x45, YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5,
586 LowerLayerPitch, LowerLayerStripAngle);
587
588 if(UpperLayerStripAngle >= 0.0) {
589 lower_layer_zone1.SetStripNumberingOrder(LeftToRight);
590 lower_layer_zone1.SetStripNumberingBorders(LeftTop, RightBottom);
591 }
592 else {
593 lower_layer_zone1.SetStripNumberingOrder(RightToLeft);
594 lower_layer_zone1.SetStripNumberingBorders(LeftBottom, RightTop);
595 }
596
597
598 //dead zone for lower layer in zone 1 (hole)
599 const Int_t NPoints_DeadZone_lower_zone1 = 4;
600 Double_t XPoints_DeadZone_lower_zone1[NPoints_DeadZone_lower_zone1];
601 Double_t YPoints_DeadZone_lower_zone1[NPoints_DeadZone_lower_zone1];
602
603 XPoints_DeadZone_lower_zone1[0] = XShiftOfModules[0]+XPosition-BeamHoleRadius;
604 XPoints_DeadZone_lower_zone1[1] = XShiftOfModules[0]+XPosition-BeamHoleRadius;
605 XPoints_DeadZone_lower_zone1[2] = XShiftOfModules[0]+XPosition+0.0;
606 XPoints_DeadZone_lower_zone1[3] = XShiftOfModules[0]+XPosition+0.0;
607
608 YPoints_DeadZone_lower_zone1[0] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
609 YPoints_DeadZone_lower_zone1[1] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5 + BeamHoleRadius;
610 YPoints_DeadZone_lower_zone1[2] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5 + BeamHoleRadius;
611 YPoints_DeadZone_lower_zone1[3] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
612
613 lower_layer_zone1.AddDeadZone(NPoints_DeadZone_lower_zone1, XPoints_DeadZone_lower_zone1, YPoints_DeadZone_lower_zone1);
614 //----------------------------------------------------------------------
615
616 //upper strip layer (zone 1) -------------------------------------------
617 BmnGemStripLayer upper_layer_zone1(1, UpperStripLayer,
618 XSlopeHotZoneSize_Plane163x45[1], YSlopeHotZoneSize_Plane163x45,
619 XShiftOfModules[0]+XPosition-XSlopeHotZoneSize_Plane163x45[1], YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5,
620 UpperLayerPitch, UpperLayerStripAngle);
621
622 if(UpperLayerStripAngle >= 0.0) {
623 upper_layer_zone1.SetStripNumberingOrder(LeftToRight);
625 }
626 else {
627 upper_layer_zone1.SetStripNumberingOrder(RightToLeft);
628 upper_layer_zone1.SetStripNumberingBorders(LeftTop, RightTop);
629 }
630
631 //dead zone for upper layer in zone 1 (hole)
632 const Int_t NPoints_DeadZone_upper_zone1_hole = 4;
633 Double_t XPoints_DeadZone_upper_zone1_hole[NPoints_DeadZone_upper_zone1_hole];
634 Double_t YPoints_DeadZone_upper_zone1_hole[NPoints_DeadZone_upper_zone1_hole];
635
636 XPoints_DeadZone_upper_zone1_hole[0] = XShiftOfModules[0]+XPosition-BeamHoleRadius;
637 XPoints_DeadZone_upper_zone1_hole[1] = XShiftOfModules[0]+XPosition-BeamHoleRadius;
638 XPoints_DeadZone_upper_zone1_hole[2] = XShiftOfModules[0]+XPosition+0.0;
639 XPoints_DeadZone_upper_zone1_hole[3] = XShiftOfModules[0]+XPosition+0.0;
640
641 YPoints_DeadZone_upper_zone1_hole[0] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
642 YPoints_DeadZone_upper_zone1_hole[1] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5 + BeamHoleRadius;
643 YPoints_DeadZone_upper_zone1_hole[2] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5 + BeamHoleRadius;
644 YPoints_DeadZone_upper_zone1_hole[3] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
645
646 upper_layer_zone1.AddDeadZone(NPoints_DeadZone_upper_zone1_hole, XPoints_DeadZone_upper_zone1_hole, YPoints_DeadZone_upper_zone1_hole);
647
648 //dead zone for upper layer in zone 1 (triangle)
649 const Int_t NPoints_DeadZone_upper_zone1_triang = 3;
650 Double_t XPoints_DeadZone_upper_zone1_triang[NPoints_DeadZone_upper_zone1_triang];
651 Double_t YPoints_DeadZone_upper_zone1_triang[NPoints_DeadZone_upper_zone1_triang];
652
653 if(UpperLayerStripAngle >= 0.0) {
654 XPoints_DeadZone_upper_zone1_triang[0] = XShiftOfModules[0]+XPosition-XSlopeHotZoneSize_Plane163x45[1];
655 XPoints_DeadZone_upper_zone1_triang[1] = XShiftOfModules[0]+XPosition-XSlopeHotZoneSize_Plane163x45[1];
656 XPoints_DeadZone_upper_zone1_triang[2] = XShiftOfModules[0]+XPosition-XSlopeHotZoneSize_Plane163x45[0];
657
658 YPoints_DeadZone_upper_zone1_triang[0] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
659 YPoints_DeadZone_upper_zone1_triang[1] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
660 YPoints_DeadZone_upper_zone1_triang[2] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
661 }
662 else {
663 XPoints_DeadZone_upper_zone1_triang[0] = XShiftOfModules[0]+XPosition-XSlopeHotZoneSize_Plane163x45[1];
664 XPoints_DeadZone_upper_zone1_triang[1] = XShiftOfModules[0]+XPosition-XSlopeHotZoneSize_Plane163x45[1];
665 XPoints_DeadZone_upper_zone1_triang[2] = XShiftOfModules[0]+XPosition-XSlopeHotZoneSize_Plane163x45[0];
666
667 YPoints_DeadZone_upper_zone1_triang[0] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
668 YPoints_DeadZone_upper_zone1_triang[1] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
669 YPoints_DeadZone_upper_zone1_triang[2] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
670 }
671
672 upper_layer_zone1.AddDeadZone(NPoints_DeadZone_upper_zone1_triang, XPoints_DeadZone_upper_zone1_triang, YPoints_DeadZone_upper_zone1_triang);
673
674 //----------------------------------------------------------------------
675
676 Modules[0]->AddStripLayer(lower_layer_zone0);
677 Modules[0]->AddStripLayer(upper_layer_zone0);
678 Modules[0]->AddStripLayer(lower_layer_zone1);
679 Modules[0]->AddStripLayer(upper_layer_zone1);
680
681 }
682//--------------------------------------------------------------------------
683
684//module 1 (right) -------------------------------------------------------------
685 {
686 Double_t DriftGapThickness = 0.3;
687 Double_t FirstTransferGapThickness = 0.25;
688 Double_t SecondTransferGapThickness = 0.2;
689 Double_t InductionGapThickness = 0.15;
690
691 Modules[1] = new BmnGemStripModule(ZPosition+ZShiftOfModules[1], EDriftDirection,
692 DriftGapThickness, FirstTransferGapThickness,
693 SecondTransferGapThickness, InductionGapThickness);
694
695 //zone 0 (big) ---------------------------------------------------------
696
697 //lower strip layer (zone 0) -------------------------------------------
698 BmnGemStripLayer lower_layer_zone0(0, LowerStripLayer,
699 XModuleSize_Plane163x45, YModuleSize_Plane163x45,
700 XShiftOfModules[1]+XPosition+0.0, YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5,
701 LowerLayerPitch, LowerLayerStripAngle);
702
703 if(UpperLayerStripAngle >= 0.0) {
704 lower_layer_zone0.SetStripNumberingOrder(LeftToRight);
705 lower_layer_zone0.SetStripNumberingBorders(LeftTop, RightBottom);
706 }
707 else {
708 lower_layer_zone0.SetStripNumberingOrder(RightToLeft);
709 lower_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
710 }
711
712 //dead zone for lower layer in zone 0
713 const Int_t NPoints_DeadZone_lower_zone0 = 4;
714 Double_t XPoints_DeadZone_lower_zone0[NPoints_DeadZone_lower_zone0];
715 Double_t YPoints_DeadZone_lower_zone0[NPoints_DeadZone_lower_zone0];
716
717 XPoints_DeadZone_lower_zone0[0] = XShiftOfModules[1]+XPosition+0.0;
718 XPoints_DeadZone_lower_zone0[1] = XShiftOfModules[1]+XPosition+0.0;
719 XPoints_DeadZone_lower_zone0[2] = XShiftOfModules[1]+XPosition+XRectHotZoneSize_Plane163x45;
720 XPoints_DeadZone_lower_zone0[3] = XShiftOfModules[1]+XPosition+XRectHotZoneSize_Plane163x45;
721
722 YPoints_DeadZone_lower_zone0[0] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
723 YPoints_DeadZone_lower_zone0[1] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5 + YRectHotZoneSize_Plane163x45;
724 YPoints_DeadZone_lower_zone0[2] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5 + YRectHotZoneSize_Plane163x45;
725 YPoints_DeadZone_lower_zone0[3] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
726
727 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_lower_zone0, XPoints_DeadZone_lower_zone0, YPoints_DeadZone_lower_zone0);
728 //----------------------------------------------------------------------
729
730 //upper strip layer (zone 0) -------------------------------------------
731 BmnGemStripLayer upper_layer_zone0(0, UpperStripLayer,
732 XModuleSize_Plane163x45, YModuleSize_Plane163x45,
733 XShiftOfModules[1]+XPosition+0.0, YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5,
734 UpperLayerPitch, UpperLayerStripAngle);
735
736 if(UpperLayerStripAngle >= 0.0) {
737 upper_layer_zone0.SetStripNumberingOrder(LeftToRight);
738 upper_layer_zone0.SetStripNumberingBorders(LeftTop, RightBottom);
739 }
740 else {
741 upper_layer_zone0.SetStripNumberingOrder(RightToLeft);
742 upper_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
743 }
744
745 //dead zone for upper layer in zone 0
746 const Int_t NPoints_DeadZone_upper_zone0 = 4;
747 Double_t XPoints_DeadZone_upper_zone0[NPoints_DeadZone_upper_zone0];
748 Double_t YPoints_DeadZone_upper_zone0[NPoints_DeadZone_upper_zone0];
749
750 if(UpperLayerStripAngle >= 0.0) {
751 XPoints_DeadZone_upper_zone0[0] = XShiftOfModules[1]+XPosition+0.0;
752 XPoints_DeadZone_upper_zone0[1] = XShiftOfModules[1]+XPosition+0.0;
753 XPoints_DeadZone_upper_zone0[2] = XShiftOfModules[1]+XPosition+XSlopeHotZoneSize_Plane163x45[1];
754 XPoints_DeadZone_upper_zone0[3] = XShiftOfModules[1]+XPosition+XSlopeHotZoneSize_Plane163x45[0];
755
756 YPoints_DeadZone_upper_zone0[0] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
757 YPoints_DeadZone_upper_zone0[1] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
758 YPoints_DeadZone_upper_zone0[2] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
759 YPoints_DeadZone_upper_zone0[3] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
760 }
761 else {
762 XPoints_DeadZone_upper_zone0[0] = XShiftOfModules[1]+XPosition+0.0;
763 XPoints_DeadZone_upper_zone0[1] = XShiftOfModules[1]+XPosition+0.0;
764 XPoints_DeadZone_upper_zone0[2] = XShiftOfModules[1]+XPosition+XSlopeHotZoneSize_Plane163x45[0];
765 XPoints_DeadZone_upper_zone0[3] = XShiftOfModules[1]+XPosition+XSlopeHotZoneSize_Plane163x45[1];
766
767 YPoints_DeadZone_upper_zone0[0] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
768 YPoints_DeadZone_upper_zone0[1] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
769 YPoints_DeadZone_upper_zone0[2] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
770 YPoints_DeadZone_upper_zone0[3] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
771 }
772
773 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_upper_zone0, XPoints_DeadZone_upper_zone0, YPoints_DeadZone_upper_zone0);
774 //----------------------------------------------------------------------
775
776 //lower strip layer (zone 1) -------------------------------------------
777 BmnGemStripLayer lower_layer_zone1(1, LowerStripLayer,
778 XRectHotZoneSize_Plane163x45, YRectHotZoneSize_Plane163x45,
779 XShiftOfModules[1]+XPosition+0.0, YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5,
780 LowerLayerPitch, LowerLayerStripAngle);
781
782 if(UpperLayerStripAngle >= 0.0) {
783 lower_layer_zone1.SetStripNumberingOrder(LeftToRight);
784 lower_layer_zone1.SetStripNumberingBorders(LeftTop, RightBottom);
785 }
786 else {
787 lower_layer_zone1.SetStripNumberingOrder(RightToLeft);
788 lower_layer_zone1.SetStripNumberingBorders(LeftBottom, RightTop);
789 }
790
791 //dead zone for lower layer in zone 1 (hole)
792 const Int_t NPoints_DeadZone_lower_zone1 = 4;
793 Double_t XPoints_DeadZone_lower_zone1[NPoints_DeadZone_lower_zone1];
794 Double_t YPoints_DeadZone_lower_zone1[NPoints_DeadZone_lower_zone1];
795
796 XPoints_DeadZone_lower_zone1[0] = XShiftOfModules[1]+XPosition+0.0;
797 XPoints_DeadZone_lower_zone1[1] = XShiftOfModules[1]+XPosition+0.0;
798 XPoints_DeadZone_lower_zone1[2] = XShiftOfModules[1]+XPosition+BeamHoleRadius;
799 XPoints_DeadZone_lower_zone1[3] = XShiftOfModules[1]+XPosition+BeamHoleRadius;
800
801 YPoints_DeadZone_lower_zone1[0] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
802 YPoints_DeadZone_lower_zone1[1] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5 + BeamHoleRadius;
803 YPoints_DeadZone_lower_zone1[2] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5 + BeamHoleRadius;
804 YPoints_DeadZone_lower_zone1[3] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
805
806 lower_layer_zone1.AddDeadZone(NPoints_DeadZone_lower_zone1, XPoints_DeadZone_lower_zone1, YPoints_DeadZone_lower_zone1);
807 //----------------------------------------------------------------------
808
809 //upper strip layer (zone 1) -------------------------------------------
810 BmnGemStripLayer upper_layer_zone1(1, UpperStripLayer,
811 XSlopeHotZoneSize_Plane163x45[1], YSlopeHotZoneSize_Plane163x45,
812 XShiftOfModules[1]+XPosition+0.0, YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5,
813 UpperLayerPitch, UpperLayerStripAngle);
814
815 if(UpperLayerStripAngle >= 0.0) {
816 upper_layer_zone1.SetStripNumberingOrder(LeftToRight);
817 upper_layer_zone1.SetStripNumberingBorders(LeftTop, RightTop);
818 }
819 else {
820 upper_layer_zone1.SetStripNumberingOrder(RightToLeft);
822 }
823
824 //dead zone for upper layer in zone 1 (hole)
825 const Int_t NPoints_DeadZone_upper_zone1_hole = 4;
826 Double_t XPoints_DeadZone_upper_zone1_hole[NPoints_DeadZone_upper_zone1_hole];
827 Double_t YPoints_DeadZone_upper_zone1_hole[NPoints_DeadZone_upper_zone1_hole];
828
829 XPoints_DeadZone_upper_zone1_hole[0] = XShiftOfModules[1]+XPosition+0.0;
830 XPoints_DeadZone_upper_zone1_hole[1] = XShiftOfModules[1]+XPosition+0.0;
831 XPoints_DeadZone_upper_zone1_hole[2] = XShiftOfModules[1]+XPosition+BeamHoleRadius;
832 XPoints_DeadZone_upper_zone1_hole[3] = XShiftOfModules[1]+XPosition+BeamHoleRadius;
833
834 YPoints_DeadZone_upper_zone1_hole[0] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
835 YPoints_DeadZone_upper_zone1_hole[1] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5 + BeamHoleRadius;
836 YPoints_DeadZone_upper_zone1_hole[2] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5 + BeamHoleRadius;
837 YPoints_DeadZone_upper_zone1_hole[3] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
838
839 upper_layer_zone1.AddDeadZone(NPoints_DeadZone_upper_zone1_hole, XPoints_DeadZone_upper_zone1_hole, YPoints_DeadZone_upper_zone1_hole);
840
841 //dead zone for upper layer in zone 1 (triangle)
842 const Int_t NPoints_DeadZone_upper_zone1_triang = 3;
843 Double_t XPoints_DeadZone_upper_zone1_triang[NPoints_DeadZone_upper_zone1_triang];
844 Double_t YPoints_DeadZone_upper_zone1_triang[NPoints_DeadZone_upper_zone1_triang];
845
846 if(UpperLayerStripAngle >= 0.0) {
847 XPoints_DeadZone_upper_zone1_triang[0] = XShiftOfModules[1]+XPosition+XSlopeHotZoneSize_Plane163x45[0];
848 XPoints_DeadZone_upper_zone1_triang[1] = XShiftOfModules[1]+XPosition+XSlopeHotZoneSize_Plane163x45[1];
849 XPoints_DeadZone_upper_zone1_triang[2] = XShiftOfModules[1]+XPosition+XSlopeHotZoneSize_Plane163x45[1];
850
851 YPoints_DeadZone_upper_zone1_triang[0] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
852 YPoints_DeadZone_upper_zone1_triang[1] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
853 YPoints_DeadZone_upper_zone1_triang[2] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
854 }
855 else {
856 XPoints_DeadZone_upper_zone1_triang[0] = XShiftOfModules[1]+XPosition+XSlopeHotZoneSize_Plane163x45[1];
857 XPoints_DeadZone_upper_zone1_triang[1] = XShiftOfModules[1]+XPosition+XSlopeHotZoneSize_Plane163x45[0];
858 XPoints_DeadZone_upper_zone1_triang[2] = XShiftOfModules[1]+XPosition+XSlopeHotZoneSize_Plane163x45[1];
859
860 YPoints_DeadZone_upper_zone1_triang[0] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
861 YPoints_DeadZone_upper_zone1_triang[1] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
862 YPoints_DeadZone_upper_zone1_triang[2] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
863 }
864
865 upper_layer_zone1.AddDeadZone(NPoints_DeadZone_upper_zone1_triang, XPoints_DeadZone_upper_zone1_triang, YPoints_DeadZone_upper_zone1_triang);
866
867 //----------------------------------------------------------------------
868
869 Modules[1]->AddStripLayer(lower_layer_zone0);
870 Modules[1]->AddStripLayer(upper_layer_zone0);
871 Modules[1]->AddStripLayer(lower_layer_zone1);
872 Modules[1]->AddStripLayer(upper_layer_zone1);
873
874 }
875 return;
876}
@ LeftTop
@ RightBottom
@ LeftBottom
@ RightTop
@ RightToLeft
@ LeftToRight
@ UpperStripLayer
@ LowerStripLayer
Bool_t SetStripNumberingOrder(StripNumberingDirection strip_direction)
Bool_t AddDeadZone(Int_t n_points, Double_t *x_points, Double_t *y_points)
Bool_t SetStripNumberingBorders(Double_t x_left, Double_t y_left, Double_t x_right, Double_t y_right)
void AddStripLayer(BmnGemStripLayer strip_layer)
BmnGemStripStation_RunSpring2017(Int_t iStation, Double_t xpos_station, Double_t ypos_station, Double_t zpos_station, Double_t beamradius, BmnGemStripConfiguration::GEM_CONFIG config)
BmnGemStripModule ** Modules
@ BackwardZAxisEDrift
@ ForwardZAxisEDrift
const Double_t XModuleShifts[NStations][NMaxModules]
const Double_t YModuleShifts[NStations][NMaxModules]
const Double_t ZModuleShifts[NStations][NMaxModules]