103 163.2 * 0.25, -163.2 * 0.25},
105 {163.2 * 0.25, -163.2 * 0.25,
109 163.2 * 0.25, -163.2 * 0.25},
111 {163.2 * 0.25, -163.2 * 0.25,
115 163.2 * 0.25, -163.2 * 0.25},
117 {163.2 * 0.25, -163.2 * 0.25,
121 163.2 * 0.25, -163.2 * 0.25},
183 true ,
false ,
true ,
false };
187 false ,
false ,
false ,
false };
191 {
false,
false,
true,
true},
192 {
true,
true,
false,
false},
193 {
false,
false,
true,
true},
194 {
true,
true,
false,
false},
195 {
false,
false,
true,
true},
196 {
true,
true,
false,
false},
197 {
false,
false,
true,
true},
257 {
"lower",
"upper",
"lower",
"upper"},
258 {
"lower",
"upper",
"lower",
"upper"},
259 {
"lower",
"upper",
"lower",
"upper"},
260 {
"lower",
"upper",
"lower",
"upper"},
261 {
"lower",
"upper",
"lower",
"upper"},
262 {
"lower",
"upper",
"lower",
"upper"},
263 {
"lower",
"upper",
"lower",
"upper"},
270 {+15.0, +15.0, -15.0, -15.0},
271 {+15.0, +15.0, -15.0, -15.0},
272 {+15.0, +15.0, -15.0, -15.0},
273 {+15.0, +15.0, -15.0, -15.0},
274 {+15.0, +15.0, -15.0, -15.0},
275 {+15.0, +15.0, -15.0, -15.0},
276 {+15.0, +15.0, -15.0, -15.0},
409 TString ConfigName =
"GemRun9";
410 TString AuthorName =
"Baranov D.";
411 TString DateCreated =
"22.04.2025";
416 cout <<
"It's the end"
427 cout <<
"\nCreating XML configuration file...\n";
428 cout <<
" Configuration name: " << config_name <<
"\n";
429 cout <<
" Author: " << author <<
"\n";
430 cout <<
" Date created: " << date <<
"\n";
431 cout <<
" File path: " << FileName <<
"\n";
435 ofstream FileOut(FileName.
Data(), ios::out);
437 FileOut <<
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
447 \r\tA right-handed coordinates are used.\
448 \r\tIf you look at the GEMs from the target:\
449 \r\t\tx-axis is directed to the left,\
450 \r\t\ty-axis - to the top,\
451 \r\t\tz-axis - to the GEMs.\
454 FileOut <<
"<StationSet>\n";
461 FileOut <<
"<!-- Station " << istation <<
" -->\n";
463 FileOut <<
"\t<Station";
468 FileOut <<
" beamHole=\"" <<
HoleRadius <<
"\"";
476 FileOut <<
"\t\t<!-- module " << imodule <<
" -->\n";
478 FileOut <<
"\t\t<Module";
479 FileOut <<
" xShift=\"" <<
XModuleShifts[istation][imodule] <<
"\"";
480 FileOut <<
" yShift=\"" <<
YModuleShifts[istation][imodule] <<
"\"";
481 FileOut <<
" zShift=\"" <<
ZModuleShifts[istation][imodule] <<
"\"";
494 FileOut <<
"\t\t\t<Layer";
509 FileOut <<
" stripAngle=\"" << layer_angle <<
"\"";
514 if (imodule == 0 || imodule == 1)
516 if (imodule == 2 || imodule == 3)
533 if (imodule == 0 || imodule == 1) {
539 if (imodule == 2 || imodule == 3) {
606 FileOut <<
" xorig=\"" << xorig <<
"\"";
607 FileOut <<
" yorig=\"" << yorig <<
"\"";
608 FileOut <<
" xsize=\"" << xsize <<
"\"";
609 FileOut <<
" ysize=\"" << ysize <<
"\"";
612 FileOut <<
" stripDirection=\""
616 FileOut <<
" stripDirection=\""
629 rborder =
"RightBottom";
631 lborder =
"LeftBottom";
632 rborder =
"RightBottom";
636 lborder =
"LeftBottom";
637 rborder =
"RightTop";
640 rborder =
"RightTop";
649 rborder =
"RightBottom";
652 rborder =
"RightTop";
656 lborder =
"LeftBottom";
657 rborder =
"RightTop";
659 lborder =
"LeftBottom";
660 rborder =
"RightBottom";
668 lborder =
"LeftBottom";
669 rborder =
"RightTop";
672 rborder =
"RightTop";
677 rborder =
"RightBottom";
679 lborder =
"LeftBottom";
680 rborder =
"RightBottom";
688 lborder =
"LeftBottom";
689 rborder =
"RightTop";
691 lborder =
"LeftBottom";
692 rborder =
"RightBottom";
697 rborder =
"RightBottom";
700 rborder =
"RightTop";
706 FileOut <<
" lborder=\"" << lborder <<
"\"";
707 FileOut <<
" rborder=\"" << rborder <<
"\"";
718 FileOut <<
"\t\t\t\t<DeadZone>\n";
719 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
720 FileOut <<
"\t\t\t\t\t<DeadPoint";
725 FileOut <<
"\t\t\t\t</DeadZone>\n";
727 FileOut <<
"\t\t\t\t<DeadZone>\n";
728 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
729 FileOut <<
"\t\t\t\t\t<DeadPoint";
739 FileOut <<
"\t\t\t\t</DeadZone>\n";
742 FileOut <<
"\t\t\t\t<DeadZone>";
743 FileOut <<
" <!-- hole -->\n";
745 FileOut <<
"\t\t\t\t\t<DeadPoint";
750 FileOut <<
"\t\t\t\t</DeadZone>\n";
754 FileOut <<
"\t\t\t\t<DeadZone>";
755 FileOut <<
" <!-- triangle -->\n";
756 for (
Int_t ipoint = 0; ipoint < 3; ++ipoint) {
757 FileOut <<
"\t\t\t\t\t<DeadPoint";
767 FileOut <<
"\t\t\t\t</DeadZone>\n";
777 FileOut <<
"\t\t\t\t<DeadZone>\n";
778 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
779 FileOut <<
"\t\t\t\t\t<DeadPoint";
784 FileOut <<
"\t\t\t\t</DeadZone>\n";
786 FileOut <<
"\t\t\t\t<DeadZone>\n";
787 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
788 FileOut <<
"\t\t\t\t\t<DeadPoint";
798 FileOut <<
"\t\t\t\t</DeadZone>\n";
801 FileOut <<
"\t\t\t\t<DeadZone>";
802 FileOut <<
" <!-- hole -->\n";
804 FileOut <<
"\t\t\t\t\t<DeadPoint";
809 FileOut <<
"\t\t\t\t</DeadZone>\n";
813 FileOut <<
"\t\t\t\t<DeadZone>";
814 FileOut <<
" <!-- triangle -->\n";
815 for (
Int_t ipoint = 0; ipoint < 3; ++ipoint) {
816 FileOut <<
"\t\t\t\t\t<DeadPoint";
826 FileOut <<
"\t\t\t\t</DeadZone>\n";
836 FileOut <<
"\t\t\t\t<DeadZone>\n";
837 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
838 FileOut <<
"\t\t\t\t\t<DeadPoint";
843 FileOut <<
"\t\t\t\t</DeadZone>\n";
845 FileOut <<
"\t\t\t\t<DeadZone>\n";
846 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
847 FileOut <<
"\t\t\t\t\t<DeadPoint";
857 FileOut <<
"\t\t\t\t</DeadZone>\n";
860 FileOut <<
"\t\t\t\t<DeadZone>";
861 FileOut <<
" <!-- hole -->\n";
863 FileOut <<
"\t\t\t\t\t<DeadPoint";
868 FileOut <<
"\t\t\t\t</DeadZone>\n";
872 FileOut <<
"\t\t\t\t<DeadZone>";
873 FileOut <<
" <!-- triangle -->\n";
874 for (
Int_t ipoint = 0; ipoint < 3; ++ipoint) {
875 FileOut <<
"\t\t\t\t\t<DeadPoint";
885 FileOut <<
"\t\t\t\t</DeadZone>\n";
895 FileOut <<
"\t\t\t\t<DeadZone>\n";
896 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
897 FileOut <<
"\t\t\t\t\t<DeadPoint";
902 FileOut <<
"\t\t\t\t</DeadZone>\n";
904 FileOut <<
"\t\t\t\t<DeadZone>\n";
905 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
906 FileOut <<
"\t\t\t\t\t<DeadPoint";
916 FileOut <<
"\t\t\t\t</DeadZone>\n";
919 FileOut <<
"\t\t\t\t<DeadZone>";
920 FileOut <<
" <!-- hole -->\n";
922 FileOut <<
"\t\t\t\t\t<DeadPoint";
927 FileOut <<
"\t\t\t\t</DeadZone>\n";
931 FileOut <<
"\t\t\t\t<DeadZone>";
932 FileOut <<
" <!-- triangle -->\n";
933 for (
Int_t ipoint = 0; ipoint < 3; ++ipoint) {
934 FileOut <<
"\t\t\t\t\t<DeadPoint";
944 FileOut <<
"\t\t\t\t</DeadZone>\n";
951 FileOut <<
"\t\t\t</Layer>\n";
953 FileOut <<
"\t\t</Module>\n";
956 FileOut <<
"\t</Station>\n";
962 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
const Double_t StripPitch_SMALL
const Int_t NMaxLayersInModule
void GemConfigCalculate_Run9()
constexpr Double_t DegToRad()
Double_t Sqrt(Double_t x)