BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
SiliconConfigCalculate_Run9.C
Go to the documentation of this file.
1/*
2 * Description:
3 * Macro for calculating parameters of FSD (Forward Silicon detector) and writing them
4 * into the XML-file needed for simulation and reconstruction procedures.
5 *
6 * !!! IMPORTANT !!!
7 * The obtained XML-file SHOULD BE MOVED into the 'parameters/silicon/XMLConfigs' directory
8 *
9 * Configuration of FSD in RUN-9
10 *
11 * Author: D. Baranov
12 * Created: 18.04.2025
13 */
14
15#include "Rtypes.h"
16
17R__ADD_INCLUDE_PATH($VMCWORKDIR)
18
19#include "TString.h"
20
21#include <fstream>
22
23using namespace TMath;
24using namespace std;
25
26// Configuration of modules -----------------------------------------------------
27
29{
32}; // STANDARD_MODULE is (63x126)mm, LONG_MODULE is (63x186)mm
33
34const unsigned int NModuleSizes = 2;
35
36Double_t YGapBetweenPartsOfModule[NModuleSizes] = {0.0035 /*STANDARD_MODULE*/, 0.0035 /*LONG_MODULE*/};
37
38Double_t XModuleSize[NModuleSizes] = {6.3 /*STANDARD_MODULE*/, 6.3 /*LONG_MODULE*/};
39
40Double_t YModuleSizeUpperPart[NModuleSizes] = {6.3 /*STANDARD_MODULE*/, 9.3 /*LONG_MODULE*/};
41Double_t YModuleSizeLowerPart[NModuleSizes] = {6.3 /*STANDARD_MODULE*/, 9.3 /*LONG_MODULE*/};
42
49
50Double_t ZModuleSize[NModuleSizes] = {0.03 /*STANDARD_MODULE*/, 0.03 /*LONG_MODULE*/};
51
52Double_t XBevelSize[NModuleSizes] = {3.82 /*STANDARD_MODULE*/, 3.82 /*LONG_MODULE*/}; // x-bevel for a angled cut
53Double_t YBevelSize[NModuleSizes] = {3.82 /*STANDARD_MODULE*/, 3.82 /*LONG_MODULE*/}; // y-bevel for a angled cut
54
59
64
65// The next variables have two indices: the first one is a mod-size type, the second - a layer type
66// 0 - inclined strips (front side), 1 - straight strips (back side)
67
69 {0.1145, 0.10995}, /*STANDARD_MODULE*/
70 {0.1118, 0.10995} /*LONG_MODULE*/
71};
72
74 {0.1118, 0.11005}, /*STANDARD_MODULE*/
75 {0.1118, 0.11005} /*LONG_MODULE*/
76};
77
79 {0.1143, 0.1143}, /*STANDARD_MODULE*/
80 {0.1148, 0.1055} /*LONG_MODULE*/
81};
82
84 {0.1121, 0.1055}, /*STANDARD_MODULE*/
85 {0.1148, 0.1055} /*LONG_MODULE*/
86};
87
89 {0.1147, 0.1055}, /*STANDARD_MODULE*/
90 {0.1148, 0.1055} /*LONG_MODULE*/
91};
92
94 {0.1148, 0.1055}, /*STANDARD_MODULE*/
95 {0.1148, 0.1055} /*LONG_MODULE*/
96};
97
99 {0.1146, 0.1076}, /*STANDARD_MODULE*/
100 {0.1148, 0.1055} /*LONG_MODULE*/
101};
102//------------------------------------------------------------------------------
103
104// Parameters of layers ---------------------------------------------------------
105
107 {0.00795, 0.0}, /*STANDARD_MODULE*/
108 {0.00261, 0.0} /*LONG_MODULE*/
109};
110
112 {0.00780, 0.0}, /*STANDARD_MODULE*/
113 {0.00261, 0.0} /*LONG_MODULE*/
114};
115
117 {0.00675, 0.0}, /*STANDARD_MODULE*/
118 {0.00255, 0.0} /*LONG_MODULE*/
119};
120
122 {0.00675, 0.0}, /*STANDARD_MODULE*/
123 {0.00255, 0.0} /*LONG_MODULE*/
124};
125
127 {0.0, 0.0}, /*STANDARD_MODULE*/
128 {0.0, 0.0} /*LONG_MODULE*/
129};
130
132 {0.0, 0.0}, /*STANDARD_MODULE*/
133 {0.0, 0.0} /*LONG_MODULE*/
134};
135
137 {0.0, 0.0}, /*STANDARD_MODULE*/
138 {0.0, 0.0} /*LONG_MODULE*/
139};
140
142 {0.0, 0.0}, /*STANDARD_MODULE*/
143 {0.0, 0.0} /*LONG_MODULE*/
144};
145//------------------------------------------------------------------------------
146
153// Double_t XOrigUpLayer[2] = { XModuleSize - XLeftBorder[0], XModuleSize - XLeftBorder[1] };
154
161// Double_t XOrigLowLayer[2] = { XModuleSize - XLeftBorder[0], XModuleSize - XLeftBorder[1] };
162
171// Double_t YOrigUpLayer[2] = { YModuleSize - YModuleSizeUpperPart + YMiddleBorderUpperPart[0], YModuleSize -
172// YModuleSizeUpperPart + YMiddleBorderUpperPart[1] };
173
178// Double_t YOrigLowLayer[2] = { YBottomBorder[0], YBottomBorder[1] };
179
187// Double_t XSizeUpLayer[2] = { XModuleSize - (XLeftBorder[0] + XRightBorder[0]) , XModuleSize - (XLeftBorder[1] +
188// XRightBorder[1]) };
189
199// Double_t YSizeUpLayer[2] = { YModuleSizeUpperPart - (YTopBorder[0] + YMiddleBorderUpperPart[0]), YModuleSizeUpperPart
200// - (YTopBorder[1] + YMiddleBorderUpperPart[1]) };
201
209// Double_t XSizeLowLayer[2] = { XModuleSize - (XLeftBorder[0] + XRightBorder[0]) , XModuleSize - (XLeftBorder[1] +
210// XRightBorder[1]) };
211
221// Double_t YSizeLowLayer[2] = { YModuleSizeLowerPart - (YBottomBorder[0] + YMiddleBorderLowerPart[0]),
222// YModuleSizeLowerPart - (YBottomBorder[1] + YMiddleBorderLowerPart[1]) };
223
232// Double_t XLeftBorderUpperlayer[2] = { XOrigUpLayer[0] - XShiftFirstStripUpLayer[0], XOrigUpLayer[1] -
233// XShiftLastStripUpLayer[1] + XShiftLastStripUpLayer[1] };
234
243// Double_t XLeftBorderLowerlayer[2] = { XOrigUpLayer[0] - XShiftFirstStripLowLayer[0], XOrigUpLayer[1] -
244// XShiftLastStripLowLayer[1] + XShiftLastStripLowLayer[1] };
245
254// Double_t XRightBorderUpperlayer[2] = { XOrigUpLayer[0] - XSizeUpLayer[0] + XShiftLastStripUpLayer[0], XOrigUpLayer[1]
255// - XSizeUpLayer[1] + XShiftFirstStripUpLayer[1] };
256
266// Double_t XRightBorderLowerlayer[2] = { XOrigLowLayer[0] - XSizeLowLayer[0] + XShiftLastStripLowLayer[0],
267// XOrigLowLayer[1] - XSizeLowLayer[1] + XShiftFirstStripLowLayer[1] };
268
277// Double_t YLeftBorderUpperlayer[2] = { YOrigUpLayer[0] + YSizeUpLayer[0] - YShiftFirstStripUpLayer[0], YOrigUpLayer[1]
278// + YSizeUpLayer[1] - YShiftFirstStripUpLayer[1] };
279
289// Double_t YLeftBorderLowerlayer[2] = { YOrigLowLayer[0] + YSizeLowLayer[0] - YShiftFirstStripLowLayer[0],
290// YOrigLowLayer[1] + YSizeLowLayer[1] - YShiftFirstStripLowLayer[1] };
291
296// Double_t YRightBorderUpperlayer[2] = { YOrigUpLayer[0], YOrigUpLayer[1] };
297
302// Double_t YRightBorderLowerlayer[2] = { YOrigLowLayer[0], YOrigLowLayer[1] };
303//------------------------------------------------------------------------------
304
310
312 {LeftToRight, RightToLeft}, /*STANDARD_MODULE*/
313 {LeftToRight, RightToLeft} /*LONG_MODULE*/
314};
315// StripNumberingDirection StripDirection[2] = { LeftToRight, RightToLeft };
316
318 {0.01029019668, 0.0095}, /*STANDARD_MODULE*/
319 {0.0107150, 0.0095} /*LONG_MODULE*/
320};
321// Double_t PitchValue[2] = { 0.01029019668, 0.0095 };
322
324 {+2.5, +0.0}, /*STANDARD_MODULE*/
325 {+2.5, +0.0} /*LONG_MODULE*/
326};
327// Double_t StripAngle[2] = { +2.5, +0.0 }; // plus - clockwise, minus - anticlockwise
328
330 {0, 0}, /*STANDARD_MODULE*/
331 {0, 0} /*LONG_MODULE*/
332};
333// Int_t FirstStripNumberUpLayer[2] = { 0, 0 };
334
336 {26, 0}, /*STANDARD_MODULE*/
337 {37, 0} /*LONG_MODULE*/
338};
339// Int_t FirstStripNumberLowLayer[2] = { 26, 0 };
340
341// Dead zones (if you need) -----------------------------------------------------
342
343// find x and y projections of the bevel border thickness -----------------------
344
351// Double_t x_delta[2] = { XYBevelBorder[0]/TMath::Cos(BevelAngleRad), XYBevelBorder[1]/TMath::Cos(BevelAngleRad) };
352
359// Double_t y_delta[2] = { XYBevelBorder[0]/TMath::Sin(BevelAngleRad), XYBevelBorder[1]/TMath::Sin(BevelAngleRad) };
360//------------------------------------------------------------------------------
361
362// find shifts of the sensitive zone from module borders via the equation of a straight line for the inner bevel
363
365 {XLeftBorder[STANDARD_MODULE][0], XLeftBorder[STANDARD_MODULE][1]}, /*STANDARD_MODULE*/
366 {XLeftBorder[LONG_MODULE][0], XLeftBorder[LONG_MODULE][1]} /*LONG_MODULE*/
367};
368// Double_t x_delta_top_BP[2] = { XLeftBorder[0], XLeftBorder[1] };
369
380// Double_t y_delta_top_BP[2] = { TMath::Tan(TMath::PiOver2()+BevelAngleRad)*x_delta_top_BP[0] +
381// (YBevelSize+y_delta[0]), TMath::Tan(TMath::PiOver2()+BevelAngleRad)*x_delta_top_BP[1] + (YBevelSize+y_delta[1]) };
382
387// Double_t y_delta_bottom_BP[2] = { YBottomBorder[0], YBottomBorder[1] };
388
399// Double_t x_delta_bottom_BP[2] = { (y_delta_bottom_BP[0] - (YBevelSize +
400// y_delta[0]))/(TMath::Tan(TMath::PiOver2()+BevelAngleRad)), (y_delta_bottom_BP[1] - (YBevelSize +
401// y_delta[1]))/(TMath::Tan(TMath::PiOver2()+BevelAngleRad)) };
402
413// Double_t XDeadZone[2][3] = {
414// { XOrigLowLayer[0], XOrigLowLayer[0], XModuleSize - x_delta_bottom_BP[0] },
415// { XOrigLowLayer[1], XOrigLowLayer[1], XModuleSize - x_delta_bottom_BP[1] }
416// };
417
425// Double_t YDeadZone[2][3] = {
426// { YOrigLowLayer[0], y_delta_top_BP[0], YOrigLowLayer[0] },
427// { YOrigLowLayer[1], y_delta_top_BP[1], YOrigLowLayer[1] }
428// };
429//------------------------------------------------------------------------------
430
431// Configuration of SI-stations ------------------------------------------------
432
433// Set Parameters of SILICON detector ------------------------------------------
434const Int_t NStations = 4; // stations in the detector
435const Int_t NMaxModules = 22; // max. number of modules in a station
436
437const Int_t NModulesInStations[NStations] = {6, 10, 14, 18};
438
439//(X-Y-Z)Positions of stations (sensitive volumes) -----------------------------
441 // hole center of lower half-planes
442 +0.6250, // st. 0
443 +0.7045, // st. 1
444 +0.9185, // st. 2
445 +1.0180 // st. 3
446};
447
449 // hole center of lower half-planes
450 -0.0695, // st. 0
451 -0.0895, // st. 1
452 -0.0565, // st. 2
453 -0.0670 // st. 3
454};
455
457 // reference point (average measured z-position of lower half-planes)
458 +14.1370, // st. 0
459 +22.9015, // st. 1
460 +31.6785, // st. 2
461 +40.5235 // st. 3
462};
463//------------------------------------------------------------------------------
464
465const Double_t z_mod_thick = 0.03; // thickness of silicon sensor
466
467const Double_t z_shift_up = +2.68; // z-shift from reference point to local basic point of upper half-planes
468const Double_t z_shift_low = -0.61; // z-shift from reference point to local basic point of lower half-planes
469
471 // x-distance from hole center to the base
472 21.7, // st. 0
473 21.7, // st. 1
474 27.7, // st. 2
475 33.7 // st. 3
476};
477
479 // y-distance from hole center to the base
480 12.99, // st. 0
481 16.29, // st. 1
482 16.29, // st. 2
483 16.29 // st. 3
484};
485
487 // z-shift of the upper half-plane relative to the lower half-plane
488 +5.0800, // st. 0
489 +5.1255, // st. 1
490 +4.9800, // st. 2
491 +5.0115 // st. 3
492};
493
495 // x-shift of hole-center of the upper half-plane relative to the lower half-plane
496 +0.0165, // st. 0
497 +0.0100, // st. 1
498 +0.0325, // st. 2
499 +0.0820 // st. 3
500};
501
503 // y-shift of hole-center of the upper half-plane relative to the lower half-plane
504 -0.0155, // st. 0
505 -0.0730, // st. 1
506 -0.0645, // st. 2
507 +0.6580 // st. 3
508};
509
511 {-x_dist_cent_base[0] + x_shift_hp[0] + 30.850 /*0*/, -x_dist_cent_base[0] + x_shift_hp[0] + 24.852 /*1*/,
512 -x_dist_cent_base[0] + x_shift_hp[0] + 12.556 /*2*/,
513
514 -x_dist_cent_base[0] + 30.859 /*3*/, -x_dist_cent_base[0] + 24.863 /*4*/, -x_dist_cent_base[0] + 12.558 /*5*/},
515
516 {-x_dist_cent_base[1] + x_shift_hp[1] + 36.860 /*0*/, -x_dist_cent_base[1] + x_shift_hp[1] + 30.844 /*1*/,
517 -x_dist_cent_base[1] + x_shift_hp[1] + 24.860 /*2*/, -x_dist_cent_base[1] + x_shift_hp[1] + 12.550 /*3*/,
518 -x_dist_cent_base[1] + x_shift_hp[1] + 6.557 /*4*/,
519
520 -x_dist_cent_base[1] + 36.8425 /*5*/, -x_dist_cent_base[1] + 30.8505 /*6*/, -x_dist_cent_base[1] + 24.8450 /*7*/,
521 -x_dist_cent_base[1] + 12.5550 /*8*/, -x_dist_cent_base[1] + 6.5585 /*9*/},
522
523 {-x_dist_cent_base[2] + x_shift_hp[2] + 48.8465 /*0*/, -x_dist_cent_base[2] + x_shift_hp[2] + 42.8315 /*1*/,
524 -x_dist_cent_base[2] + x_shift_hp[2] + 36.8485 /*2*/, -x_dist_cent_base[2] + x_shift_hp[2] + 30.8425 /*3*/,
525 -x_dist_cent_base[2] + x_shift_hp[2] + 18.5555 /*4*/, -x_dist_cent_base[2] + x_shift_hp[2] + 12.5395 /*5*/,
526 -x_dist_cent_base[2] + x_shift_hp[2] + 6.5530 /*6*/,
527
528 -x_dist_cent_base[2] + 48.8535 /*7*/, -x_dist_cent_base[2] + 42.8470 /*8*/, -x_dist_cent_base[2] + 36.8420 /*9*/,
529 -x_dist_cent_base[2] + 30.8435 /*10*/, -x_dist_cent_base[2] + 18.5445 /*11*/,
530 -x_dist_cent_base[2] + 12.5435 /*12*/, -x_dist_cent_base[2] + 6.5475 /*13*/},
531
532 {-x_dist_cent_base[3] + x_shift_hp[3] + 60.8580 /*0*/, -x_dist_cent_base[3] + x_shift_hp[3] + 54.8485 /*1*/,
533 -x_dist_cent_base[3] + x_shift_hp[3] + 48.8545 /*2*/, -x_dist_cent_base[3] + x_shift_hp[3] + 42.8390 /*3*/,
534 -x_dist_cent_base[3] + x_shift_hp[3] + 36.8435 /*4*/, -x_dist_cent_base[3] + x_shift_hp[3] + 24.5520 /*5*/,
535 -x_dist_cent_base[3] + x_shift_hp[3] + 18.5450 /*6*/, -x_dist_cent_base[3] + x_shift_hp[3] + 12.5470 /*7*/,
536 -x_dist_cent_base[3] + x_shift_hp[3] + 6.5585 /*8*/,
537
538 -x_dist_cent_base[3] + 60.860 /*9*/, -x_dist_cent_base[3] + 54.547 /*10*/, -x_dist_cent_base[3] + 48.860 /*11*/,
539 -x_dist_cent_base[3] + 42.845 /*12*/, -x_dist_cent_base[3] + 36.847 /*13*/, -x_dist_cent_base[3] + 24.5445 /*14*/,
540 -x_dist_cent_base[3] + 18.557 /*15*/, -x_dist_cent_base[3] + 12.552 /*16*/, -x_dist_cent_base[3] + 6.5525 /*17*/}};
541
543 {+y_dist_cent_base[0] + y_shift_hp[0] - 13.112 /*0*/, +y_dist_cent_base[0] + y_shift_hp[0] - 10.113 /*1*/,
544 +y_dist_cent_base[0] + y_shift_hp[0] - 13.086 /*2*/,
545
546 -y_dist_cent_base[0] + 13.100 /*3*/, -y_dist_cent_base[0] + 10.110 /*4*/, -y_dist_cent_base[0] + 13.098 /*5*/},
547
548 {+y_dist_cent_base[1] + y_shift_hp[1] - 16.425 /*0*/, +y_dist_cent_base[1] + y_shift_hp[1] - 16.424 /*1*/,
549 +y_dist_cent_base[1] + y_shift_hp[1] - 13.421 /*2*/, +y_dist_cent_base[1] + y_shift_hp[1] - 16.421 /*3*/,
550 +y_dist_cent_base[1] + y_shift_hp[1] - 16.420 /*4*/,
551
552 -y_dist_cent_base[1] + 16.432 /*5*/, -y_dist_cent_base[1] + 16.423 /*6*/, -y_dist_cent_base[1] + 13.428 /*7*/,
553 -y_dist_cent_base[1] + 16.425 /*8*/, -y_dist_cent_base[1] + 16.429 /*9*/},
554
555 {+y_dist_cent_base[2] + y_shift_hp[2] - 16.424 /*0*/, +y_dist_cent_base[2] + y_shift_hp[2] - 16.427 /*1*/,
556 +y_dist_cent_base[2] + y_shift_hp[2] - 16.427 /*2*/, +y_dist_cent_base[2] + y_shift_hp[2] - 13.411 /*3*/,
557 +y_dist_cent_base[2] + y_shift_hp[2] - 16.431 /*4*/, +y_dist_cent_base[2] + y_shift_hp[2] - 16.420 /*5*/,
558 +y_dist_cent_base[2] + y_shift_hp[2] - 16.430 /*6*/,
559
560 -y_dist_cent_base[2] + 16.418 /*7*/, -y_dist_cent_base[2] + 16.427 /*8*/, -y_dist_cent_base[2] + 16.421 /*9*/,
561 -y_dist_cent_base[2] + 13.428 /*10*/, -y_dist_cent_base[2] + 16.413 /*11*/, -y_dist_cent_base[2] + 16.427 /*12*/,
562 -y_dist_cent_base[2] + 16.414 /*13*/},
563
564 {+y_dist_cent_base[3] + y_shift_hp[3] - 16.429 /*0*/, +y_dist_cent_base[3] + y_shift_hp[3] - 16.431 /*1*/,
565 +y_dist_cent_base[3] + y_shift_hp[3] - 16.431 /*2*/, +y_dist_cent_base[3] + y_shift_hp[3] - 16.432 /*3*/,
566 +y_dist_cent_base[3] + y_shift_hp[3] - 13.432 /*4*/, +y_dist_cent_base[3] + y_shift_hp[3] - 16.429 /*5*/,
567 +y_dist_cent_base[3] + y_shift_hp[3] - 16.422 /*6*/, +y_dist_cent_base[3] + y_shift_hp[3] - 16.423 /*7*/,
568 +y_dist_cent_base[3] + y_shift_hp[3] - 16.427 /*8*/,
569
570 -y_dist_cent_base[3] + 16.432 /*9*/, -y_dist_cent_base[3] + 16.437 /*10*/, -y_dist_cent_base[3] + 16.435 /*11*/,
571 -y_dist_cent_base[3] + 16.435 /*12*/, -y_dist_cent_base[3] + 13.437 /*13*/, -y_dist_cent_base[3] + 16.434 /*14*/,
572 -y_dist_cent_base[3] + 16.436 /*15*/, -y_dist_cent_base[3] + 16.431 /*16*/, -y_dist_cent_base[3] + 16.428 /*17*/}};
573
575 {+z_shift_hp[0] + z_shift_up - 2.6 /*0*/, +z_shift_hp[0] + z_shift_up - 1.45 /*1*/,
576 +z_shift_hp[0] + z_shift_up - 2.7 /*2*/,
577
578 +z_shift_low - z_mod_thick + 2.61 /*3*/, +z_shift_low - z_mod_thick + 1.4 /*4*/,
579 +z_shift_low - z_mod_thick + 2.78 /*5*/},
580
581 {+z_shift_hp[1] + z_shift_up - 1.41 /*0*/, +z_shift_hp[1] + z_shift_up - 2.585 /*1*/,
582 +z_shift_hp[1] + z_shift_up - 1.395 /*2*/, +z_shift_hp[1] + z_shift_up - 2.76 /*3*/,
583 +z_shift_hp[1] + z_shift_up - 1.585 /*4*/,
584
585 +z_shift_low - z_mod_thick + 1.425 /*5*/, +z_shift_low - z_mod_thick + 2.595 /*6*/,
586 +z_shift_low - z_mod_thick + 1.445 /*7*/, +z_shift_low - z_mod_thick + 2.73 /*8*/,
587 +z_shift_low - z_mod_thick + 1.51 /*9*/},
588
589 {+z_shift_hp[2] + z_shift_up - 2.595 /*0*/, +z_shift_hp[2] + z_shift_up - 1.395 /*1*/,
590 +z_shift_hp[2] + z_shift_up - 2.665 /*2*/, +z_shift_hp[2] + z_shift_up - 1.425 /*3*/,
591 +z_shift_hp[2] + z_shift_up - 2.735 /*4*/, +z_shift_hp[2] + z_shift_up - 1.56 /*5*/,
592 +z_shift_hp[2] + z_shift_up - 2.705 /*6*/,
593
594 +z_shift_low - z_mod_thick + 2.585 /*7*/, +z_shift_low - z_mod_thick + 1.435 /*8*/,
595 +z_shift_low - z_mod_thick + 2.595 /*9*/, +z_shift_low - z_mod_thick + 1.41 /*10*/,
596 +z_shift_low - z_mod_thick + 2.79 /*11*/, +z_shift_low - z_mod_thick + 1.6 /*12*/,
597 +z_shift_low - z_mod_thick + 2.83 /*13*/},
598
599 {+z_shift_hp[3] + z_shift_up - 1.41 /*0*/, +z_shift_hp[3] + z_shift_up - 2.59 /*1*/,
600 +z_shift_hp[3] + z_shift_up - 1.435 /*2*/, +z_shift_hp[3] + z_shift_up - 2.635 /*3*/,
601 +z_shift_hp[3] + z_shift_up - 1.4 /*4*/, +z_shift_hp[3] + z_shift_up - 2.775 /*5*/,
602 +z_shift_hp[3] + z_shift_up - 1.605 /*6*/, +z_shift_hp[3] + z_shift_up - 2.73 /*7*/,
603 +z_shift_hp[3] + z_shift_up - 1.6 /*8*/,
604
605 +z_shift_low - z_mod_thick + 1.45 /*9*/, +z_shift_low - z_mod_thick + 2.575 /*10*/,
606 +z_shift_low - z_mod_thick + 1.37 /*11*/, +z_shift_low - z_mod_thick + 2.585 /*12*/,
607 +z_shift_low - z_mod_thick + 1.42 /*13*/, +z_shift_low - z_mod_thick + 2.695 /*14*/,
608 +z_shift_low - z_mod_thick + 1.525 /*15*/, +z_shift_low - z_mod_thick + 2.68 /*16*/,
609 +z_shift_low - z_mod_thick + 1.515 /*17*/}};
610
611// Geometry parameters of modules
619
632
633// rotations of modules around y-axis by 180 deg.
635 {true /*0*/, true /*1*/, false /*2*/, true /*3*/, true /*4*/, false /*5*/},
636 {true /*0*/, true /*1*/, true /*2*/, false /*3*/, false /*4*/, true /*5*/, true /*6*/, true /*7*/, false /*8*/,
637 false /*9*/},
638 {true /*0*/, true /*1*/, true /*2*/, true /*3*/, false /*4*/, false /*5*/, false /*6*/, true /*7*/, true /*8*/,
639 true /*9*/, true /*10*/, false /*11*/, false /*12*/, false /*13*/},
640 {true /*0*/, true /*1*/, true /*2*/, true /*3*/, true /*4*/, false /*5*/, false /*6*/, false /*7*/, false /*8*/,
641 true /*9*/, true /*10*/, true /*11*/, true /*12*/, true /*13*/, false /*14*/, false /*15*/, false /*16*/,
642 false /*17*/}};
643
644// rotations of modules around x-axis by 180 deg.
646 {false /*0*/, false /*1*/, false /*2*/, true /*3*/, true /*4*/, true /*5*/},
647 {false /*0*/, false /*1*/, false /*2*/, false /*3*/, false /*4*/, true /*5*/, true /*6*/, true /*7*/, true /*8*/,
648 true /*9*/},
649 {false /*0*/, false /*1*/, false /*2*/, false /*3*/, false /*4*/, false /*5*/, false /*6*/, true /*7*/, true /*8*/,
650 true /*9*/, true /*10*/, true /*11*/, true /*12*/, true /*13*/},
651 {false /*0*/, false /*1*/, false /*2*/, false /*3*/, false /*4*/, false /*5*/, false /*6*/, false /*7*/,
652 false /*8*/, true /*9*/, true /*10*/, true /*11*/, true /*12*/, true /*13*/, true /*14*/, true /*15*/, true /*16*/,
653 true /*17*/}};
654
655/*
656//rotations of half-planes around y-axis (angles in degrees)
657const Int_t NMaxHalfPlanes = 2;
658const Double_t HalfPlanesYRotations[NStations][NMaxHalfPlanes] = {
659 {+0.1209, +0.1257}, // st.0 (upper [0] and lower [1] half-planes)
660 {+0.1148, +0.3336}, // st.1
661 {+0.2566, -0.1563}, // st.2
662 {+0.2504, +0.7422} // st.3
663};
664*/
665//------------------------------------------------------------------------------
666
667// Function declarations
668void PrintInfo();
669void CalculateParameters(TString config_name, TString author, TString date);
670//------------------------------------------------------------------------------
671
673{
674
675 TString ConfigName = "SiliconRun9";
676 TString AuthorName = "Baranov D.";
677 TString DateCreated = "18.04.2025";
678
679 // PrintInfo();
680 CalculateParameters(ConfigName, AuthorName, DateCreated);
681
682 cout << "It's the end"
683 << "\n";
684 // gApplication->Terminate();
685}
686
687//------------------------------------------------------------------------------
688
690{
691
692 cout << "----------------------------------------------------------------\n";
693 cout << "Parameters of the standard module 63x126 mm:\n";
694 cout << "\n";
695 cout << " Upper layer (inclined strips):\n";
696 cout << " orig(x:y) = ( " << XOrigUpLayer[STANDARD_MODULE][0] << " : " << YOrigUpLayer[STANDARD_MODULE][0]
697 << " )\n";
698 cout << " size(dx:dy) = ( " << XSizeUpLayer[STANDARD_MODULE][0] << " : " << YSizeUpLayer[STANDARD_MODULE][0]
699 << " )\n";
700 cout << " lborder(x:y) = ( " << XLeftBorderUpperlayer[STANDARD_MODULE][0] << " : "
701 << YLeftBorderUpperlayer[STANDARD_MODULE][0] << " )\n";
702 cout << " rborder(x:y) = ( " << XRightBorderUpperlayer[STANDARD_MODULE][0] << " : "
704 cout << " strip_direction = ";
706 cout << "LeftToRight\n";
707 else
708 cout << "RightToLeft\n";
709 cout << " pitch = " << PitchValue[STANDARD_MODULE][0] << "\n";
710 cout << " angle = " << StripAngle[STANDARD_MODULE][0] << " deg\n";
711 cout << " first_strip_number = " << FirstStripNumberUpLayer[STANDARD_MODULE][0] << "\n";
712 cout << "\n";
713
714 cout << " Lower layer (inclined strips):\n";
715 cout << " orig(x:y) = ( " << XOrigLowLayer[STANDARD_MODULE][0] << " : " << YOrigLowLayer[STANDARD_MODULE][0]
716 << " )\n";
717 cout << " size(dx:dy) = ( " << XSizeLowLayer[STANDARD_MODULE][0] << " : " << YSizeLowLayer[STANDARD_MODULE][0]
718 << " )\n";
719 cout << " lborder(x:y) = ( " << XLeftBorderLowerlayer[STANDARD_MODULE][0] << " : "
720 << YLeftBorderLowerlayer[STANDARD_MODULE][0] << " )\n";
721 cout << " rborder(x:y) = ( " << XRightBorderLowerlayer[STANDARD_MODULE][0] << " : "
723 cout << " strip_direction = ";
725 cout << "LeftToRight\n";
726 else
727 cout << "RightToLeft\n";
728 cout << " pitch = " << PitchValue[STANDARD_MODULE][0] << "\n";
729 cout << " angle = " << StripAngle[STANDARD_MODULE][0] << " deg\n";
730 cout << " first_strip_number = " << FirstStripNumberLowLayer[STANDARD_MODULE][0] << "\n";
731 cout << " dead_zone(3 points):\n";
732 cout << " p0(x:y) = ( " << XDeadZone[STANDARD_MODULE][0][0] << " : " << YDeadZone[STANDARD_MODULE][0][0]
733 << " )\n";
734 cout << " p1(x:y) = ( " << XDeadZone[STANDARD_MODULE][0][1] << " : " << YDeadZone[STANDARD_MODULE][0][1]
735 << " )\n";
736 cout << " p2(x:y) = ( " << XDeadZone[STANDARD_MODULE][0][2] << " : " << YDeadZone[STANDARD_MODULE][0][2]
737 << " )\n";
738 cout << "\n";
739
740 cout << " Upper layer (straight strips):\n";
741 cout << " orig(x:y) = ( " << XOrigUpLayer[STANDARD_MODULE][1] << " : " << YOrigUpLayer[STANDARD_MODULE][1]
742 << " )\n";
743 cout << " size(dx:dy) = ( " << XSizeUpLayer[STANDARD_MODULE][1] << " : " << YSizeUpLayer[STANDARD_MODULE][1]
744 << " )\n";
745 cout << " lborder(x:y) = ( " << XLeftBorderUpperlayer[STANDARD_MODULE][1] << " : "
746 << YLeftBorderUpperlayer[STANDARD_MODULE][1] << " )\n";
747 cout << " rborder(x:y) = ( " << XRightBorderUpperlayer[STANDARD_MODULE][1] << " : "
749 cout << " strip_direction = ";
751 cout << "LeftToRight\n";
752 else
753 cout << "RightToLeft\n";
754 cout << " pitch = " << PitchValue[STANDARD_MODULE][1] << "\n";
755 cout << " angle = " << StripAngle[STANDARD_MODULE][1] << " deg\n";
756 cout << " first_strip_number = " << FirstStripNumberUpLayer[STANDARD_MODULE][1] << "\n";
757 cout << "\n";
758
759 cout << " Lower layer (straight strips):\n";
760 cout << " orig(x:y) = ( " << XOrigLowLayer[STANDARD_MODULE][1] << " : " << YOrigLowLayer[STANDARD_MODULE][1]
761 << " )\n";
762 cout << " size(dx:dy) = ( " << XSizeLowLayer[STANDARD_MODULE][1] << " : " << YSizeLowLayer[STANDARD_MODULE][1]
763 << " )\n";
764 cout << " lborder(x:y) = ( " << XLeftBorderLowerlayer[STANDARD_MODULE][1] << " : "
765 << YLeftBorderLowerlayer[STANDARD_MODULE][1] << " )\n";
766 cout << " rborder(x:y) = ( " << XRightBorderLowerlayer[STANDARD_MODULE][1] << " : "
768 cout << " strip_direction = ";
770 cout << "LeftToRight\n";
771 else
772 cout << "RightToLeft\n";
773 cout << " pitch = " << PitchValue[STANDARD_MODULE][1] << "\n";
774 cout << " angle = " << StripAngle[STANDARD_MODULE][1] << " deg\n";
775 cout << " first_strip_number = " << FirstStripNumberLowLayer[STANDARD_MODULE][1] << "\n";
776 cout << " dead_zone(3 points):\n";
777 cout << " p0(x:y) = ( " << XDeadZone[STANDARD_MODULE][1][0] << " : " << YDeadZone[STANDARD_MODULE][1][0]
778 << " )\n";
779 cout << " p1(x:y) = ( " << XDeadZone[STANDARD_MODULE][1][1] << " : " << YDeadZone[STANDARD_MODULE][1][1]
780 << " )\n";
781 cout << " p2(x:y) = ( " << XDeadZone[STANDARD_MODULE][1][2] << " : " << YDeadZone[STANDARD_MODULE][1][2]
782 << " )\n";
783 cout << "\n";
784
785 cout << "----------------------------------------------------------------\n";
786
787 cout << "----------------------------------------------------------------\n";
788 cout << "Parameters of the long module 63x186 mm:\n";
789 cout << "\n";
790 cout << " Upper layer (inclined strips):\n";
791 cout << " orig(x:y) = ( " << XOrigUpLayer[LONG_MODULE][0] << " : " << YOrigUpLayer[LONG_MODULE][0] << " )\n";
792 cout << " size(dx:dy) = ( " << XSizeUpLayer[LONG_MODULE][0] << " : " << YSizeUpLayer[LONG_MODULE][0] << " )\n";
793 cout << " lborder(x:y) = ( " << XLeftBorderUpperlayer[LONG_MODULE][0] << " : "
794 << YLeftBorderUpperlayer[LONG_MODULE][0] << " )\n";
795 cout << " rborder(x:y) = ( " << XRightBorderUpperlayer[LONG_MODULE][0] << " : "
796 << YRightBorderUpperlayer[LONG_MODULE][0] << " )\n";
797 cout << " strip_direction = ";
799 cout << "LeftToRight\n";
800 else
801 cout << "RightToLeft\n";
802 cout << " pitch = " << PitchValue[LONG_MODULE][0] << "\n";
803 cout << " angle = " << StripAngle[LONG_MODULE][0] << " deg\n";
804 cout << " first_strip_number = " << FirstStripNumberUpLayer[LONG_MODULE][0] << "\n";
805 cout << "\n";
806
807 cout << " Lower layer (inclined strips):\n";
808 cout << " orig(x:y) = ( " << XOrigLowLayer[LONG_MODULE][0] << " : " << YOrigLowLayer[LONG_MODULE][0] << " )\n";
809 cout << " size(dx:dy) = ( " << XSizeLowLayer[LONG_MODULE][0] << " : " << YSizeLowLayer[LONG_MODULE][0] << " )\n";
810 cout << " lborder(x:y) = ( " << XLeftBorderLowerlayer[LONG_MODULE][0] << " : "
811 << YLeftBorderLowerlayer[LONG_MODULE][0] << " )\n";
812 cout << " rborder(x:y) = ( " << XRightBorderLowerlayer[LONG_MODULE][0] << " : "
813 << YRightBorderLowerlayer[LONG_MODULE][0] << " )\n";
814 cout << " strip_direction = ";
816 cout << "LeftToRight\n";
817 else
818 cout << "RightToLeft\n";
819 cout << " pitch = " << PitchValue[LONG_MODULE][0] << "\n";
820 cout << " angle = " << StripAngle[LONG_MODULE][0] << " deg\n";
821 cout << " first_strip_number = " << FirstStripNumberLowLayer[LONG_MODULE][0] << "\n";
822 cout << " dead_zone(3 points):\n";
823 cout << " p0(x:y) = ( " << XDeadZone[LONG_MODULE][0][0] << " : " << YDeadZone[LONG_MODULE][0][0] << " )\n";
824 cout << " p1(x:y) = ( " << XDeadZone[LONG_MODULE][0][1] << " : " << YDeadZone[LONG_MODULE][0][1] << " )\n";
825 cout << " p2(x:y) = ( " << XDeadZone[LONG_MODULE][0][2] << " : " << YDeadZone[LONG_MODULE][0][2] << " )\n";
826 cout << "\n";
827
828 cout << " Upper layer (straight strips):\n";
829 cout << " orig(x:y) = ( " << XOrigUpLayer[LONG_MODULE][1] << " : " << YOrigUpLayer[LONG_MODULE][1] << " )\n";
830 cout << " size(dx:dy) = ( " << XSizeUpLayer[LONG_MODULE][1] << " : " << YSizeUpLayer[LONG_MODULE][1] << " )\n";
831 cout << " lborder(x:y) = ( " << XLeftBorderUpperlayer[LONG_MODULE][1] << " : "
832 << YLeftBorderUpperlayer[LONG_MODULE][1] << " )\n";
833 cout << " rborder(x:y) = ( " << XRightBorderUpperlayer[LONG_MODULE][1] << " : "
834 << YRightBorderUpperlayer[LONG_MODULE][1] << " )\n";
835 cout << " strip_direction = ";
837 cout << "LeftToRight\n";
838 else
839 cout << "RightToLeft\n";
840 cout << " pitch = " << PitchValue[LONG_MODULE][1] << "\n";
841 cout << " angle = " << StripAngle[LONG_MODULE][1] << " deg\n";
842 cout << " first_strip_number = " << FirstStripNumberUpLayer[LONG_MODULE][1] << "\n";
843 cout << "\n";
844
845 cout << " Lower layer (straight strips):\n";
846 cout << " orig(x:y) = ( " << XOrigLowLayer[LONG_MODULE][1] << " : " << YOrigLowLayer[LONG_MODULE][1] << " )\n";
847 cout << " size(dx:dy) = ( " << XSizeLowLayer[LONG_MODULE][1] << " : " << YSizeLowLayer[LONG_MODULE][1] << " )\n";
848 cout << " lborder(x:y) = ( " << XLeftBorderLowerlayer[LONG_MODULE][1] << " : "
849 << YLeftBorderLowerlayer[LONG_MODULE][1] << " )\n";
850 cout << " rborder(x:y) = ( " << XRightBorderLowerlayer[LONG_MODULE][1] << " : "
851 << YRightBorderLowerlayer[LONG_MODULE][1] << " )\n";
852 cout << " strip_direction = ";
854 cout << "LeftToRight\n";
855 else
856 cout << "RightToLeft\n";
857 cout << " pitch = " << PitchValue[LONG_MODULE][1] << "\n";
858 cout << " angle = " << StripAngle[LONG_MODULE][1] << " deg\n";
859 cout << " first_strip_number = " << FirstStripNumberLowLayer[LONG_MODULE][1] << "\n";
860 cout << " dead_zone(3 points):\n";
861 cout << " p0(x:y) = ( " << XDeadZone[LONG_MODULE][1][0] << " : " << YDeadZone[LONG_MODULE][1][0] << " )\n";
862 cout << " p1(x:y) = ( " << XDeadZone[LONG_MODULE][1][1] << " : " << YDeadZone[LONG_MODULE][1][1] << " )\n";
863 cout << " p2(x:y) = ( " << XDeadZone[LONG_MODULE][1][2] << " : " << YDeadZone[LONG_MODULE][1][2] << " )\n";
864 cout << "\n";
865
866 cout << "----------------------------------------------------------------\n";
867}
868//------------------------------------------------------------------------------
869
870void CalculateParameters(TString config_name, TString author, TString date)
871{
872
873 TString FileName = config_name + TString(".xml");
874
875 cout << "\nCreating XML configuration file...\n";
876 cout << " Configuration name: " << config_name << "\n";
877 cout << " Author: " << author << "\n";
878 cout << " Date created: " << date << "\n";
879 cout << " File path: " << FileName << "\n";
880 cout << "\n";
881
882 // WARNING(!!!): the file will be written in the current directory
883 ofstream SiFileOut(FileName.Data(), ios::out);
884
885 SiFileOut << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
886
887 // reference frame usage comment
888 SiFileOut << "<!--\
889 \r\tConfig: "
890 << config_name << "\
891 \r\tAuthor: "
892 << author << "\
893 \r\tDate: "
894 << date << "\n\
895 \r\tA right-handed coordinates are used.\
896 \r\tIf you look at the FSD from the target:\
897 \r\t\tx-axis is directed to the left,\
898 \r\t\ty-axis - to the top,\
899 \r\t\tz-axis - to the FSD.\
900 \r-->\n\n";
901
902 SiFileOut << "<StationSet>\n";
903 SiFileOut << "\n";
904
905 for (Int_t istation = 0; istation < NStations; ++istation) {
906
907 cout << "istation = " << istation << ": -----------------------------\n";
908
909 // module size in a station
910 ModuleSize module_size = STANDARD_MODULE;
911
912 //(!!!) Long modules (!!!)
913 if (istation == 0)
914 module_size = LONG_MODULE;
915
916 if (istation == 4)
917 module_size = LONG_MODULE;
918
919 SiFileOut << "<!-- Station " << istation << " -->\n";
920
921 SiFileOut << "\t<Station";
922 SiFileOut << " xPosition=\"" << XStationPositions[istation] << "\"";
923 SiFileOut << " yPosition=\"" << YStationPositions[istation] << "\"";
924 SiFileOut << " zPosition=\"" << ZStationPositions[istation] << "\"";
925 SiFileOut << " rotAngleDeg=\""
926 << "0.0"
927 << "\"";
928 SiFileOut << " rotCenterX=\""
929 << "0.0"
930 << "\"";
931 SiFileOut << " rotCenterY=\""
932 << "0.0"
933 << "\"";
934 SiFileOut << ">\n";
935 SiFileOut << "\n";
936
937 for (Int_t imodule = 0; imodule < NModulesInStations[istation]; ++imodule) {
938
939 cout << " imodule = " << imodule << "\n";
940
941 SiFileOut << "\t\t<!-- module " << imodule << " -->\n";
942
943 SiFileOut << "\t\t<Module";
944 // SiFileOut << " xShift=\"" << XModuleShifts[istation][imodule] << "\"";
945 // SiFileOut << " yShift=\"" << YModuleShifts[istation][imodule] << "\"";
946 SiFileOut << " xShift=\"" << 0.0 << "\"";
947 SiFileOut << " yShift=\"" << 0.0 << "\"";
948 SiFileOut << " zShift=\"" << ZModuleShifts[istation][imodule] << "\"";
949 SiFileOut << ">";
950 /*
951 //Transforms -------------------------------------------------------
952
953 //Translation: station: forward shifts
954 SiFileOut << "\t\t\t<Transform";
955 SiFileOut << " rotOrder=\"" << "XYZ" << "\"";
956 SiFileOut << " xRotationDeg=\"" << 0.0 << "\"";
957 SiFileOut << " yRotationDeg=\"" << 0.0 << "\"";
958 SiFileOut << " zRotationDeg=\"" << 0.0 << "\"";
959 SiFileOut << " xTranslation=\"" << -XStationPositions[istation] << "\"";
960 SiFileOut << " yTranslation=\"" << -YStationPositions[istation] << "\"";
961 SiFileOut << " zTranslation=\"" << -ZStationPositions[istation] << "\"";
962 SiFileOut << " />\n";
963
964
965 //Translation: only for upper modules: forward shifts
966 if(imodule < NModulesInStations[istation]/2) { //modules of upper half-plane
967 SiFileOut << "\t\t\t<Transform";
968 SiFileOut << " rotOrder=\"" << "XYZ" << "\"";
969 SiFileOut << " xRotationDeg=\"" << 0.0 << "\"";
970 SiFileOut << " yRotationDeg=\"" << 0.0 << "\"";
971 SiFileOut << " zRotationDeg=\"" << 0.0 << "\"";
972 SiFileOut << " xTranslation=\"" << -x_shift_hp[istation] << "\"";
973 SiFileOut << " yTranslation=\"" << -y_shift_hp[istation] << "\"";
974 SiFileOut << " zTranslation=\"" << -z_shift_hp[istation] << "\"";
975 SiFileOut << " />\n";
976 }
977
978 //Rotation module (as a part of the whole half-plane) around Y-axis
979 SiFileOut << "\t\t\t<Transform";
980 SiFileOut << " rotOrder=\"" << "XYZ" << "\"";
981 SiFileOut << " xRotationDeg=\"" << 0.0 << "\"";
982 if(imodule < NModulesInStations[istation]/2) SiFileOut << " yRotationDeg=\"" <<
983 HalfPlanesYRotations[istation][0] << "\""; //modules of upper half-plane else SiFileOut << "
984 yRotationDeg=\"" << HalfPlanesYRotations[istation][1] << "\""; //modules of lower half-plane SiFileOut <<
985 " zRotationDeg=\"" << 0.0 << "\""; SiFileOut << " xTranslation=\"" << 0.0 << "\""; SiFileOut << "
986 yTranslation=\"" << 0.0 << "\""; SiFileOut << " zTranslation=\"" << 0.0 << "\""; SiFileOut << " />\n";
987
988 //Translation: only for upper modules: backward shifts
989 if(imodule < NModulesInStations[istation]/2) { //modules of upper half-plane
990 SiFileOut << "\t\t\t<Transform";
991 SiFileOut << " rotOrder=\"" << "XYZ" << "\"";
992 SiFileOut << " xRotationDeg=\"" << 0.0 << "\"";
993 SiFileOut << " yRotationDeg=\"" << 0.0 << "\"";
994 SiFileOut << " zRotationDeg=\"" << 0.0 << "\"";
995 SiFileOut << " xTranslation=\"" << +x_shift_hp[istation] << "\"";
996 SiFileOut << " yTranslation=\"" << +y_shift_hp[istation] << "\"";
997 SiFileOut << " zTranslation=\"" << +z_shift_hp[istation] << "\"";
998 SiFileOut << " />\n";
999 }
1000
1001 //Translation: station: backward shifts
1002 SiFileOut << "\t\t\t<Transform";
1003 SiFileOut << " rotOrder=\"" << "XYZ" << "\"";
1004 SiFileOut << " xRotationDeg=\"" << 0.0 << "\"";
1005 SiFileOut << " yRotationDeg=\"" << 0.0 << "\"";
1006 SiFileOut << " zRotationDeg=\"" << 0.0 << "\"";
1007 SiFileOut << " xTranslation=\"" << +XStationPositions[istation] << "\"";
1008 SiFileOut << " yTranslation=\"" << +YStationPositions[istation] << "\"";
1009 SiFileOut << " zTranslation=\"" << +ZStationPositions[istation] << "\"";
1010 SiFileOut << " />\n";
1011 */
1012 SiFileOut << "\n";
1013
1014 //------------------------------------------------------------------
1015
1016 // Notice!!!: here:
1017 // index "0" is a layer with inclined strips (the front side of the module)
1018 // index "1" is a layer with straight strips (the back side of the module)
1019 // "UpLayer" is the upper part of the module
1020 // "LowLayer" is the lower part of the module
1021
1022 Double_t xOrig_UpLayer[2];
1023 Double_t yOrig_UpLayer[2];
1024 Double_t xOrig_LowLayer[2];
1025 Double_t yOrig_LowLayer[2];
1026
1027 Double_t xSize_UpLayer[2];
1028 Double_t ySize_UpLayer[2];
1029 Double_t xSize_LowLayer[2];
1030 Double_t ySize_LowLayer[2];
1031
1032 Double_t xLBorder_UpLayer[2];
1033 Double_t yLBorder_UpLayer[2];
1034 Double_t xLBorder_LowLayer[2];
1035 Double_t yLBorder_LowLayer[2];
1036 Double_t xRBorder_UpLayer[2];
1037 Double_t yRBorder_UpLayer[2];
1038 Double_t xRBorder_LowLayer[2];
1039 Double_t yRBorder_LowLayer[2];
1040
1041 Double_t xDeadZone[2][3];
1042 Double_t yDeadZone[2][3];
1043
1044 Bool_t isDeadZone_UpLayer = false;
1045 Bool_t isDeadZone_LowLayer = false;
1046
1047 StripNumberingDirection stripDirection[2];
1048 Double_t pitchValue[2] = {PitchValue[module_size][0], PitchValue[module_size][1]};
1049 Double_t stripAngle[2];
1050 Int_t firstStripNumber_UpLayer[2];
1051 Int_t firstStripNumber_LowLayer[2];
1052
1053 if (ModulesYRotations[istation][imodule] == false && ModulesXRotations[istation][imodule] == false) {
1054
1055 xOrig_UpLayer[0] = XOrigUpLayer[module_size][0] + XModuleShifts[istation][imodule];
1056 yOrig_UpLayer[0] = YOrigUpLayer[module_size][0] + YModuleShifts[istation][imodule];
1057 xOrig_LowLayer[0] = XOrigLowLayer[module_size][0] + XModuleShifts[istation][imodule];
1058 yOrig_LowLayer[0] = YOrigLowLayer[module_size][0] + YModuleShifts[istation][imodule];
1059
1060 xOrig_UpLayer[1] = XOrigUpLayer[module_size][1] + XModuleShifts[istation][imodule];
1061 yOrig_UpLayer[1] = YOrigUpLayer[module_size][1] + YModuleShifts[istation][imodule];
1062 xOrig_LowLayer[1] = XOrigLowLayer[module_size][1] + XModuleShifts[istation][imodule];
1063 yOrig_LowLayer[1] = YOrigLowLayer[module_size][1] + YModuleShifts[istation][imodule];
1064
1065 xSize_UpLayer[0] = XSizeUpLayer[module_size][0];
1066 ySize_UpLayer[0] = YSizeUpLayer[module_size][0];
1067 xSize_LowLayer[0] = XSizeLowLayer[module_size][0];
1068 ySize_LowLayer[0] = YSizeLowLayer[module_size][0];
1069
1070 xSize_UpLayer[1] = XSizeUpLayer[module_size][1];
1071 ySize_UpLayer[1] = YSizeUpLayer[module_size][1];
1072 xSize_LowLayer[1] = XSizeLowLayer[module_size][1];
1073 ySize_LowLayer[1] = YSizeLowLayer[module_size][1];
1074
1075 xLBorder_UpLayer[0] = XLeftBorderUpperlayer[module_size][0] + XModuleShifts[istation][imodule];
1076 xLBorder_UpLayer[1] = XLeftBorderUpperlayer[module_size][1] + XModuleShifts[istation][imodule];
1077 yLBorder_UpLayer[0] = YLeftBorderUpperlayer[module_size][0] + YModuleShifts[istation][imodule];
1078 yLBorder_UpLayer[1] = YLeftBorderUpperlayer[module_size][1] + YModuleShifts[istation][imodule];
1079 xLBorder_LowLayer[0] = XLeftBorderLowerlayer[module_size][0] + XModuleShifts[istation][imodule];
1080 xLBorder_LowLayer[1] = XLeftBorderLowerlayer[module_size][1] + XModuleShifts[istation][imodule];
1081 yLBorder_LowLayer[0] = YLeftBorderLowerlayer[module_size][0] + YModuleShifts[istation][imodule];
1082 yLBorder_LowLayer[1] = YLeftBorderLowerlayer[module_size][1] + YModuleShifts[istation][imodule];
1083
1084 xRBorder_UpLayer[0] = XRightBorderUpperlayer[module_size][0] + XModuleShifts[istation][imodule];
1085 xRBorder_UpLayer[1] = XRightBorderUpperlayer[module_size][1] + XModuleShifts[istation][imodule];
1086 yRBorder_UpLayer[0] = YRightBorderUpperlayer[module_size][0] + YModuleShifts[istation][imodule];
1087 yRBorder_UpLayer[1] = YRightBorderUpperlayer[module_size][1] + YModuleShifts[istation][imodule];
1088 xRBorder_LowLayer[0] = XRightBorderLowerlayer[module_size][0] + XModuleShifts[istation][imodule];
1089 xRBorder_LowLayer[1] = XRightBorderLowerlayer[module_size][1] + XModuleShifts[istation][imodule];
1090 yRBorder_LowLayer[0] = YRightBorderLowerlayer[module_size][0] + YModuleShifts[istation][imodule];
1091 yRBorder_LowLayer[1] = YRightBorderLowerlayer[module_size][1] + YModuleShifts[istation][imodule];
1092
1093 for (Int_t ilayer = 0; ilayer < 2; ++ilayer) {
1094 for (Int_t ipoint = 0; ipoint < 3; ++ipoint) {
1095 xDeadZone[ilayer][ipoint] =
1096 XDeadZone[module_size][ilayer][ipoint] + XModuleShifts[istation][imodule];
1097 yDeadZone[ilayer][ipoint] =
1098 YDeadZone[module_size][ilayer][ipoint] + YModuleShifts[istation][imodule];
1099 }
1100 }
1101
1102 if (ModulesTypes[istation][imodule] == ModuleType::BEVEL_MODULE
1103 || ModulesTypes[istation][imodule] == ModuleType::BEVEL_MODULE_HALF)
1104 {
1105 isDeadZone_UpLayer = false;
1106 isDeadZone_LowLayer = true;
1107 }
1108
1109 if (StripDirection[module_size][0] == LeftToRight)
1110 stripDirection[0] = LeftToRight;
1111 else
1112 stripDirection[0] = RightToLeft;
1113 if (StripDirection[module_size][1] == LeftToRight)
1114 stripDirection[1] = LeftToRight;
1115 else
1116 stripDirection[1] = RightToLeft;
1117
1118 stripAngle[0] = StripAngle[module_size][0];
1119 stripAngle[1] = StripAngle[module_size][1];
1120
1121 firstStripNumber_UpLayer[0] = FirstStripNumberUpLayer[module_size][0];
1122 firstStripNumber_UpLayer[1] = FirstStripNumberUpLayer[module_size][1];
1123 firstStripNumber_LowLayer[0] = FirstStripNumberLowLayer[module_size][0];
1124 firstStripNumber_LowLayer[1] = FirstStripNumberLowLayer[module_size][1];
1125 }
1126
1127 if (ModulesYRotations[istation][imodule] == true && ModulesXRotations[istation][imodule] == false) {
1128
1129 xOrig_UpLayer[0] =
1130 -XOrigUpLayer[module_size][0] + XSizeUpLayer[module_size][0] + XModuleShifts[istation][imodule];
1131 yOrig_UpLayer[0] = YOrigUpLayer[module_size][0] + YModuleShifts[istation][imodule];
1132 xOrig_LowLayer[0] =
1133 -XOrigLowLayer[module_size][0] + XSizeLowLayer[module_size][0] + XModuleShifts[istation][imodule];
1134 yOrig_LowLayer[0] = YOrigLowLayer[module_size][0] + YModuleShifts[istation][imodule];
1135
1136 xOrig_UpLayer[1] =
1137 -XOrigUpLayer[module_size][1] + XSizeUpLayer[module_size][1] + XModuleShifts[istation][imodule];
1138 yOrig_UpLayer[1] = YOrigUpLayer[module_size][1] + YModuleShifts[istation][imodule];
1139 xOrig_LowLayer[1] =
1140 -XOrigLowLayer[module_size][1] + XSizeLowLayer[module_size][1] + XModuleShifts[istation][imodule];
1141 yOrig_LowLayer[1] = YOrigLowLayer[module_size][1] + YModuleShifts[istation][imodule];
1142
1143 xSize_UpLayer[0] = XSizeUpLayer[module_size][0];
1144 ySize_UpLayer[0] = YSizeUpLayer[module_size][0];
1145 xSize_LowLayer[0] = XSizeLowLayer[module_size][0];
1146 ySize_LowLayer[0] = YSizeLowLayer[module_size][0];
1147
1148 xSize_UpLayer[1] = XSizeUpLayer[module_size][1];
1149 ySize_UpLayer[1] = YSizeUpLayer[module_size][1];
1150 xSize_LowLayer[1] = XSizeLowLayer[module_size][1];
1151 ySize_LowLayer[1] = YSizeLowLayer[module_size][1];
1152
1153 xLBorder_UpLayer[0] = -XRightBorderUpperlayer[module_size][0] + XModuleShifts[istation][imodule];
1154 xLBorder_UpLayer[1] = -XRightBorderUpperlayer[module_size][1] + XModuleShifts[istation][imodule];
1155 yLBorder_UpLayer[0] = YRightBorderUpperlayer[module_size][0] + YModuleShifts[istation][imodule];
1156 yLBorder_UpLayer[1] = YRightBorderUpperlayer[module_size][1] + YModuleShifts[istation][imodule];
1157 xLBorder_LowLayer[0] = -XRightBorderLowerlayer[module_size][0] + XModuleShifts[istation][imodule];
1158 xLBorder_LowLayer[1] = -XRightBorderLowerlayer[module_size][1] + XModuleShifts[istation][imodule];
1159 yLBorder_LowLayer[0] = YRightBorderLowerlayer[module_size][0] + YModuleShifts[istation][imodule];
1160 yLBorder_LowLayer[1] = YRightBorderLowerlayer[module_size][1] + YModuleShifts[istation][imodule];
1161
1162 xRBorder_UpLayer[0] = -XLeftBorderUpperlayer[module_size][0] + XModuleShifts[istation][imodule];
1163 xRBorder_UpLayer[1] = -XLeftBorderUpperlayer[module_size][1] + XModuleShifts[istation][imodule];
1164 yRBorder_UpLayer[0] = YLeftBorderUpperlayer[module_size][0] + YModuleShifts[istation][imodule];
1165 yRBorder_UpLayer[1] = YLeftBorderUpperlayer[module_size][1] + YModuleShifts[istation][imodule];
1166 xRBorder_LowLayer[0] = -XLeftBorderLowerlayer[module_size][0] + XModuleShifts[istation][imodule];
1167 xRBorder_LowLayer[1] = -XLeftBorderLowerlayer[module_size][1] + XModuleShifts[istation][imodule];
1168 yRBorder_LowLayer[0] = YLeftBorderLowerlayer[module_size][0] + YModuleShifts[istation][imodule];
1169 yRBorder_LowLayer[1] = YLeftBorderLowerlayer[module_size][1] + YModuleShifts[istation][imodule];
1170
1171 for (Int_t ilayer = 0; ilayer < 2; ++ilayer) {
1172 for (Int_t ipoint = 0; ipoint < 3; ++ipoint) {
1173 xDeadZone[ilayer][ipoint] =
1174 -XDeadZone[module_size][ilayer][ipoint] + XModuleShifts[istation][imodule];
1175 yDeadZone[ilayer][ipoint] =
1176 YDeadZone[module_size][ilayer][ipoint] + YModuleShifts[istation][imodule];
1177 }
1178 }
1179
1180 if (ModulesTypes[istation][imodule] == ModuleType::BEVEL_MODULE
1181 || ModulesTypes[istation][imodule] == ModuleType::BEVEL_MODULE_HALF)
1182 {
1183 isDeadZone_UpLayer = false;
1184 isDeadZone_LowLayer = true;
1185 }
1186
1187 if (StripDirection[module_size][0] == LeftToRight)
1188 stripDirection[0] = RightToLeft;
1189 else
1190 stripDirection[0] = LeftToRight;
1191 if (StripDirection[module_size][1] == LeftToRight)
1192 stripDirection[1] = RightToLeft;
1193 else
1194 stripDirection[1] = LeftToRight;
1195
1196 stripAngle[0] = -StripAngle[module_size][0];
1197 stripAngle[1] = -StripAngle[module_size][1];
1198
1199 firstStripNumber_UpLayer[0] = FirstStripNumberUpLayer[module_size][0];
1200 firstStripNumber_UpLayer[1] = FirstStripNumberUpLayer[module_size][1];
1201 firstStripNumber_LowLayer[0] = FirstStripNumberLowLayer[module_size][0];
1202 firstStripNumber_LowLayer[1] = FirstStripNumberLowLayer[module_size][1];
1203 }
1204
1205 if (ModulesYRotations[istation][imodule] == false && ModulesXRotations[istation][imodule] == true) {
1206
1207 xOrig_UpLayer[0] = XOrigUpLayer[module_size][0] + XModuleShifts[istation][imodule];
1208 yOrig_UpLayer[0] = -YOrigUpLayer[module_size][0] + YMiddleBorderLowerPart[module_size][0]
1209 + YMiddleBorderUpperPart[module_size][0] + YGapBetweenPartsOfModule[module_size]
1210 + YModuleShifts[istation][imodule];
1211 xOrig_LowLayer[0] = XOrigLowLayer[module_size][0] + XModuleShifts[istation][imodule];
1212 yOrig_LowLayer[0] = -YOrigLowLayer[module_size][0] - YSizeLowLayer[module_size][0]
1213 - YMiddleBorderLowerPart[module_size][0] - YMiddleBorderUpperPart[module_size][0]
1214 - YGapBetweenPartsOfModule[module_size] - YSizeUpLayer[module_size][0]
1215 + YModuleShifts[istation][imodule];
1216
1217 xOrig_UpLayer[1] = XOrigUpLayer[module_size][1] + XModuleShifts[istation][imodule];
1218 yOrig_UpLayer[1] = -YOrigUpLayer[module_size][1] + YMiddleBorderLowerPart[module_size][1]
1219 + YMiddleBorderUpperPart[module_size][1] + YGapBetweenPartsOfModule[module_size]
1220 + YModuleShifts[istation][imodule];
1221 xOrig_LowLayer[1] = XOrigLowLayer[module_size][1] + XModuleShifts[istation][imodule];
1222 yOrig_LowLayer[1] = -YOrigLowLayer[module_size][1] - YSizeLowLayer[module_size][1]
1223 - YMiddleBorderLowerPart[module_size][1] - YMiddleBorderUpperPart[module_size][1]
1224 - YGapBetweenPartsOfModule[module_size] - YSizeUpLayer[module_size][1]
1225 + YModuleShifts[istation][imodule];
1226
1227 xSize_UpLayer[0] = XSizeLowLayer[module_size][0];
1228 ySize_UpLayer[0] = YSizeLowLayer[module_size][0];
1229 xSize_LowLayer[0] = XSizeUpLayer[module_size][0];
1230 ySize_LowLayer[0] = YSizeUpLayer[module_size][0];
1231
1232 xSize_UpLayer[1] = XSizeLowLayer[module_size][1];
1233 ySize_UpLayer[1] = YSizeLowLayer[module_size][1];
1234 xSize_LowLayer[1] = XSizeUpLayer[module_size][1];
1235 ySize_LowLayer[1] = YSizeUpLayer[module_size][1];
1236
1237 xLBorder_UpLayer[0] = XLeftBorderLowerlayer[module_size][0] + XModuleShifts[istation][imodule];
1238 xLBorder_UpLayer[1] = XLeftBorderLowerlayer[module_size][1] + XModuleShifts[istation][imodule];
1239 yLBorder_UpLayer[0] = -YLeftBorderLowerlayer[module_size][0] + YModuleShifts[istation][imodule];
1240 yLBorder_UpLayer[1] = -YLeftBorderLowerlayer[module_size][1] + YModuleShifts[istation][imodule];
1241 xLBorder_LowLayer[0] = XLeftBorderUpperlayer[module_size][0] + XModuleShifts[istation][imodule];
1242 xLBorder_LowLayer[1] = XLeftBorderUpperlayer[module_size][1] + XModuleShifts[istation][imodule];
1243 yLBorder_LowLayer[0] = -YLeftBorderUpperlayer[module_size][0] + YModuleShifts[istation][imodule];
1244 yLBorder_LowLayer[1] = -YLeftBorderUpperlayer[module_size][1] + YModuleShifts[istation][imodule];
1245
1246 xRBorder_UpLayer[0] = XRightBorderLowerlayer[module_size][0] + XModuleShifts[istation][imodule];
1247 xRBorder_UpLayer[1] = XRightBorderLowerlayer[module_size][1] + XModuleShifts[istation][imodule];
1248 yRBorder_UpLayer[0] = -YRightBorderLowerlayer[module_size][0] + YModuleShifts[istation][imodule];
1249 yRBorder_UpLayer[1] = -YRightBorderLowerlayer[module_size][1] + YModuleShifts[istation][imodule];
1250 xRBorder_LowLayer[0] = XRightBorderUpperlayer[module_size][0] + XModuleShifts[istation][imodule];
1251 xRBorder_LowLayer[1] = XRightBorderUpperlayer[module_size][1] + XModuleShifts[istation][imodule];
1252 yRBorder_LowLayer[0] = -YRightBorderUpperlayer[module_size][0] + YModuleShifts[istation][imodule];
1253 yRBorder_LowLayer[1] = -YRightBorderUpperlayer[module_size][1] + YModuleShifts[istation][imodule];
1254
1255 for (Int_t ilayer = 0; ilayer < 2; ++ilayer) {
1256 for (Int_t ipoint = 0; ipoint < 3; ++ipoint) {
1257 xDeadZone[ilayer][ipoint] =
1258 XDeadZone[module_size][ilayer][ipoint] + XModuleShifts[istation][imodule];
1259 yDeadZone[ilayer][ipoint] =
1260 -YDeadZone[module_size][ilayer][ipoint] + YModuleShifts[istation][imodule];
1261 }
1262 }
1263
1264 if (ModulesTypes[istation][imodule] == ModuleType::BEVEL_MODULE
1265 || ModulesTypes[istation][imodule] == ModuleType::BEVEL_MODULE_HALF)
1266 {
1267 isDeadZone_UpLayer = true;
1268 isDeadZone_LowLayer = false;
1269 }
1270
1271 if (StripDirection[module_size][0] == LeftToRight)
1272 stripDirection[0] = LeftToRight;
1273 else
1274 stripDirection[0] = RightToLeft;
1275 if (StripDirection[module_size][1] == LeftToRight)
1276 stripDirection[1] = LeftToRight;
1277 else
1278 stripDirection[1] = RightToLeft;
1279
1280 stripAngle[0] = -StripAngle[module_size][0];
1281 stripAngle[1] = -StripAngle[module_size][1];
1282
1283 firstStripNumber_UpLayer[0] = FirstStripNumberLowLayer[module_size][0];
1284 firstStripNumber_UpLayer[1] = FirstStripNumberLowLayer[module_size][1];
1285 firstStripNumber_LowLayer[0] = FirstStripNumberUpLayer[module_size][0];
1286 firstStripNumber_LowLayer[1] = FirstStripNumberUpLayer[module_size][1];
1287 }
1288
1289 if (ModulesYRotations[istation][imodule] == true && ModulesXRotations[istation][imodule] == true) {
1290
1291 xOrig_UpLayer[0] =
1292 -XOrigUpLayer[module_size][0] + XSizeUpLayer[module_size][0] + XModuleShifts[istation][imodule];
1293 yOrig_UpLayer[0] = -YOrigUpLayer[module_size][0] + YMiddleBorderLowerPart[module_size][0]
1294 + YMiddleBorderUpperPart[module_size][0] + YGapBetweenPartsOfModule[module_size]
1295 + YModuleShifts[istation][imodule];
1296 xOrig_LowLayer[0] =
1297 -XOrigLowLayer[module_size][0] + XSizeLowLayer[module_size][0] + XModuleShifts[istation][imodule];
1298 yOrig_LowLayer[0] = -YOrigLowLayer[module_size][0] - YSizeLowLayer[module_size][0]
1299 - YMiddleBorderLowerPart[module_size][0] - YMiddleBorderUpperPart[module_size][0]
1300 - YGapBetweenPartsOfModule[module_size] - YSizeUpLayer[module_size][0]
1301 + YModuleShifts[istation][imodule];
1302
1303 xOrig_UpLayer[1] =
1304 -XOrigUpLayer[module_size][1] + XSizeUpLayer[module_size][1] + XModuleShifts[istation][imodule];
1305 yOrig_UpLayer[1] = -YOrigUpLayer[module_size][1] + YMiddleBorderLowerPart[module_size][1]
1306 + YMiddleBorderUpperPart[module_size][1] + YGapBetweenPartsOfModule[module_size]
1307 + YModuleShifts[istation][imodule];
1308 xOrig_LowLayer[1] =
1309 -XOrigLowLayer[module_size][1] + XSizeLowLayer[module_size][1] + XModuleShifts[istation][imodule];
1310 yOrig_LowLayer[1] = -YOrigLowLayer[module_size][1] - YSizeLowLayer[module_size][1]
1311 - YMiddleBorderLowerPart[module_size][1] - YMiddleBorderUpperPart[module_size][1]
1312 - YGapBetweenPartsOfModule[module_size] - YSizeUpLayer[module_size][1]
1313 + YModuleShifts[istation][imodule];
1314
1315 xSize_UpLayer[0] = XSizeLowLayer[module_size][0];
1316 ySize_UpLayer[0] = YSizeLowLayer[module_size][0];
1317 xSize_LowLayer[0] = XSizeUpLayer[module_size][0];
1318 ySize_LowLayer[0] = YSizeUpLayer[module_size][0];
1319
1320 xSize_UpLayer[1] = XSizeLowLayer[module_size][1];
1321 ySize_UpLayer[1] = YSizeLowLayer[module_size][1];
1322 xSize_LowLayer[1] = XSizeUpLayer[module_size][1];
1323 ySize_LowLayer[1] = YSizeUpLayer[module_size][1];
1324
1325 xLBorder_UpLayer[0] = -XRightBorderLowerlayer[module_size][0] + XModuleShifts[istation][imodule];
1326 xLBorder_UpLayer[1] = -XRightBorderLowerlayer[module_size][1] + XModuleShifts[istation][imodule];
1327 yLBorder_UpLayer[0] = -YRightBorderLowerlayer[module_size][0] + YModuleShifts[istation][imodule];
1328 yLBorder_UpLayer[1] = -YRightBorderLowerlayer[module_size][1] + YModuleShifts[istation][imodule];
1329 xLBorder_LowLayer[0] = -XRightBorderUpperlayer[module_size][0] + XModuleShifts[istation][imodule];
1330 xLBorder_LowLayer[1] = -XRightBorderUpperlayer[module_size][1] + XModuleShifts[istation][imodule];
1331 yLBorder_LowLayer[0] = -YRightBorderUpperlayer[module_size][0] + YModuleShifts[istation][imodule];
1332 yLBorder_LowLayer[1] = -YRightBorderUpperlayer[module_size][1] + YModuleShifts[istation][imodule];
1333
1334 xRBorder_UpLayer[0] = -XLeftBorderLowerlayer[module_size][0] + XModuleShifts[istation][imodule];
1335 xRBorder_UpLayer[1] = -XLeftBorderLowerlayer[module_size][1] + XModuleShifts[istation][imodule];
1336 yRBorder_UpLayer[0] = -YLeftBorderLowerlayer[module_size][0] + YModuleShifts[istation][imodule];
1337 yRBorder_UpLayer[1] = -YLeftBorderLowerlayer[module_size][1] + YModuleShifts[istation][imodule];
1338 xRBorder_LowLayer[0] = -XLeftBorderUpperlayer[module_size][0] + XModuleShifts[istation][imodule];
1339 xRBorder_LowLayer[1] = -XLeftBorderUpperlayer[module_size][1] + XModuleShifts[istation][imodule];
1340 yRBorder_LowLayer[0] = -YLeftBorderUpperlayer[module_size][0] + YModuleShifts[istation][imodule];
1341 yRBorder_LowLayer[1] = -YLeftBorderUpperlayer[module_size][1] + YModuleShifts[istation][imodule];
1342
1343 for (Int_t ilayer = 0; ilayer < 2; ++ilayer) {
1344 for (Int_t ipoint = 0; ipoint < 3; ++ipoint) {
1345 xDeadZone[ilayer][ipoint] =
1346 -XDeadZone[module_size][ilayer][ipoint] + XModuleShifts[istation][imodule];
1347 yDeadZone[ilayer][ipoint] =
1348 -YDeadZone[module_size][ilayer][ipoint] + YModuleShifts[istation][imodule];
1349 }
1350 }
1351
1352 if (ModulesTypes[istation][imodule] == ModuleType::BEVEL_MODULE
1353 || ModulesTypes[istation][imodule] == ModuleType::BEVEL_MODULE_HALF)
1354 {
1355 isDeadZone_UpLayer = true;
1356 isDeadZone_LowLayer = false;
1357 }
1358
1359 if (StripDirection[module_size][0] == LeftToRight)
1360 stripDirection[0] = RightToLeft;
1361 else
1362 stripDirection[0] = LeftToRight;
1363 if (StripDirection[module_size][1] == LeftToRight)
1364 stripDirection[1] = RightToLeft;
1365 else
1366 stripDirection[1] = LeftToRight;
1367
1368 stripAngle[0] = StripAngle[module_size][0];
1369 stripAngle[1] = StripAngle[module_size][1];
1370
1371 firstStripNumber_UpLayer[0] = FirstStripNumberLowLayer[module_size][0];
1372 firstStripNumber_UpLayer[1] = FirstStripNumberLowLayer[module_size][1];
1373 firstStripNumber_LowLayer[0] = FirstStripNumberUpLayer[module_size][0];
1374 firstStripNumber_LowLayer[1] = FirstStripNumberUpLayer[module_size][1];
1375 }
1376
1377 cout << " ---\n";
1378 cout << " Orig_UpLayer[0](x:y) = ( " << xOrig_UpLayer[0] << " : " << yOrig_UpLayer[0] << " )\n";
1379 cout << " Orig_LowLayer[0](x:y) = ( " << xOrig_LowLayer[0] << " : " << yOrig_LowLayer[0] << " )\n";
1380 cout << " Orig_UpLayer[1](x:y) = ( " << xOrig_UpLayer[1] << " : " << yOrig_UpLayer[1] << " )\n";
1381 cout << " Orig_LowLayer[1](x:y) = ( " << xOrig_LowLayer[1] << " : " << yOrig_LowLayer[1] << " )\n";
1382 cout << "\n\n";
1383
1384 cout << " ---\n";
1385 cout << " Size_UpLayer[0](dx:dy) = ( " << xSize_UpLayer[0] << " : " << ySize_UpLayer[0] << " )\n";
1386 cout << " Size_LowLayer[0](dx:dy) = ( " << xSize_LowLayer[0] << " : " << ySize_LowLayer[0] << " )\n";
1387 cout << " Size_UpLayer[1](dx:dy) = ( " << xSize_UpLayer[1] << " : " << ySize_UpLayer[1] << " )\n";
1388 cout << " Size_LowLayer[1](dx:dy) = ( " << xSize_LowLayer[1] << " : " << ySize_LowLayer[1] << " )\n";
1389 cout << "\n\n";
1390
1391 cout << " ---\n";
1392 cout << " LBorder_UpLayer[0](x:y) = ( " << xLBorder_UpLayer[0] << " : " << yLBorder_UpLayer[0] << " )\n";
1393 cout << " RBorder_UpLayer[0](x:y) = ( " << xRBorder_UpLayer[0] << " : " << yRBorder_UpLayer[0] << " )\n";
1394 cout << "\n";
1395 cout << " LBorder_LowLayer[0](x:y) = ( " << xLBorder_LowLayer[0] << " : " << yLBorder_LowLayer[0]
1396 << " )\n";
1397 cout << " RBorder_LowLayer[0](x:y) = ( " << xRBorder_LowLayer[0] << " : " << yRBorder_LowLayer[0]
1398 << " )\n";
1399 cout << "\n";
1400
1401 cout << " LBorder_UpLayer[1](x:y) = ( " << xLBorder_UpLayer[1] << " : " << yLBorder_UpLayer[1] << " )\n";
1402 cout << " RBorder_UpLayer[1](x:y) = ( " << xRBorder_UpLayer[1] << " : " << yRBorder_UpLayer[1] << " )\n";
1403 cout << "\n";
1404 cout << " LBorder_LowLayer[1](x:y) = ( " << xLBorder_LowLayer[1] << " : " << yLBorder_LowLayer[1]
1405 << " )\n";
1406 cout << " RBorder_LowLayer[1](x:y) = ( " << xRBorder_LowLayer[1] << " : " << yRBorder_LowLayer[1]
1407 << " )\n";
1408 cout << "\n\n";
1409
1410 cout << " ---\n";
1411 cout << " DeadZone[0]:\n";
1412 cout << " p0(x:y) = ( " << xDeadZone[0][0] << " : " << yDeadZone[0][0] << " )\n";
1413 cout << " p1(x:y) = ( " << xDeadZone[0][1] << " : " << yDeadZone[0][1] << " )\n";
1414 cout << " p2(x:y) = ( " << xDeadZone[0][2] << " : " << yDeadZone[0][2] << " )\n";
1415 cout << "\n";
1416
1417 cout << " DeadZone[1]:\n";
1418 cout << " p0(x:y) = ( " << xDeadZone[1][0] << " : " << yDeadZone[1][0] << " )\n";
1419 cout << " p1(x:y) = ( " << xDeadZone[1][1] << " : " << yDeadZone[1][1] << " )\n";
1420 cout << " p2(x:y) = ( " << xDeadZone[1][2] << " : " << yDeadZone[1][2] << " )\n";
1421 cout << "\n";
1422
1423 cout << " ---\n";
1424 cout << " stripDirection[0] = ";
1425 if (stripDirection[0] == LeftToRight)
1426 cout << "LeftToRight\n";
1427 else
1428 cout << "RightToLeft\n";
1429 cout << " stripDirection[1] = ";
1430 if (stripDirection[1] == LeftToRight)
1431 cout << "LeftToRight\n";
1432 else
1433 cout << "RightToLeft\n";
1434 cout << "\n";
1435
1436 cout << " ---\n";
1437 cout << " pitchValue[0] = " << pitchValue[0] << "\n";
1438 cout << " pitchValue[1] = " << pitchValue[1] << "\n";
1439 cout << "\n";
1440
1441 cout << "---\n";
1442 cout << " stripAngle[0] = " << stripAngle[0] << "\n";
1443 cout << " stripAngle[1] = " << stripAngle[1] << "\n";
1444 cout << "\n";
1445
1446 cout << "---\n";
1447 cout << " firstStripNumber_UpLayer[0] = " << firstStripNumber_UpLayer[0] << "\n";
1448 cout << " firstStripNumber_LowLayer[0] = " << firstStripNumber_LowLayer[0] << "\n";
1449 cout << " firstStripNumber_UpLayer[1] = " << firstStripNumber_UpLayer[1] << "\n";
1450 cout << " firstStripNumber_LowLayer[1] = " << firstStripNumber_LowLayer[1] << "\n";
1451 cout << "\n";
1452
1453 if (ModulesTypes[istation][imodule] == ModuleType::BEVEL_MODULE
1454 || ModulesTypes[istation][imodule] == ModuleType::RIGHT_ANGLED_MODULE)
1455 {
1456
1457 // upper part of module: straight strips = back side ------------
1458 SiFileOut << "\t\t\t<Layer";
1459 SiFileOut << " zoneID=\""
1460 << "0"
1461 << "\"";
1462 SiFileOut << " type=\""
1463 << "lower"
1464 << "\"";
1465 SiFileOut << " firstStripNumber=\"" << firstStripNumber_UpLayer[1] << "\"";
1466 SiFileOut << " stripAngle=\"" << stripAngle[1] << "\"";
1467 SiFileOut << " pitch=\"" << pitchValue[1] << "\"";
1468 SiFileOut << " xorig=\"" << xOrig_UpLayer[1] << "\"";
1469 SiFileOut << " yorig=\"" << yOrig_UpLayer[1] << "\"";
1470 SiFileOut << " xsize=\"" << xSize_UpLayer[1] << "\"";
1471 SiFileOut << " ysize=\"" << ySize_UpLayer[1] << "\"";
1472 SiFileOut << " stripDirection=\"";
1473 if (stripDirection[1] == LeftToRight)
1474 SiFileOut << "LeftToRight\"";
1475 else
1476 SiFileOut << "RightToLeft\"";
1477 SiFileOut << " lxborder=\"" << xLBorder_UpLayer[1] << "\"";
1478 SiFileOut << " lyborder=\"" << yLBorder_UpLayer[1] << "\"";
1479 SiFileOut << " rxborder=\"" << xRBorder_UpLayer[1] << "\"";
1480 SiFileOut << " ryborder=\"" << yRBorder_UpLayer[1] << "\"";
1481 SiFileOut << ">";
1482
1483 if (isDeadZone_UpLayer == true) {
1484 SiFileOut << "\n";
1485 SiFileOut << "\t\t\t\t<DeadZone>\n";
1486 for (Int_t ipoint = 0; ipoint < 3; ++ipoint) {
1487 SiFileOut << "\t\t\t\t\t<DeadPoint";
1488 SiFileOut << " x=\"" << xDeadZone[1][ipoint] << "\"";
1489 SiFileOut << " y=\"" << yDeadZone[1][ipoint] << "\"";
1490 SiFileOut << " />\n";
1491 }
1492 SiFileOut << "\t\t\t\t</DeadZone>\n\t\t\t";
1493 }
1494 SiFileOut << "</Layer>\n";
1495 //--------------------------------------------------------------
1496
1497 // lower part of module: straight strips = back side ------------
1498 SiFileOut << "\t\t\t<Layer";
1499 SiFileOut << " zoneID=\""
1500 << "0"
1501 << "\"";
1502 SiFileOut << " type=\""
1503 << "lower"
1504 << "\"";
1505 SiFileOut << " firstStripNumber=\"" << firstStripNumber_LowLayer[1] << "\"";
1506 SiFileOut << " stripAngle=\"" << stripAngle[1] << "\"";
1507 SiFileOut << " pitch=\"" << pitchValue[1] << "\"";
1508 SiFileOut << " xorig=\"" << xOrig_LowLayer[1] << "\"";
1509 SiFileOut << " yorig=\"" << yOrig_LowLayer[1] << "\"";
1510 SiFileOut << " xsize=\"" << xSize_LowLayer[1] << "\"";
1511 SiFileOut << " ysize=\"" << ySize_LowLayer[1] << "\"";
1512 SiFileOut << " stripDirection=\"";
1513 if (stripDirection[1] == LeftToRight)
1514 SiFileOut << "LeftToRight\"";
1515 else
1516 SiFileOut << "RightToLeft\"";
1517 SiFileOut << " lxborder=\"" << xLBorder_LowLayer[1] << "\"";
1518 SiFileOut << " lyborder=\"" << yLBorder_LowLayer[1] << "\"";
1519 SiFileOut << " rxborder=\"" << xRBorder_LowLayer[1] << "\"";
1520 SiFileOut << " ryborder=\"" << yRBorder_LowLayer[1] << "\"";
1521 SiFileOut << ">";
1522
1523 if (isDeadZone_LowLayer == true) {
1524 SiFileOut << "\n";
1525 SiFileOut << "\t\t\t\t<DeadZone>\n";
1526 for (Int_t ipoint = 0; ipoint < 3; ++ipoint) {
1527 SiFileOut << "\t\t\t\t\t<DeadPoint";
1528 SiFileOut << " x=\"" << xDeadZone[1][ipoint] << "\"";
1529 SiFileOut << " y=\"" << yDeadZone[1][ipoint] << "\"";
1530 SiFileOut << " />\n";
1531 }
1532 SiFileOut << "\t\t\t\t</DeadZone>\n\t\t\t";
1533 }
1534 SiFileOut << "</Layer>\n";
1535 //--------------------------------------------------------------
1536
1537 // upper part of module: inclined strips = front side -----------
1538 SiFileOut << "\t\t\t<Layer";
1539 SiFileOut << " zoneID=\""
1540 << "1"
1541 << "\"";
1542 SiFileOut << " type=\""
1543 << "upper"
1544 << "\"";
1545 SiFileOut << " firstStripNumber=\"" << firstStripNumber_UpLayer[0] << "\"";
1546 SiFileOut << " stripAngle=\"" << stripAngle[0] << "\"";
1547 SiFileOut << " pitch=\"" << pitchValue[0] << "\"";
1548 SiFileOut << " xorig=\"" << xOrig_UpLayer[0] << "\"";
1549 SiFileOut << " yorig=\"" << yOrig_UpLayer[0] << "\"";
1550 SiFileOut << " xsize=\"" << xSize_UpLayer[0] << "\"";
1551 SiFileOut << " ysize=\"" << ySize_UpLayer[0] << "\"";
1552 SiFileOut << " stripDirection=\"";
1553 if (stripDirection[0] == LeftToRight)
1554 SiFileOut << "LeftToRight\"";
1555 else
1556 SiFileOut << "RightToLeft\"";
1557 SiFileOut << " lxborder=\"" << xLBorder_UpLayer[0] << "\"";
1558 SiFileOut << " lyborder=\"" << yLBorder_UpLayer[0] << "\"";
1559 SiFileOut << " rxborder=\"" << xRBorder_UpLayer[0] << "\"";
1560 SiFileOut << " ryborder=\"" << yRBorder_UpLayer[0] << "\"";
1561 SiFileOut << ">";
1562
1563 if (isDeadZone_UpLayer == true) {
1564 SiFileOut << "\n";
1565 SiFileOut << "\t\t\t\t<DeadZone>\n";
1566 for (Int_t ipoint = 0; ipoint < 3; ++ipoint) {
1567 SiFileOut << "\t\t\t\t\t<DeadPoint";
1568 SiFileOut << " x=\"" << xDeadZone[0][ipoint] << "\"";
1569 SiFileOut << " y=\"" << yDeadZone[0][ipoint] << "\"";
1570 SiFileOut << " />\n";
1571 }
1572 SiFileOut << "\t\t\t\t</DeadZone>\n\t\t\t";
1573 }
1574 SiFileOut << "</Layer>\n";
1575 //--------------------------------------------------------------
1576
1577 // lower part of module: inclined strips = front side -----------
1578 SiFileOut << "\t\t\t<Layer";
1579 SiFileOut << " zoneID=\""
1580 << "1"
1581 << "\"";
1582 SiFileOut << " type=\""
1583 << "upper"
1584 << "\"";
1585 SiFileOut << " firstStripNumber=\"" << firstStripNumber_LowLayer[0] << "\"";
1586 SiFileOut << " stripAngle=\"" << stripAngle[0] << "\"";
1587 SiFileOut << " pitch=\"" << pitchValue[0] << "\"";
1588 SiFileOut << " xorig=\"" << xOrig_LowLayer[0] << "\"";
1589 SiFileOut << " yorig=\"" << yOrig_LowLayer[0] << "\"";
1590 SiFileOut << " xsize=\"" << xSize_LowLayer[0] << "\"";
1591 SiFileOut << " ysize=\"" << ySize_LowLayer[0] << "\"";
1592 SiFileOut << " stripDirection=\"";
1593 if (stripDirection[0] == LeftToRight)
1594 SiFileOut << "LeftToRight\"";
1595 else
1596 SiFileOut << "RightToLeft\"";
1597 SiFileOut << " lxborder=\"" << xLBorder_LowLayer[0] << "\"";
1598 SiFileOut << " lyborder=\"" << yLBorder_LowLayer[0] << "\"";
1599 SiFileOut << " rxborder=\"" << xRBorder_LowLayer[0] << "\"";
1600 SiFileOut << " ryborder=\"" << yRBorder_LowLayer[0] << "\"";
1601 SiFileOut << ">";
1602
1603 if (isDeadZone_LowLayer == true) {
1604 SiFileOut << "\n";
1605 SiFileOut << "\t\t\t\t<DeadZone>\n";
1606 for (Int_t ipoint = 0; ipoint < 3; ++ipoint) {
1607 SiFileOut << "\t\t\t\t\t<DeadPoint";
1608 SiFileOut << " x=\"" << xDeadZone[0][ipoint] << "\"";
1609 SiFileOut << " y=\"" << yDeadZone[0][ipoint] << "\"";
1610 SiFileOut << " />\n";
1611 }
1612 SiFileOut << "\t\t\t\t</DeadZone>\n\t\t\t";
1613 }
1614 SiFileOut << "</Layer>\n";
1615 //--------------------------------------------------------------
1616
1617 SiFileOut << "\t\t</Module>\n";
1618 SiFileOut << "\n";
1619 }
1620
1621 if (ModulesTypes[istation][imodule] == ModuleType::BEVEL_MODULE_HALF
1622 || ModulesTypes[istation][imodule] == ModuleType::RIGHT_ANGLED_MODULE_HALF)
1623 {
1624
1625 Double_t xOrig[2];
1626 Double_t yOrig[2];
1627 Double_t xSize[2];
1628 Double_t ySize[2];
1629 Double_t xLBorder[2];
1630 Double_t yLBorder[2];
1631 Double_t xRBorder[2];
1632 Double_t yRBorder[2];
1633 Bool_t isDeadZone;
1634
1635 if (ModulesXRotations[istation][imodule] == false) {
1636 xOrig[0] = xOrig_LowLayer[0];
1637 xOrig[1] = xOrig_LowLayer[1];
1638 yOrig[0] = yOrig_LowLayer[0];
1639 yOrig[1] = yOrig_LowLayer[1];
1640 xSize[0] = xSize_LowLayer[0];
1641 xSize[1] = xSize_LowLayer[1];
1642 ySize[0] = ySize_LowLayer[0];
1643 ySize[1] = ySize_LowLayer[1];
1644 xLBorder[0] = xLBorder_LowLayer[0];
1645 xLBorder[1] = xLBorder_LowLayer[1];
1646 yLBorder[0] = yLBorder_LowLayer[0];
1647 yLBorder[1] = yLBorder_LowLayer[1];
1648 xRBorder[0] = xRBorder_LowLayer[0];
1649 xRBorder[1] = xRBorder_LowLayer[1];
1650 yRBorder[0] = yRBorder_LowLayer[0];
1651 yRBorder[1] = yRBorder_LowLayer[1];
1652 isDeadZone = isDeadZone_LowLayer;
1653 }
1654 if (ModulesXRotations[istation][imodule] == true) {
1655 xOrig[0] = xOrig_UpLayer[0];
1656 xOrig[1] = xOrig_UpLayer[1];
1657 yOrig[0] = yOrig_UpLayer[0];
1658 yOrig[1] = yOrig_UpLayer[1];
1659 xSize[0] = xSize_UpLayer[0];
1660 xSize[1] = xSize_UpLayer[1];
1661 ySize[0] = ySize_UpLayer[0];
1662 ySize[1] = ySize_UpLayer[1];
1663 xLBorder[0] = xLBorder_UpLayer[0];
1664 xLBorder[1] = xLBorder_UpLayer[1];
1665 yLBorder[0] = yLBorder_UpLayer[0];
1666 yLBorder[1] = yLBorder_UpLayer[1];
1667 xRBorder[0] = xRBorder_UpLayer[0];
1668 xRBorder[1] = xRBorder_UpLayer[1];
1669 yRBorder[0] = yRBorder_UpLayer[0];
1670 yRBorder[1] = yRBorder_UpLayer[1];
1671 isDeadZone = isDeadZone_UpLayer;
1672 }
1673
1674 // one part of module: straight strips = back side --------------
1675 SiFileOut << "\t\t\t<Layer";
1676 SiFileOut << " zoneID=\""
1677 << "0"
1678 << "\"";
1679 SiFileOut << " type=\""
1680 << "lower"
1681 << "\"";
1682 SiFileOut << " firstStripNumber=\"" << 0 << "\"";
1683 SiFileOut << " stripAngle=\"" << stripAngle[1] << "\"";
1684 SiFileOut << " pitch=\"" << pitchValue[1] << "\"";
1685 SiFileOut << " xorig=\"" << xOrig[1] << "\"";
1686 SiFileOut << " yorig=\"" << yOrig[1] << "\"";
1687 SiFileOut << " xsize=\"" << xSize[1] << "\"";
1688 SiFileOut << " ysize=\"" << ySize[1] << "\"";
1689 SiFileOut << " stripDirection=\"";
1690 if (stripDirection[1] == LeftToRight)
1691 SiFileOut << "LeftToRight\"";
1692 else
1693 SiFileOut << "RightToLeft\"";
1694 SiFileOut << " lxborder=\"" << xLBorder[1] << "\"";
1695 SiFileOut << " lyborder=\"" << yLBorder[1] << "\"";
1696 SiFileOut << " rxborder=\"" << xRBorder[1] << "\"";
1697 SiFileOut << " ryborder=\"" << yRBorder[1] << "\"";
1698 SiFileOut << ">";
1699
1700 if (isDeadZone == true) {
1701 SiFileOut << "\n";
1702 SiFileOut << "\t\t\t\t<DeadZone>\n";
1703 for (Int_t ipoint = 0; ipoint < 3; ++ipoint) {
1704 SiFileOut << "\t\t\t\t\t<DeadPoint";
1705 SiFileOut << " x=\"" << xDeadZone[1][ipoint] << "\"";
1706 SiFileOut << " y=\"" << yDeadZone[1][ipoint] << "\"";
1707 SiFileOut << " />\n";
1708 }
1709 SiFileOut << "\t\t\t\t</DeadZone>\n\t\t\t";
1710 }
1711 SiFileOut << "</Layer>\n";
1712 //--------------------------------------------------------------
1713
1714 // one part of module: inclined strips = front side -------------
1715 SiFileOut << "\t\t\t<Layer";
1716 SiFileOut << " zoneID=\""
1717 << "1"
1718 << "\"";
1719 SiFileOut << " type=\""
1720 << "upper"
1721 << "\"";
1722 SiFileOut << " firstStripNumber=\"" << 0 << "\"";
1723 SiFileOut << " stripAngle=\"" << stripAngle[0] << "\"";
1724 SiFileOut << " pitch=\"" << pitchValue[0] << "\"";
1725 SiFileOut << " xorig=\"" << xOrig[0] << "\"";
1726 SiFileOut << " yorig=\"" << yOrig[0] << "\"";
1727 SiFileOut << " xsize=\"" << xSize[0] << "\"";
1728 SiFileOut << " ysize=\"" << ySize[0] << "\"";
1729 SiFileOut << " stripDirection=\"";
1730 if (stripDirection[0] == LeftToRight)
1731 SiFileOut << "LeftToRight\"";
1732 else
1733 SiFileOut << "RightToLeft\"";
1734 SiFileOut << " lxborder=\"" << xLBorder[0] << "\"";
1735 SiFileOut << " lyborder=\"" << yLBorder[0] << "\"";
1736 SiFileOut << " rxborder=\"" << xRBorder[0] << "\"";
1737 SiFileOut << " ryborder=\"" << yRBorder[0] << "\"";
1738 SiFileOut << ">";
1739
1740 if (isDeadZone == true) {
1741 SiFileOut << "\n";
1742 SiFileOut << "\t\t\t\t<DeadZone>\n";
1743 for (Int_t ipoint = 0; ipoint < 3; ++ipoint) {
1744 SiFileOut << "\t\t\t\t\t<DeadPoint";
1745 SiFileOut << " x=\"" << xDeadZone[0][ipoint] << "\"";
1746 SiFileOut << " y=\"" << yDeadZone[0][ipoint] << "\"";
1747 SiFileOut << " />\n";
1748 }
1749 SiFileOut << "\t\t\t\t</DeadZone>\n\t\t\t";
1750 }
1751 SiFileOut << "</Layer>\n";
1752 //--------------------------------------------------------------
1753
1754 SiFileOut << "\t\t</Module>\n";
1755 SiFileOut << "\n";
1756 }
1757 }
1758
1759 SiFileOut << "\t</Station>\n";
1760 SiFileOut << "\n";
1761
1762 cout << "------------------------------------------------------------\n";
1763 }
1764
1765 SiFileOut << "</StationSet>\n";
1766
1767 SiFileOut.close();
1768}
bool Bool_t
int Int_t
double Double_t
#define R__ADD_INCLUDE_PATH(PATH)
StripNumberingDirection
@ RightToLeft
@ LeftToRight
const char * Data() const
const Double_t YStationPositions[NStations]
const Int_t NMaxModules
const Double_t ZStationPositions[NStations]
const Int_t NStations
const Double_t XStationPositions[NStations]
const Int_t NModulesInStations[NStations]
Double_t ZModuleSize[NModuleSizes]
Double_t YMiddleBorderUpperPart[NModuleSizes][2]
Double_t XLeftBorder[NModuleSizes][2]
Double_t YSizeUpLayer[NModuleSizes][2]
const Double_t x_dist_cent_base[NStations]
Double_t BevelAngleRad[NModuleSizes]
const Double_t x_shift_hp[NStations]
Double_t YShiftLastStripLowLayer[NModuleSizes][2]
ModuleType
@ BEVEL_MODULE
@ RIGHT_ANGLED_MODULE_HALF
@ RIGHT_ANGLED_MODULE
Double_t YTopBorder[NModuleSizes][2]
const Double_t z_mod_thick
const Double_t z_shift_low
const Double_t y_dist_cent_base[NStations]
Double_t YShiftLastStripUpLayer[NModuleSizes][2]
Double_t XShiftFirstStripLowLayer[NModuleSizes][2]
Double_t YModuleSizeUpperPart[NModuleSizes]
Double_t YOrigLowLayer[NModuleSizes][2]
Double_t YOrigUpLayer[NModuleSizes][2]
Double_t FirstStripNumberLowLayer[NModuleSizes][2]
Double_t XShiftLastStripUpLayer[NModuleSizes][2]
Double_t YRightBorderLowerlayer[NModuleSizes][2]
Double_t XLeftBorderLowerlayer[NModuleSizes][2]
Double_t PitchValue[NModuleSizes][2]
Double_t YLeftBorderUpperlayer[NModuleSizes][2]
Double_t x_delta_bottom_BP[NModuleSizes][2]
Double_t YBevelSize[NModuleSizes]
Double_t YShiftFirstStripUpLayer[NModuleSizes][2]
Double_t XShiftLastStripLowLayer[NModuleSizes][2]
const Double_t y_shift_hp[NStations]
Double_t XRightBorder[NModuleSizes][2]
Double_t XLeftBorderUpperlayer[NModuleSizes][2]
ModuleSize
@ STANDARD_MODULE
Double_t XYBevelBorder[NModuleSizes][2]
const Bool_t ModulesYRotations[NStations][NMaxModules]
Double_t XOrigLowLayer[NModuleSizes][2]
Double_t YBottomBorder[NModuleSizes][2]
Double_t YModuleSize[NModuleSizes]
Double_t x_delta[NModuleSizes][2]
Double_t y_delta_bottom_BP[NModuleSizes][2]
Double_t StripAngle[NModuleSizes][2]
Double_t YModuleSizeLowerPart[NModuleSizes]
const Double_t z_shift_up
Double_t XDeadZone[NModuleSizes][2][3]
Double_t XOrigUpLayer[NModuleSizes][2]
Double_t x_delta_top_BP[NModuleSizes][2]
Double_t YMiddleBorderLowerPart[NModuleSizes][2]
Double_t YShiftFirstStripLowLayer[NModuleSizes][2]
Double_t y_delta[NModuleSizes][2]
Double_t BevelAngleDeg[NModuleSizes]
Double_t FirstStripNumberUpLayer[NModuleSizes][2]
Double_t YRightBorderUpperlayer[NModuleSizes][2]
Double_t YDeadZone[NModuleSizes][2][3]
Double_t YGapBetweenPartsOfModule[NModuleSizes]
Double_t XModuleSize[NModuleSizes]
Double_t YSizeLowLayer[NModuleSizes][2]
Double_t XRightBorderLowerlayer[NModuleSizes][2]
Double_t YLeftBorderLowerlayer[NModuleSizes][2]
const unsigned int NModuleSizes
const ModuleType ModulesTypes[NStations][NMaxModules]
const Double_t z_shift_hp[NStations]
Double_t y_delta_top_BP[NModuleSizes][2]
Double_t XSizeLowLayer[NModuleSizes][2]
Double_t XRightBorderUpperlayer[NModuleSizes][2]
Double_t XShiftFirstStripUpLayer[NModuleSizes][2]
const Bool_t ModulesXRotations[NStations][NMaxModules]
Double_t XBevelSize[NModuleSizes]
Double_t XSizeUpLayer[NModuleSizes][2]
void SiliconConfigCalculate_Run9()
Double_t ATan(Double_t)
constexpr Double_t PiOver2()
Double_t Cos(Double_t)
Double_t Sin(Double_t)
Double_t Tan(Double_t)
constexpr Double_t RadToDeg()
Definition json.hpp:4446