37 +1.476 , +2.614 , +3.342 , +4.674 ,
38 +6.303 , +8.140 , +9.871 };
40 -0.148 , -0.107 , -0.064 , -0.120 ,
41 -0.071 , +0.123 , -0.050 };
43 +61.229 , +92.2505 , +123.502 , +154.679 ,
44 +185.9235 , +217.194 , +248.344 };
47 +0.067 , +0.098 , +0.045 };
49 +0.136 , -0.197 , +0.122 };
51 +4.0985 , +3.903 , +4.1075 };
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}
132 true ,
false ,
true };
136 false ,
false ,
false };
140 {
false,
false,
true,
true},
141 {
true,
true,
false,
false},
142 {
false,
false,
true,
true},
143 {
true,
true,
false,
false},
144 {
false,
false,
true,
true},
145 {
true,
true,
false,
false},
146 {
false,
false,
true,
true}
320 TString ConfigName =
"GemRun8";
321 TString AuthorName =
"Baranov D.";
322 TString DateCreated =
"18.01.2021";
327 cout <<
"It's the end" <<
"\n";
337 cout <<
"\nCreating XML configuration file...\n";
338 cout <<
" Configuration name: " << config_name <<
"\n";
339 cout <<
" Author: " << author <<
"\n";
340 cout <<
" Date created: " << date <<
"\n";
341 cout <<
" 02.03.2021 (Updated): radius of hole in active zone (4.0 -> 6.0 cm)\n";
342 cout <<
" 09.03.2021 (Updated): the form of a 'hole' dead zone changed (square -> 12 sided polygon) \n";
343 cout <<
" 25.05.2021 (Updated): Z-distance from the target to the first sens. vol. has been increased \n";
344 cout <<
" 08.12.2022 (Updated): Positions were corrected in accordance with the measurement scheme \n";
345 cout <<
" 24.01.2023 (updated): half-plane shifts have been added according to the measurement scheme \n";
346 cout <<
" File path: " << FileName <<
"\n";
350 ofstream FileOut(FileName.
Data(), ios::out);
352 FileOut <<
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
362 \r\t02.03.2021 (Updated): radius of hole in active zone (4.0 -> 6.0 cm)\
363 \r\t09.03.2021 (Updated): the form of a 'hole' dead zone changed (square -> 12 sided polygon)\
364 \r\t25.05.2021 (Updated): Z-distance from the target to the first sens. vol. has been increased\
365 \r\t08.12.2022 (Updated): Positions were corrected in accordance with the measurement scheme\
366 \r\t24.01.2023 (updated): half-plane shifts have been added according to the measurement scheme\n\
367 \r\tA right-handed coordinates are used.\
368 \r\tIf you look at the GEMs from the target:\
369 \r\t\tx-axis is directed to the left,\
370 \r\t\ty-axis - to the top,\
371 \r\t\tz-axis - to the GEMs.\
374 FileOut <<
"<StationSet>\n";
381 FileOut <<
"<!-- Station " << istation <<
" -->\n";
383 FileOut <<
"\t<Station";
387 FileOut <<
" beamHole=\"" <<
HoleRadius <<
"\"";
395 FileOut <<
"\t\t<!-- module " << imodule <<
" -->\n";
397 FileOut <<
"\t\t<Module";
398 FileOut <<
" xShift=\"" <<
XModuleShifts[istation][imodule] <<
"\"";
399 FileOut <<
" yShift=\"" <<
YModuleShifts[istation][imodule] <<
"\"";
400 FileOut <<
" zShift=\"" <<
ZModuleShifts[istation][imodule] <<
"\"";
413 FileOut <<
"\t\t\t<Layer";
428 FileOut <<
" stripAngle=\"" << layer_angle <<
"\"";
429 if (imodule == 0 || imodule == 1)
431 if (imodule == 2 || imodule == 3)
441 if (imodule == 0 || imodule == 1) {
447 if (imodule == 2 || imodule == 3) {
513 FileOut <<
" xorig=\"" << xorig <<
"\"";
514 FileOut <<
" yorig=\"" << yorig <<
"\"";
515 FileOut <<
" xsize=\"" << xsize <<
"\"";
516 FileOut <<
" ysize=\"" << ysize <<
"\"";
519 FileOut <<
" stripDirection=\"" <<
"LeftToRight" <<
"\"";
521 FileOut <<
" stripDirection=\"" <<
"RightToLeft" <<
"\"";
532 rborder =
"RightBottom";
534 lborder =
"LeftBottom";
535 rborder =
"RightBottom";
539 lborder =
"LeftBottom";
540 rborder =
"RightTop";
543 rborder =
"RightTop";
552 rborder =
"RightBottom";
555 rborder =
"RightTop";
559 lborder =
"LeftBottom";
560 rborder =
"RightTop";
562 lborder =
"LeftBottom";
563 rborder =
"RightBottom";
571 lborder =
"LeftBottom";
572 rborder =
"RightTop";
575 rborder =
"RightTop";
580 rborder =
"RightBottom";
582 lborder =
"LeftBottom";
583 rborder =
"RightBottom";
591 lborder =
"LeftBottom";
592 rborder =
"RightTop";
594 lborder =
"LeftBottom";
595 rborder =
"RightBottom";
600 rborder =
"RightBottom";
603 rborder =
"RightTop";
609 FileOut <<
" lborder=\"" << lborder <<
"\"";
610 FileOut <<
" rborder=\"" << rborder <<
"\"";
620 FileOut <<
"\t\t\t\t<DeadZone>\n";
621 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
622 FileOut <<
"\t\t\t\t\t<DeadPoint";
627 FileOut <<
"\t\t\t\t</DeadZone>\n";
629 FileOut <<
"\t\t\t\t<DeadZone>\n";
630 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
631 FileOut <<
"\t\t\t\t\t<DeadPoint";
641 FileOut <<
"\t\t\t\t</DeadZone>\n";
644 FileOut <<
"\t\t\t\t<DeadZone>";
645 FileOut <<
" <!-- hole -->\n";
647 FileOut <<
"\t\t\t\t\t<DeadPoint";
652 FileOut <<
"\t\t\t\t</DeadZone>\n";
655 FileOut <<
"\t\t\t\t<DeadZone>";
656 FileOut <<
" <!-- triangle -->\n";
657 for (
Int_t ipoint = 0; ipoint < 3; ++ipoint) {
658 FileOut <<
"\t\t\t\t\t<DeadPoint";
668 FileOut <<
"\t\t\t\t</DeadZone>\n";
677 FileOut <<
"\t\t\t\t<DeadZone>\n";
678 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
679 FileOut <<
"\t\t\t\t\t<DeadPoint";
684 FileOut <<
"\t\t\t\t</DeadZone>\n";
686 FileOut <<
"\t\t\t\t<DeadZone>\n";
687 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
688 FileOut <<
"\t\t\t\t\t<DeadPoint";
698 FileOut <<
"\t\t\t\t</DeadZone>\n";
701 FileOut <<
"\t\t\t\t<DeadZone>";
702 FileOut <<
" <!-- hole -->\n";
704 FileOut <<
"\t\t\t\t\t<DeadPoint";
709 FileOut <<
"\t\t\t\t</DeadZone>\n";
712 FileOut <<
"\t\t\t\t<DeadZone>";
713 FileOut <<
" <!-- triangle -->\n";
714 for (
Int_t ipoint = 0; ipoint < 3; ++ipoint) {
715 FileOut <<
"\t\t\t\t\t<DeadPoint";
725 FileOut <<
"\t\t\t\t</DeadZone>\n";
734 FileOut <<
"\t\t\t\t<DeadZone>\n";
735 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
736 FileOut <<
"\t\t\t\t\t<DeadPoint";
741 FileOut <<
"\t\t\t\t</DeadZone>\n";
743 FileOut <<
"\t\t\t\t<DeadZone>\n";
744 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
745 FileOut <<
"\t\t\t\t\t<DeadPoint";
755 FileOut <<
"\t\t\t\t</DeadZone>\n";
758 FileOut <<
"\t\t\t\t<DeadZone>";
759 FileOut <<
" <!-- hole -->\n";
761 FileOut <<
"\t\t\t\t\t<DeadPoint";
766 FileOut <<
"\t\t\t\t</DeadZone>\n";
769 FileOut <<
"\t\t\t\t<DeadZone>";
770 FileOut <<
" <!-- triangle -->\n";
771 for (
Int_t ipoint = 0; ipoint < 3; ++ipoint) {
772 FileOut <<
"\t\t\t\t\t<DeadPoint";
782 FileOut <<
"\t\t\t\t</DeadZone>\n";
791 FileOut <<
"\t\t\t\t<DeadZone>\n";
792 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
793 FileOut <<
"\t\t\t\t\t<DeadPoint";
798 FileOut <<
"\t\t\t\t</DeadZone>\n";
800 FileOut <<
"\t\t\t\t<DeadZone>\n";
801 for (
Int_t ipoint = 0; ipoint < 4; ++ipoint) {
802 FileOut <<
"\t\t\t\t\t<DeadPoint";
812 FileOut <<
"\t\t\t\t</DeadZone>\n";
815 FileOut <<
"\t\t\t\t<DeadZone>";
816 FileOut <<
" <!-- hole -->\n";
818 FileOut <<
"\t\t\t\t\t<DeadPoint";
823 FileOut <<
"\t\t\t\t</DeadZone>\n";
826 FileOut <<
"\t\t\t\t<DeadZone>";
827 FileOut <<
" <!-- triangle -->\n";
828 for (
Int_t ipoint = 0; ipoint < 3; ++ipoint) {
829 FileOut <<
"\t\t\t\t\t<DeadPoint";
839 FileOut <<
"\t\t\t\t</DeadZone>\n";
845 FileOut <<
"\t\t\t</Layer>\n";
847 FileOut <<
"\t\t</Module>\n";
850 FileOut <<
"\t</Station>\n";
856 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
const Int_t ZoneTypeOfLayers[NLayersInModule]
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]
const Int_t NLayersInModule
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]
void GemConfigCalculate_Run8_7stations()
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]
const char * StripTypeOfLayes[NLayersInModule]
const Double_t StripStereoAngleInModules[NLayersInModule]
Double_t YDeadZone_TrapLeft_LHP[4]
const UInt_t NPoints_DeadZone_Hole_LHP
Double_t XDeadZone_Hole_LHP[NPoints_DeadZone_Hole_LHP]
constexpr Double_t DegToRad()
Double_t Sqrt(Double_t x)