BmnRoot
Loading...
Searching...
No Matches
BmnGemStripStation_RunSummer2016.cxx
Go to the documentation of this file.
1#include <fstream>
2
4
6 Double_t xpos_station, Double_t ypos_station, Double_t zpos_station,
7 Double_t beamradius, BmnGemStripConfiguration::GEM_CONFIG config) {
8
9 //All linear values must be entered in units of cm
10
11 fCurrentConfig = config;
12
13 StationNumber = iStation;
14
15 //Station shift position
16 XPosition = xpos_station;
17 YPosition = ypos_station;
18 ZPosition = zpos_station;
19
20 BeamHoleRadius = beamradius;
21
22
23 //Parameters for each station
24 //ZSizeModuleWithFrames : GEM thickness (frames+sensitive)
25 //ZSizeModule : sensitive volume thickness
26 //XSize : x-size of the station
27 //YSize : y-size of the station
28 //ZSize : z-size of the station
29
30 switch (iStation) {
31 case 0: //one plane 10x10
32 LowerLayerStripAngle = 0.0;
33 UpperLayerStripAngle = +90.0;
34 LowerLayerPitch = 0.04;
35 UpperLayerPitch = 0.04;
36 ZSizeModuleWithFrames = 1.3;
37 ZSizeModule = 0.9;
38 EDriftDirection = ForwardZAxisEDrift;
39 NModules = 1; //Number of modules in the station
40 break;
41
42 case 1: //one plane 66x41
43 LowerLayerStripAngle = 0.0;
44 UpperLayerStripAngle = +15.0;
45 LowerLayerPitch = 0.08;
46 UpperLayerPitch = 0.08;
47 ZSizeModuleWithFrames = 2.3;
48 ZSizeModule = 0.9;
49 EDriftDirection = ForwardZAxisEDrift;
50 NModules = 1; //Number of modules in the station
51 break;
52
53 case 2: //one plane 66x41
54 LowerLayerStripAngle = 0.0;
55 UpperLayerStripAngle = -15.0;
56 LowerLayerPitch = 0.08;
57 UpperLayerPitch = 0.08;
58 ZSizeModuleWithFrames = 2.3;
59 ZSizeModule = 0.9;
60 EDriftDirection = BackwardZAxisEDrift;
61 NModules = 1; //Number of modules in the station
62 break;
63
64 case 3: //one plane 66x41
65 LowerLayerStripAngle = 0.0;
66 UpperLayerStripAngle = +15.0;
67 LowerLayerPitch = 0.08;
68 UpperLayerPitch = 0.08;
69 ZSizeModuleWithFrames = 2.3;
70 ZSizeModule = 0.9;
71 EDriftDirection = ForwardZAxisEDrift;
72 NModules = 1; //Number of modules in the station
73 break;
74
75 case 4: //one plane 66x41
76 LowerLayerStripAngle = 0.0;
77 UpperLayerStripAngle = -15.0;
78 LowerLayerPitch = 0.08;
79 UpperLayerPitch = 0.08;
80 ZSizeModuleWithFrames = 2.3;
81 ZSizeModule = 0.9;
82 EDriftDirection = BackwardZAxisEDrift;
83 NModules = 1; //Number of modules in the station
84 break;
85
86 case 5: //one plane 66x41
87 LowerLayerStripAngle = 0.0;
88 UpperLayerStripAngle = +15.0;
89 LowerLayerPitch = 0.08;
90 UpperLayerPitch = 0.08;
91 ZSizeModuleWithFrames = 2.3;
92 ZSizeModule = 0.9;
93 EDriftDirection = ForwardZAxisEDrift;
94 NModules = 1; //Number of modules in the station
95 break;
96
97 case 6: //one plane 163x45
98 LowerLayerStripAngle = 0.0;
99 UpperLayerStripAngle = -15.0;
100 LowerLayerPitch = 0.08;
101 UpperLayerPitch = 0.08;
102 ZSizeModuleWithFrames = 3.9;
103 ZSizeModule = 0.9;
104 EDriftDirection = BackwardZAxisEDrift;
105 NModules = 2; //Number of modules in the station
106 break;
107 }
108
109 //Planes SIZES
110
111 //station 0 (plane 10x10)
112 XModuleSize_Plane10x10 = 10.0;
113 YModuleSize_Plane10x10 = 10.0;
114
115 //station 1-5 (plane 66x41)
116 XModuleSize_Plane66x41 = 66.0;
117 YModuleSize_Plane66x41 = 41.0;
118
119 XHotZoneSize_Plane66x41 = 15.0;
120 YHotZoneSize_Plane66x41 = 10.0;
121
122 //station 6 (plane 163x45)
123 XModuleSize_Plane163x45 = 163.2*0.5;
124 YModuleSize_Plane163x45 = 45.0;
125
126 XRectHotZoneSize_Plane163x45 = 40.0;
127 YRectHotZoneSize_Plane163x45 = 15.0;
128
129 XSlopeHotZoneSize_Plane163x45[0] = 37.99;
130 XSlopeHotZoneSize_Plane163x45[1] = 42.01;
131
132 YSlopeHotZoneSize_Plane163x45 = 15.0;
133
134 //Module shifts ------------------------------------------------------------
135 XShiftOfModules = new Double_t[NModules];
136 YShiftOfModules = new Double_t[NModules];
137 ZShiftOfModules = new Double_t[NModules];
138
139 switch (fCurrentConfig) {
141 for (Int_t iModule = 0; iModule < NModules; ++iModule) {
142 XShiftOfModules[iModule] = -BmnGemStationPositions_RunSummer2016::XModuleShifts[iStation][iModule]; //inverted : (bm@n x-coord -> classical x-coord)
145 }
146 break;
147
148 default:
149 for (Int_t iModule = 0; iModule < NModules; ++iModule) {
150 XShiftOfModules[iModule] = -BmnGemStationPositions_RunSummer2016::XModuleShifts[iStation][iModule]; //inverted : (bm@n x-coord -> classical x-coord)
153 }
154 }
155 //--------------------------------------------------------------------------
156
157 //Assembling a station -----------------------------------------------------
158 if (StationNumber == 0) {
159 XSize = XModuleSize_Plane10x10;
160 YSize = YModuleSize_Plane10x10;
161 ZSize = ZSizeModule;
162 BuildModules_One10x10Plane();
163 }
164
165 if (StationNumber >= 1 && StationNumber <= 5) {
166 XSize = XModuleSize_Plane66x41;
167 YSize = YModuleSize_Plane66x41;
168 ZSize = ZSizeModule;
169 BuildModules_One66x41Plane();
170 }
171
172 if (StationNumber == 6) {
173 XSize = 2 * XModuleSize_Plane163x45;
174 YSize = YModuleSize_Plane163x45;
175 ZSize = ZSizeModule;
176 BuildModules_One163x45Plane();
177 }
178 //end assembling the station -----------------------------------------------
179
180 //define station borders and sizes
182}
183
187//------------------------------------------------------------------------------
188
189void BmnGemStripStation_RunSummer2016::BuildModules_One10x10Plane() {
190
192
193 //module
194 Double_t DriftGapThickness = 0.3;
195 Double_t FirstTransferGapThickness = 0.25;
196 Double_t SecondTransferGapThickness = 0.2;
197 Double_t InductionGapThickness = 0.15;
198
199 Modules[0] = new BmnGemStripModule(ZPosition + ZShiftOfModules[0], EDriftDirection,
200 DriftGapThickness, FirstTransferGapThickness,
201 SecondTransferGapThickness, InductionGapThickness);
202
203 //lower strip layer --------------------------------------------------------
204 BmnGemStripLayer lower_layer(0, LowerStripLayer,
205 XModuleSize_Plane10x10, YModuleSize_Plane10x10,
206 XShiftOfModules[0]+XPosition-XModuleSize_Plane10x10*0.5, YShiftOfModules[0]+YPosition-YModuleSize_Plane10x10*0.5,
207 LowerLayerPitch, LowerLayerStripAngle);
208
209 lower_layer.SetStripNumberingOrder(RightToLeft);
210 lower_layer.SetStripNumberingBorders(LeftTop, RightBottom);
211 //--------------------------------------------------------------------------
212
213 //upper strip layer --------------------------------------------------------
214 BmnGemStripLayer upper_layer(0, UpperStripLayer,
215 XModuleSize_Plane10x10, YModuleSize_Plane10x10,
216 XShiftOfModules[0]+XPosition-XModuleSize_Plane10x10*0.5, YShiftOfModules[0]+YPosition-YModuleSize_Plane10x10*0.5,
217 UpperLayerPitch, UpperLayerStripAngle);
218
219 upper_layer.SetStripNumberingOrder(LeftToRight);
220 upper_layer.SetStripNumberingBorders(LeftTop, RightBottom);
221 //--------------------------------------------------------------------------
222
223 Modules[0]->AddStripLayer(lower_layer);
224 Modules[0]->AddStripLayer(upper_layer);
225
226 return;
227}
228
229void BmnGemStripStation_RunSummer2016::BuildModules_One66x41Plane() {
230
232
233 //module
234 Double_t DriftGapThickness = 0.3;
235 Double_t FirstTransferGapThickness = 0.25;
236 Double_t SecondTransferGapThickness = 0.2;
237 Double_t InductionGapThickness = 0.15;
238
239 Modules[0] = new BmnGemStripModule(ZPosition + ZShiftOfModules[0], EDriftDirection,
240 DriftGapThickness, FirstTransferGapThickness,
241 SecondTransferGapThickness, InductionGapThickness);
242
243 //zone 0 (big) -------------------------------------------------------------
244
245 //lower strip layer (zone 0) -------------------------------------------
246 BmnGemStripLayer lower_layer_zone0(0, LowerStripLayer,
247 XModuleSize_Plane66x41, YModuleSize_Plane66x41,
248 XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5, YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5,
249 LowerLayerPitch, LowerLayerStripAngle);
250
251 if (UpperLayerStripAngle >= 0.0) {
252 lower_layer_zone0.SetStripNumberingOrder(LeftToRight);
253 lower_layer_zone0.SetStripNumberingBorders(LeftTop, RightBottom);
254 } else {
255 lower_layer_zone0.SetStripNumberingOrder(LeftToRight);
256 lower_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
257 }
258
259 //dead zone for layers in zone 0
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];
263
264 if (UpperLayerStripAngle >= 0.0) {
265 XPoints_DeadZone_zone0[0] = XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5;
266 XPoints_DeadZone_zone0[1] = XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5;
267 XPoints_DeadZone_zone0[2] = XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5 + XHotZoneSize_Plane66x41;
268 XPoints_DeadZone_zone0[3] = XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5 + XHotZoneSize_Plane66x41;
269
270 YPoints_DeadZone_zone0[0] = YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5;
271 YPoints_DeadZone_zone0[1] = YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5 + YHotZoneSize_Plane66x41;
272 YPoints_DeadZone_zone0[2] = YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5 + YHotZoneSize_Plane66x41;
273 YPoints_DeadZone_zone0[3] = YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5;
274 } else {
275 XPoints_DeadZone_zone0[0] = XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5;
276 XPoints_DeadZone_zone0[1] = XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5;
277 XPoints_DeadZone_zone0[2] = XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5 + XHotZoneSize_Plane66x41;
278 XPoints_DeadZone_zone0[3] = XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5 + XHotZoneSize_Plane66x41;
279
280 YPoints_DeadZone_zone0[0] = YShiftOfModules[0]+YPosition+YModuleSize_Plane66x41*0.5 - YHotZoneSize_Plane66x41;
281 YPoints_DeadZone_zone0[1] = YShiftOfModules[0]+YPosition+YModuleSize_Plane66x41*0.5;
282 YPoints_DeadZone_zone0[2] = YShiftOfModules[0]+YPosition+YModuleSize_Plane66x41*0.5;
283 YPoints_DeadZone_zone0[3] = YShiftOfModules[0]+YPosition+YModuleSize_Plane66x41*0.5 - YHotZoneSize_Plane66x41;
284 }
285
286 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
287 //----------------------------------------------------------------------
288
289 //upper strip layer (zone 0) -------------------------------------------
290 BmnGemStripLayer upper_layer_zone0(0, UpperStripLayer,
291 XModuleSize_Plane66x41, YModuleSize_Plane66x41,
292 XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5, YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5,
293 UpperLayerPitch, UpperLayerStripAngle);
294
295 if (UpperLayerStripAngle >= 0.0) {
296 upper_layer_zone0.SetStripNumberingOrder(LeftToRight);
297 upper_layer_zone0.SetStripNumberingBorders(LeftTop, RightBottom);
298 } else {
299 upper_layer_zone0.SetStripNumberingOrder(LeftToRight);
300 upper_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
301 }
302
303 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_zone0, XPoints_DeadZone_zone0, YPoints_DeadZone_zone0);
304 //----------------------------------------------------------------------
305
306 //--------------------------------------------------------------------------
307
308 //zone 1 (hot) -------------------------------------------------------------
309
310 BmnGemStripLayer lower_layer_zone1;
311 BmnGemStripLayer upper_layer_zone1;
312
313 if (UpperLayerStripAngle >= 0.0) {
314 //lower strip layer (zone 1) -------------------------------------------
315 lower_layer_zone1 = BmnGemStripLayer(1, LowerStripLayer,
316 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
317 XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5, YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5,
318 LowerLayerPitch, LowerLayerStripAngle);
319
320 lower_layer_zone1.SetStripNumberingOrder(LeftToRight);
321 lower_layer_zone1.SetStripNumberingBorders(LeftTop, RightBottom);
322 //----------------------------------------------------------------------
323
324 //upper strip layer (zone 1) -------------------------------------------
325 upper_layer_zone1 = BmnGemStripLayer(1, UpperStripLayer,
326 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
327 XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5, YShiftOfModules[0]+YPosition-YModuleSize_Plane66x41*0.5,
328 UpperLayerPitch, UpperLayerStripAngle);
329
330 upper_layer_zone1.SetStripNumberingOrder(LeftToRight);
331 upper_layer_zone1.SetStripNumberingBorders(LeftTop, RightBottom);
332 //----------------------------------------------------------------------
333 } else {
334 //lower strip layer (zone 1) -------------------------------------------
335 lower_layer_zone1 = BmnGemStripLayer(1, LowerStripLayer,
336 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
337 XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5, YShiftOfModules[0]+YPosition+YModuleSize_Plane66x41*0.5-YHotZoneSize_Plane66x41,
338 LowerLayerPitch, LowerLayerStripAngle);
339
340 lower_layer_zone1.SetStripNumberingOrder(LeftToRight);
341 lower_layer_zone1.SetStripNumberingBorders(LeftTop, RightBottom);
342 //----------------------------------------------------------------------
343
344 //upper strip layer (zone 1) -------------------------------------------
345 upper_layer_zone1 = BmnGemStripLayer(1, UpperStripLayer,
346 XHotZoneSize_Plane66x41, YHotZoneSize_Plane66x41,
347 XShiftOfModules[0]+XPosition-XModuleSize_Plane66x41*0.5, YShiftOfModules[0]+YPosition+YModuleSize_Plane66x41*0.5-YHotZoneSize_Plane66x41,
348 UpperLayerPitch, UpperLayerStripAngle);
349
350 upper_layer_zone1.SetStripNumberingOrder(LeftToRight);
351 upper_layer_zone1.SetStripNumberingBorders(LeftBottom, RightTop);
352 //----------------------------------------------------------------------
353 }
354 //--------------------------------------------------------------------------
355
356 Modules[0]->AddStripLayer(lower_layer_zone0);
357 Modules[0]->AddStripLayer(upper_layer_zone0);
358 Modules[0]->AddStripLayer(lower_layer_zone1);
359 Modules[0]->AddStripLayer(upper_layer_zone1);
360
361 return;
362}
363
364void BmnGemStripStation_RunSummer2016::BuildModules_One163x45Plane() {
366
367
368//module 0 (left) --------------------------------------------------------------
369 {
370 Double_t DriftGapThickness = 0.3;
371 Double_t FirstTransferGapThickness = 0.25;
372 Double_t SecondTransferGapThickness = 0.2;
373 Double_t InductionGapThickness = 0.15;
374
375 Modules[0] = new BmnGemStripModule(ZPosition+ZShiftOfModules[0], EDriftDirection,
376 DriftGapThickness, FirstTransferGapThickness,
377 SecondTransferGapThickness, InductionGapThickness);
378
379 //zone 0 (big) ---------------------------------------------------------
380
381 //lower strip layer (zone 0) -------------------------------------------
382 BmnGemStripLayer lower_layer_zone0(0, LowerStripLayer,
383 XModuleSize_Plane163x45, YModuleSize_Plane163x45,
384 XShiftOfModules[0]+XPosition-XModuleSize_Plane163x45, YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5,
385 LowerLayerPitch, LowerLayerStripAngle);
386
387 lower_layer_zone0.SetStripNumberingOrder(RightToLeft);
388 lower_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
389
390 //dead zone for lower layer in zone 0
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];
394
395 XPoints_DeadZone_lower_zone0[0] = XShiftOfModules[0]+XPosition-XRectHotZoneSize_Plane163x45;
396 XPoints_DeadZone_lower_zone0[1] = XShiftOfModules[0]+XPosition-XRectHotZoneSize_Plane163x45;
397 XPoints_DeadZone_lower_zone0[2] = XShiftOfModules[0]+XPosition+0.0;
398 XPoints_DeadZone_lower_zone0[3] = XShiftOfModules[0]+XPosition+0.0;
399
400 YPoints_DeadZone_lower_zone0[0] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
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;
403 YPoints_DeadZone_lower_zone0[3] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
404
405 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_lower_zone0, XPoints_DeadZone_lower_zone0, YPoints_DeadZone_lower_zone0);
406 //----------------------------------------------------------------------
407
408 //upper strip layer (zone 0) -------------------------------------------
409 BmnGemStripLayer upper_layer_zone0(0, UpperStripLayer,
410 XModuleSize_Plane163x45, YModuleSize_Plane163x45,
411 XShiftOfModules[0]+XPosition-XModuleSize_Plane163x45, YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5,
412 UpperLayerPitch, UpperLayerStripAngle);
413
414 upper_layer_zone0.SetStripNumberingOrder(RightToLeft);
415 upper_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
416
417 //dead zone for upper layer in zone 0
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];
421
422 XPoints_DeadZone_upper_zone0[0] = XShiftOfModules[0]+XPosition-XSlopeHotZoneSize_Plane163x45[0];
423 XPoints_DeadZone_upper_zone0[1] = XShiftOfModules[0]+XPosition-XSlopeHotZoneSize_Plane163x45[1];
424 XPoints_DeadZone_upper_zone0[2] = XShiftOfModules[0]+XPosition+0.0;
425 XPoints_DeadZone_upper_zone0[3] = XShiftOfModules[0]+XPosition+0.0;
426
427 YPoints_DeadZone_upper_zone0[0] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
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;
430 YPoints_DeadZone_upper_zone0[3] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
431
432 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_upper_zone0, XPoints_DeadZone_upper_zone0, YPoints_DeadZone_upper_zone0);
433 //----------------------------------------------------------------------
434
435 //lower strip layer (zone 1) -------------------------------------------
436 BmnGemStripLayer lower_layer_zone1(1, LowerStripLayer,
437 XRectHotZoneSize_Plane163x45, YRectHotZoneSize_Plane163x45,
438 XShiftOfModules[0]+XPosition-XRectHotZoneSize_Plane163x45, YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5,
439 LowerLayerPitch, LowerLayerStripAngle);
440
441 lower_layer_zone1.SetStripNumberingOrder(RightToLeft);
442 lower_layer_zone1.SetStripNumberingBorders(LeftBottom, RightTop);
443
444 //dead zone for lower layer in zone 1 (hole)
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];
448
449 XPoints_DeadZone_lower_zone1[0] = XShiftOfModules[0]+XPosition-BeamHoleRadius;
450 XPoints_DeadZone_lower_zone1[1] = XShiftOfModules[0]+XPosition-BeamHoleRadius;
451 XPoints_DeadZone_lower_zone1[2] = XShiftOfModules[0]+XPosition+0.0;
452 XPoints_DeadZone_lower_zone1[3] = XShiftOfModules[0]+XPosition+0.0;
453
454 YPoints_DeadZone_lower_zone1[0] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
455 YPoints_DeadZone_lower_zone1[1] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5 + BeamHoleRadius;
456 YPoints_DeadZone_lower_zone1[2] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5 + BeamHoleRadius;
457 YPoints_DeadZone_lower_zone1[3] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
458
459 lower_layer_zone1.AddDeadZone(NPoints_DeadZone_lower_zone1, XPoints_DeadZone_lower_zone1, YPoints_DeadZone_lower_zone1);
460 //----------------------------------------------------------------------
461
462 //upper strip layer (zone 1) -------------------------------------------
463 BmnGemStripLayer upper_layer_zone1(1, UpperStripLayer,
464 XSlopeHotZoneSize_Plane163x45[1], YSlopeHotZoneSize_Plane163x45,
465 XShiftOfModules[0]+XPosition-XSlopeHotZoneSize_Plane163x45[1], YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5,
466 UpperLayerPitch, UpperLayerStripAngle);
467
468 upper_layer_zone1.SetStripNumberingOrder(RightToLeft);
469 upper_layer_zone1.SetStripNumberingBorders(LeftTop, RightTop);
470
471 //dead zone for upper layer in zone 1 (hole)
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];
475
476 XPoints_DeadZone_upper_zone1_hole[0] = XShiftOfModules[0]+XPosition-BeamHoleRadius;
477 XPoints_DeadZone_upper_zone1_hole[1] = XShiftOfModules[0]+XPosition-BeamHoleRadius;
478 XPoints_DeadZone_upper_zone1_hole[2] = XShiftOfModules[0]+XPosition+0.0;
479 XPoints_DeadZone_upper_zone1_hole[3] = XShiftOfModules[0]+XPosition+0.0;
480
481 YPoints_DeadZone_upper_zone1_hole[0] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
482 YPoints_DeadZone_upper_zone1_hole[1] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5 + BeamHoleRadius;
483 YPoints_DeadZone_upper_zone1_hole[2] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5 + BeamHoleRadius;
484 YPoints_DeadZone_upper_zone1_hole[3] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
485
486 upper_layer_zone1.AddDeadZone(NPoints_DeadZone_upper_zone1_hole, XPoints_DeadZone_upper_zone1_hole, YPoints_DeadZone_upper_zone1_hole);
487
488 //dead zone for upper layer in zone 1 (triangle)
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];
492
493 XPoints_DeadZone_upper_zone1_triang[0] = XShiftOfModules[0]+XPosition-XSlopeHotZoneSize_Plane163x45[1];
494 XPoints_DeadZone_upper_zone1_triang[1] = XShiftOfModules[0]+XPosition-XSlopeHotZoneSize_Plane163x45[1];
495 XPoints_DeadZone_upper_zone1_triang[2] = XShiftOfModules[0]+XPosition-XSlopeHotZoneSize_Plane163x45[0];
496
497 YPoints_DeadZone_upper_zone1_triang[0] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
498 YPoints_DeadZone_upper_zone1_triang[1] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5 + YSlopeHotZoneSize_Plane163x45;
499 YPoints_DeadZone_upper_zone1_triang[2] = YShiftOfModules[0]+YPosition-YModuleSize_Plane163x45*0.5;
500
501 upper_layer_zone1.AddDeadZone(NPoints_DeadZone_upper_zone1_triang, XPoints_DeadZone_upper_zone1_triang, YPoints_DeadZone_upper_zone1_triang);
502
503 //----------------------------------------------------------------------
504
505 Modules[0]->AddStripLayer(lower_layer_zone0);
506 Modules[0]->AddStripLayer(upper_layer_zone0);
507 Modules[0]->AddStripLayer(lower_layer_zone1);
508 Modules[0]->AddStripLayer(upper_layer_zone1);
509
510 }
511//--------------------------------------------------------------------------
512
513//module 1 (right) --------------------------------------------------------------
514 {
515 Double_t DriftGapThickness = 0.3;
516 Double_t FirstTransferGapThickness = 0.25;
517 Double_t SecondTransferGapThickness = 0.2;
518 Double_t InductionGapThickness = 0.15;
519
520 Modules[1] = new BmnGemStripModule(ZPosition+ZShiftOfModules[1], EDriftDirection,
521 DriftGapThickness, FirstTransferGapThickness,
522 SecondTransferGapThickness, InductionGapThickness);
523
524 //zone 0 (big) ---------------------------------------------------------
525
526 //lower strip layer (zone 0) -------------------------------------------
527 BmnGemStripLayer lower_layer_zone0(0, LowerStripLayer,
528 XModuleSize_Plane163x45, YModuleSize_Plane163x45,
529 XShiftOfModules[1]+XPosition+0.0, YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5,
530 LowerLayerPitch, LowerLayerStripAngle);
531
532 lower_layer_zone0.SetStripNumberingOrder(RightToLeft);
533 lower_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
534
535 //dead zone for lower layer in zone 0
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];
539
540 XPoints_DeadZone_lower_zone0[0] = XShiftOfModules[1]+XPosition+0.0;
541 XPoints_DeadZone_lower_zone0[1] = XShiftOfModules[1]+XPosition+0.0;
542 XPoints_DeadZone_lower_zone0[2] = XShiftOfModules[1]+XPosition+XRectHotZoneSize_Plane163x45;
543 XPoints_DeadZone_lower_zone0[3] = XShiftOfModules[1]+XPosition+XRectHotZoneSize_Plane163x45;
544
545 YPoints_DeadZone_lower_zone0[0] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
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;
548 YPoints_DeadZone_lower_zone0[3] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
549
550 lower_layer_zone0.AddDeadZone(NPoints_DeadZone_lower_zone0, XPoints_DeadZone_lower_zone0, YPoints_DeadZone_lower_zone0);
551 //----------------------------------------------------------------------
552
553 //upper strip layer (zone 0) -------------------------------------------
554 BmnGemStripLayer upper_layer_zone0(0, UpperStripLayer,
555 XModuleSize_Plane163x45, YModuleSize_Plane163x45,
556 XShiftOfModules[1]+XPosition+0.0, YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5,
557 UpperLayerPitch, UpperLayerStripAngle);
558
559 upper_layer_zone0.SetStripNumberingOrder(RightToLeft);
560 upper_layer_zone0.SetStripNumberingBorders(LeftBottom, RightTop);
561
562 //dead zone for upper layer in zone 0
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];
566
567 XPoints_DeadZone_upper_zone0[0] = XShiftOfModules[1]+XPosition+0.0;
568 XPoints_DeadZone_upper_zone0[1] = XShiftOfModules[1]+XPosition+0.0;
569 XPoints_DeadZone_upper_zone0[2] = XShiftOfModules[1]+XPosition+XSlopeHotZoneSize_Plane163x45[0];
570 XPoints_DeadZone_upper_zone0[3] = XShiftOfModules[1]+XPosition+XSlopeHotZoneSize_Plane163x45[1];
571
572 YPoints_DeadZone_upper_zone0[0] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
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;
575 YPoints_DeadZone_upper_zone0[3] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
576
577 upper_layer_zone0.AddDeadZone(NPoints_DeadZone_upper_zone0, XPoints_DeadZone_upper_zone0, YPoints_DeadZone_upper_zone0);
578 //----------------------------------------------------------------------
579
580 //lower strip layer (zone 1) -------------------------------------------
581 BmnGemStripLayer lower_layer_zone1(1, LowerStripLayer,
582 XRectHotZoneSize_Plane163x45, YRectHotZoneSize_Plane163x45,
583 XShiftOfModules[1]+XPosition+0.0, YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5,
584 LowerLayerPitch, LowerLayerStripAngle);
585
586 lower_layer_zone1.SetStripNumberingOrder(RightToLeft);
587 lower_layer_zone1.SetStripNumberingBorders(LeftBottom, RightTop);
588
589 //dead zone for lower layer in zone 1 (hole)
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];
593
594 XPoints_DeadZone_lower_zone1[0] = XShiftOfModules[1]+XPosition+0.0;
595 XPoints_DeadZone_lower_zone1[1] = XShiftOfModules[1]+XPosition+0.0;
596 XPoints_DeadZone_lower_zone1[2] = XShiftOfModules[1]+XPosition+BeamHoleRadius;
597 XPoints_DeadZone_lower_zone1[3] = XShiftOfModules[1]+XPosition+BeamHoleRadius;
598
599 YPoints_DeadZone_lower_zone1[0] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
600 YPoints_DeadZone_lower_zone1[1] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5 + BeamHoleRadius;
601 YPoints_DeadZone_lower_zone1[2] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5 + BeamHoleRadius;
602 YPoints_DeadZone_lower_zone1[3] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
603
604 lower_layer_zone1.AddDeadZone(NPoints_DeadZone_lower_zone1, XPoints_DeadZone_lower_zone1, YPoints_DeadZone_lower_zone1);
605 //----------------------------------------------------------------------
606
607 //upper strip layer (zone 1) -------------------------------------------
608 BmnGemStripLayer upper_layer_zone1(1, UpperStripLayer,
609 XSlopeHotZoneSize_Plane163x45[1], YSlopeHotZoneSize_Plane163x45,
610 XShiftOfModules[1]+XPosition+0.0, YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5,
611 UpperLayerPitch, UpperLayerStripAngle);
612
613 upper_layer_zone1.SetStripNumberingOrder(RightToLeft);
615
616 //dead zone for upper layer in zone 1 (hole)
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];
620
621 XPoints_DeadZone_upper_zone1_hole[0] = XShiftOfModules[1]+XPosition+0.0;
622 XPoints_DeadZone_upper_zone1_hole[1] = XShiftOfModules[1]+XPosition+0.0;
623 XPoints_DeadZone_upper_zone1_hole[2] = XShiftOfModules[1]+XPosition+BeamHoleRadius;
624 XPoints_DeadZone_upper_zone1_hole[3] = XShiftOfModules[1]+XPosition+BeamHoleRadius;
625
626 YPoints_DeadZone_upper_zone1_hole[0] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
627 YPoints_DeadZone_upper_zone1_hole[1] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5 + BeamHoleRadius;
628 YPoints_DeadZone_upper_zone1_hole[2] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5 + BeamHoleRadius;
629 YPoints_DeadZone_upper_zone1_hole[3] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
630
631 upper_layer_zone1.AddDeadZone(NPoints_DeadZone_upper_zone1_hole, XPoints_DeadZone_upper_zone1_hole, YPoints_DeadZone_upper_zone1_hole);
632
633 //dead zone for upper layer in zone 1 (triangle)
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];
637
638 XPoints_DeadZone_upper_zone1_triang[0] = XShiftOfModules[1]+XPosition+XSlopeHotZoneSize_Plane163x45[1];
639 XPoints_DeadZone_upper_zone1_triang[1] = XShiftOfModules[1]+XPosition+XSlopeHotZoneSize_Plane163x45[0];
640 XPoints_DeadZone_upper_zone1_triang[2] = XShiftOfModules[1]+XPosition+XSlopeHotZoneSize_Plane163x45[1];
641
642 YPoints_DeadZone_upper_zone1_triang[0] = YShiftOfModules[1]+YPosition-YModuleSize_Plane163x45*0.5;
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;
645
646 upper_layer_zone1.AddDeadZone(NPoints_DeadZone_upper_zone1_triang, XPoints_DeadZone_upper_zone1_triang, YPoints_DeadZone_upper_zone1_triang);
647
648 //----------------------------------------------------------------------
649
650 Modules[1]->AddStripLayer(lower_layer_zone0);
651 Modules[1]->AddStripLayer(upper_layer_zone0);
652 Modules[1]->AddStripLayer(lower_layer_zone1);
653 Modules[1]->AddStripLayer(upper_layer_zone1);
654
655 }
656 return;
657}
@ 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_RunSummer2016(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 ZModuleShifts[NStations][NMaxModules]
const Double_t YModuleShifts[NStations][NMaxModules]
const Double_t XModuleShifts[NStations][NMaxModules]