BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnGemStripStation_RunWinter2016.cxx
Go to the documentation of this file.
2
4 Double_t xpos_station,
5 Double_t ypos_station,
6 Double_t zpos_station,
7 Double_t beamradius,
9{
10
11 // All linear values must be entered in units of cm
12
13 fCurrentConfig = config;
14
15 StationNumber = iStation;
16
17 // Station shift position
18 XPosition = xpos_station;
19 YPosition = ypos_station;
20 ZPosition = zpos_station;
21
22 BeamHoleRadius = beamradius;
23
24 // Parameters for each station
25 // ZSizeModuleWithFrames : GEM thickness (frames+sensitive)
26 // ZSizeModule : sensitive volume thickness
27 // XSize : x-size of the station
28 // YSize : y-size of the station
29 // ZSize : z-size of the station
30
31 switch (iStation) {
32 case 0: // one plane 10x10
35 LowerLayerPitch = 0.04;
36 UpperLayerPitch = 0.04;
38 ZSizeModule = 0.9;
40 NModules = 1; // Number of modules in the station
41 break;
42
43 case 1: // one plane 66x41
46 LowerLayerPitch = 0.08;
47 UpperLayerPitch = 0.08;
49 ZSizeModule = 0.9;
51 NModules = 1; // Number of modules in the station
52 break;
53
54 case 2: // one plane 66x41
57 LowerLayerPitch = 0.08;
58 UpperLayerPitch = 0.08;
60 ZSizeModule = 0.9;
62 NModules = 1; // Number of modules in the station
63 break;
64
65 case 3: // one plane 66x41
68 LowerLayerPitch = 0.08;
69 UpperLayerPitch = 0.08;
71 ZSizeModule = 0.9;
73 NModules = 1; // Number of modules in the station
74 break;
75
76 case 4: // two plane 66x41
79 LowerLayerPitch = 0.08;
80 UpperLayerPitch = 0.08;
82 ZSizeModule = 0.9;
84 NModules = 2; // Number of modules in the station
85 break;
86
87 case 5: // one plane 163x45
90 LowerLayerPitch = 0.08;
91 UpperLayerPitch = 0.08;
93 ZSizeModule = 0.9;
95 NModules = 2; // Number of modules in the station
96 break;
97
98 case 6: // one plane 163x45
100 UpperLayerStripAngle = -15.0;
101 LowerLayerPitch = 0.08;
102 UpperLayerPitch = 0.08;
104 ZSizeModule = 0.9;
106 NModules = 2; // Number of modules in the station
107 break;
108 }
109
110 // Planes SIZES
111
112 // station 0 (plane 10x10)
115
116 // station 1-4 (plane 66x41)
119
122
123 // station 5-6 (plane 163x45)
124 XModuleSize_Plane163x45 = 163.2 * 0.5;
126
129
132
134
135 // Module shifts ------------------------------------------------------------
139
140 switch (fCurrentConfig) {
142 for (Int_t iModule = 0; iModule < NModules; ++iModule) {
144 [iStation][iModule]; // inverted : (bm@n x-coord -> classical x-coord)
147 }
148 break;
149
150 default:
151 for (Int_t iModule = 0; iModule < NModules; ++iModule) {
153 [iStation][iModule]; // inverted : (bm@n x-coord -> classical x-coord)
156 }
157 }
158 //--------------------------------------------------------------------------
159
160 // Assembling a station -----------------------------------------------------
161
162 if (StationNumber == 0) {
167 }
168
169 if (StationNumber >= 1 && StationNumber <= 3) {
174 }
175
176 if (StationNumber == 4) {
181 }
182
183 if (StationNumber >= 5 && StationNumber <= 6) {
188 }
189 // end assembling the station -----------------------------------------------
190
191 // define station borders and sizes
193}
194
196//------------------------------------------------------------------------------
197
199{
200
202
203 // module
204 Double_t DriftGapThickness = 0.3;
205 Double_t FirstTransferGapThickness = 0.25;
206 Double_t SecondTransferGapThickness = 0.2;
207 Double_t InductionGapThickness = 0.15;
208
209 Modules[0] = new BmnGemStripModule(ZPosition + ZShiftOfModules[0], EDriftDirection, DriftGapThickness,
210 FirstTransferGapThickness, SecondTransferGapThickness, InductionGapThickness);
211
212 // lower strip layer --------------------------------------------------------
217
220 //--------------------------------------------------------------------------
221
222 // upper strip layer --------------------------------------------------------
227
230 //--------------------------------------------------------------------------
231
232 Modules[0]->AddStripLayer(lower_layer);
233 Modules[0]->AddStripLayer(upper_layer);
234
235 return;
236}
237
239{
240
242
243 // module
244 Double_t DriftGapThickness = 0.3;
245 Double_t FirstTransferGapThickness = 0.25;
246 Double_t SecondTransferGapThickness = 0.2;
247 Double_t InductionGapThickness = 0.15;
248
249 Modules[0] = new BmnGemStripModule(ZPosition + ZShiftOfModules[0], EDriftDirection, DriftGapThickness,
250 FirstTransferGapThickness, SecondTransferGapThickness, InductionGapThickness);
251
252 // zone 0 (big) -------------------------------------------------------------
253
254 // lower strip layer (zone 0) -------------------------------------------
259
260 if (UpperLayerStripAngle >= 0.0) {
261 lower_layer_zone0.SetStripNumberingOrder(LeftToRight);
262 lower_layer_zone0.SetStripNumberingBorders(LeftTop, RightBottom);
263 } else {
264 lower_layer_zone0.SetStripNumberingOrder(LeftToRight);
265 lower_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
266 }
267
268 // dead zone for layers in zone 0
269 const Int_t NPoints_DeadZone_zone0 = 4;
270 Double_t XPoints_DeadZone_zone0[NPoints_DeadZone_zone0];
271 Double_t YPoints_DeadZone_zone0[NPoints_DeadZone_zone0];
272
273 if (UpperLayerStripAngle >= 0.0) {
274 XPoints_DeadZone_zone0[0] = XShiftOfModules[0] + XPosition - XModuleSize_Plane66x41 * 0.5;
275 XPoints_DeadZone_zone0[1] = XShiftOfModules[0] + XPosition - XModuleSize_Plane66x41 * 0.5;
276 XPoints_DeadZone_zone0[2] =
278 XPoints_DeadZone_zone0[3] =
280
281 YPoints_DeadZone_zone0[0] = YShiftOfModules[0] + YPosition - YModuleSize_Plane66x41 * 0.5;
282 YPoints_DeadZone_zone0[1] =
284 YPoints_DeadZone_zone0[2] =
286 YPoints_DeadZone_zone0[3] = YShiftOfModules[0] + YPosition - YModuleSize_Plane66x41 * 0.5;
287 } else {
288 XPoints_DeadZone_zone0[0] = XShiftOfModules[0] + XPosition - XModuleSize_Plane66x41 * 0.5;
289 XPoints_DeadZone_zone0[1] = XShiftOfModules[0] + XPosition - XModuleSize_Plane66x41 * 0.5;
290 XPoints_DeadZone_zone0[2] =
292 XPoints_DeadZone_zone0[3] =
294
295 YPoints_DeadZone_zone0[0] =
297 YPoints_DeadZone_zone0[1] = YShiftOfModules[0] + YPosition + YModuleSize_Plane66x41 * 0.5;
298 YPoints_DeadZone_zone0[2] = YShiftOfModules[0] + YPosition + YModuleSize_Plane66x41 * 0.5;
299 YPoints_DeadZone_zone0[3] =
301 }
302
303 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
304 //----------------------------------------------------------------------
305
306 // upper strip layer (zone 0) -------------------------------------------
311
312 if (UpperLayerStripAngle >= 0.0) {
313 upper_layer_zone0.SetStripNumberingOrder(LeftToRight);
314 upper_layer_zone0.SetStripNumberingBorders(LeftTop, RightBottom);
315 } else {
316 upper_layer_zone0.SetStripNumberingOrder(LeftToRight);
317 upper_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
318 }
319
320 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
321 //----------------------------------------------------------------------
322
323 //--------------------------------------------------------------------------
324
325 // zone 1 (hot) -------------------------------------------------------------
326
327 BmnGemStripLayer lower_layer_zone1;
328 BmnGemStripLayer upper_layer_zone1;
329
330 if (UpperLayerStripAngle >= 0.0) {
331 // lower strip layer (zone 1) -------------------------------------------
336
337 lower_layer_zone1.SetStripNumberingOrder(LeftToRight);
338 lower_layer_zone1.SetStripNumberingBorders(LeftTop, RightBottom);
339 //----------------------------------------------------------------------
340
341 // upper strip layer (zone 1) -------------------------------------------
346
347 upper_layer_zone1.SetStripNumberingOrder(LeftToRight);
348 upper_layer_zone1.SetStripNumberingBorders(LeftTop, RightBottom);
349 //----------------------------------------------------------------------
350 } else {
351 // lower strip layer (zone 1) -------------------------------------------
352 lower_layer_zone1 =
357
358 lower_layer_zone1.SetStripNumberingOrder(LeftToRight);
359 lower_layer_zone1.SetStripNumberingBorders(LeftTop, RightBottom);
360 //----------------------------------------------------------------------
361
362 // upper strip layer (zone 1) -------------------------------------------
363 upper_layer_zone1 =
368
369 upper_layer_zone1.SetStripNumberingOrder(LeftToRight);
370 upper_layer_zone1.SetStripNumberingBorders(LeftBottom, RightTop);
371 //----------------------------------------------------------------------
372 }
373 //--------------------------------------------------------------------------
374
375 Modules[0]->AddStripLayer(lower_layer_zone0);
376 Modules[0]->AddStripLayer(upper_layer_zone0);
377 Modules[0]->AddStripLayer(lower_layer_zone1);
378 Modules[0]->AddStripLayer(upper_layer_zone1);
379
380 return;
381}
382
384{
385
387
388 // module 0 (left)
389 {
390 Double_t DriftGapThickness = 0.3;
391 Double_t FirstTransferGapThickness = 0.25;
392 Double_t SecondTransferGapThickness = 0.2;
393 Double_t InductionGapThickness = 0.15;
394
395 Modules[0] =
396 new BmnGemStripModule(ZPosition + ZShiftOfModules[0], EDriftDirection, DriftGapThickness,
397 FirstTransferGapThickness, SecondTransferGapThickness, InductionGapThickness);
398
399 // zone 0 (big) -------------------------------------------------------------
400
401 // lower strip layer (zone 0) -------------------------------------------
406
407 lower_layer_zone0.SetStripNumberingOrder(RightToLeft);
408 lower_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
409
410 // dead zone for layers in zone 0
411 const Int_t NPoints_DeadZone_zone0 = 4;
412 Double_t XPoints_DeadZone_zone0[NPoints_DeadZone_zone0];
413 Double_t YPoints_DeadZone_zone0[NPoints_DeadZone_zone0];
414
415 XPoints_DeadZone_zone0[0] = XShiftOfModules[0] + XPosition - 0.0 - XHotZoneSize_Plane66x41;
416 XPoints_DeadZone_zone0[1] = XShiftOfModules[0] + XPosition - 0.0 - XHotZoneSize_Plane66x41;
417 XPoints_DeadZone_zone0[2] = XShiftOfModules[0] + XPosition - 0.0;
418 XPoints_DeadZone_zone0[3] = XShiftOfModules[0] + XPosition - 0.0;
419
420 YPoints_DeadZone_zone0[0] = YShiftOfModules[0] + YPosition - YModuleSize_Plane66x41 * 0.5;
421 YPoints_DeadZone_zone0[1] =
423 YPoints_DeadZone_zone0[2] =
425 YPoints_DeadZone_zone0[3] = YShiftOfModules[0] + YPosition - YModuleSize_Plane66x41 * 0.5;
426
427 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
428 //----------------------------------------------------------------------
429
430 // upper strip layer (zone 0) -------------------------------------------
435
436 upper_layer_zone0.SetStripNumberingOrder(RightToLeft);
437 upper_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
438
439 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
440 //----------------------------------------------------------------------
441
442 //--------------------------------------------------------------------------
443
444 // zone 1 (hot) -------------------------------------------------------------
445
446 BmnGemStripLayer lower_layer_zone1;
447 BmnGemStripLayer upper_layer_zone1;
448
449 // lower strip layer (zone 1) -------------------------------------------
454
455 lower_layer_zone1.SetStripNumberingOrder(RightToLeft);
456 lower_layer_zone1.SetStripNumberingBorders(LeftBottom, RightTop);
457 //----------------------------------------------------------------------
458
459 // upper strip layer (zone 1) -------------------------------------------
464
465 upper_layer_zone1.SetStripNumberingOrder(RightToLeft);
466 upper_layer_zone1.SetStripNumberingBorders(LeftBottom, RightTop);
467 //----------------------------------------------------------------------
468
469 //--------------------------------------------------------------------------
470
471 Modules[0]->AddStripLayer(lower_layer_zone0);
472 Modules[0]->AddStripLayer(upper_layer_zone0);
473 Modules[0]->AddStripLayer(lower_layer_zone1);
474 Modules[0]->AddStripLayer(upper_layer_zone1);
475 }
476 //--------------------------------------------------------------------------
477
478 // module 1 (right)
479 {
480 Double_t DriftGapThickness = 0.3;
481 Double_t FirstTransferGapThickness = 0.25;
482 Double_t SecondTransferGapThickness = 0.2;
483 Double_t InductionGapThickness = 0.15;
484
485 Modules[1] =
486 new BmnGemStripModule(ZPosition + ZShiftOfModules[1], EDriftDirection, DriftGapThickness,
487 FirstTransferGapThickness, SecondTransferGapThickness, InductionGapThickness);
488
489 // zone 0 (big) -------------------------------------------------------------
490
491 // lower strip layer (zone 0) -------------------------------------------
492 BmnGemStripLayer lower_layer_zone0(
495
496 lower_layer_zone0.SetStripNumberingOrder(LeftToRight);
497 lower_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
498
499 // dead zone for layers in zone 0
500 const Int_t NPoints_DeadZone_zone0 = 4;
501 Double_t XPoints_DeadZone_zone0[NPoints_DeadZone_zone0];
502 Double_t YPoints_DeadZone_zone0[NPoints_DeadZone_zone0];
503
504 XPoints_DeadZone_zone0[0] = XShiftOfModules[1] + XPosition + 0.0;
505 XPoints_DeadZone_zone0[1] = XShiftOfModules[1] + XPosition + 0.0;
506 XPoints_DeadZone_zone0[2] = XShiftOfModules[1] + XPosition + 0.0 + XHotZoneSize_Plane66x41;
507 XPoints_DeadZone_zone0[3] = XShiftOfModules[1] + XPosition + 0.0 + XHotZoneSize_Plane66x41;
508
509 YPoints_DeadZone_zone0[0] =
511 YPoints_DeadZone_zone0[1] = YShiftOfModules[1] + YPosition + YModuleSize_Plane66x41 * 0.5;
512 YPoints_DeadZone_zone0[2] = YShiftOfModules[1] + YPosition + YModuleSize_Plane66x41 * 0.5;
513 YPoints_DeadZone_zone0[3] =
515
516 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
517 //----------------------------------------------------------------------
518
519 // upper strip layer (zone 0) -------------------------------------------
520 BmnGemStripLayer upper_layer_zone0(
523
524 upper_layer_zone0.SetStripNumberingOrder(LeftToRight);
525 upper_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
526
527 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
528 //----------------------------------------------------------------------
529
530 //--------------------------------------------------------------------------
531
532 // zone 1 (hot) -------------------------------------------------------------
533
534 BmnGemStripLayer lower_layer_zone1;
535 BmnGemStripLayer upper_layer_zone1;
536
537 // lower strip layer (zone 1) -------------------------------------------
538 lower_layer_zone1 = BmnGemStripLayer(
542
543 lower_layer_zone1.SetStripNumberingOrder(LeftToRight);
544 lower_layer_zone1.SetStripNumberingBorders(LeftBottom, RightTop);
545 //----------------------------------------------------------------------
546
547 // upper strip layer (zone 1) -------------------------------------------
548 upper_layer_zone1 = BmnGemStripLayer(
552
553 upper_layer_zone1.SetStripNumberingOrder(LeftToRight);
554 upper_layer_zone1.SetStripNumberingBorders(LeftBottom, RightTop);
555 //----------------------------------------------------------------------
556
557 //--------------------------------------------------------------------------
558
559 Modules[1]->AddStripLayer(lower_layer_zone0);
560 Modules[1]->AddStripLayer(upper_layer_zone0);
561 Modules[1]->AddStripLayer(lower_layer_zone1);
562 Modules[1]->AddStripLayer(upper_layer_zone1);
563 }
564
565 return;
566}
567
569{
571
572 // module 0 (left) --------------------------------------------------------------
573 {
574 Double_t DriftGapThickness = 0.3;
575 Double_t FirstTransferGapThickness = 0.25;
576 Double_t SecondTransferGapThickness = 0.2;
577 Double_t InductionGapThickness = 0.15;
578
579 Modules[0] =
580 new BmnGemStripModule(ZPosition + ZShiftOfModules[0], EDriftDirection, DriftGapThickness,
581 FirstTransferGapThickness, SecondTransferGapThickness, InductionGapThickness);
582
583 // zone 0 (big) ---------------------------------------------------------
584
585 // lower strip layer (zone 0) -------------------------------------------
590
591 if (UpperLayerStripAngle >= 0.0) {
592 lower_layer_zone0.SetStripNumberingOrder(LeftToRight);
593 lower_layer_zone0.SetStripNumberingBorders(LeftTop, RightBottom);
594 } else {
595 lower_layer_zone0.SetStripNumberingOrder(RightToLeft);
596 lower_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
597 }
598
599 // dead zone for lower layer in zone 0
600 const Int_t NPoints_DeadZone_lower_zone0 = 4;
601 Double_t XPoints_DeadZone_lower_zone0[NPoints_DeadZone_lower_zone0];
602 Double_t YPoints_DeadZone_lower_zone0[NPoints_DeadZone_lower_zone0];
603
604 XPoints_DeadZone_lower_zone0[0] = XShiftOfModules[0] + XPosition - XRectHotZoneSize_Plane163x45;
605 XPoints_DeadZone_lower_zone0[1] = XShiftOfModules[0] + XPosition - XRectHotZoneSize_Plane163x45;
606 XPoints_DeadZone_lower_zone0[2] = XShiftOfModules[0] + XPosition + 0.0;
607 XPoints_DeadZone_lower_zone0[3] = XShiftOfModules[0] + XPosition + 0.0;
608
609 YPoints_DeadZone_lower_zone0[0] = YShiftOfModules[0] + YPosition - YModuleSize_Plane163x45 * 0.5;
610 YPoints_DeadZone_lower_zone0[1] =
612 YPoints_DeadZone_lower_zone0[2] =
614 YPoints_DeadZone_lower_zone0[3] = YShiftOfModules[0] + YPosition - YModuleSize_Plane163x45 * 0.5;
615
616 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_lower_zone0, XPoints_DeadZone_lower_zone0,
617 YPoints_DeadZone_lower_zone0);
618 //----------------------------------------------------------------------
619
620 // upper strip layer (zone 0) -------------------------------------------
625
626 if (UpperLayerStripAngle >= 0.0) {
627 upper_layer_zone0.SetStripNumberingOrder(LeftToRight);
628 upper_layer_zone0.SetStripNumberingBorders(LeftTop, RightBottom);
629 } else {
630 upper_layer_zone0.SetStripNumberingOrder(RightToLeft);
631 upper_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
632 }
633
634 // dead zone for upper layer in zone 0
635 const Int_t NPoints_DeadZone_upper_zone0 = 4;
636 Double_t XPoints_DeadZone_upper_zone0[NPoints_DeadZone_upper_zone0];
637 Double_t YPoints_DeadZone_upper_zone0[NPoints_DeadZone_upper_zone0];
638
639 if (UpperLayerStripAngle >= 0.0) {
640 XPoints_DeadZone_upper_zone0[0] = XShiftOfModules[0] + XPosition - XSlopeHotZoneSize_Plane163x45[1];
641 XPoints_DeadZone_upper_zone0[1] = XShiftOfModules[0] + XPosition - XSlopeHotZoneSize_Plane163x45[0];
642 XPoints_DeadZone_upper_zone0[2] = XShiftOfModules[0] + XPosition + 0.0;
643 XPoints_DeadZone_upper_zone0[3] = XShiftOfModules[0] + XPosition + 0.0;
644
645 YPoints_DeadZone_upper_zone0[0] = YShiftOfModules[0] + YPosition - YModuleSize_Plane163x45 * 0.5;
646 YPoints_DeadZone_upper_zone0[1] =
648 YPoints_DeadZone_upper_zone0[2] =
650 YPoints_DeadZone_upper_zone0[3] = YShiftOfModules[0] + YPosition - YModuleSize_Plane163x45 * 0.5;
651 } else {
652 XPoints_DeadZone_upper_zone0[0] = XShiftOfModules[0] + XPosition - XSlopeHotZoneSize_Plane163x45[0];
653 XPoints_DeadZone_upper_zone0[1] = XShiftOfModules[0] + XPosition - XSlopeHotZoneSize_Plane163x45[1];
654 XPoints_DeadZone_upper_zone0[2] = XShiftOfModules[0] + XPosition + 0.0;
655 XPoints_DeadZone_upper_zone0[3] = XShiftOfModules[0] + XPosition + 0.0;
656
657 YPoints_DeadZone_upper_zone0[0] = YShiftOfModules[0] + YPosition - YModuleSize_Plane163x45 * 0.5;
658 YPoints_DeadZone_upper_zone0[1] =
660 YPoints_DeadZone_upper_zone0[2] =
662 YPoints_DeadZone_upper_zone0[3] = YShiftOfModules[0] + YPosition - YModuleSize_Plane163x45 * 0.5;
663 }
664
665 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_upper_zone0, XPoints_DeadZone_upper_zone0,
666 YPoints_DeadZone_upper_zone0);
667 //----------------------------------------------------------------------
668
669 // lower strip layer (zone 1) -------------------------------------------
670 BmnGemStripLayer lower_layer_zone1(
674
675 if (UpperLayerStripAngle >= 0.0) {
676 lower_layer_zone1.SetStripNumberingOrder(LeftToRight);
677 lower_layer_zone1.SetStripNumberingBorders(LeftTop, RightBottom);
678 } else {
679 lower_layer_zone1.SetStripNumberingOrder(RightToLeft);
680 lower_layer_zone1.SetStripNumberingBorders(LeftBottom, RightTop);
681 }
682
683 // dead zone for lower layer in zone 1 (hole)
684 const Int_t NPoints_DeadZone_lower_zone1 = 4;
685 Double_t XPoints_DeadZone_lower_zone1[NPoints_DeadZone_lower_zone1];
686 Double_t YPoints_DeadZone_lower_zone1[NPoints_DeadZone_lower_zone1];
687
688 XPoints_DeadZone_lower_zone1[0] = XShiftOfModules[0] + XPosition - BeamHoleRadius;
689 XPoints_DeadZone_lower_zone1[1] = XShiftOfModules[0] + XPosition - BeamHoleRadius;
690 XPoints_DeadZone_lower_zone1[2] = XShiftOfModules[0] + XPosition + 0.0;
691 XPoints_DeadZone_lower_zone1[3] = XShiftOfModules[0] + XPosition + 0.0;
692
693 YPoints_DeadZone_lower_zone1[0] = YShiftOfModules[0] + YPosition - YModuleSize_Plane163x45 * 0.5;
694 YPoints_DeadZone_lower_zone1[1] =
696 YPoints_DeadZone_lower_zone1[2] =
698 YPoints_DeadZone_lower_zone1[3] = YShiftOfModules[0] + YPosition - YModuleSize_Plane163x45 * 0.5;
699
700 lower_layer_zone1.AddDeadZone(NPoints_DeadZone_lower_zone1, XPoints_DeadZone_lower_zone1,
701 YPoints_DeadZone_lower_zone1);
702 //----------------------------------------------------------------------
703
704 // upper strip layer (zone 1) -------------------------------------------
705 BmnGemStripLayer upper_layer_zone1(
709
710 if (UpperLayerStripAngle >= 0.0) {
711 upper_layer_zone1.SetStripNumberingOrder(LeftToRight);
713 } else {
714 upper_layer_zone1.SetStripNumberingOrder(RightToLeft);
715 upper_layer_zone1.SetStripNumberingBorders(LeftTop, RightTop);
716 }
717
718 // dead zone for upper layer in zone 1 (hole)
719 const Int_t NPoints_DeadZone_upper_zone1_hole = 4;
720 Double_t XPoints_DeadZone_upper_zone1_hole[NPoints_DeadZone_upper_zone1_hole];
721 Double_t YPoints_DeadZone_upper_zone1_hole[NPoints_DeadZone_upper_zone1_hole];
722
723 XPoints_DeadZone_upper_zone1_hole[0] = XShiftOfModules[0] + XPosition - BeamHoleRadius;
724 XPoints_DeadZone_upper_zone1_hole[1] = XShiftOfModules[0] + XPosition - BeamHoleRadius;
725 XPoints_DeadZone_upper_zone1_hole[2] = XShiftOfModules[0] + XPosition + 0.0;
726 XPoints_DeadZone_upper_zone1_hole[3] = XShiftOfModules[0] + XPosition + 0.0;
727
728 YPoints_DeadZone_upper_zone1_hole[0] = YShiftOfModules[0] + YPosition - YModuleSize_Plane163x45 * 0.5;
729 YPoints_DeadZone_upper_zone1_hole[1] =
731 YPoints_DeadZone_upper_zone1_hole[2] =
733 YPoints_DeadZone_upper_zone1_hole[3] = YShiftOfModules[0] + YPosition - YModuleSize_Plane163x45 * 0.5;
734
735 upper_layer_zone1.AddDeadZone(NPoints_DeadZone_upper_zone1_hole, XPoints_DeadZone_upper_zone1_hole,
736 YPoints_DeadZone_upper_zone1_hole);
737
738 // dead zone for upper layer in zone 1 (triangle)
739 const Int_t NPoints_DeadZone_upper_zone1_triang = 3;
740 Double_t XPoints_DeadZone_upper_zone1_triang[NPoints_DeadZone_upper_zone1_triang];
741 Double_t YPoints_DeadZone_upper_zone1_triang[NPoints_DeadZone_upper_zone1_triang];
742
743 if (UpperLayerStripAngle >= 0.0) {
744 XPoints_DeadZone_upper_zone1_triang[0] = XShiftOfModules[0] + XPosition - XSlopeHotZoneSize_Plane163x45[1];
745 XPoints_DeadZone_upper_zone1_triang[1] = XShiftOfModules[0] + XPosition - XSlopeHotZoneSize_Plane163x45[1];
746 XPoints_DeadZone_upper_zone1_triang[2] = XShiftOfModules[0] + XPosition - XSlopeHotZoneSize_Plane163x45[0];
747
748 YPoints_DeadZone_upper_zone1_triang[0] = YShiftOfModules[0] + YPosition - YModuleSize_Plane163x45 * 0.5;
749 YPoints_DeadZone_upper_zone1_triang[1] =
751 YPoints_DeadZone_upper_zone1_triang[2] =
753 } else {
754 XPoints_DeadZone_upper_zone1_triang[0] = XShiftOfModules[0] + XPosition - XSlopeHotZoneSize_Plane163x45[1];
755 XPoints_DeadZone_upper_zone1_triang[1] = XShiftOfModules[0] + XPosition - XSlopeHotZoneSize_Plane163x45[1];
756 XPoints_DeadZone_upper_zone1_triang[2] = XShiftOfModules[0] + XPosition - XSlopeHotZoneSize_Plane163x45[0];
757
758 YPoints_DeadZone_upper_zone1_triang[0] = YShiftOfModules[0] + YPosition - YModuleSize_Plane163x45 * 0.5;
759 YPoints_DeadZone_upper_zone1_triang[1] =
761 YPoints_DeadZone_upper_zone1_triang[2] = YShiftOfModules[0] + YPosition - YModuleSize_Plane163x45 * 0.5;
762 }
763
764 upper_layer_zone1.AddDeadZone(NPoints_DeadZone_upper_zone1_triang, XPoints_DeadZone_upper_zone1_triang,
765 YPoints_DeadZone_upper_zone1_triang);
766
767 //----------------------------------------------------------------------
768
769 Modules[0]->AddStripLayer(lower_layer_zone0);
770 Modules[0]->AddStripLayer(upper_layer_zone0);
771 Modules[0]->AddStripLayer(lower_layer_zone1);
772 Modules[0]->AddStripLayer(upper_layer_zone1);
773 }
774 //--------------------------------------------------------------------------
775
776 // module 1 (right) --------------------------------------------------------------
777 {
778 Double_t DriftGapThickness = 0.3;
779 Double_t FirstTransferGapThickness = 0.25;
780 Double_t SecondTransferGapThickness = 0.2;
781 Double_t InductionGapThickness = 0.15;
782
783 Modules[1] =
784 new BmnGemStripModule(ZPosition + ZShiftOfModules[1], EDriftDirection, DriftGapThickness,
785 FirstTransferGapThickness, SecondTransferGapThickness, InductionGapThickness);
786
787 // zone 0 (big) ---------------------------------------------------------
788
789 // lower strip layer (zone 0) -------------------------------------------
790 BmnGemStripLayer lower_layer_zone0(
793
794 if (UpperLayerStripAngle >= 0.0) {
795 lower_layer_zone0.SetStripNumberingOrder(LeftToRight);
796 lower_layer_zone0.SetStripNumberingBorders(LeftTop, RightBottom);
797 } else {
798 lower_layer_zone0.SetStripNumberingOrder(RightToLeft);
799 lower_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
800 }
801
802 // dead zone for lower layer in zone 0
803 const Int_t NPoints_DeadZone_lower_zone0 = 4;
804 Double_t XPoints_DeadZone_lower_zone0[NPoints_DeadZone_lower_zone0];
805 Double_t YPoints_DeadZone_lower_zone0[NPoints_DeadZone_lower_zone0];
806
807 XPoints_DeadZone_lower_zone0[0] = XShiftOfModules[1] + XPosition + 0.0;
808 XPoints_DeadZone_lower_zone0[1] = XShiftOfModules[1] + XPosition + 0.0;
809 XPoints_DeadZone_lower_zone0[2] = XShiftOfModules[1] + XPosition + XRectHotZoneSize_Plane163x45;
810 XPoints_DeadZone_lower_zone0[3] = XShiftOfModules[1] + XPosition + XRectHotZoneSize_Plane163x45;
811
812 YPoints_DeadZone_lower_zone0[0] = YShiftOfModules[1] + YPosition - YModuleSize_Plane163x45 * 0.5;
813 YPoints_DeadZone_lower_zone0[1] =
815 YPoints_DeadZone_lower_zone0[2] =
817 YPoints_DeadZone_lower_zone0[3] = YShiftOfModules[1] + YPosition - YModuleSize_Plane163x45 * 0.5;
818
819 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_lower_zone0, XPoints_DeadZone_lower_zone0,
820 YPoints_DeadZone_lower_zone0);
821 //----------------------------------------------------------------------
822
823 // upper strip layer (zone 0) -------------------------------------------
824 BmnGemStripLayer upper_layer_zone0(
827
828 if (UpperLayerStripAngle >= 0.0) {
829 upper_layer_zone0.SetStripNumberingOrder(LeftToRight);
830 upper_layer_zone0.SetStripNumberingBorders(LeftTop, RightBottom);
831 } else {
832 upper_layer_zone0.SetStripNumberingOrder(RightToLeft);
833 upper_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
834 }
835
836 // dead zone for upper layer in zone 0
837 const Int_t NPoints_DeadZone_upper_zone0 = 4;
838 Double_t XPoints_DeadZone_upper_zone0[NPoints_DeadZone_upper_zone0];
839 Double_t YPoints_DeadZone_upper_zone0[NPoints_DeadZone_upper_zone0];
840
841 if (UpperLayerStripAngle >= 0.0) {
842 XPoints_DeadZone_upper_zone0[0] = XShiftOfModules[1] + XPosition + 0.0;
843 XPoints_DeadZone_upper_zone0[1] = XShiftOfModules[1] + XPosition + 0.0;
844 XPoints_DeadZone_upper_zone0[2] = XShiftOfModules[1] + XPosition + XSlopeHotZoneSize_Plane163x45[1];
845 XPoints_DeadZone_upper_zone0[3] = XShiftOfModules[1] + XPosition + XSlopeHotZoneSize_Plane163x45[0];
846
847 YPoints_DeadZone_upper_zone0[0] = YShiftOfModules[1] + YPosition - YModuleSize_Plane163x45 * 0.5;
848 YPoints_DeadZone_upper_zone0[1] =
850 YPoints_DeadZone_upper_zone0[2] =
852 YPoints_DeadZone_upper_zone0[3] = YShiftOfModules[1] + YPosition - YModuleSize_Plane163x45 * 0.5;
853 } else {
854 XPoints_DeadZone_upper_zone0[0] = XShiftOfModules[1] + XPosition + 0.0;
855 XPoints_DeadZone_upper_zone0[1] = XShiftOfModules[1] + XPosition + 0.0;
856 XPoints_DeadZone_upper_zone0[2] = XShiftOfModules[1] + XPosition + XSlopeHotZoneSize_Plane163x45[0];
857 XPoints_DeadZone_upper_zone0[3] = XShiftOfModules[1] + XPosition + XSlopeHotZoneSize_Plane163x45[1];
858
859 YPoints_DeadZone_upper_zone0[0] = YShiftOfModules[1] + YPosition - YModuleSize_Plane163x45 * 0.5;
860 YPoints_DeadZone_upper_zone0[1] =
862 YPoints_DeadZone_upper_zone0[2] =
864 YPoints_DeadZone_upper_zone0[3] = YShiftOfModules[1] + YPosition - YModuleSize_Plane163x45 * 0.5;
865 }
866
867 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_upper_zone0, XPoints_DeadZone_upper_zone0,
868 YPoints_DeadZone_upper_zone0);
869 //----------------------------------------------------------------------
870
871 // lower strip layer (zone 1) -------------------------------------------
876
877 if (UpperLayerStripAngle >= 0.0) {
878 lower_layer_zone1.SetStripNumberingOrder(LeftToRight);
879 lower_layer_zone1.SetStripNumberingBorders(LeftTop, RightBottom);
880 } else {
881 lower_layer_zone1.SetStripNumberingOrder(RightToLeft);
882 lower_layer_zone1.SetStripNumberingBorders(LeftBottom, RightTop);
883 }
884
885 // dead zone for lower layer in zone 1 (hole)
886 const Int_t NPoints_DeadZone_lower_zone1 = 4;
887 Double_t XPoints_DeadZone_lower_zone1[NPoints_DeadZone_lower_zone1];
888 Double_t YPoints_DeadZone_lower_zone1[NPoints_DeadZone_lower_zone1];
889
890 XPoints_DeadZone_lower_zone1[0] = XShiftOfModules[1] + XPosition + 0.0;
891 XPoints_DeadZone_lower_zone1[1] = XShiftOfModules[1] + XPosition + 0.0;
892 XPoints_DeadZone_lower_zone1[2] = XShiftOfModules[1] + XPosition + BeamHoleRadius;
893 XPoints_DeadZone_lower_zone1[3] = XShiftOfModules[1] + XPosition + BeamHoleRadius;
894
895 YPoints_DeadZone_lower_zone1[0] = YShiftOfModules[1] + YPosition - YModuleSize_Plane163x45 * 0.5;
896 YPoints_DeadZone_lower_zone1[1] =
898 YPoints_DeadZone_lower_zone1[2] =
900 YPoints_DeadZone_lower_zone1[3] = YShiftOfModules[1] + YPosition - YModuleSize_Plane163x45 * 0.5;
901
902 lower_layer_zone1.AddDeadZone(NPoints_DeadZone_lower_zone1, XPoints_DeadZone_lower_zone1,
903 YPoints_DeadZone_lower_zone1);
904 //----------------------------------------------------------------------
905
906 // upper strip layer (zone 1) -------------------------------------------
911
912 if (UpperLayerStripAngle >= 0.0) {
913 upper_layer_zone1.SetStripNumberingOrder(LeftToRight);
914 upper_layer_zone1.SetStripNumberingBorders(LeftTop, RightTop);
915 } else {
916 upper_layer_zone1.SetStripNumberingOrder(RightToLeft);
918 }
919
920 // dead zone for upper layer in zone 1 (hole)
921 const Int_t NPoints_DeadZone_upper_zone1_hole = 4;
922 Double_t XPoints_DeadZone_upper_zone1_hole[NPoints_DeadZone_upper_zone1_hole];
923 Double_t YPoints_DeadZone_upper_zone1_hole[NPoints_DeadZone_upper_zone1_hole];
924
925 XPoints_DeadZone_upper_zone1_hole[0] = XShiftOfModules[1] + XPosition + 0.0;
926 XPoints_DeadZone_upper_zone1_hole[1] = XShiftOfModules[1] + XPosition + 0.0;
927 XPoints_DeadZone_upper_zone1_hole[2] = XShiftOfModules[1] + XPosition + BeamHoleRadius;
928 XPoints_DeadZone_upper_zone1_hole[3] = XShiftOfModules[1] + XPosition + BeamHoleRadius;
929
930 YPoints_DeadZone_upper_zone1_hole[0] = YShiftOfModules[1] + YPosition - YModuleSize_Plane163x45 * 0.5;
931 YPoints_DeadZone_upper_zone1_hole[1] =
933 YPoints_DeadZone_upper_zone1_hole[2] =
935 YPoints_DeadZone_upper_zone1_hole[3] = YShiftOfModules[1] + YPosition - YModuleSize_Plane163x45 * 0.5;
936
937 upper_layer_zone1.AddDeadZone(NPoints_DeadZone_upper_zone1_hole, XPoints_DeadZone_upper_zone1_hole,
938 YPoints_DeadZone_upper_zone1_hole);
939
940 // dead zone for upper layer in zone 1 (triangle)
941 const Int_t NPoints_DeadZone_upper_zone1_triang = 3;
942 Double_t XPoints_DeadZone_upper_zone1_triang[NPoints_DeadZone_upper_zone1_triang];
943 Double_t YPoints_DeadZone_upper_zone1_triang[NPoints_DeadZone_upper_zone1_triang];
944
945 if (UpperLayerStripAngle >= 0.0) {
946 XPoints_DeadZone_upper_zone1_triang[0] = XShiftOfModules[1] + XPosition + XSlopeHotZoneSize_Plane163x45[0];
947 XPoints_DeadZone_upper_zone1_triang[1] = XShiftOfModules[1] + XPosition + XSlopeHotZoneSize_Plane163x45[1];
948 XPoints_DeadZone_upper_zone1_triang[2] = XShiftOfModules[1] + XPosition + XSlopeHotZoneSize_Plane163x45[1];
949
950 YPoints_DeadZone_upper_zone1_triang[0] = YShiftOfModules[1] + YPosition - YModuleSize_Plane163x45 * 0.5;
951 YPoints_DeadZone_upper_zone1_triang[1] =
953 YPoints_DeadZone_upper_zone1_triang[2] = YShiftOfModules[1] + YPosition - YModuleSize_Plane163x45 * 0.5;
954 } else {
955 XPoints_DeadZone_upper_zone1_triang[0] = XShiftOfModules[1] + XPosition + XSlopeHotZoneSize_Plane163x45[1];
956 XPoints_DeadZone_upper_zone1_triang[1] = XShiftOfModules[1] + XPosition + XSlopeHotZoneSize_Plane163x45[0];
957 XPoints_DeadZone_upper_zone1_triang[2] = XShiftOfModules[1] + XPosition + XSlopeHotZoneSize_Plane163x45[1];
958
959 YPoints_DeadZone_upper_zone1_triang[0] = YShiftOfModules[1] + YPosition - YModuleSize_Plane163x45 * 0.5;
960 YPoints_DeadZone_upper_zone1_triang[1] =
962 YPoints_DeadZone_upper_zone1_triang[2] =
964 }
965
966 upper_layer_zone1.AddDeadZone(NPoints_DeadZone_upper_zone1_triang, XPoints_DeadZone_upper_zone1_triang,
967 YPoints_DeadZone_upper_zone1_triang);
968
969 //----------------------------------------------------------------------
970
971 Modules[1]->AddStripLayer(lower_layer_zone0);
972 Modules[1]->AddStripLayer(upper_layer_zone0);
973 Modules[1]->AddStripLayer(lower_layer_zone1);
974 Modules[1]->AddStripLayer(upper_layer_zone1);
975 }
976 return;
977}
int Int_t
double Double_t
@ 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)
BmnGemStripStation_RunWinter2016(Int_t iStation, Double_t xpos_station, Double_t ypos_station, Double_t zpos_station, Double_t beamradius, BmnGemStripConfiguration::GEM_CONFIG config)
BmnGemStripConfiguration::GEM_CONFIG fCurrentConfig
BmnGemStripModule ** Modules
@ BackwardZAxisEDrift
@ ForwardZAxisEDrift
const Double_t XModuleShifts[NStations][NMaxModules]
const Double_t YModuleShifts[NStations][NMaxModules]
const Double_t ZModuleShifts[NStations][NMaxModules]