37 +6.337 , +8.189 , +9.893 , +50.0 };
39 -0.003 , +0.0245 , +0.022 , +0.0 };
41 +185.989 , +217.287 , +248.401 , +790.0 };
45 {163.2 * 0.25, -163.2 * 0.25, 163.2 * 0.25, -163.2 * 0.25},
46 {163.2 * 0.25, -163.2 * 0.25, 163.2 * 0.25, -163.2 * 0.25},
47 {163.2 * 0.25, -163.2 * 0.25, 163.2 * 0.25, -163.2 * 0.25},
48 {163.2 * 0.25, -163.2 * 0.25, 163.2 * 0.25, -163.2 * 0.25},
49 {163.2 * 0.25, -163.2 * 0.25, 163.2 * 0.25, -163.2 * 0.25},
50 {163.2 * 0.25, -163.2 * 0.25, 163.2 * 0.25, -163.2 * 0.25},
51 {163.2 * 0.25, -163.2 * 0.25, 163.2 * 0.25, -163.2 * 0.25},
55 {+22.5, +22.5, -19.5, -19.5},
56 {+22.5, +22.5, -19.5, -19.5},
57 {+22.5, +22.5, -19.5, -19.5},
58 {+22.5, +22.5, -19.5, -19.5},
59 {+22.5, +22.5, -19.5, -19.5},
60 {+22.5, +22.5, -19.5, -19.5},
61 {+22.5, +22.5, -19.5, -19.5},
65 {+4.1, +4.1, 0.0, 0.0},
66 {0.0, 0.0, +4.1, +4.1},
67 {+4.1, +4.1, 0.0, 0.0},
68 {0.0, 0.0, +4.1, +4.1},
69 {+4.1, +4.1, 0.0, 0.0},
70 {0.0, 0.0, +4.1, +4.1},
71 {+4.1, +4.1, 0.0, 0.0},
77 {2.28613e-01, 2.34606e-01, 3.70449e-01, 4.39267e-01, 2.67664e-01, 2.84859e-01, 3.41005e-01, 4.16753e-01},
78 {3.17030e-01, 2.45618e-01, 4.29878e-01, 4.29169e-01, 2.60443e-01, 1.79925e-01, 3.76252e-01, 3.71674e-01},
79 {1.25543e-01, 1.37935e-01, 2.77096e-01, 3.51704e-01, 2.16012e-01, 2.12139e-01, 2.88912e-01, 3.57699e-01},
80 {3.17647e-01, 2.36295e-01, 3.75431e-01, 3.80575e-01, 1.68884e-01, 8.80524e-02, 2.51805e-01, 2.56513e-01},
81 {-3.01883e-02, -2.87880e-02, 1.09744e-01, 1.90429e-01, 1.78162e-02, 1.32671e-02, 9.23760e-02, 1.67779e-01},
82 {1.43966e-01, 5.53303e-02, 2.48555e-01, 2.49193e-01, 3.88544e-02, -3.31393e-02, 7.96085e-02, 7.41273e-02},
83 {0., -5.63645e-04, 0.05, 8.74027e-04, 0., 3.60763e-03, 0.074, 1.49797e-01}};
85 {-2.40830e-01, -2.27117e-01, -4.41393e-01, -2.98662e-01, -1.47376e-01, -5.64919e-01, 3.60250e-02, -2.15290e-01},
86 {-4.83443e-01, -3.63780e-01, -3.52015e-01, -3.36903e-01, -1.14008e-01, -3.49136e-01, -2.14579e-01, -6.23524e-01},
87 {-1.91062e-01, -2.04515e-01, -3.79972e-01, -2.57092e-01, -1.01400e-01, -5.18137e-01, 5.39497e-02, -1.85679e-01},
88 {-4.55871e-01, -3.48696e-01, -2.33191e-01, -2.40044e-01, -5.37329e-02, -3.00596e-01, -1.98740e-01, -6.04983e-01},
89 {-2.31062e-01, -2.58276e-01, -4.03759e-01, -2.70196e-01, -8.53213e-02, -5.14891e-01, 3.15495e-02, -2.08464e-01},
90 {-2.58821e-01, -1.58621e-01, -9.84743e-02, -1.05756e-01, 1.54258e-01, -1.04935e-01, 1.83280e-02, -3.86622e-01},
91 {0., -5.86937e-03, -0.23, -1.45342e-01, 0., -3.98117e-01, 0.15, -1.04839e-01}};
116 {0.243654, 0.250775, 0.173749, 0.161366},
117 {-0.143876, -0.150758, 0.109959, 0.156433},
118 {-0.110145, -0.165981, -0.213889, -0.229543},
119 {0.103517, 0.036342, 0.086135, 0.0941369},
120 {-0.037648, -0.0941807, -0.180758, -0.176327},
121 {-0.0674491, -0.0367844, -0.0972473, -0.0584354},
223 true ,
false ,
true ,
false };
227 false ,
false ,
false ,
false };
231 {
false,
false,
true,
true},
232 {
true,
true,
false,
false},
233 {
false,
false,
true,
true},
234 {
true,
true,
false,
false},
235 {
false,
false,
true,
true},
236 {
true,
true,
false,
false},
237 {
false,
false,
true,
true},
297 {
"lower",
"upper",
"lower",
"upper"},
298 {
"lower",
"upper",
"lower",
"upper"},
299 {
"lower",
"upper",
"lower",
"upper"},
300 {
"lower",
"upper",
"lower",
"upper"},
301 {
"lower",
"upper",
"lower",
"upper"},
302 {
"lower",
"upper",
"lower",
"upper"},
303 {
"lower",
"upper",
"lower",
"upper"},
310 {+15.0, +15.0, -15.0, -15.0},
311 {+15.0, +15.0, -15.0, -15.0},
312 {+15.0, +15.0, -15.0, -15.0},
313 {+15.0, +15.0, -15.0, -15.0},
314 {+15.0, +15.0, -15.0, -15.0},
315 {+15.0, +15.0, -15.0, -15.0},
316 {+15.0, +15.0, -15.0, -15.0},
449 TString ConfigName =
"GemRun8_aligned";
450 TString AuthorName =
"Baranov D.";
451 TString DateCreated =
"18.01.2021";
456 cout <<
"It's the end" <<
"\n";
466 cout <<
"\nCreating XML configuration file...\n";
467 cout <<
" Configuration name: " << config_name <<
"\n";
468 cout <<
" Author: " << author <<
"\n";
469 cout <<
" Date created: " << date <<
"\n";
470 cout <<
" 02.03.2021 (Updated): radius of hole in active zone (4.0 -> 6.0 cm)\n";
471 cout <<
" 09.03.2021 (Updated): the form of a 'hole' dead zone changed (square -> 12 sided polygon) \n";
472 cout <<
" 25.05.2021 (Updated): Z-distance from the target to the first sens. vol. has been increased \n";
473 cout <<
" 08.12.2022 (Updated): Positions were corrected in accordance with the measurement scheme \n";
474 cout <<
" 12.12.2022 (updated): small GEM added \n";
475 cout <<
" 24.01.2023 (updated): half-plane shifts have been added according to the measurement scheme \n";
476 cout <<
" File path: " << FileName <<
"\n";
480 ofstream FileOut(FileName.
Data(), ios::out);
482 FileOut <<
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
492 \r\t02.03.2021 (Updated): radius of hole in active zone (4.0 -> 6.0 cm)\
493 \r\t09.03.2021 (Updated): the form of a 'hole' dead zone changed (square -> 12 sided polygon)\
494 \r\t25.05.2021 (Updated): Z-distance from the target to the first sens. vol. has been increased\
495 \r\t08.12.2022 (Updated): Positions were corrected in accordance with the measurement scheme\
496 \r\t12.12.2022 (updated): small GEM added\
497 \r\t24.01.2023 (updated): half-plane shifts have been added according to the measurement scheme\n\
498 \r\tA right-handed coordinates are used.\
499 \r\tIf you look at the GEMs from the target:\
500 \r\t\tx-axis is directed to the left,\
501 \r\t\ty-axis - to the top,\
502 \r\t\tz-axis - to the GEMs.\
505 FileOut <<
"<StationSet>\n";
512 FileOut <<
"<!-- Station " << istation <<
" -->\n";
514 FileOut <<
"\t<Station";
519 FileOut <<
" beamHole=\"" <<
HoleRadius <<
"\"";
532 FileOut <<
"\t\t<!-- module " << imodule <<
" -->\n";
534 FileOut <<
"\t\t<Module";
535 FileOut <<
" xShift=\"" <<
XModuleShifts[istation][imodule] <<
"\"";
536 FileOut <<
" yShift=\"" <<
YModuleShifts[istation][imodule] <<
"\"";
537 FileOut <<
" zShift=\"" <<
ZModuleShifts[istation][imodule] <<
"\"";
550 FileOut <<
"\t\t\t<Layer";
565 FileOut <<
" stripAngle=\"" << layer_angle <<
"\"";
570 if (imodule == 0 || imodule == 1)
572 if (imodule == 2 || imodule == 3)
589 if (imodule == 0 || imodule == 1) {
595 if (imodule == 2 || imodule == 3) {
662 FileOut <<
" xorig=\"" << xorig <<
"\"";
663 FileOut <<
" yorig=\"" << yorig <<
"\"";
664 FileOut <<
" xsize=\"" << xsize <<
"\"";
665 FileOut <<
" ysize=\"" << ysize <<
"\"";
668 FileOut <<
" stripDirection=\"" <<
"LeftToRight" <<
"\"";
670 FileOut <<
" stripDirection=\"" <<
"RightToLeft" <<
"\"";
681 rborder =
"RightBottom";
683 lborder =
"LeftBottom";
684 rborder =
"RightBottom";
688 lborder =
"LeftBottom";
689 rborder =
"RightTop";
692 rborder =
"RightTop";
701 rborder =
"RightBottom";
704 rborder =
"RightTop";
708 lborder =
"LeftBottom";
709 rborder =
"RightTop";
711 lborder =
"LeftBottom";
712 rborder =
"RightBottom";
720 lborder =
"LeftBottom";
721 rborder =
"RightTop";
724 rborder =
"RightTop";
729 rborder =
"RightBottom";
731 lborder =
"LeftBottom";
732 rborder =
"RightBottom";
740 lborder =
"LeftBottom";
741 rborder =
"RightTop";
743 lborder =
"LeftBottom";
744 rborder =
"RightBottom";
749 rborder =
"RightBottom";
752 rborder =
"RightTop";
758 FileOut <<
" lborder=\"" << lborder <<
"\"";
759 FileOut <<
" rborder=\"" << rborder <<
"\"";
770 FileOut <<
"\t\t\t\t<DeadZone>\n";
771 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
772 FileOut <<
"\t\t\t\t\t<DeadPoint";
777 FileOut <<
"\t\t\t\t</DeadZone>\n";
779 FileOut <<
"\t\t\t\t<DeadZone>\n";
780 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
781 FileOut <<
"\t\t\t\t\t<DeadPoint";
791 FileOut <<
"\t\t\t\t</DeadZone>\n";
794 FileOut <<
"\t\t\t\t<DeadZone>";
795 FileOut <<
" <!-- hole -->\n";
797 FileOut <<
"\t\t\t\t\t<DeadPoint";
802 FileOut <<
"\t\t\t\t</DeadZone>\n";
806 FileOut <<
"\t\t\t\t<DeadZone>";
807 FileOut <<
" <!-- triangle -->\n";
808 for (
Int_t ipoint = 0; ipoint < 3; ++ipoint) {
809 FileOut <<
"\t\t\t\t\t<DeadPoint";
819 FileOut <<
"\t\t\t\t</DeadZone>\n";
829 FileOut <<
"\t\t\t\t<DeadZone>\n";
830 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
831 FileOut <<
"\t\t\t\t\t<DeadPoint";
836 FileOut <<
"\t\t\t\t</DeadZone>\n";
838 FileOut <<
"\t\t\t\t<DeadZone>\n";
839 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
840 FileOut <<
"\t\t\t\t\t<DeadPoint";
850 FileOut <<
"\t\t\t\t</DeadZone>\n";
853 FileOut <<
"\t\t\t\t<DeadZone>";
854 FileOut <<
" <!-- hole -->\n";
856 FileOut <<
"\t\t\t\t\t<DeadPoint";
861 FileOut <<
"\t\t\t\t</DeadZone>\n";
865 FileOut <<
"\t\t\t\t<DeadZone>";
866 FileOut <<
" <!-- triangle -->\n";
867 for (
Int_t ipoint = 0; ipoint < 3; ++ipoint) {
868 FileOut <<
"\t\t\t\t\t<DeadPoint";
878 FileOut <<
"\t\t\t\t</DeadZone>\n";
888 FileOut <<
"\t\t\t\t<DeadZone>\n";
889 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
890 FileOut <<
"\t\t\t\t\t<DeadPoint";
895 FileOut <<
"\t\t\t\t</DeadZone>\n";
897 FileOut <<
"\t\t\t\t<DeadZone>\n";
898 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
899 FileOut <<
"\t\t\t\t\t<DeadPoint";
909 FileOut <<
"\t\t\t\t</DeadZone>\n";
912 FileOut <<
"\t\t\t\t<DeadZone>";
913 FileOut <<
" <!-- hole -->\n";
915 FileOut <<
"\t\t\t\t\t<DeadPoint";
920 FileOut <<
"\t\t\t\t</DeadZone>\n";
924 FileOut <<
"\t\t\t\t<DeadZone>";
925 FileOut <<
" <!-- triangle -->\n";
926 for (
Int_t ipoint = 0; ipoint < 3; ++ipoint) {
927 FileOut <<
"\t\t\t\t\t<DeadPoint";
937 FileOut <<
"\t\t\t\t</DeadZone>\n";
947 FileOut <<
"\t\t\t\t<DeadZone>\n";
948 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
949 FileOut <<
"\t\t\t\t\t<DeadPoint";
954 FileOut <<
"\t\t\t\t</DeadZone>\n";
956 FileOut <<
"\t\t\t\t<DeadZone>\n";
957 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
958 FileOut <<
"\t\t\t\t\t<DeadPoint";
968 FileOut <<
"\t\t\t\t</DeadZone>\n";
971 FileOut <<
"\t\t\t\t<DeadZone>";
972 FileOut <<
" <!-- hole -->\n";
974 FileOut <<
"\t\t\t\t\t<DeadPoint";
979 FileOut <<
"\t\t\t\t</DeadZone>\n";
983 FileOut <<
"\t\t\t\t<DeadZone>";
984 FileOut <<
" <!-- triangle -->\n";
985 for (
Int_t ipoint = 0; ipoint < 3; ++ipoint) {
986 FileOut <<
"\t\t\t\t\t<DeadPoint";
996 FileOut <<
"\t\t\t\t</DeadZone>\n";
1003 FileOut <<
"\t\t\t</Layer>\n";
1005 FileOut <<
"\t\t</Module>\n";
1008 FileOut <<
"\t</Station>\n";
1014 FileOut <<
"</StationSet>\n";
#define R__ADD_INCLUDE_PATH(PATH)
const char * Data() const
const Double_t YStationPositions[NStations]
Double_t XModuleShifts[NStations][NMaxModules]
const Double_t ZStationPositions[NStations]
Double_t ZModuleShifts[NStations][NMaxModules]
const Double_t XStationPositions[NStations]
Double_t YModuleShifts[NStations][NMaxModules]
const Double_t XHotZoneLayerSize_InclinedStrips_LHP[2]
Double_t YDeadZone_Hole_LHP[NPoints_DeadZone_Hole_LHP]
const Double_t Gap_Drift_Thickness
const Double_t XHotZoneLayerSize_StraightStrips_LHP
Double_t YDeadZone_TrapLeft_UHP[4]
const Bool_t XStationRotations[NStations]
Double_t YDeadZone_TrianRight_UHP[3]
Double_t YDeadZone_TrianLeft_UHP[3]
Double_t XDeadZone_Hole_UHP[NPoints_DeadZone_Hole_UHP]
const Double_t XMainZoneLayerSize_UHP
const Double_t Gap_FirstTransfer_Thickness
const Double_t Gap_Induction_Thickness
const Int_t NModulesInStations[NStations]
Double_t XDeadZone_TrianLeft_LHP[3]
const Bool_t YStationRotations[NStations]
const Double_t YMainZoneLayerSize_UHP
const Double_t YHotZoneLayerSize_InclinedStrips_LHP
Double_t XDeadZone_TrianRight_LHP[3]
Double_t YDeadZone_Rect_UHP[4]
const Double_t XHotZoneLayerSize_InclinedStrips_UHP[2]
const Double_t YHotZoneLayerSize_StraightStrips_LHP
const Double_t XHotZoneLayerSize_StraightStrips_UHP
const Double_t StripPitch_UHP
const Double_t YHotZoneLayerSize_StraightStrips_UHP
const UInt_t NPoints_DeadZone_Hole_UHP
Double_t YDeadZone_TrianLeft_LHP[3]
Double_t YDeadZone_TrapRight_UHP[4]
Double_t YDeadZone_TrianRight_LHP[3]
const Double_t StripPitch_LHP
const Double_t XMainZoneLayerSize_LHP
Double_t XDeadZone_TrapLeft_UHP[4]
StripNumberingDirection StripDirection[2]
Double_t XDeadZone_Rect_LHP[4]
Double_t YDeadZone_Rect_LHP[4]
const Double_t YHotZoneLayerSize_InclinedStrips_UHP
Double_t XDeadZone_TrapRight_UHP[4]
Double_t XDeadZone_TrapLeft_LHP[4]
Double_t XDeadZone_Rect_UHP[4]
const Double_t YMainZoneLayerSize_LHP
const Bool_t DriftDirectionInModules[NStations][NMaxModules]
Double_t XDeadZone_TrianLeft_UHP[3]
Double_t YDeadZone_Hole_UHP[NPoints_DeadZone_Hole_UHP]
Double_t YDeadZone_TrapRight_LHP[4]
const Double_t Gap_SecondTransfer_Thickness
Double_t XDeadZone_TrianRight_UHP[3]
Double_t XDeadZone_TrapRight_LHP[4]
Double_t YDeadZone_TrapLeft_LHP[4]
const UInt_t NPoints_DeadZone_Hole_LHP
Double_t XDeadZone_Hole_LHP[NPoints_DeadZone_Hole_LHP]
const Double_t YMainZoneLayerSize_SMALL
const Double_t XMainZoneLayerSize_SMALL
const Double_t StripPitch_SMALL
const Int_t NMaxLayersInModule
void GemConfigCalculate_Run8_8stations_aligned()
const Double_t StsDY[NStations][8]
const Double_t XAlignmentCorrections[NStations][NMaxModules]
const Double_t YAlignmentCorrections[NStations][NMaxModules]
const Double_t ZAlignmentCorrections[NStations][NMaxModules]
const Double_t StsDX[NStations][8]
constexpr Double_t DegToRad()
Double_t Sqrt(Double_t x)