20 TString sum1AlignCorrFileListFileName = new1AlignCorrFileListFileName;
21 sum1AlignCorrFileListFileName = sum1AlignCorrFileListFileName.
ReplaceAll(
"new",
"sum");
22 TString sum2AlignCorrFileListFileName;
23 if (new2AlignCorrFileListFileName !=
"") {
24 sum2AlignCorrFileListFileName = new2AlignCorrFileListFileName;
25 sum2AlignCorrFileListFileName = sum2AlignCorrFileListFileName.
ReplaceAll(
"new",
"sum");
27 TString alignCorrPlotsFileName = new1AlignCorrFileListFileName;
28 alignCorrPlotsFileName = alignCorrPlotsFileName.
ReplaceAll(
"filelist_",
"");
29 alignCorrPlotsFileName = alignCorrPlotsFileName.
ReplaceAll(
"new_align",
"corr_plots");
30 alignCorrPlotsFileName = alignCorrPlotsFileName.
ReplaceAll(
"txt",
"root");
31 if (new2AlignCorrFileListFileName !=
"") {
32 alignCorrPlotsFileName = alignCorrPlotsFileName.
ReplaceAll(
"fromdefault",
"fromscratch_vs_fromdefault");
36 TString substr = new1AlignCorrFileListFileName(
"bmn_run[0-9]+");
37 substr = substr(
"[0-9]+");
38 int runPeriod = substr.
Atoi();
40 TString new1StartAlignFrom = new1AlignCorrFileListFileName(
"from[a-z]+");
41 new1StartAlignFrom =
"from " + new1StartAlignFrom.
ReplaceAll(
"from",
"");
43 if (new2AlignCorrFileListFileName !=
"") {
44 new2StartAlignFrom = new2AlignCorrFileListFileName(
"from[a-z]+");
45 new2StartAlignFrom =
"from " + new2StartAlignFrom.
ReplaceAll(
"from",
"");
48 gROOT->LoadMacro(
"$VMCWORKDIR/macro/run/bmnloadlibs.C");
51 map<const pair<int, int>,
int> mStatMod_Pad;
53 int mlpdParNr_What5[30][3] = {
54 {0, 0, 0}, {1, 0, 0}, {2, 0, 0}, {0, 1, 0}, {1, 1, 0}, {2, 1, 0}, {0, 2, 0}, {1, 2, 0}, {2, 2, 0}, {0, 3, 0},
55 {1, 3, 0}, {2, 3, 0}, {0, 4, 0}, {1, 4, 0}, {2, 4, 0}, {0, 4, 1}, {1, 4, 1}, {2, 4, 1}, {0, 5, 0}, {1, 5, 0},
56 {2, 5, 0}, {0, 5, 1}, {1, 5, 1}, {2, 5, 1}, {0, 6, 0}, {1, 6, 0}, {2, 6, 0}, {0, 6, 1}, {1, 6, 1}, {2, 6, 1}};
57 int mlpdParNr_What6[27][3] = {{0, 0, 0}, {1, 0, 0}, {2, 0, 0}, {0, 1, 0}, {1, 1, 0}, {2, 1, 0}, {0, 2, 0},
58 {1, 2, 0}, {2, 2, 0}, {0, 3, 0}, {1, 3, 0}, {2, 3, 0}, {0, 3, 1}, {1, 3, 1},
59 {2, 3, 1}, {0, 4, 0}, {1, 4, 0}, {2, 4, 0}, {0, 4, 1}, {1, 4, 1}, {2, 4, 1},
60 {0, 5, 0}, {1, 5, 0}, {2, 5, 0}, {0, 5, 1}, {1, 5, 1}, {2, 5, 1}};
68 mStatMod_Pad[make_pair(1, 0)] = 1;
69 mStatMod_Pad[make_pair(2, 0)] = 2;
70 mStatMod_Pad[make_pair(3, 0)] = 3;
71 mStatMod_Pad[make_pair(4, 0)] = 4;
72 mStatMod_Pad[make_pair(4, 1)] = 10;
73 mStatMod_Pad[make_pair(5, 0)] = 5;
74 mStatMod_Pad[make_pair(5, 1)] = 11;
75 mStatMod_Pad[make_pair(6, 0)] = 6;
76 mStatMod_Pad[make_pair(6, 1)] = 12;
77 }
else if (runPeriod == 6) {
81 mStatMod_Pad[make_pair(0, 0)] = 1;
82 mStatMod_Pad[make_pair(1, 0)] = 2;
83 mStatMod_Pad[make_pair(2, 0)] = 3;
84 mStatMod_Pad[make_pair(3, 0)] = 4;
85 mStatMod_Pad[make_pair(3, 1)] = 10;
86 mStatMod_Pad[make_pair(4, 0)] = 5;
87 mStatMod_Pad[make_pair(4, 1)] = 11;
88 mStatMod_Pad[make_pair(5, 0)] = 6;
89 mStatMod_Pad[make_pair(5, 1)] = 12;
91 ifstream ifstrm(new1AlignCorrFileListFileName);
94 while (getline(ifstrm, line)) {
101 for (
int i = 0;
i < nIts;
i++)
105 const Int_t nKinds = 2;
106 const Int_t nParams = 3;
116 itCorrs1 =
new Double_t****[nKinds];
117 for (
Int_t iKind = 0; iKind < nKinds; iKind++) {
118 itCorrs1[iKind] =
new Double_t***[nParams];
119 for (
Int_t iPar = 0; iPar < nParams; iPar++) {
121 itCorrs1[iKind][iPar] =
new Double_t**[nStats];
122 for (
Int_t iStat = 0; iStat < nStats; iStat++) {
124 itCorrs1[iKind][iPar][iStat] =
new Double_t*[nModuls];
125 for (
Int_t iMod = 0; iMod < nModuls; iMod++) {
126 itCorrs1[iKind][iPar][iStat][iMod] =
new Double_t[nIts];
127 for (
Int_t iIt = 0; iIt < nIts; iIt++) {
128 itCorrs1[iKind][iPar][iStat][iMod][iIt] = 0.;
135 itNewCorrErrs1 =
new Double_t***[nParams];
136 for (
Int_t iPar = 0; iPar < nParams; iPar++) {
138 itNewCorrErrs1[iPar] =
new Double_t**[nStats];
139 for (
Int_t iStat = 0; iStat < nStats; iStat++) {
141 itNewCorrErrs1[iPar][iStat] =
new Double_t*[nModuls];
142 for (
Int_t iMod = 0; iMod < nModuls; iMod++) {
143 itNewCorrErrs1[iPar][iStat][iMod] =
new Double_t[nIts];
144 for (
Int_t iIt = 0; iIt < nIts; iIt++) {
145 itNewCorrErrs1[iPar][iStat][iMod][iIt] = 0.;
150 if (new2AlignCorrFileListFileName !=
"") {
152 itCorrs2 =
new Double_t****[nKinds];
153 for (
Int_t iKind = 0; iKind < nKinds; iKind++) {
154 itCorrs2[iKind] =
new Double_t***[nParams];
155 for (
Int_t iPar = 0; iPar < nParams; iPar++) {
157 itCorrs2[iKind][iPar] =
new Double_t**[nStats];
158 for (
Int_t iStat = 0; iStat < nStats; iStat++) {
160 itCorrs2[iKind][iPar][iStat] =
new Double_t*[nModuls];
161 for (
Int_t iMod = 0; iMod < nModuls; iMod++) {
162 itCorrs2[iKind][iPar][iStat][iMod] =
new Double_t[nIts];
163 for (
Int_t iIt = 0; iIt < nIts; iIt++) {
164 itCorrs2[iKind][iPar][iStat][iMod][iIt] = 0.;
171 itNewCorrErrs2 =
new Double_t***[nParams];
172 for (
Int_t iPar = 0; iPar < nParams; iPar++) {
174 itNewCorrErrs2[iPar] =
new Double_t**[nStats];
175 for (
Int_t iStat = 0; iStat < nStats; iStat++) {
177 itNewCorrErrs2[iPar][iStat] =
new Double_t*[nModuls];
178 for (
Int_t iMod = 0; iMod < nModuls; iMod++) {
179 itNewCorrErrs2[iPar][iStat][iMod] =
new Double_t[nIts];
180 for (
Int_t iIt = 0; iIt < nIts; iIt++) {
181 itNewCorrErrs2[iPar][iStat][iMod][iIt] = 0.;
188 TString kinds[2] = {
"new",
"sum"};
189 if (runPeriod == 5) {
190 for (
Int_t iKind = 0; iKind < nKinds; iKind++) {
191 FillItCorrsItErrs(new1AlignCorrFileListFileName, itCorrs1, itNewCorrErrs1, iKind, mlpdParNr_What5);
192 if (new2AlignCorrFileListFileName !=
"") {
193 FillItCorrsItErrs(new2AlignCorrFileListFileName, itCorrs2, itNewCorrErrs2, iKind, mlpdParNr_What5);
196 }
else if (runPeriod == 6) {
197 for (
Int_t iKind = 0; iKind < nKinds; iKind++) {
198 FillItCorrsItErrs(new1AlignCorrFileListFileName, itCorrs1, itNewCorrErrs1, iKind, mlpdParNr_What6);
199 if (new2AlignCorrFileListFileName !=
"") {
200 FillItCorrsItErrs(new2AlignCorrFileListFileName, itCorrs2, itNewCorrErrs2, iKind, mlpdParNr_What6);
205 TCanvas* canvas =
new TCanvas(
"canvas",
"Convergency of alignment", nStations * 200, 1200);
206 canvas->
Divide(nStations, 12, 0., 0.);
219 gStyle->SetLineScalePS(0.5);
222 gPad->SetTopMargin(0.);
223 gPad->SetLeftMargin(0.);
224 gPad->SetRightMargin(0.);
225 gPad->SetBottomMargin(0.);
227 TString xyz[] = {
"X",
"Y",
"Z"};
232 for (
Int_t iKind = 0; iKind < nKinds; iKind++) {
233 for (
Int_t iPar = 0; iPar < nParams; iPar++) {
235 for (
Int_t iStat = iStatFirst; iStat < nStats; iStat++) {
237 for (
Int_t iMod = 0; iMod < nModuls; iMod++) {
239 for (
Int_t iIt = 0; iIt < nIts; iIt++) {
242 alCorrs1[iIt] = itCorrs1[iKind][iPar][iStat][iMod][iIt];
245 if (kinds[iKind] ==
"new") {
248 if (itNewCorrErrs1[iPar][iStat][iMod][iIt] > 0.)
249 alCorrErrs1[iIt] = itNewCorrErrs1[iPar][iStat][iMod][iIt];
251 alCorrErrs1[iIt] = 0.;
253 alCorrErrs1[iIt] = 0.;
257 if (new2AlignCorrFileListFileName !=
"") {
260 alCorrs2[iIt] = itCorrs2[iKind][iPar][iStat][iMod][iIt];
263 if (kinds[iKind] ==
"new") {
266 if (itNewCorrErrs2[iPar][iStat][iMod][iIt] > 0.)
267 alCorrErrs2[iIt] = itNewCorrErrs2[iPar][iStat][iMod][iIt];
269 alCorrErrs2[iIt] = 0.;
271 alCorrErrs2[iIt] = 0.;
282 padNr = mStatMod_Pad[make_pair(iStat, iMod)] + iPar * 12 + iKind * 36;
295 if (kinds[iKind] ==
"new") {
302 grer1->
SetTitle(kinds[iKind] +
" " + xyz[iPar] +
" corrections starting " + new1StartAlignFrom
318 if (kinds[iKind] ==
"new") {
325 gr1->
SetTitle(kinds[iKind] +
" " + xyz[iPar] +
" corrections starting " + new1StartAlignFrom
339 if (new2AlignCorrFileListFileName !=
"") {
341 if (kinds[iKind] ==
"new") {
348 grer2->
SetTitle(kinds[iKind] +
" " + xyz[iPar] +
" corrections starting " + new1StartAlignFrom
364 if (kinds[iKind] ==
"new") {
371 gr2->
SetTitle(kinds[iKind] +
" " + xyz[iPar] +
" corrections starting " + new1StartAlignFrom
388 mg->
Add(grer1,
"A3");
390 mg->
SetTitle(kinds[iKind] +
" " + xyz[iPar] +
" corrections starting " + new1StartAlignFrom
393 if (new2AlignCorrFileListFileName !=
"") {
394 mg->
Add(grer2,
"A3");
396 mg->
SetTitle(kinds[iKind] +
" " + xyz[iPar] +
" corrections starting " + new1StartAlignFrom
397 +
" and " + new2StartAlignFrom +
" stat " +
TString::Itoa(iStat, 10) +
" mod "
400 if (kinds[iKind] ==
"new") {
412 gPad->SetFrameBorderMode(0);
413 gPad->SetBorderMode(0);
414 gPad->SetBorderSize(0);
415 gPad->SetTopMargin(0.01);
416 gPad->SetLeftMargin(0.08);
417 gPad->SetRightMargin(0.005);
419 gPad->SetBottomMargin(0.1);