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