37 +1.476 , +2.614 , +3.342 , +4.674 ,
38 +6.303 , +8.140 , +9.871 , +50.494 };
40 -0.148 , -0.107 , -0.064 , -0.120 ,
41 -0.071 , +0.123 , -0.050 , -0.186 };
43 +154.679 , +185.9235 , +217.194 ,
44 +248.344 , +792.532 };
47 +0.067 , +0.098 , +0.045 , 0.0 };
49 +0.136 , -0.197 , +0.122 , 0.0 };
51 +4.0985 , +3.903 , +4.1075 , 0.0 };
56 163.2 * 0.25, -163.2 * 0.25},
58 {163.2 * 0.25, -163.2 * 0.25,
62 163.2 * 0.25, -163.2 * 0.25},
64 {163.2 * 0.25, -163.2 * 0.25,
68 163.2 * 0.25, -163.2 * 0.25},
70 {163.2 * 0.25, -163.2 * 0.25,
74 163.2 * 0.25, -163.2 * 0.25},
136 true ,
false ,
true ,
false };
140 false ,
false ,
false ,
false };
144 {
false,
false,
true,
true},
145 {
true,
true,
false,
false},
146 {
false,
false,
true,
true},
147 {
true,
true,
false,
false},
148 {
false,
false,
true,
true},
149 {
true,
true,
false,
false},
150 {
false,
false,
true,
true},
210 {
"lower",
"upper",
"lower",
"upper"},
211 {
"lower",
"upper",
"lower",
"upper"},
212 {
"lower",
"upper",
"lower",
"upper"},
213 {
"lower",
"upper",
"lower",
"upper"},
214 {
"lower",
"upper",
"lower",
"upper"},
215 {
"lower",
"upper",
"lower",
"upper"},
216 {
"lower",
"upper",
"lower",
"upper"},
223 {+15.0, +15.0, -15.0, -15.0},
224 {+15.0, +15.0, -15.0, -15.0},
225 {+15.0, +15.0, -15.0, -15.0},
226 {+15.0, +15.0, -15.0, -15.0},
227 {+15.0, +15.0, -15.0, -15.0},
228 {+15.0, +15.0, -15.0, -15.0},
229 {+15.0, +15.0, -15.0, -15.0},
362 TString ConfigName =
"GemRun8";
363 TString AuthorName =
"Baranov D.";
364 TString DateCreated =
"18.01.2021";
369 cout <<
"It's the end" <<
"\n";
379 cout <<
"\nCreating XML configuration file...\n";
380 cout <<
" Configuration name: " << config_name <<
"\n";
381 cout <<
" Author: " << author <<
"\n";
382 cout <<
" Date created: " << date <<
"\n";
383 cout <<
" 02.03.2021 (Updated): radius of hole in active zone (4.0 -> 6.0 cm)\n";
384 cout <<
" 09.03.2021 (Updated): the form of a 'hole' dead zone changed (square -> 12 sided polygon) \n";
385 cout <<
" 25.05.2021 (Updated): Z-distance from the target to the first sens. vol. has been increased \n";
386 cout <<
" 08.12.2022 (Updated): Positions were corrected in accordance with the measurement scheme \n";
387 cout <<
" 12.12.2022 (updated): small GEM added \n";
388 cout <<
" 24.01.2023 (updated): half-plane shifts have been added according to the measurement scheme \n";
389 cout <<
" File path: " << FileName <<
"\n";
393 ofstream FileOut(FileName.
Data(), ios::out);
395 FileOut <<
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
405 \r\t02.03.2021 (Updated): radius of hole in active zone (4.0 -> 6.0 cm)\
406 \r\t09.03.2021 (Updated): the form of a 'hole' dead zone changed (square -> 12 sided polygon)\
407 \r\t25.05.2021 (Updated): Z-distance from the target to the first sens. vol. has been increased\
408 \r\t08.12.2022 (Updated): Positions were corrected in accordance with the measurement scheme\
409 \r\t12.12.2022 (updated): small GEM added\
410 \r\t24.01.2023 (updated): half-plane shifts have been added according to the measurement scheme\n\
411 \r\tA right-handed coordinates are used.\
412 \r\tIf you look at the GEMs from the target:\
413 \r\t\tx-axis is directed to the left,\
414 \r\t\ty-axis - to the top,\
415 \r\t\tz-axis - to the GEMs.\
418 FileOut <<
"<StationSet>\n";
425 FileOut <<
"<!-- Station " << istation <<
" -->\n";
427 FileOut <<
"\t<Station";
432 FileOut <<
" beamHole=\"" <<
HoleRadius <<
"\"";
440 FileOut <<
"\t\t<!-- module " << imodule <<
" -->\n";
442 FileOut <<
"\t\t<Module";
443 FileOut <<
" xShift=\"" <<
XModuleShifts[istation][imodule] <<
"\"";
444 FileOut <<
" yShift=\"" <<
YModuleShifts[istation][imodule] <<
"\"";
445 FileOut <<
" zShift=\"" <<
ZModuleShifts[istation][imodule] <<
"\"";
458 FileOut <<
"\t\t\t<Layer";
473 FileOut <<
" stripAngle=\"" << layer_angle <<
"\"";
478 if (imodule == 0 || imodule == 1)
480 if (imodule == 2 || imodule == 3)
497 if (imodule == 0 || imodule == 1) {
503 if (imodule == 2 || imodule == 3) {
570 FileOut <<
" xorig=\"" << xorig <<
"\"";
571 FileOut <<
" yorig=\"" << yorig <<
"\"";
572 FileOut <<
" xsize=\"" << xsize <<
"\"";
573 FileOut <<
" ysize=\"" << ysize <<
"\"";
576 FileOut <<
" stripDirection=\"" <<
"LeftToRight" <<
"\"";
578 FileOut <<
" stripDirection=\"" <<
"RightToLeft" <<
"\"";
589 rborder =
"RightBottom";
591 lborder =
"LeftBottom";
592 rborder =
"RightBottom";
596 lborder =
"LeftBottom";
597 rborder =
"RightTop";
600 rborder =
"RightTop";
609 rborder =
"RightBottom";
612 rborder =
"RightTop";
616 lborder =
"LeftBottom";
617 rborder =
"RightTop";
619 lborder =
"LeftBottom";
620 rborder =
"RightBottom";
628 lborder =
"LeftBottom";
629 rborder =
"RightTop";
632 rborder =
"RightTop";
637 rborder =
"RightBottom";
639 lborder =
"LeftBottom";
640 rborder =
"RightBottom";
648 lborder =
"LeftBottom";
649 rborder =
"RightTop";
651 lborder =
"LeftBottom";
652 rborder =
"RightBottom";
657 rborder =
"RightBottom";
660 rborder =
"RightTop";
666 FileOut <<
" lborder=\"" << lborder <<
"\"";
667 FileOut <<
" rborder=\"" << rborder <<
"\"";
678 FileOut <<
"\t\t\t\t<DeadZone>\n";
679 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
680 FileOut <<
"\t\t\t\t\t<DeadPoint";
685 FileOut <<
"\t\t\t\t</DeadZone>\n";
687 FileOut <<
"\t\t\t\t<DeadZone>\n";
688 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
689 FileOut <<
"\t\t\t\t\t<DeadPoint";
699 FileOut <<
"\t\t\t\t</DeadZone>\n";
702 FileOut <<
"\t\t\t\t<DeadZone>";
703 FileOut <<
" <!-- hole -->\n";
705 FileOut <<
"\t\t\t\t\t<DeadPoint";
710 FileOut <<
"\t\t\t\t</DeadZone>\n";
714 FileOut <<
"\t\t\t\t<DeadZone>";
715 FileOut <<
" <!-- triangle -->\n";
716 for (
Int_t ipoint = 0; ipoint < 3; ++ipoint) {
717 FileOut <<
"\t\t\t\t\t<DeadPoint";
727 FileOut <<
"\t\t\t\t</DeadZone>\n";
737 FileOut <<
"\t\t\t\t<DeadZone>\n";
738 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
739 FileOut <<
"\t\t\t\t\t<DeadPoint";
744 FileOut <<
"\t\t\t\t</DeadZone>\n";
746 FileOut <<
"\t\t\t\t<DeadZone>\n";
747 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
748 FileOut <<
"\t\t\t\t\t<DeadPoint";
758 FileOut <<
"\t\t\t\t</DeadZone>\n";
761 FileOut <<
"\t\t\t\t<DeadZone>";
762 FileOut <<
" <!-- hole -->\n";
764 FileOut <<
"\t\t\t\t\t<DeadPoint";
769 FileOut <<
"\t\t\t\t</DeadZone>\n";
773 FileOut <<
"\t\t\t\t<DeadZone>";
774 FileOut <<
" <!-- triangle -->\n";
775 for (
Int_t ipoint = 0; ipoint < 3; ++ipoint) {
776 FileOut <<
"\t\t\t\t\t<DeadPoint";
786 FileOut <<
"\t\t\t\t</DeadZone>\n";
796 FileOut <<
"\t\t\t\t<DeadZone>\n";
797 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
798 FileOut <<
"\t\t\t\t\t<DeadPoint";
803 FileOut <<
"\t\t\t\t</DeadZone>\n";
805 FileOut <<
"\t\t\t\t<DeadZone>\n";
806 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
807 FileOut <<
"\t\t\t\t\t<DeadPoint";
817 FileOut <<
"\t\t\t\t</DeadZone>\n";
820 FileOut <<
"\t\t\t\t<DeadZone>";
821 FileOut <<
" <!-- hole -->\n";
823 FileOut <<
"\t\t\t\t\t<DeadPoint";
828 FileOut <<
"\t\t\t\t</DeadZone>\n";
832 FileOut <<
"\t\t\t\t<DeadZone>";
833 FileOut <<
" <!-- triangle -->\n";
834 for (
Int_t ipoint = 0; ipoint < 3; ++ipoint) {
835 FileOut <<
"\t\t\t\t\t<DeadPoint";
845 FileOut <<
"\t\t\t\t</DeadZone>\n";
855 FileOut <<
"\t\t\t\t<DeadZone>\n";
856 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
857 FileOut <<
"\t\t\t\t\t<DeadPoint";
862 FileOut <<
"\t\t\t\t</DeadZone>\n";
864 FileOut <<
"\t\t\t\t<DeadZone>\n";
865 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
866 FileOut <<
"\t\t\t\t\t<DeadPoint";
876 FileOut <<
"\t\t\t\t</DeadZone>\n";
879 FileOut <<
"\t\t\t\t<DeadZone>";
880 FileOut <<
" <!-- hole -->\n";
882 FileOut <<
"\t\t\t\t\t<DeadPoint";
887 FileOut <<
"\t\t\t\t</DeadZone>\n";
891 FileOut <<
"\t\t\t\t<DeadZone>";
892 FileOut <<
" <!-- triangle -->\n";
893 for (
Int_t ipoint = 0; ipoint < 3; ++ipoint) {
894 FileOut <<
"\t\t\t\t\t<DeadPoint";
904 FileOut <<
"\t\t\t\t</DeadZone>\n";
911 FileOut <<
"\t\t\t</Layer>\n";
913 FileOut <<
"\t\t</Module>\n";
916 FileOut <<
"\t</Station>\n";
922 FileOut <<
"</StationSet>\n";
#define R__ADD_INCLUDE_PATH(PATH)
const char * Data() const
const Double_t YStationPositions[NStations]
const Double_t ZStationPositions[NStations]
const Double_t XStationPositions[NStations]
const Double_t XHotZoneLayerSize_InclinedStrips_LHP[2]
Double_t YDeadZone_Hole_LHP[NPoints_DeadZone_Hole_LHP]
const Double_t yShift[NStations]
const Double_t Gap_Drift_Thickness
const Double_t XHotZoneLayerSize_StraightStrips_LHP
Double_t YDeadZone_TrapLeft_UHP[4]
const Double_t xShift[NStations]
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 zShift[NStations]
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
void GemConfigCalculate_Run8_8stations()
const Double_t StripPitch_SMALL
const Int_t NMaxLayersInModule
constexpr Double_t DegToRad()
Double_t Sqrt(Double_t x)