Return dE/dx mean or norm-reso value for the given time and ring.
14{
15
16 if (svar != "mean" && svar != "reso") {
17 B2WARNING("wrong variable input, choose mean or reso");
18 return;
19 }
20
21 std::string sring[2] = {"ler", "her"};
22 TCanvas* cdraw = new TCanvas("cdraw", "cdraw", 900, 500);
23 cdraw->cd();
24 cdraw->SetGridy(1);
25
26 for (int ir = 0; ir < 2; ir++) {
27
28 unsigned int iv = ir * 3 + 1 ;
29 if (svar == "reso") iv = ir * 3 + 2 ;
30
33 if (sizev == 0 || sizet == 0) {
34 B2ERROR("empty calibration vector");
35 break;
36 }
37
38 std::vector<unsigned int> tedges(sizet);
40
41 std::string hname = Form("hconst_%s_%s_%s", svar.data(), sring[ir].data(), sfx.data());
42 std::string title = Form("%s corrections;injection-time (#mu-sec);%s", svar.data(), svar.data());
43 TH1F hconst(hname.data(), title.data(), sizet - 1, 0, sizet - 1);
44
45 for (unsigned int ib = 0; ib < sizev; ib++) {
46
48 double ledge = tedges[ib];
49 double uedge = tedges[ib + 1];
50
51 std::string label;
52 if (ledge < 2e4)label = Form("%0.01f-%0.01fK", ledge / 1e3, uedge / 1e3);
53 else if (ledge < 1e5)label = Form("%0.00f-%0.00fK", ledge / 1e3, uedge / 1e3);
54 else label = Form("%0.01f-%0.01fM", ledge / 1e6, uedge / 1e6);
55
56 hconst.SetBinContent(ib + 1, corr);
57 hconst.SetBinError(ib + 1, corr * 0.001);
58 hconst.GetXaxis()->SetBinLabel(ib + 1, Form("%s", label.data()));
59 B2INFO("ring: " << sring[ir] << ", time (" << ledge << "-" << uedge << "), mean: " << corr << "");
60 }
61
62 hconst.SetStats(0);
63 hconst.SetMarkerColor(ir + 1);
64 hconst.SetMarkerSize(1.05);
65 hconst.SetMarkerStyle(24);
66 hconst.GetXaxis()->SetLabelOffset(-0.055);
67 hconst.GetYaxis()->SetRangeUser(0.60, 1.10);
68 if (svar == "reso")hconst.GetYaxis()->SetRangeUser(0.01, 0.20);
69
70 if (ir == 0)hconst.DrawCopy("");
71 else hconst.DrawCopy(" same");
72 }
73
74 cdraw->SaveAs(Form("cdcdedx_timeinject_const_%s_%s.pdf", svar.data(), sfx.data()));
75 delete cdraw;
76
77}