57 int sensorCounter = 0;
59 auto grM =
new TMultiGraph;
60 std::vector<TGraph*> grVec;
61 auto grStatsAMean =
new TGraph;
62 auto grStatsAGradX =
new TGraph;
63 auto grStatsAGradY =
new TGraph;
64 auto grStatsCMean =
new TGraph;
65 auto grStatsCGradX =
new TGraph;
66 auto grStatsCGradY =
new TGraph;
68 std::vector<int> pointCountersSensors;
70 for (
int i = 0;
i < 18;
i++) {
71 pointCountersSensors.emplace_back(0);
72 grVec.emplace_back(
new TGraph);
73 grVec.back()->SetNameTitle(fmt::format(
"tempSensor{}",
i + 1).
data(), fmt::format(
"Temperature Sensor {};;T (K)",
i + 1).
data());
74 grVec.back()->GetXaxis()->SetTimeDisplay(1);
75 grVec.back()->GetXaxis()->SetTimeFormat(
"#splitline{%d.%m.%y}{%H:%M:%S}");
76 grVec.back()->SetMarkerStyle(20);
79 for (
const auto& t :
data) {
81 for (
const auto sensor : t->raw) {
82 for (
const auto&
value : sensor.data) {
83 grVec.at(sensorCounter)->SetPoint(pointCountersSensors.at(sensorCounter), double(
value.time) / 1000.,
value.value);
84 pointCountersSensors.at(sensorCounter)++;
88 for (
const auto&
value : t->statsA.data) {
89 grStatsAMean->SetPoint(nPointA,
double(
value.time) / 1000.,
value.value.mean);
90 grStatsAGradX->SetPoint(nPointA,
double(
value.time) / 1000.,
value.value.gradX);
91 grStatsAGradY->SetPoint(nPointA,
double(
value.time) / 1000.,
value.value.gradY);
94 for (
const auto&
value : t->statsC.data) {
95 grStatsCMean->SetPoint(nPointC,
double(
value.time) / 1000.,
value.value.mean);
96 grStatsCGradX->SetPoint(nPointC,
double(
value.time) / 1000.,
value.value.gradX);
97 grStatsCGradY->SetPoint(nPointC,
double(
value.time) / 1000.,
value.value.gradY);
102 for (
auto& gr : grVec) {
107 mCanVec.at(0)->Divide(2, 3);
109 grStatsAMean->SetTitle(
"Temperature mean (A-side);;T (K)");
110 grStatsAMean->SetMarkerStyle(20);
111 grStatsAMean->GetXaxis()->SetTimeDisplay(1);
112 grStatsAMean->GetXaxis()->SetTimeFormat(
"#splitline{%d.%m.%y}{%H:%M:%S}");
113 mCanVec.at(0)->cd(1);
114 grStatsAMean->Sort();
115 grStatsAMean->Draw(
"apl");
117 grStatsCMean->SetTitle(
"Temperature mean (C-side);;T (K)");
118 grStatsCMean->SetMarkerStyle(20);
119 grStatsCMean->GetXaxis()->SetTimeDisplay(1);
120 grStatsCMean->GetXaxis()->SetTimeFormat(
"#splitline{%d.%m.%y}{%H:%M:%S}");
121 mCanVec.at(0)->cd(2);
122 grStatsCMean->Sort();
123 grStatsCMean->Draw(
"apl");
125 grStatsAGradX->SetTitle(
"Temperature gradient X (A-side);;gradient (K/cm)");
126 grStatsAGradX->SetMarkerStyle(20);
127 grStatsAGradX->GetXaxis()->SetTimeDisplay(1);
128 grStatsAGradX->GetXaxis()->SetTimeFormat(
"#splitline{%d.%m.%y}{%H:%M:%S}");
129 mCanVec.at(0)->cd(3);
130 grStatsAGradX->Sort();
131 grStatsAGradX->Draw(
"apl");
133 grStatsCGradX->SetTitle(
"Temperature gradient X (C-side);;gradient (K/cm)");
134 grStatsCGradX->SetMarkerStyle(20);
135 grStatsCGradX->GetXaxis()->SetTimeDisplay(1);
136 grStatsCGradX->GetXaxis()->SetTimeFormat(
"#splitline{%d.%m.%y}{%H:%M:%S}");
137 mCanVec.at(0)->cd(4);
138 grStatsCGradX->Sort();
139 grStatsCGradX->Draw(
"apl");
141 grStatsAGradY->SetTitle(
"Temperature gradient Y (A-side);;gradient (K/cm)");
142 grStatsAGradY->SetMarkerStyle(20);
143 grStatsAGradY->GetXaxis()->SetTimeDisplay(1);
144 grStatsAGradY->GetXaxis()->SetTimeFormat(
"#splitline{%d.%m.%y}{%H:%M:%S}");
145 mCanVec.at(0)->cd(5);
146 grStatsAGradY->Sort();
147 grStatsAGradY->Draw(
"apl");
149 grStatsCGradY->SetTitle(
"Temperature gradient Y (C-side);;gradient (K/cm)");
150 grStatsCGradY->SetMarkerStyle(20);
151 grStatsCGradY->GetXaxis()->SetTimeDisplay(1);
152 grStatsCGradY->GetXaxis()->SetTimeFormat(
"#splitline{%d.%m.%y}{%H:%M:%S}");
153 mCanVec.at(0)->cd(6);
154 grStatsCGradY->Sort();
155 grStatsCGradY->Draw(
"apl");
157 TLegend* legend =
new TLegend(0.85, 0.6, 0.9, 0.9);
158 for (
int i = 0;
i < grVec.size();
i++) {
159 legend->AddEntry(grVec.at(
i), grVec.at(
i)->GetName(),
"p");
163 grM->GetXaxis()->SetTimeDisplay(1);
164 grM->GetXaxis()->SetTimeFormat(
"#splitline{%d.%m.%y}{%H:%M:%S}");
165 grM->SetTitle(
"Raw temperature values;;T (K)");
166 grM->Draw(
"A pmc plc");
167 legend->Draw(
"same");
168 mCanVec.at(1)->Update();
171 grM->SetBit(TObject::kCanDelete);
172 grStatsAMean->SetBit(TObject::kCanDelete);
173 grStatsAGradX->SetBit(TObject::kCanDelete);
174 grStatsAGradY->SetBit(TObject::kCanDelete);
175 grStatsCMean->SetBit(TObject::kCanDelete);
176 grStatsCGradX->SetBit(TObject::kCanDelete);
177 grStatsCGradY->SetBit(TObject::kCanDelete);