6 Double_t xpos_station, Double_t ypos_station, Double_t zpos_station,
32 LowerLayerStripAngle = 0.0;
33 UpperLayerStripAngle = +90.0;
34 LowerLayerPitch = 0.04;
35 UpperLayerPitch = 0.04;
36 ZSizeModuleWithFrames = 1.3;
43 LowerLayerStripAngle = 0.0;
44 UpperLayerStripAngle = +15.0;
45 LowerLayerPitch = 0.08;
46 UpperLayerPitch = 0.08;
47 ZSizeModuleWithFrames = 2.3;
54 LowerLayerStripAngle = 0.0;
55 UpperLayerStripAngle = -15.0;
56 LowerLayerPitch = 0.08;
57 UpperLayerPitch = 0.08;
58 ZSizeModuleWithFrames = 2.3;
65 LowerLayerStripAngle = 0.0;
66 UpperLayerStripAngle = +15.0;
67 LowerLayerPitch = 0.08;
68 UpperLayerPitch = 0.08;
69 ZSizeModuleWithFrames = 2.3;
76 LowerLayerStripAngle = 0.0;
77 UpperLayerStripAngle = -15.0;
78 LowerLayerPitch = 0.08;
79 UpperLayerPitch = 0.08;
80 ZSizeModuleWithFrames = 2.3;
87 LowerLayerStripAngle = 0.0;
88 UpperLayerStripAngle = +15.0;
89 LowerLayerPitch = 0.08;
90 UpperLayerPitch = 0.08;
91 ZSizeModuleWithFrames = 2.3;
98 LowerLayerStripAngle = 0.0;
99 UpperLayerStripAngle = -15.0;
100 LowerLayerPitch = 0.08;
101 UpperLayerPitch = 0.08;
102 ZSizeModuleWithFrames = 3.9;
112 XModuleSize_Plane10x10 = 10.0;
113 YModuleSize_Plane10x10 = 10.0;
116 XModuleSize_Plane66x41 = 66.0;
117 YModuleSize_Plane66x41 = 41.0;
119 XHotZoneSize_Plane66x41 = 15.0;
120 YHotZoneSize_Plane66x41 = 10.0;
123 XModuleSize_Plane163x45 = 163.2*0.5;
124 YModuleSize_Plane163x45 = 45.0;
126 XRectHotZoneSize_Plane163x45 = 40.0;
127 YRectHotZoneSize_Plane163x45 = 15.0;
129 XSlopeHotZoneSize_Plane163x45[0] = 37.99;
130 XSlopeHotZoneSize_Plane163x45[1] = 42.01;
132 YSlopeHotZoneSize_Plane163x45 = 15.0;
139 switch (fCurrentConfig) {
141 for (Int_t iModule = 0; iModule <
NModules; ++iModule) {
149 for (Int_t iModule = 0; iModule <
NModules; ++iModule) {
159 XSize = XModuleSize_Plane10x10;
160 YSize = YModuleSize_Plane10x10;
162 BuildModules_One10x10Plane();
166 XSize = XModuleSize_Plane66x41;
167 YSize = YModuleSize_Plane66x41;
169 BuildModules_One66x41Plane();
173 XSize = 2 * XModuleSize_Plane163x45;
174 YSize = YModuleSize_Plane163x45;
176 BuildModules_One163x45Plane();
189void BmnGemStripStation_RunSummer2016::BuildModules_One10x10Plane() {
194 Double_t DriftGapThickness = 0.3;
195 Double_t FirstTransferGapThickness = 0.25;
196 Double_t SecondTransferGapThickness = 0.2;
197 Double_t InductionGapThickness = 0.15;
200 DriftGapThickness, FirstTransferGapThickness,
201 SecondTransferGapThickness, InductionGapThickness);
205 XModuleSize_Plane10x10, YModuleSize_Plane10x10,
207 LowerLayerPitch, LowerLayerStripAngle);
215 XModuleSize_Plane10x10, YModuleSize_Plane10x10,
217 UpperLayerPitch, UpperLayerStripAngle);
229void BmnGemStripStation_RunSummer2016::BuildModules_One66x41Plane() {
234 Double_t DriftGapThickness = 0.3;
235 Double_t FirstTransferGapThickness = 0.25;
236 Double_t SecondTransferGapThickness = 0.2;
237 Double_t InductionGapThickness = 0.15;
240 DriftGapThickness, FirstTransferGapThickness,
241 SecondTransferGapThickness, InductionGapThickness);
247 XModuleSize_Plane66x41, YModuleSize_Plane66x41,
249 LowerLayerPitch, LowerLayerStripAngle);
251 if (UpperLayerStripAngle >= 0.0) {
252 lower_layer_zone0.SetStripNumberingOrder(
LeftToRight);
255 lower_layer_zone0.SetStripNumberingOrder(
LeftToRight);
260 const Int_t NPoints_DeadZone_zone0 = 4;
261 Double_t XPoints_DeadZone_zone0[NPoints_DeadZone_zone0];
262 Double_t YPoints_DeadZone_zone0[NPoints_DeadZone_zone0];
264 if (UpperLayerStripAngle >= 0.0) {
286 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
291 XModuleSize_Plane66x41, YModuleSize_Plane66x41,
293 UpperLayerPitch, UpperLayerStripAngle);
295 if (UpperLayerStripAngle >= 0.0) {
296 upper_layer_zone0.SetStripNumberingOrder(
LeftToRight);
299 upper_layer_zone0.SetStripNumberingOrder(
LeftToRight);
303 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
313 if (UpperLayerStripAngle >= 0.0) {
316 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
318 LowerLayerPitch, LowerLayerStripAngle);
326 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
328 UpperLayerPitch, UpperLayerStripAngle);
336 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
338 LowerLayerPitch, LowerLayerStripAngle);
346 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
348 UpperLayerPitch, UpperLayerStripAngle);
364void BmnGemStripStation_RunSummer2016::BuildModules_One163x45Plane() {
370 Double_t DriftGapThickness = 0.3;
371 Double_t FirstTransferGapThickness = 0.25;
372 Double_t SecondTransferGapThickness = 0.2;
373 Double_t InductionGapThickness = 0.15;
376 DriftGapThickness, FirstTransferGapThickness,
377 SecondTransferGapThickness, InductionGapThickness);
383 XModuleSize_Plane163x45, YModuleSize_Plane163x45,
385 LowerLayerPitch, LowerLayerStripAngle);
387 lower_layer_zone0.SetStripNumberingOrder(
RightToLeft);
391 const Int_t NPoints_DeadZone_lower_zone0 = 4;
392 Double_t XPoints_DeadZone_lower_zone0[NPoints_DeadZone_lower_zone0];
393 Double_t YPoints_DeadZone_lower_zone0[NPoints_DeadZone_lower_zone0];
401 YPoints_DeadZone_lower_zone0[1] =
YShiftOfModules[0]+
YPosition-YModuleSize_Plane163x45*0.5 + YRectHotZoneSize_Plane163x45;
402 YPoints_DeadZone_lower_zone0[2] =
YShiftOfModules[0]+
YPosition-YModuleSize_Plane163x45*0.5 + YRectHotZoneSize_Plane163x45;
405 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_lower_zone0, XPoints_DeadZone_lower_zone0, YPoints_DeadZone_lower_zone0);
410 XModuleSize_Plane163x45, YModuleSize_Plane163x45,
412 UpperLayerPitch, UpperLayerStripAngle);
414 upper_layer_zone0.SetStripNumberingOrder(
RightToLeft);
418 const Int_t NPoints_DeadZone_upper_zone0 = 4;
419 Double_t XPoints_DeadZone_upper_zone0[NPoints_DeadZone_upper_zone0];
420 Double_t YPoints_DeadZone_upper_zone0[NPoints_DeadZone_upper_zone0];
428 YPoints_DeadZone_upper_zone0[1] =
YShiftOfModules[0]+
YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
429 YPoints_DeadZone_upper_zone0[2] =
YShiftOfModules[0]+
YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
432 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_upper_zone0, XPoints_DeadZone_upper_zone0, YPoints_DeadZone_upper_zone0);
437 XRectHotZoneSize_Plane163x45, YRectHotZoneSize_Plane163x45,
439 LowerLayerPitch, LowerLayerStripAngle);
445 const Int_t NPoints_DeadZone_lower_zone1 = 4;
446 Double_t XPoints_DeadZone_lower_zone1[NPoints_DeadZone_lower_zone1];
447 Double_t YPoints_DeadZone_lower_zone1[NPoints_DeadZone_lower_zone1];
459 lower_layer_zone1.
AddDeadZone(NPoints_DeadZone_lower_zone1, XPoints_DeadZone_lower_zone1, YPoints_DeadZone_lower_zone1);
464 XSlopeHotZoneSize_Plane163x45[1], YSlopeHotZoneSize_Plane163x45,
466 UpperLayerPitch, UpperLayerStripAngle);
472 const Int_t NPoints_DeadZone_upper_zone1_hole = 4;
473 Double_t XPoints_DeadZone_upper_zone1_hole[NPoints_DeadZone_upper_zone1_hole];
474 Double_t YPoints_DeadZone_upper_zone1_hole[NPoints_DeadZone_upper_zone1_hole];
486 upper_layer_zone1.
AddDeadZone(NPoints_DeadZone_upper_zone1_hole, XPoints_DeadZone_upper_zone1_hole, YPoints_DeadZone_upper_zone1_hole);
489 const Int_t NPoints_DeadZone_upper_zone1_triang = 3;
490 Double_t XPoints_DeadZone_upper_zone1_triang[NPoints_DeadZone_upper_zone1_triang];
491 Double_t YPoints_DeadZone_upper_zone1_triang[NPoints_DeadZone_upper_zone1_triang];
498 YPoints_DeadZone_upper_zone1_triang[1] =
YShiftOfModules[0]+
YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
501 upper_layer_zone1.
AddDeadZone(NPoints_DeadZone_upper_zone1_triang, XPoints_DeadZone_upper_zone1_triang, YPoints_DeadZone_upper_zone1_triang);
515 Double_t DriftGapThickness = 0.3;
516 Double_t FirstTransferGapThickness = 0.25;
517 Double_t SecondTransferGapThickness = 0.2;
518 Double_t InductionGapThickness = 0.15;
521 DriftGapThickness, FirstTransferGapThickness,
522 SecondTransferGapThickness, InductionGapThickness);
528 XModuleSize_Plane163x45, YModuleSize_Plane163x45,
530 LowerLayerPitch, LowerLayerStripAngle);
532 lower_layer_zone0.SetStripNumberingOrder(
RightToLeft);
536 const Int_t NPoints_DeadZone_lower_zone0 = 4;
537 Double_t XPoints_DeadZone_lower_zone0[NPoints_DeadZone_lower_zone0];
538 Double_t YPoints_DeadZone_lower_zone0[NPoints_DeadZone_lower_zone0];
546 YPoints_DeadZone_lower_zone0[1] =
YShiftOfModules[1]+
YPosition-YModuleSize_Plane163x45*0.5 + YRectHotZoneSize_Plane163x45;
547 YPoints_DeadZone_lower_zone0[2] =
YShiftOfModules[1]+
YPosition-YModuleSize_Plane163x45*0.5 + YRectHotZoneSize_Plane163x45;
550 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_lower_zone0, XPoints_DeadZone_lower_zone0, YPoints_DeadZone_lower_zone0);
555 XModuleSize_Plane163x45, YModuleSize_Plane163x45,
557 UpperLayerPitch, UpperLayerStripAngle);
559 upper_layer_zone0.SetStripNumberingOrder(
RightToLeft);
563 const Int_t NPoints_DeadZone_upper_zone0 = 4;
564 Double_t XPoints_DeadZone_upper_zone0[NPoints_DeadZone_upper_zone0];
565 Double_t YPoints_DeadZone_upper_zone0[NPoints_DeadZone_upper_zone0];
573 YPoints_DeadZone_upper_zone0[1] =
YShiftOfModules[1]+
YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
574 YPoints_DeadZone_upper_zone0[2] =
YShiftOfModules[1]+
YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
577 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_upper_zone0, XPoints_DeadZone_upper_zone0, YPoints_DeadZone_upper_zone0);
582 XRectHotZoneSize_Plane163x45, YRectHotZoneSize_Plane163x45,
584 LowerLayerPitch, LowerLayerStripAngle);
590 const Int_t NPoints_DeadZone_lower_zone1 = 4;
591 Double_t XPoints_DeadZone_lower_zone1[NPoints_DeadZone_lower_zone1];
592 Double_t YPoints_DeadZone_lower_zone1[NPoints_DeadZone_lower_zone1];
604 lower_layer_zone1.
AddDeadZone(NPoints_DeadZone_lower_zone1, XPoints_DeadZone_lower_zone1, YPoints_DeadZone_lower_zone1);
609 XSlopeHotZoneSize_Plane163x45[1], YSlopeHotZoneSize_Plane163x45,
611 UpperLayerPitch, UpperLayerStripAngle);
617 const Int_t NPoints_DeadZone_upper_zone1_hole = 4;
618 Double_t XPoints_DeadZone_upper_zone1_hole[NPoints_DeadZone_upper_zone1_hole];
619 Double_t YPoints_DeadZone_upper_zone1_hole[NPoints_DeadZone_upper_zone1_hole];
631 upper_layer_zone1.
AddDeadZone(NPoints_DeadZone_upper_zone1_hole, XPoints_DeadZone_upper_zone1_hole, YPoints_DeadZone_upper_zone1_hole);
634 const Int_t NPoints_DeadZone_upper_zone1_triang = 3;
635 Double_t XPoints_DeadZone_upper_zone1_triang[NPoints_DeadZone_upper_zone1_triang];
636 Double_t YPoints_DeadZone_upper_zone1_triang[NPoints_DeadZone_upper_zone1_triang];
643 YPoints_DeadZone_upper_zone1_triang[1] =
YShiftOfModules[1]+
YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
644 YPoints_DeadZone_upper_zone1_triang[2] =
YShiftOfModules[1]+
YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
646 upper_layer_zone1.
AddDeadZone(NPoints_DeadZone_upper_zone1_triang, XPoints_DeadZone_upper_zone1_triang, YPoints_DeadZone_upper_zone1_triang);
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)
virtual ~BmnGemStripStation_RunSummer2016()
BmnGemStripStation_RunSummer2016(Int_t iStation, Double_t xpos_station, Double_t ypos_station, Double_t zpos_station, Double_t beamradius, BmnGemStripConfiguration::GEM_CONFIG config)
Double_t * XShiftOfModules
BmnGemStripModule ** Modules
Double_t * ZShiftOfModules
Double_t * YShiftOfModules
void DefineStationBorders()
const Double_t ZModuleShifts[NStations][NMaxModules]
const Double_t YModuleShifts[NStations][NMaxModules]
const Double_t XModuleShifts[NStations][NMaxModules]