148 for (
Int_t i = 0; i < 4; i++) {
150 if (i == 0) s =
"Primel";
151 if (i == 1) s =
"Pi";
152 if (i == 2) s =
"PrimelPlus";
153 if (i == 3) s =
"PrimelMinus";
156 fHM->Create2<TH2D>(
"fhRingTrackDistVsMomTruematch" + s,
157 "fhRingTrackDistVsMomTruematch" + s +
";P [GeV/c];Ring-track distance [cm];Yield (a.u.)", 40, 0.,
159 fHM->Create2<TH2D>(
"fhRingTrackDistVsMomWrongmatch" + s,
160 "fhRingTrackDistVsMomWrongmatch" + s +
";P [GeV/c];Ring-track distance [cm];Yield (a.u.)", 20,
161 0., 10., 100, 0., 5.);
164 fHM->Create2<TH2D>(
"fhRingTrackDistVsNofHitsTruematch" + s,
165 "fhRingTrackDistVsNofHitsTruematch" + s
166 +
";Nof hits in found ring;Ring-track distance [cm];Yield (a.u.)",
167 41, -.5, 40.5, 100, 0., 5.);
169 fHM->Create3<TH3D>(
"fhRingTrackDistVsXYTruematch" + s,
170 "fhRingTrackDistVsXYTruematch" + s +
";X [cm];Y [cm];Ring-track distance [cm]", 240, xMin, xMax,
171 416, -200., 200., 400, 0., 5.);
172 fHM->Create2<TH2D>(
"fhRingTrackDistVsXTruematch" + s,
173 "fhRingTrackDistVsXTruematch" + s +
";X [cm];Ring-track distance [cm]", nBinsX1, xMin1, xMax1,
176 fHM->Create2<TH2D>(
"fhRingTrackDistVsYTruematch" + s,
177 "fhRingTrackDistVsYTruematch" + s +
";Abs(Y) [cm];Ring-track distance [cm]", 34, 110., yMax1,
180 Double_t range = 3., nbBinsX = 120., nbBinsY = 208;
181 fHM->Create3<TH3D>(
"fhRingTrackDistDiffXRingVsXYTruematchUp" + s,
182 "fhRingTrackDistDiffXRingVsXYTruematchUp" + s +
";X [cm];Y [cm];X Ring-track distance [cm]",
183 nbBinsX, xMin, xMax, nbBinsY, 110, 200, 200, -range, range);
184 fHM->Create3<TH3D>(
"fhRingTrackDistDiffYRingVsXYTruematchUp" + s,
185 "fhRingTrackDistDiffYRingVsXYTruematchUp" + s +
";X [cm];Y [cm];Y Ring-track distance [cm]",
186 nbBinsX, xMin, xMax, nbBinsY, 110, 200, 200, -range, range);
187 fHM->Create3<TH3D>(
"fhRingTrackDistDiffXTrackVsXYTruematchUp" + s,
188 "fhRingTrackDistDiffXTrackVsXYTruematchUp" + s +
";X [cm];Y [cm];X Track-ring distance [cm]",
189 nbBinsX, xMin, xMax, nbBinsY, 110, 200, 200, -range, range);
190 fHM->Create3<TH3D>(
"fhRingTrackDistDiffYTrackVsXYTruematchUp" + s,
191 "fhRingTrackDistDiffYTrackVsXYTruematchUp" + s +
";X [cm];Y [cm];Y Track-ring distance [cm]",
192 nbBinsX, xMin, xMax, nbBinsY, 110, 200, 200, -range, range);
194 fHM->Create3<TH3D>(
"fhRingTrackDistDiffXRingVsXYTruematchDown" + s,
195 "fhRingTrackDistDiffXRingVsXYTruematchDown" + s +
";X [cm];Y [cm];X Ring-track distance [cm]",
196 nbBinsX, xMin, xMax, nbBinsY, -200, -110, 200, -range, range);
197 fHM->Create3<TH3D>(
"fhRingTrackDistDiffYRingVsXYTruematchDown" + s,
198 "fhRingTrackDistDiffYRingVsXYTruematchDown" + s +
";X [cm];Y [cm];Y Ring-track distance [cm]",
199 nbBinsX, xMin, xMax, nbBinsY, -200, -110, 200, -range, range);
200 fHM->Create3<TH3D>(
"fhRingTrackDistDiffXTrackVsXYTruematchDown" + s,
201 "fhRingTrackDistDiffXTrackVsXYTruematchDown" + s +
";X [cm];Y [cm];X Track-ring distance [cm]",
202 nbBinsX, xMin, xMax, nbBinsY, -200, -110, 200, -range, range);
203 fHM->Create3<TH3D>(
"fhRingTrackDistDiffYTrackVsXYTruematchDown" + s,
204 "fhRingTrackDistDiffYTrackVsXYTruematchDown" + s +
";X [cm];Y [cm];Y Track-ring distance [cm]",
205 nbBinsX, xMin, xMax, nbBinsY, -200, -110, 200, -range, range);
207 fHM->Create3<TH3D>(
"fhRingTrackDistVsXYHalfUpTruematch" + s,
208 "fhRingTrackDistVsXYHalfUpTruematch" + s +
";X [cm];Y [cm];Ring-track distance [cm]", nbBinsX,
209 xMin, xMax, nbBinsY, 110., 200., 100, 0., range);
210 fHM->Create3<TH3D>(
"fhRingTrackDistVsXYHalfDownTruematch" + s,
211 "fhRingTrackDistVsXYHalfDownTruematch" + s +
";X [cm];Y [cm];Ring-track distance [cm]", nbBinsX,
212 xMin, xMax, nbBinsY, -200., -110., 100, 0., range);
216 Double_t range_2 = 3.;
218 fHM->Create2<TH2D>(
"fhRingTrackDistVsMomTruematchElId",
219 "fhRingTrackDistVsMomTruematchElId;P [GeV/c];Ring-track "
220 "distance [cm];Yield (a.u.)",
221 40, 0., 10., 120, 0., 3.);
222 fHM->Create3<TH3D>(
"fhRingTrackDistDiffXAfterEl",
223 "fhRingTrackDistDiffXAfterEl;X [cm];Y [cm];X Ring-track distance [cm]", 60, xMin, xMax, 104, 110,
224 200, 200, -range_2, range_2);
225 fHM->Create3<TH3D>(
"fhRingTrackDistDiffYAfterEl",
226 "fhRingTrackDistDiffYAfterEl;X [cm];Y [cm];Y Ring-track distance [cm]", 60, xMin, xMax, 104, 110,
227 200, 200, -range_2, range_2);
229 fHM->Create1<TH1D>(
"fhMismatchSource",
"fhMismatchSource;Global track category;% from MC", 13, -0.5, 12.5);
231 fHM->Create1<TH1D>(
"fhMismatchSourceMomMc",
"fhMismatchSourceMomMc;Momentum [GeV/c];Yield", 40, 0., 10.);
232 fHM->Create1<TH1D>(
"fhMismatchSourceMomSts",
"fhMismatchSourceMomSts;Momentum [GeV/c];Yield", 40, 0., 10.);
233 fHM->Create1<TH1D>(
"fhMismatchSourceMomStsAccRich",
"fhMismatchSourceMomStsAccRich;Momentum [GeV/c];Yield", 40, 0.,
235 fHM->Create1<TH1D>(
"fhMismatchSourceMomStsRich",
"fhMismatchSourceMomStsRich;Momentum [GeV/c];Yield", 40, 0., 10.);
236 fHM->Create1<TH1D>(
"fhMismatchSourceMomStsRichTrue",
"fhMismatchSourceMomStsRichTrue;Momentum [GeV/c];Yield", 40, 0.,
238 fHM->Create1<TH1D>(
"fhMismatchSourceMomStsNoRich",
"fhMismatchSourceMomStsNoRich;Momentum [GeV/c];Yield", 40, 0.,
240 fHM->Create1<TH1D>(
"fhMismatchSourceMomStsNoRichRF",
"fhMismatchSourceMomStsNoRichRF;Momentum [GeV/c];Yield", 40, 0.,
242 fHM->Create1<TH1D>(
"fhMismatchSourceMomStsNoRichRM",
"fhMismatchSourceMomStsNoRichRM;Momentum [GeV/c];Yield", 40, 0.,
244 fHM->Create1<TH1D>(
"fhMismatchSourceMomStsNoRichNoRF",
"fhMismatchSourceMomStsNoRichNoRF;Momentum [GeV/c];Yield", 40,
246 fHM->Create1<TH1D>(
"fhMismatchSourceMomStsNoRichNoProj",
"fhMismatchSourceMomStsNoRichNoProj;Momentum [GeV/c];Yield",
248 fHM->Create1<TH1D>(
"fhMismatchSourceMomStsRichWrong",
"fhMismatchSourceMomStsRichWrong;Momentum [GeV/c];Yield", 40,
250 fHM->Create1<TH1D>(
"fhMismatchSourceMomStsRichWrongRF",
"fhMismatchSourceMomStsRichWrongRF;Momentum [GeV/c];Yield",
252 fHM->Create1<TH1D>(
"fhMismatchSourceMomStsRichWrongRM",
"fhMismatchSourceMomStsRichWrongRM;Momentum [GeV/c];Yield",
447 for (
Int_t iTrack = 0; iTrack < nofGlobalTracks; iTrack++) {
452 if (stsId < 0 || richId < 0)
continue;
455 if (stsTrackMatch ==
nullptr)
continue;
459 if (richRingMatch ==
nullptr)
continue;
462 if (
nullptr == ring)
continue;
472 if (mctrack ==
nullptr)
continue;
473 double mom = mctrack->
GetP();
479 if (!isEl && !isPi)
continue;
483 for (
int i = 0; i < 2; i++) {
500 else if (charge < 0) {
512 if (stsMcTrackId == richMcTrackId) {
513 fHM->H2(
"fhRingTrackDistVsMomTruematch" + s)->Fill(mom, rtDistance);
514 fHM->H3(
"fhRingTrackDistVsXYTruematch" + s)->Fill(xc, yc, rtDistance);
515 fHM->H2(
"fhRingTrackDistVsXTruematch" + s)->Fill(xc, rtDistance);
516 fHM->H2(
"fhRingTrackDistVsYTruematch" + s)->Fill(abs(yc), rtDistance);
517 fHM->H2(
"fhRingTrackDistVsNofHitsTruematch" + s)->Fill(nofHits, rtDistance);
519 Double_t rtX = -1 * rtDistanceX;
520 Double_t rtY = -1 * rtDistanceY;
523 fHM->H3(
"fhRingTrackDistDiffXRingVsXYTruematchUp" + s)->Fill(xc, yc, rtDistanceX);
524 fHM->H3(
"fhRingTrackDistDiffYRingVsXYTruematchUp" + s)->Fill(xc, yc, rtDistanceY);
525 fHM->H3(
"fhRingTrackDistDiffXTrackVsXYTruematchUp" + s)->Fill(xc, yc, rtX);
526 fHM->H3(
"fhRingTrackDistDiffYTrackVsXYTruematchUp" + s)->Fill(xc, yc, rtY);
527 fHM->H3(
"fhRingTrackDistVsXYHalfUpTruematch" + s)->Fill(xc, yc, rtDistance);
531 fHM->H3(
"fhRingTrackDistDiffXRingVsXYTruematchDown" + s)->Fill(xc, yc, rtDistanceX);
532 fHM->H3(
"fhRingTrackDistDiffYRingVsXYTruematchDown" + s)->Fill(xc, yc, rtDistanceY);
533 fHM->H3(
"fhRingTrackDistDiffXTrackVsXYTruematchDown" + s)->Fill(xc, yc, rtX);
534 fHM->H3(
"fhRingTrackDistDiffYTrackVsXYTruematchDown" + s)->Fill(xc, yc, rtY);
535 fHM->H3(
"fhRingTrackDistVsXYHalfDownTruematch" + s)->Fill(xc, yc, rtDistance);
540 if (i == 0 && isEl) {
542 fHM->H2(
"fhRingTrackDistVsMomTruematchElId")->Fill(mom, rtDistance);
543 fHM->H3(
"fhRingTrackDistDiffXAfterEl")->Fill(xc, yc, rtDistanceX);
544 fHM->H3(
"fhRingTrackDistDiffYAfterEl")->Fill(xc, yc, rtDistanceY);
549 fHM->H2(
"fhRingTrackDistVsMomWrongmatch" + s)->Fill(mom, rtDistance);
564 TCanvas* c =
fHM->CreateCanvas(
"fh_ring_track_distance_truematch_comparison_primel",
565 "fh_ring_track_distance_truematch_comparison_primel", 800, 800);
566 TH1D* py_minus = (TH1D*) (
fHM->H2(
"fhRingTrackDistVsMomTruematchPrimelMinus")
567 ->ProjectionY(
"fhRingTrackDistVsMomTruematchPrimelMinus_py")
569 py_minus->Scale(1. / py_minus->Integral());
570 TH1D* py_plus = (TH1D*) (
fHM->H2(
"fhRingTrackDistVsMomTruematchPrimelPlus")
571 ->ProjectionY(
"fhRingTrackDistVsMomTruematchPrimelPlus_py")
573 py_plus->Scale(1. / py_plus->Integral());
574 DrawH1({py_minus, py_plus},
581 TCanvas* c =
fHM->CreateCanvas(
"fh_ring_track_distance_truematch_comparison_elpi",
582 "fh_ring_track_distance_truematch_comparison_elpi", 800, 800);
583 TH1D* py_el = (TH1D*) (
fHM->H2(
"fhRingTrackDistVsMomTruematchPrimel")
584 ->ProjectionY(
"fhRingTrackDistVsMomTruematchPrimel_py")
586 py_el->Scale(1. / py_el->Integral());
588 (TH1D*) (
fHM->H2(
"fhRingTrackDistVsMomTruematchPi")->ProjectionY(
"fhRingTrackDistVsMomTruematchPi_py")->Clone());
589 py_pi->Scale(1. / py_pi->Integral());
597 gStyle->SetPaintTextFormat(
"4.1f");
598 TCanvas* c =
fHM->CreateCanvas(
"fh_mismatch_source",
"fh_mismatch_source", 1000, 800);
599 Double_t nofMcEl =
fHM->H1(
"fhMismatchSource")->GetBinContent(1);
600 cout <<
"nofMcEl = " << nofMcEl << endl;
601 fHM->H1(
"fhMismatchSource")->Scale(100. / nofMcEl);
603 fHM->H1(
"fhMismatchSource")->SetMarkerSize(1.9);
605 vector<string> labels = {
"MC",
617 "STS-RICH wrong RM"};
618 for (
int i = 0; i < labels.size(); i++) {
619 fHM->H1(
"fhMismatchSource")->GetXaxis()->SetBinLabel(i + 1, labels[i].c_str());
621 fHM->H1(
"fhMismatchSource")->GetXaxis()->SetLabelSize(0.03);
625 TCanvas* c =
fHM->CreateCanvas(
"fh_mismatch_source_mom",
"fh_mismatch_source_mom", 1000, 800);
626 vector<string> labels = {
"MC",
638 "STS-RICH wrong RM"};
639 vector<TH1*> hists = {
fHM->H1(
"fhMismatchSourceMomMc"),
640 fHM->H1(
"fhMismatchSourceMomSts"),
641 fHM->H1(
"fhMismatchSourceMomStsAccRich"),
642 fHM->H1(
"fhMismatchSourceMomStsRich"),
643 fHM->H1(
"fhMismatchSourceMomStsRichTrue"),
644 fHM->H1(
"fhMismatchSourceMomStsNoRich"),
645 fHM->H1(
"fhMismatchSourceMomStsNoRichRF"),
646 fHM->H1(
"fhMismatchSourceMomStsNoRichRM"),
647 fHM->H1(
"fhMismatchSourceMomStsNoRichNoRF"),
648 fHM->H1(
"fhMismatchSourceMomStsNoRichNoProj"),
649 fHM->H1(
"fhMismatchSourceMomStsRichWrong"),
650 fHM->H1(
"fhMismatchSourceMomStsRichWrongRF"),
651 fHM->H1(
"fhMismatchSourceMomStsRichWrongRM")};
654 fHM->H1(
"fhMismatchSourceMomMc")->SetMinimum(0.9);
670 fHM->CreateCanvas(
"fh_ring_track_distance_truematch_elid",
"fh_ring_track_distance_truematch_elid", 1400, 1400);
674 fHM->H2(
"fhRingTrackDistVsMomTruematchPrimel")->GetYaxis()->SetRangeUser(0., 2.);
677 fHM->H2(
"fhRingTrackDistVsMomTruematchElId")->GetYaxis()->SetRangeUser(0., 2.);
679 TH1D* py = (TH1D*) (
fHM->H2(
"fhRingTrackDistVsMomTruematchPrimel")
680 ->ProjectionY(
string(
"fhRingTrackDistVsMomTruematchPrimel_py2").c_str())
682 TH1D* pyElId = (TH1D*) (
fHM->H2(
"fhRingTrackDistVsMomTruematchElId")
683 ->ProjectionY(
string(
"fhRingTrackDistVsMomTruematchElId_py").c_str())
685 TH1D* pyElId2 = (TH1D*) (
fHM->H2(
"fhRingTrackDistVsMomTruematchElId")->ProjectionY(
"test_py", 0, 40));
692 0.45, 0.2, 0.9, 0.35);
695 Double_t range = 2.5;
697 TCanvas* c =
fHM->CreateCanvas(
"fh_track_ring_distance_diff_x_y_track_vs_xy_truematch_after_el",
698 "fh_track_ring_distance_diff_x_y_track_vs_xy_truematch_after_el", 1800, 600);
701 DrawH3Profile(
fHM->H3(
"fhRingTrackDistDiffXAfterEl"),
true,
false, -range, range);
703 DrawH3Profile(
fHM->H3(
"fhRingTrackDistDiffYAfterEl"),
true,
false, -range, range);