4 Double_t xpos_station, Double_t ypos_station, Double_t zpos_station,
30 LowerLayerStripAngle = 0.0;
31 UpperLayerStripAngle = +90.0;
32 LowerLayerPitch = 0.04;
33 UpperLayerPitch = 0.04;
34 ZSizeModuleWithFrames = 1.3;
41 LowerLayerStripAngle = 0.0;
42 UpperLayerStripAngle = +15.0;
43 LowerLayerPitch = 0.08;
44 UpperLayerPitch = 0.08;
45 ZSizeModuleWithFrames = 2.3;
52 LowerLayerStripAngle = 0.0;
53 UpperLayerStripAngle = -15.0;
54 LowerLayerPitch = 0.08;
55 UpperLayerPitch = 0.08;
56 ZSizeModuleWithFrames = 2.3;
63 LowerLayerStripAngle = 0.0;
64 UpperLayerStripAngle = +15.0;
65 LowerLayerPitch = 0.08;
66 UpperLayerPitch = 0.08;
67 ZSizeModuleWithFrames = 2.3;
74 LowerLayerStripAngle = 0.0;
75 UpperLayerStripAngle = -15.0;
76 LowerLayerPitch = 0.08;
77 UpperLayerPitch = 0.08;
78 ZSizeModuleWithFrames = 2.3;
85 LowerLayerStripAngle = 0.0;
86 UpperLayerStripAngle = +15.0;
87 LowerLayerPitch = 0.08;
88 UpperLayerPitch = 0.08;
89 ZSizeModuleWithFrames = 3.9;
96 LowerLayerStripAngle = 0.0;
97 UpperLayerStripAngle = -15.0;
98 LowerLayerPitch = 0.08;
99 UpperLayerPitch = 0.08;
100 ZSizeModuleWithFrames = 3.9;
110 XModuleSize_Plane10x10 = 10.0;
111 YModuleSize_Plane10x10 = 10.0;
114 XModuleSize_Plane66x41 = 66.0;
115 YModuleSize_Plane66x41 = 41.0;
117 XHotZoneSize_Plane66x41 = 15.0;
118 YHotZoneSize_Plane66x41 = 10.0;
121 XModuleSize_Plane163x45 = 163.2*0.5;
122 YModuleSize_Plane163x45 = 45.0;
124 XRectHotZoneSize_Plane163x45 = 40.0;
125 YRectHotZoneSize_Plane163x45 = 15.0;
127 XSlopeHotZoneSize_Plane163x45[0] = 37.99;
128 XSlopeHotZoneSize_Plane163x45[1] = 42.01;
130 YSlopeHotZoneSize_Plane163x45 = 15.0;
137 switch(fCurrentConfig) {
139 for(Int_t iModule = 0; iModule <
NModules; ++iModule) {
147 for(Int_t iModule = 0; iModule <
NModules; ++iModule) {
158 XSize = XModuleSize_Plane10x10;
159 YSize = YModuleSize_Plane10x10;
161 BuildModules_One10x10Plane();
165 XSize = XModuleSize_Plane66x41;
166 YSize = YModuleSize_Plane66x41;
168 BuildModules_One66x41Plane();
172 XSize = 2*XModuleSize_Plane66x41;
173 YSize = YModuleSize_Plane66x41;
175 BuildModules_Two66x41Plane();
179 XSize = 2*XModuleSize_Plane163x45;
180 YSize = YModuleSize_Plane163x45;
182 BuildModules_One163x45Plane();
195void BmnGemStripStation_RunWinter2016::BuildModules_One10x10Plane() {
200 Double_t DriftGapThickness = 0.3;
201 Double_t FirstTransferGapThickness = 0.25;
202 Double_t SecondTransferGapThickness = 0.2;
203 Double_t InductionGapThickness = 0.15;
206 DriftGapThickness, FirstTransferGapThickness,
207 SecondTransferGapThickness, InductionGapThickness);
211 XModuleSize_Plane10x10, YModuleSize_Plane10x10,
213 LowerLayerPitch, LowerLayerStripAngle);
221 XModuleSize_Plane10x10, YModuleSize_Plane10x10,
223 UpperLayerPitch, UpperLayerStripAngle);
235void BmnGemStripStation_RunWinter2016::BuildModules_One66x41Plane() {
240 Double_t DriftGapThickness = 0.3;
241 Double_t FirstTransferGapThickness = 0.25;
242 Double_t SecondTransferGapThickness = 0.2;
243 Double_t InductionGapThickness = 0.15;
246 DriftGapThickness, FirstTransferGapThickness,
247 SecondTransferGapThickness, InductionGapThickness);
253 XModuleSize_Plane66x41, YModuleSize_Plane66x41,
255 LowerLayerPitch, LowerLayerStripAngle);
257 if(UpperLayerStripAngle >= 0.0) {
258 lower_layer_zone0.SetStripNumberingOrder(
LeftToRight);
262 lower_layer_zone0.SetStripNumberingOrder(
LeftToRight);
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];
271 if(UpperLayerStripAngle >= 0.0) {
294 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
299 XModuleSize_Plane66x41, YModuleSize_Plane66x41,
301 UpperLayerPitch, UpperLayerStripAngle);
303 if(UpperLayerStripAngle >= 0.0) {
304 upper_layer_zone0.SetStripNumberingOrder(
LeftToRight);
308 upper_layer_zone0.SetStripNumberingOrder(
LeftToRight);
312 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
322 if(UpperLayerStripAngle >= 0.0) {
325 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
327 LowerLayerPitch, LowerLayerStripAngle);
335 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
337 UpperLayerPitch, UpperLayerStripAngle);
346 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
348 LowerLayerPitch, LowerLayerStripAngle);
356 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
358 UpperLayerPitch, UpperLayerStripAngle);
374void BmnGemStripStation_RunWinter2016::BuildModules_Two66x41Plane() {
380 Double_t DriftGapThickness = 0.3;
381 Double_t FirstTransferGapThickness = 0.25;
382 Double_t SecondTransferGapThickness = 0.2;
383 Double_t InductionGapThickness = 0.15;
386 DriftGapThickness, FirstTransferGapThickness,
387 SecondTransferGapThickness, InductionGapThickness);
393 XModuleSize_Plane66x41, YModuleSize_Plane66x41,
395 LowerLayerPitch, LowerLayerStripAngle);
397 lower_layer_zone0.SetStripNumberingOrder(
RightToLeft);
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];
418 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
423 XModuleSize_Plane66x41, YModuleSize_Plane66x41,
425 UpperLayerPitch, UpperLayerStripAngle);
427 upper_layer_zone0.SetStripNumberingOrder(
RightToLeft);
431 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
443 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
445 LowerLayerPitch, LowerLayerStripAngle);
453 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
455 UpperLayerPitch, UpperLayerStripAngle);
473 Double_t DriftGapThickness = 0.3;
474 Double_t FirstTransferGapThickness = 0.25;
475 Double_t SecondTransferGapThickness = 0.2;
476 Double_t InductionGapThickness = 0.15;
479 DriftGapThickness, FirstTransferGapThickness,
480 SecondTransferGapThickness, InductionGapThickness);
486 XModuleSize_Plane66x41, YModuleSize_Plane66x41,
488 LowerLayerPitch, LowerLayerStripAngle);
490 lower_layer_zone0.SetStripNumberingOrder(
LeftToRight);
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];
511 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
516 XModuleSize_Plane66x41, YModuleSize_Plane66x41,
518 UpperLayerPitch, UpperLayerStripAngle);
520 upper_layer_zone0.SetStripNumberingOrder(
LeftToRight);
524 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
536 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
538 LowerLayerPitch, LowerLayerStripAngle);
546 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
548 UpperLayerPitch, UpperLayerStripAngle);
565void BmnGemStripStation_RunWinter2016::BuildModules_One163x45Plane() {
571 Double_t DriftGapThickness = 0.3;
572 Double_t FirstTransferGapThickness = 0.25;
573 Double_t SecondTransferGapThickness = 0.2;
574 Double_t InductionGapThickness = 0.15;
577 DriftGapThickness, FirstTransferGapThickness,
578 SecondTransferGapThickness, InductionGapThickness);
584 XModuleSize_Plane163x45, YModuleSize_Plane163x45,
586 LowerLayerPitch, LowerLayerStripAngle);
588 if(UpperLayerStripAngle >= 0.0) {
589 lower_layer_zone0.SetStripNumberingOrder(
LeftToRight);
593 lower_layer_zone0.SetStripNumberingOrder(
RightToLeft);
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];
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;
613 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_lower_zone0, XPoints_DeadZone_lower_zone0, YPoints_DeadZone_lower_zone0);
618 XModuleSize_Plane163x45, YModuleSize_Plane163x45,
620 UpperLayerPitch, UpperLayerStripAngle);
622 if(UpperLayerStripAngle >= 0.0) {
623 upper_layer_zone0.SetStripNumberingOrder(
LeftToRight);
627 upper_layer_zone0.SetStripNumberingOrder(
RightToLeft);
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];
636 if(UpperLayerStripAngle >= 0.0) {
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;
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;
661 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_upper_zone0, XPoints_DeadZone_upper_zone0, YPoints_DeadZone_upper_zone0);
666 XRectHotZoneSize_Plane163x45, YRectHotZoneSize_Plane163x45,
668 LowerLayerPitch, LowerLayerStripAngle);
670 if(UpperLayerStripAngle >= 0.0) {
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];
695 lower_layer_zone1.
AddDeadZone(NPoints_DeadZone_lower_zone1, XPoints_DeadZone_lower_zone1, YPoints_DeadZone_lower_zone1);
700 XSlopeHotZoneSize_Plane163x45[1], YSlopeHotZoneSize_Plane163x45,
702 UpperLayerPitch, UpperLayerStripAngle);
704 if(UpperLayerStripAngle >= 0.0) {
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];
728 upper_layer_zone1.
AddDeadZone(NPoints_DeadZone_upper_zone1_hole, XPoints_DeadZone_upper_zone1_hole, YPoints_DeadZone_upper_zone1_hole);
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];
735 if(UpperLayerStripAngle >= 0.0) {
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;
750 YPoints_DeadZone_upper_zone1_triang[1] =
YShiftOfModules[0]+
YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
754 upper_layer_zone1.
AddDeadZone(NPoints_DeadZone_upper_zone1_triang, XPoints_DeadZone_upper_zone1_triang, YPoints_DeadZone_upper_zone1_triang);
768 Double_t DriftGapThickness = 0.3;
769 Double_t FirstTransferGapThickness = 0.25;
770 Double_t SecondTransferGapThickness = 0.2;
771 Double_t InductionGapThickness = 0.15;
774 DriftGapThickness, FirstTransferGapThickness,
775 SecondTransferGapThickness, InductionGapThickness);
781 XModuleSize_Plane163x45, YModuleSize_Plane163x45,
783 LowerLayerPitch, LowerLayerStripAngle);
785 if(UpperLayerStripAngle >= 0.0) {
786 lower_layer_zone0.SetStripNumberingOrder(
LeftToRight);
790 lower_layer_zone0.SetStripNumberingOrder(
RightToLeft);
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];
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;
809 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_lower_zone0, XPoints_DeadZone_lower_zone0, YPoints_DeadZone_lower_zone0);
814 XModuleSize_Plane163x45, YModuleSize_Plane163x45,
816 UpperLayerPitch, UpperLayerStripAngle);
818 if(UpperLayerStripAngle >= 0.0) {
819 upper_layer_zone0.SetStripNumberingOrder(
LeftToRight);
823 upper_layer_zone0.SetStripNumberingOrder(
RightToLeft);
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];
832 if(UpperLayerStripAngle >= 0.0) {
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;
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;
855 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_upper_zone0, XPoints_DeadZone_upper_zone0, YPoints_DeadZone_upper_zone0);
860 XRectHotZoneSize_Plane163x45, YRectHotZoneSize_Plane163x45,
862 LowerLayerPitch, LowerLayerStripAngle);
864 if(UpperLayerStripAngle >= 0.0) {
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];
888 lower_layer_zone1.
AddDeadZone(NPoints_DeadZone_lower_zone1, XPoints_DeadZone_lower_zone1, YPoints_DeadZone_lower_zone1);
893 XSlopeHotZoneSize_Plane163x45[1], YSlopeHotZoneSize_Plane163x45,
895 UpperLayerPitch, UpperLayerStripAngle);
897 if(UpperLayerStripAngle >= 0.0) {
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];
921 upper_layer_zone1.
AddDeadZone(NPoints_DeadZone_upper_zone1_hole, XPoints_DeadZone_upper_zone1_hole, YPoints_DeadZone_upper_zone1_hole);
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];
928 if(UpperLayerStripAngle >= 0.0) {
934 YPoints_DeadZone_upper_zone1_triang[1] =
YShiftOfModules[1]+
YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
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;
947 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)
BmnGemStripStation_RunWinter2016(Int_t iStation, Double_t xpos_station, Double_t ypos_station, Double_t zpos_station, Double_t beamradius, BmnGemStripConfiguration::GEM_CONFIG config)
virtual ~BmnGemStripStation_RunWinter2016()
Double_t * XShiftOfModules
BmnGemStripModule ** Modules
Double_t * ZShiftOfModules
Double_t * YShiftOfModules
void DefineStationBorders()
const Double_t XModuleShifts[NStations][NMaxModules]
const Double_t YModuleShifts[NStations][NMaxModules]
const Double_t ZModuleShifts[NStations][NMaxModules]