34 #include <TApplication.h>
36 #include <TGFileDialog.h>
37 #include <TObjArray.h>
38 #include <TObjString.h>
60 fNoOfRawDataReadings = 0;
61 fCtrlCh = TString(
"undefined");
63 fRawDataCh[i] = TString(
"undefined");
65 fStartDateTime.Set(
"1995-01-01 00:00:00");
75 for (UInt_t i=0; i<fDateTime.size(); i++)
78 fTempMeasured.clear();
80 fHeaterOutput.clear();
81 fSetPointTemp.clear();
84 for (UInt_t i=0; i<fRawData.size(); i++)
100 str = fRawDataCh[idx];
127 if (fLakeShore ==
"340")
133 if (fLakeShore ==
"340")
139 if (fLakeShore ==
"340")
145 if (fLakeShore ==
"340")
151 if (fLakeShore ==
"340")
157 if (fLakeShore ==
"340")
173 if (fLakeShore ==
"336")
175 for (UInt_t i=0; i<noOfChs; i++) {
176 if (fRawDataCh[i].BeginsWith(chStr)) {
195 if (fLakeShore ==
"340") {
197 type = fRawDataSensorType[idx];
200 type = fRawDataSensorType[idx];
216 if (idx < fDateTime.size())
217 time = fDateTime[idx]->Get();
232 if (idx < fTempMeasured.size())
233 dval = fTempMeasured[idx];
248 if (idx < fPressure.size())
249 dval = fPressure[idx];
264 if (idx < fHeaterOutput.size())
265 dval = fHeaterOutput[idx];
280 if (idx < fSetPointTemp.size())
281 dval = fSetPointTemp[idx];
296 if (idx < fHeaterRange.size())
297 dval = fHeaterRange[idx];
312 if (idx < fBH1Flow.size())
313 dval = fBH1Flow[idx];
329 if (ch < fRawData.size())
330 if (idx < fRawData[ch].size())
331 dval = fRawData[ch][idx];
346 if (fLakeShore ==
"340") {
347 if (str.BeginsWith(
"A") || str.BeginsWith(
"B") ||
348 str.BeginsWith(
"C1") || str.BeginsWith(
"C2") || str.BeginsWith(
"C3") || str.BeginsWith(
"C4") ||
349 str.BeginsWith(
"D1") || str.BeginsWith(
"D2") || str.BeginsWith(
"D3") || str.BeginsWith(
"D4")) {
352 cerr << endl <<
">> **ERROR** LS340: Found Loop1 ctrl ch = '" << str.Data() <<
"', which is not allowed.";
353 cerr << endl <<
">> Will ignore it!" << endl;
356 if (str.BeginsWith(
"A") || str.BeginsWith(
"B") ||
357 str.BeginsWith(
"C") || str.BeginsWith(
"D1") || str.BeginsWith(
"D2") || str.BeginsWith(
"D3") ||
358 str.BeginsWith(
"D4") || str.BeginsWith(
"D5")) {
361 cerr << endl <<
">> **ERROR** LS336: Found Loop1 ctrl ch = '" << str.Data() <<
"', which is not allowed.";
362 cerr << endl <<
">> Will ignore it!" << endl;
378 if (fLakeShore ==
"340") {
380 if (str.BeginsWith(
"A") || str.BeginsWith(
"B") ||
381 str.BeginsWith(
"C1") || str.BeginsWith(
"C2") || str.BeginsWith(
"C3") || str.BeginsWith(
"C4") ||
382 str.BeginsWith(
"D1") || str.BeginsWith(
"D2") || str.BeginsWith(
"D3") || str.BeginsWith(
"D4")) {
383 fRawDataCh[idx] = str;
385 cerr << endl <<
">> **ERROR** LS340: Found Raw Data Ch = '" << str.Data() <<
"', which is not allowed.";
386 cerr << endl <<
">> Will ignore it!" << endl;
389 cerr << endl <<
">> **ERROR** LS340: SetRawDataCh idx=" << idx <<
" out of range [0,9]";
390 cerr << endl <<
">> Will ignore it!" << endl;
394 if (str.BeginsWith(
"A") || str.BeginsWith(
"B") ||
395 str.BeginsWith(
"C") || str.BeginsWith(
"D1") || str.BeginsWith(
"D2") ||
396 str.BeginsWith(
"D3") || str.BeginsWith(
"D4") || str.BeginsWith(
"D5")) {
397 fRawDataCh[idx] = str;
399 cerr << endl <<
">> **ERROR** LS336: Found Raw Data Ch = '" << str.Data() <<
"', which is not allowed.";
400 cerr << endl <<
">> Will ignore it!" << endl;
403 cerr << endl <<
">> **ERROR** LS336: SetRawDataCh idx=" << idx <<
" out of range [0,7]";
404 cerr << endl <<
">> Will ignore it!" << endl;
419 fRawDataSensorType[idx] = type;
421 cerr << endl <<
">> **ERROR** SetRawDataSensorType idx=" << idx <<
" out of range [0,9]";
422 cerr << endl <<
">> Will ignore it!" << endl;
434 fDateTime.push_back(dt);
445 fTempMeasured.push_back(temp);
456 fPressure.push_back(pressure);
467 fHeaterOutput.push_back(heaterOutput);
478 fSetPointTemp.push_back(setPoint);
489 fHeaterRange.push_back(heaterRange);
500 fBH1Flow.push_back(bh1Flow);
512 if (ch >= fRawData.size())
513 fRawData.resize(ch+1);
515 fRawData[ch].push_back(data);
535 fCanvas =
new TCanvas(
"fCanvas",
"Draw Raw Data", w, h);
538 fGraph =
new TGraph(rawData.GetSize());
541 Double_t x=0.0, y=0.0;
543 TString xAxisTitle(
"");
544 TString yAxisTitle(
"");
546 for (UInt_t i=0; i<rawData.GetSize(); i++) {
547 if (rawData.GetStartTime() > rawData.GetTime(i))
552 x = rawData.GetTime(i);
555 xAxisTitle =
"T (K)";
556 x = rawData.GetTempMeasured(i);
559 xAxisTitle =
"p (bar)";
560 x = rawData.GetPressure(i);
563 xAxisTitle =
"Heater Output (%)";
564 x = rawData.GetHeaterOutput(i);
567 xAxisTitle =
"SP (K)";
568 x = rawData.GetSetPointTemp(i);
571 xAxisTitle =
"Heater Range";
572 x = rawData.GetHeaterRange(i);
575 xAxisTitle =
"BH1 Flow";
576 x = rawData.GetBH1Flow(i);
577 }
else if (xIdx ==
eChA) {
579 xAxisTitle =
"Raw Data Ch A ";
580 xAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(0)));
582 x = rawData.GetRawData(rawData.MapChNo(0), i);
583 }
else if (xIdx ==
eChB) {
585 xAxisTitle =
"Raw Data Ch B ";
586 xAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(1)));
588 x = rawData.GetRawData(rawData.MapChNo(0), i);
589 }
else if (xIdx ==
eChC) {
591 xAxisTitle =
"Raw Data Ch C ";
592 xAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(2)));
594 x = rawData.GetRawData(rawData.MapChNo(2), i);
595 }
else if (xIdx ==
eChC1) {
597 xAxisTitle =
"Raw Data Ch C1 ";
598 xAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(2)));
600 x = rawData.GetRawData(rawData.MapChNo(2), i);
601 }
else if (xIdx ==
eChC2) {
603 xAxisTitle =
"Raw Data Ch C2 ";
604 xAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(3)));
606 x = rawData.GetRawData(rawData.MapChNo(3), i);
607 }
else if (xIdx ==
eChC3) {
609 xAxisTitle =
"Raw Data Ch C3 ";
610 xAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(4)));
612 x = rawData.GetRawData(rawData.MapChNo(4), i);
613 }
else if (xIdx ==
eChC4) {
615 xAxisTitle =
"Raw Data Ch C4 ";
616 xAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(5)));
618 x = rawData.GetRawData(rawData.MapChNo(5), i);
619 }
else if (xIdx ==
eChD1) {
620 if (fLakeShore ==
"340") {
622 xAxisTitle =
"Raw Data Ch D1 ";
623 xAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(6)));
625 x = rawData.GetRawData(rawData.MapChNo(6), i);
628 xAxisTitle =
"Raw Data Ch D1 ";
629 xAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(3)));
631 x = rawData.GetRawData(rawData.MapChNo(3), i);
633 }
else if (xIdx ==
eChD2) {
634 if (fLakeShore ==
"340") {
636 xAxisTitle =
"Raw Data Ch D2 ";
637 xAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(7)));
639 x = rawData.GetRawData(rawData.MapChNo(7), i);
642 xAxisTitle =
"Raw Data Ch D2 ";
643 xAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(4)));
645 x = rawData.GetRawData(rawData.MapChNo(4), i);
647 }
else if (xIdx ==
eChD3) {
648 if (fLakeShore ==
"340") {
650 xAxisTitle =
"Raw Data Ch D3 ";
651 xAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(8)));
653 x = rawData.GetRawData(rawData.MapChNo(8), i);
656 xAxisTitle =
"Raw Data Ch D3 ";
657 xAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(5)));
659 x = rawData.GetRawData(rawData.MapChNo(5), i);
661 }
else if (xIdx ==
eChD4) {
662 if (fLakeShore ==
"340") {
664 xAxisTitle =
"Raw Data Ch D4 ";
665 xAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(9)));
667 x = rawData.GetRawData(rawData.MapChNo(9), i);
670 xAxisTitle =
"Raw Data Ch D4 ";
671 xAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(6)));
673 x = rawData.GetRawData(rawData.MapChNo(6), i);
675 }
else if (xIdx ==
eChD5) {
677 xAxisTitle =
"Raw Data Ch D5 ";
678 xAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(7)));
680 x = rawData.GetRawData(rawData.MapChNo(7), i);
688 y = rawData.GetTime(i);
691 yAxisTitle =
"T (K)";
692 y = rawData.GetTempMeasured(i);
695 yAxisTitle =
"p (bar)";
696 y = rawData.GetPressure(i);
699 yAxisTitle =
"Heater Output (%)";
700 y = rawData.GetHeaterOutput(i);
703 yAxisTitle =
"SP (K)";
704 y = rawData.GetSetPointTemp(i);
707 yAxisTitle =
"Heater Range";
708 y = rawData.GetHeaterRange(i);
711 yAxisTitle =
"BH1 Flow";
712 y = rawData.GetBH1Flow(i);
713 }
else if (yIdx ==
eChA) {
715 yAxisTitle =
"Raw Data Ch A ";
716 yAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(0)));
718 y = rawData.GetRawData(rawData.MapChNo(0), i);
719 }
else if (yIdx ==
eChB) {
721 yAxisTitle =
"Raw Data Ch B ";
722 yAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(1)));
724 y = rawData.GetRawData(rawData.MapChNo(1), i);
725 }
else if (yIdx ==
eChC) {
727 yAxisTitle =
"Raw Data Ch C ";
728 yAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(2)));
730 y = rawData.GetRawData(rawData.MapChNo(2), i);
731 }
else if (yIdx ==
eChC1) {
733 yAxisTitle =
"Raw Data Ch C1 ";
734 yAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(2)));
736 y = rawData.GetRawData(rawData.MapChNo(2), i);
737 }
else if (yIdx ==
eChC2) {
739 yAxisTitle =
"Raw Data Ch C2 ";
740 yAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(3)));
742 y = rawData.GetRawData(rawData.MapChNo(3), i);
743 }
else if (yIdx ==
eChC3) {
745 yAxisTitle =
"Raw Data Ch C3 ";
746 yAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(4)));
748 y = rawData.GetRawData(rawData.MapChNo(4), i);
749 }
else if (yIdx ==
eChC4) {
751 yAxisTitle =
"Raw Data Ch C4 ";
752 yAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(5)));
754 y = rawData.GetRawData(rawData.MapChNo(5), i);
755 }
else if (yIdx ==
eChD1) {
757 if (fLakeShore ==
"336")
760 yAxisTitle =
"Raw Data Ch D1 ";
761 yAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(idx)));
763 y = rawData.GetRawData(rawData.MapChNo(idx), i);
764 }
else if (yIdx ==
eChD2) {
766 if (fLakeShore ==
"336")
769 yAxisTitle =
"Raw Data Ch D2 ";
770 yAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(idx)));
772 y = rawData.GetRawData(rawData.MapChNo(idx), i);
773 }
else if (yIdx ==
eChD3) {
775 if (fLakeShore ==
"336")
778 yAxisTitle =
"Raw Data Ch D3 ";
779 yAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(idx)));
781 y = rawData.GetRawData(rawData.MapChNo(idx), i);
782 }
else if (yIdx ==
eChD4) {
784 if (fLakeShore ==
"336")
787 yAxisTitle =
"Raw Data Ch D4 ";
788 yAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(idx)));
790 y = rawData.GetRawData(rawData.MapChNo(idx), i);
791 }
else if (yIdx ==
eChD5) {
793 yAxisTitle =
"Raw Data Ch D5 ";
794 yAxisTitle += GetUnits(rawData.GetRawDataSensorType(rawData.MapChNo(7)));
796 y = rawData.GetRawData(rawData.MapChNo(7), i);
801 fGraph->SetPoint(i, x, y);
805 fGraph->GetXaxis()->SetTimeDisplay(1);
806 fGraph->GetXaxis()->SetTimeFormat(
"%H:%M");
810 fGraph->GetYaxis()->SetTimeDisplay(1);
811 fGraph->GetYaxis()->SetTimeFormat(
"%H:%M");
814 fGraph->SetMarkerSize(1);
815 fGraph->SetMarkerColor(TColor::GetColor(0,0,255));
816 fGraph->SetMarkerStyle(21);
817 fGraph->SetLineColor(TColor::GetColor(0,0,255));
820 fGraph->GetXaxis()->SetTitle(xAxisTitle);
823 fGraph->GetYaxis()->SetTitle(yAxisTitle);
826 TString title(
"Raw Calibration Data");
827 fGraph->SetTitle(title);
866 if ((sensorType == 1) || (sensorType == 2))
891 vector<Double_t> &temp, vector<Double_t> &errTemp,
892 vector<Double_t> &data, vector<Double_t> &errData,
896 fCanvas =
new TCanvas(
"fCanvas",
"Draw Raw Data with Errors", w, h);
899 fGraph =
new TGraphErrors(temp.size());
902 TString xAxisTitle(
"T (K)");
903 TString yAxisTitle = yLabel;
905 for (UInt_t i=0; i<temp.size(); i++) {
906 fGraph->SetPoint(i, temp[i], data[i]);
907 fGraph->SetPointError(i, errTemp[i], errData[i]);
910 fGraph->SetMarkerSize(1);
911 fGraph->SetMarkerColor(TColor::GetColor(0,0,255));
912 fGraph->SetMarkerStyle(21);
913 fGraph->SetLineColor(TColor::GetColor(0,0,255));
916 fGraph->GetXaxis()->SetTitle(xAxisTitle);
919 fGraph->GetYaxis()->SetTitle(yAxisTitle);
922 TString title(
"Raw Calibration Data with Errors");
923 fGraph->SetTitle(title);
985 fSensorModel = TString(
"");
986 fSerialNo = TString(
"");
988 fSetPointLimit = 0.0;
1004 if (idx >= fMeasured.size()) {
1005 cerr << endl <<
">> **ERROR** PCalibData::GetMeasured(), idx=" << idx <<
", only " << fMeasured.size() <<
" elements present!!";
1009 return fMeasured[idx];
1020 if (idx >= fTemp.size()) {
1021 cerr << endl <<
">> **ERROR** PCalibData::GetTemp(), idx=" << idx <<
", only " << fTemp.size() <<
" elements present!!";
1039 Double_t logSensorVal=1.0;
1040 if ((fDataFormat == 4) || (fDataFormat == 5)) {
1042 logSensorVal = log10(sensorVal);
1045 for (UInt_t i=0; i<fMeasured.size(); i++) {
1046 if ((fDataFormat == 4) || (fDataFormat == 5)) {
1047 if (logSensorVal > fMeasured[i]) {
1052 if (sensorVal > fMeasured[i]) {
1060 Double_t temp = 0.0;
1063 if (fDataFormat == 4) {
1064 temp = fTemp[idx-1] + (fTemp[idx]-fTemp[idx-1]) * (logSensorVal-fMeasured[idx-1])/(fMeasured[idx]-fMeasured[idx-1]);
1065 }
else if (fDataFormat == 5) {
1066 temp = fTemp[idx-1] + (fTemp[idx]-fTemp[idx-1]) * (logSensorVal-fMeasured[idx-1])/(fMeasured[idx]-fMeasured[idx-1]);
1067 temp = pow(temp, 10.0);
1069 temp = fTemp[idx-1] + (fTemp[idx]-fTemp[idx-1]) * (sensorVal-fMeasured[idx-1])/(fMeasured[idx]-fMeasured[idx-1]);
1121 fCanvas =
new TCanvas(
"fCanvas",
"Draw Calib Data", w, h);
1122 fCanvas->SetGridx();
1123 fCanvas->SetGridy();
1126 fGraph =
new TGraph(calibData.GetMeasuredSize());
1129 TString xAxisTitle(
"T (K)");
1130 TString yAxisTitle(
"");
1131 switch (calibData.GetDataFormat()) {
1133 yAxisTitle = TString(
"Sensor (mV)");
1136 yAxisTitle = TString(
"Sensor (V)");
1141 yAxisTitle = TString(
"Sensor (Ohm)");
1144 yAxisTitle = TString(
"Sensor (??)");
1148 Double_t x, y = 0.0;
1149 for (UInt_t i=0; i<calibData.GetMeasuredSize(); i++) {
1150 if (calibData.GetDataFormat() == 4) {
1151 x = calibData.GetTemp(i);
1152 y = TMath::Power(10.0, calibData.GetMeasured(i));
1154 }
else if (calibData.GetDataFormat() == 5) {
1155 x = TMath::Power(10.0, calibData.GetTemp(i));
1156 y = TMath::Power(10.0, calibData.GetMeasured(i));
1160 x = calibData.GetTemp(i);
1161 y = calibData.GetMeasured(i);
1163 fGraph->SetPoint(i, x, y);
1166 fGraph->SetMarkerSize(1);
1167 fGraph->SetMarkerColor(TColor::GetColor(0,0,255));
1168 fGraph->SetMarkerStyle(21);
1169 fGraph->SetLineColor(TColor::GetColor(0,0,255));
1172 fGraph->GetXaxis()->SetTitle(xAxisTitle);
1175 fGraph->GetYaxis()->SetTitle(yAxisTitle);
1178 TString title(
"Calibration Data - ");
1179 title += calibData.GetSensorModel();
1180 title += TString(
" - ");
1181 title += calibData.GetSerialNo();
1182 fGraph->SetTitle(title);
1223 TGCompositeFrame *f1 =
new TGCompositeFrame(frame,
TCG_WIDTH, 300, kHorizontalFrame);
1225 fChLabel =
new TGLabel(f1,
new TGString(
"Channel:"));
1226 f1->AddFrame(fChLabel,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 0, 0, 3, 3));
1228 fCh =
new TGComboBox(f1);
1229 f1->AddFrame(fCh,
new TGLayoutHints(kLHintsRight | kLHintsCenterY, 0, 0, 3, 3));
1230 fCh->AddEntry(
"A", 0);
1231 fCh->AddEntry(
"B", 1);
1232 fCh->AddEntry(
"C1", 2);
1233 fCh->AddEntry(
"C2", 3);
1234 fCh->AddEntry(
"C3", 4);
1235 fCh->AddEntry(
"C4", 5);
1236 fCh->AddEntry(
"D1", 6);
1237 fCh->AddEntry(
"D2", 7);
1238 fCh->AddEntry(
"D3", 8);
1239 fCh->AddEntry(
"D4", 9);
1240 fCh->Resize(160, 20);
1242 TGCompositeFrame *f2 =
new TGCompositeFrame(frame,
TCG_WIDTH, 300, kHorizontalFrame);
1244 fTypeLabel =
new TGLabel(f2,
new TGString(
"Sensor Type:"));
1245 f2->AddFrame(fTypeLabel,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 0, 0, 3, 3));
1247 fType =
new TGComboBox(f2);
1248 f2->AddFrame(fType,
new TGLayoutHints(kLHintsRight | kLHintsCenterY, 0, 0, 3, 3));
1249 fType->AddEntry(
"Special", 0);
1250 fType->AddEntry(
"Silicon Diode", 1);
1251 fType->AddEntry(
"GaAlAs Diode", 2);
1252 fType->AddEntry(
"Platinum 100 (250Ohm)", 3);
1253 fType->AddEntry(
"Platinum 100 (500Ohm)", 4);
1254 fType->AddEntry(
"Platinum 1000", 5);
1255 fType->AddEntry(
"Rhodium Iron", 6);
1256 fType->AddEntry(
"Carbon-Glass", 7);
1257 fType->AddEntry(
"Cernox", 8);
1258 fType->AddEntry(
"RuOx", 9);
1259 fType->AddEntry(
"Germanium", 10);
1260 fType->AddEntry(
"Capacitor", 11);
1261 fType->AddEntry(
"Thermocouple", 12);
1262 fType->Resize(160, 20);
1264 fType->Connect(
"Selected(Int_t)",
"PSensorInfo",
this,
"TypeChanged(Int_t)");
1266 fType->Select(1, kFALSE);
1268 TGCompositeFrame *f3 =
new TGCompositeFrame(frame,
TCG_WIDTH, 300, kHorizontalFrame);
1270 fDataFormatLabel =
new TGLabel(f3,
new TGString(
"Data Format:"));
1271 f3->AddFrame(fDataFormatLabel,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 0, 0, 3, 3));
1273 fDataFormat =
new TGComboBox(f3);
1274 f3->AddFrame(fDataFormat,
new TGLayoutHints(kLHintsRight | kLHintsCenterY, 0, 0, 3, 3));
1276 fDataFormat->AddEntry(
"1: mV/K", 0);
1277 fDataFormat->AddEntry(
"2: V/K", 1);
1279 fDataFormat->Resize(160, 20);
1281 fDataFormat->Select(1, kFALSE);
1283 TGCompositeFrame *f4 =
new TGCompositeFrame(frame,
TCG_WIDTH, 300, kHorizontalFrame);
1285 fNameLabel =
new TGLabel(f4,
new TGString(
"Sensor Name:"));
1286 f4->AddFrame(fNameLabel,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 0, 0, 3, 3));
1288 fName =
new TGTextEntry(f4);
1289 fName->Resize(160, fName->GetDefaultHeight());
1290 f4->AddFrame(fName,
new TGLayoutHints(kLHintsRight | kLHintsCenterY, 0, 0, 3, 3));
1292 TGCompositeFrame *f5 =
new TGCompositeFrame(frame,
TCG_WIDTH, 300, kHorizontalFrame);
1294 fSerialNoLabel =
new TGLabel(f5,
new TGString(
"Serial No:"));
1295 f5->AddFrame(fSerialNoLabel,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 0, 0, 3, 3));
1297 fSerialNo =
new TGTextEntry(f5);
1298 fSerialNo->Resize(160, fSerialNo->GetDefaultHeight());
1299 f5->AddFrame(fSerialNo,
new TGLayoutHints(kLHintsRight | kLHintsCenterY, 0, 0, 3, 3));
1301 frame->AddFrame(f1,
new TGLayoutHints(kLHintsTop | kLHintsExpandX));
1302 frame->AddFrame(f2,
new TGLayoutHints(kLHintsTop | kLHintsExpandX));
1303 frame->AddFrame(f3,
new TGLayoutHints(kLHintsTop | kLHintsExpandX));
1304 frame->AddFrame(f4,
new TGLayoutHints(kLHintsTop | kLHintsExpandX));
1305 frame->AddFrame(f5,
new TGLayoutHints(kLHintsTop | kLHintsExpandX));
1324 Int_t dataFormat = 2;
1326 switch (fType->GetSelected()) {
1328 switch (fDataFormat->GetSelected()) {
1350 switch (fDataFormat->GetSelected()) {
1369 switch (fDataFormat->GetSelected()) {
1398 fDataFormat->RemoveAll();
1402 fDataFormat->AddEntry(
"1: mV/K", 0);
1403 fDataFormat->AddEntry(
"2: V/K", 1);
1404 fDataFormat->AddEntry(
"3: Ohm/K", 2);
1405 fDataFormat->AddEntry(
"4: log(Ohm)/K", 3);
1406 fDataFormat->AddEntry(
"5: log(Ohm)/log(K)", 4);
1407 fDataFormat->Select(1);
1411 fDataFormat->AddEntry(
"2: V/K", 0);
1412 fDataFormat->Select(0);
1422 fDataFormat->AddEntry(
"3: Ohm/K", 0);
1423 fDataFormat->AddEntry(
"4: log(Ohm)/K", 1);
1424 fDataFormat->AddEntry(
"5: log(Ohm)/log(K)", 2);
1425 fDataFormat->Select(0);
1429 fDataFormat->AddEntry(
"1: mV/K", 0);
1430 fDataFormat->Select(0);
1449 fFrame =
new TGCompositeFrame(p, 10, 10, kHorizontalFrame,
1450 TGFrame::GetWhitePixel());
1452 fFrame->SetLayoutManager(
new TGVerticalLayout(fFrame));
1458 if (fLakeShore ==
"336")
1460 for (UInt_t i=0; i<noOfChs; i++) {
1461 sprintf(name,
"Sensor %d to be calibrated", i+1);
1462 f =
new TGGroupFrame(fFrame, name, kVerticalFrame);
1463 fCalibSensorFrame.push_back(f);
1465 f->AddFrame(s,
new TGLayoutHints(kLHintsExpandX | kLHintsCenterY, 0, 0, 0, 0));
1466 fCalibSensorInfo.push_back(s);
1467 fFrame->AddFrame(fCalibSensorFrame[i],
new TGLayoutHints(kLHintsExpandX | kLHintsTop, 0, 0, 0, 0));
1480 fCalibSensorFrame.clear();
1493 if (sensorIdx <= fNoOfSensors)
1494 chNo = fCalibSensorInfo[sensorIdx-1]->GetCh();
1507 Int_t sensorType = -1;
1509 if (sensorIdx <= fNoOfSensors)
1510 sensorType = fCalibSensorInfo[sensorIdx-1]->GetSensorType();
1523 Int_t dataFormat = -1;
1525 if (sensorIdx <= fNoOfSensors)
1526 dataFormat = fCalibSensorInfo[sensorIdx-1]->GetDataFormat();
1539 TString sensorName(
"");
1541 if (sensorIdx <= fNoOfSensors)
1542 sensorName = fCalibSensorInfo[sensorIdx-1]->GetSensorName();
1555 TString serialNo(
"");
1557 if (sensorIdx <= fNoOfSensors)
1558 serialNo = fCalibSensorInfo[sensorIdx-1]->GetSerialNo();
1582 UInt_t newSize =
static_cast<UInt_t
>(val);
1584 if (newSize > fCalibSensorFrame.size()) {
1585 cerr << endl <<
">> **ERROR** Only " << fCalibSensorFrame.size() <<
" sensors possible (you requested " << newSize <<
"), will ignore request." << endl;
1589 if (fNoOfSensors == 0) {
1590 for (UInt_t i=0; i<fCalibSensorFrame.size(); i++)
1591 fFrame->HideFrame(fCalibSensorFrame[i]);
1594 if (newSize < fNoOfSensors) {
1595 for (UInt_t i=newSize; i<fCalibSensorFrame.size(); i++)
1596 fFrame->HideFrame(fCalibSensorFrame[i]);
1598 for (UInt_t i=fNoOfSensors; i<newSize; i++)
1599 fFrame->ShowFrame(fCalibSensorFrame[i]);
1602 fNoOfSensors = newSize;
1604 fCanvas->MapWindow();
1621 fLakeShore = lakeShore;
1622 fRawData.SetLakeShore(lakeShore);
1626 fMain =
new TGMainFrame(p, w, h);
1629 fMain->SetCleanup(kDeepCleanup);
1631 fMain->Connect(
"CloseWindow()",
"PTempCalibGui",
this,
"CloseWindow()");
1635 fMain->AddFrame(fFrame,
new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 0, 0, 2, 2));
1637 fMain->SetWindowName(
"Temperature Calibration");
1645 TGCompositeFrame *tf = fTab->AddTab(
"Raw Data");
1648 TGCompositeFrame *f11 =
new TGCompositeFrame(tf,
TCG_WIDTH, 80, kHorizontalFrame);
1649 TGCompositeFrame *f12 =
new TGCompositeFrame(tf,
TCG_WIDTH, 80, kHorizontalFrame);
1650 TGCompositeFrame *f13 =
new TGCompositeFrame(tf,
TCG_WIDTH, 80, kHorizontalFrame);
1651 TGCompositeFrame *f14 =
new TGCompositeFrame(tf,
TCG_WIDTH, 80, kHorizontalFrame);
1652 TGCompositeFrame *f15 =
new TGCompositeFrame(tf,
TCG_WIDTH, 80, kHorizontalFrame);
1655 TGLabel *fileNameLabel1 =
new TGLabel(f11,
new TGString(
"File Name:"));
1656 fileNameLabel1->Resize(120, fileNameLabel1->GetDefaultHeight());
1658 fTab1FileName =
new TGTextEntry(f11);
1659 fTab1FileName->Resize(210, fTab1FileName->GetDefaultHeight());
1661 fTab1BrowseButton =
new TGTextButton(f11,
"&Browse");
1662 fTab1BrowseButton->Connect(
"Clicked()",
"PTempCalibGui",
this,
"DoBrowse()");
1664 f11->AddFrame(fileNameLabel1,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 10, 20, 3, 3));
1665 f11->AddFrame(fTab1FileName,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 10, 20, 3, 3));
1666 f11->AddFrame(fTab1BrowseButton,
new TGLayoutHints(kLHintsRight | kLHintsCenterY, 10, 20, 3, 3));
1669 TGLabel *startTimeLabel =
new TGLabel(f12,
new TGString(
"Start Time:"));
1670 startTimeLabel->Resize(120, startTimeLabel->GetDefaultHeight());
1672 fTab1StartTime =
new TGTextEntry(f12);
1673 fTab1StartTime->SetText(
"1995-01-01 00:00:00");
1674 fTab1StartTime->Resize(210, fTab1StartTime->GetDefaultHeight());
1676 f12->AddFrame(startTimeLabel,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 10, 20, 3, 3));
1677 f12->AddFrame(fTab1StartTime,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 10, 20, 3, 3));
1680 TGLabel *xLabel =
new TGLabel(f13,
new TGString(
"x-axis: "));
1681 xLabel->Resize(120, xLabel->GetDefaultHeight());
1683 fTab1XComboBox =
new TGComboBox(f13);
1685 f13->AddFrame(xLabel,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 10, 20, 3, 3));
1686 f13->AddFrame(fTab1XComboBox,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 10, 20, 3, 3));
1688 fTab1XComboBox->AddEntry(
"time", 0);
1689 fTab1XComboBox->AddEntry(
"measured temperature", 1);
1690 fTab1XComboBox->AddEntry(
"set point temperature", 2);
1691 fTab1XComboBox->AddEntry(
"pressure", 3);
1692 fTab1XComboBox->AddEntry(
"heater output", 4);
1693 fTab1XComboBox->AddEntry(
"heater range", 5);
1694 fTab1XComboBox->AddEntry(
"BH1 flow", 6);
1695 if (fLakeShore ==
"340") {
1696 fTab1XComboBox->AddEntry(
"raw data ch A", 7);
1697 fTab1XComboBox->AddEntry(
"raw data ch B", 8);
1698 fTab1XComboBox->AddEntry(
"raw data ch C1", 9);
1699 fTab1XComboBox->AddEntry(
"raw data ch C2", 10);
1700 fTab1XComboBox->AddEntry(
"raw data ch C3", 11);
1701 fTab1XComboBox->AddEntry(
"raw data ch C4", 12);
1702 fTab1XComboBox->AddEntry(
"raw data ch D1", 13);
1703 fTab1XComboBox->AddEntry(
"raw data ch D2", 14);
1704 fTab1XComboBox->AddEntry(
"raw data ch D3", 15);
1705 fTab1XComboBox->AddEntry(
"raw data ch D4", 16);
1707 fTab1XComboBox->AddEntry(
"raw data ch A", 7);
1708 fTab1XComboBox->AddEntry(
"raw data ch B", 8);
1709 fTab1XComboBox->AddEntry(
"raw data ch C", 9);
1710 fTab1XComboBox->AddEntry(
"raw data ch D1", 10);
1711 fTab1XComboBox->AddEntry(
"raw data ch D2", 11);
1712 fTab1XComboBox->AddEntry(
"raw data ch D3", 12);
1713 fTab1XComboBox->AddEntry(
"raw data ch D4", 13);
1714 fTab1XComboBox->AddEntry(
"raw data ch D5", 14);
1716 fTab1XComboBox->Resize(210, 20);
1719 TGLabel *yLabel =
new TGLabel(f14,
new TGString(
"y-axis: "));
1720 yLabel->Resize(120, yLabel->GetDefaultHeight());
1722 fTab1YComboBox =
new TGComboBox(f14);
1724 f14->AddFrame(yLabel,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 10, 20, 3, 3));
1725 f14->AddFrame(fTab1YComboBox,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 10, 20, 3, 3));
1727 fTab1YComboBox->AddEntry(
"time", 0);
1728 fTab1YComboBox->AddEntry(
"measured temperature", 1);
1729 fTab1YComboBox->AddEntry(
"set point temperature", 2);
1730 fTab1YComboBox->AddEntry(
"pressure", 3);
1731 fTab1YComboBox->AddEntry(
"heater output", 4);
1732 fTab1YComboBox->AddEntry(
"heater range", 5);
1733 fTab1YComboBox->AddEntry(
"BH1 flow", 6);
1734 if (fLakeShore ==
"340") {
1735 fTab1YComboBox->AddEntry(
"raw data ch A", 7);
1736 fTab1YComboBox->AddEntry(
"raw data ch B", 8);
1737 fTab1YComboBox->AddEntry(
"raw data ch C1", 9);
1738 fTab1YComboBox->AddEntry(
"raw data ch C2", 10);
1739 fTab1YComboBox->AddEntry(
"raw data ch C3", 11);
1740 fTab1YComboBox->AddEntry(
"raw data ch C4", 12);
1741 fTab1YComboBox->AddEntry(
"raw data ch D1", 13);
1742 fTab1YComboBox->AddEntry(
"raw data ch D2", 14);
1743 fTab1YComboBox->AddEntry(
"raw data ch D3", 15);
1744 fTab1YComboBox->AddEntry(
"raw data ch D4", 16);
1746 fTab1YComboBox->AddEntry(
"raw data ch A", 7);
1747 fTab1YComboBox->AddEntry(
"raw data ch B", 8);
1748 fTab1YComboBox->AddEntry(
"raw data ch C", 9);
1749 fTab1YComboBox->AddEntry(
"raw data ch D1", 10);
1750 fTab1YComboBox->AddEntry(
"raw data ch D2", 11);
1751 fTab1YComboBox->AddEntry(
"raw data ch D3", 12);
1752 fTab1YComboBox->AddEntry(
"raw data ch D4", 13);
1753 fTab1YComboBox->AddEntry(
"raw data ch D5", 14);
1755 fTab1YComboBox->Resize(210, 20);
1758 fTab1DrawButton =
new TGTextButton(f15,
"&Draw");
1759 fTab1DrawButton->Connect(
"Clicked()",
"PTempCalibGui",
this,
"DoDrawRawData()");
1760 f15->AddFrame(fTab1DrawButton,
new TGLayoutHints(kLHintsLeft, 5, 5, 3, 4));
1762 fTab1ExitButton =
new TGTextButton(f15,
"&Exit");
1763 fTab1ExitButton->Resize(200, fTab1ExitButton->GetDefaultHeight());
1764 fTab1ExitButton->Connect(
"Clicked()",
"PTempCalibGui",
this,
"CloseWindow()");
1765 f15->AddFrame(fTab1ExitButton,
new TGLayoutHints(kLHintsRight, 5, 5, 3, 4));
1768 tf->AddFrame(f11,
new TGLayoutHints(kLHintsTop | kLHintsExpandX));
1769 tf->AddFrame(f12,
new TGLayoutHints(kLHintsTop | kLHintsExpandX));
1770 tf->AddFrame(f13,
new TGLayoutHints(kLHintsTop | kLHintsExpandX));
1771 tf->AddFrame(f14,
new TGLayoutHints(kLHintsTop | kLHintsExpandX));
1772 tf->AddFrame(f15,
new TGLayoutHints(kLHintsBottom | kLHintsExpandX));
1777 tf = fTab->AddTab(
"Calibrate");
1780 TGCompositeFrame *f21 =
new TGCompositeFrame(tf,
TCG_WIDTH, 80, kHorizontalFrame);
1781 TGCompositeFrame *f22 =
new TGCompositeFrame(tf,
TCG_WIDTH, 80, kHorizontalFrame);
1782 TGCompositeFrame *f23 =
new TGCompositeFrame(tf,
TCG_WIDTH, 80, kHorizontalFrame);
1783 TGCompositeFrame *f24 =
new TGCompositeFrame(tf,
TCG_WIDTH, 80, kHorizontalFrame);
1784 TGCompositeFrame *f25 =
new TGCompositeFrame(tf,
TCG_WIDTH, 80, kHorizontalFrame);
1785 TGCompositeFrame *f26 =
new TGCompositeFrame(tf,
TCG_WIDTH, 80, kHorizontalFrame);
1788 TGLabel *channelCalibThermo =
new TGLabel(f21,
new TGString(
"Calib Thermo Channel:"));
1790 fTab2ChannelCalibThermoComboBox =
new TGComboBox(f21);
1792 f21->AddFrame(channelCalibThermo,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 10, 20, 3, 3));
1793 f21->AddFrame(fTab2ChannelCalibThermoComboBox,
new TGLayoutHints(kLHintsRight | kLHintsCenterY, 10, 20, 3, 3));
1795 if (fLakeShore ==
"340") {
1796 fTab2ChannelCalibThermoComboBox->AddEntry(
"A", 0);
1797 fTab2ChannelCalibThermoComboBox->AddEntry(
"B", 1);
1798 fTab2ChannelCalibThermoComboBox->AddEntry(
"C1", 2);
1799 fTab2ChannelCalibThermoComboBox->AddEntry(
"C2", 3);
1800 fTab2ChannelCalibThermoComboBox->AddEntry(
"C3", 4);
1801 fTab2ChannelCalibThermoComboBox->AddEntry(
"C4", 5);
1802 fTab2ChannelCalibThermoComboBox->AddEntry(
"D1", 6);
1803 fTab2ChannelCalibThermoComboBox->AddEntry(
"D2", 7);
1804 fTab2ChannelCalibThermoComboBox->AddEntry(
"D3", 8);
1805 fTab2ChannelCalibThermoComboBox->AddEntry(
"D4", 9);
1806 fTab2ChannelCalibThermoComboBox->Resize(210, 20);
1808 fTab2ChannelCalibThermoComboBox->AddEntry(
"A", 0);
1809 fTab2ChannelCalibThermoComboBox->AddEntry(
"B", 1);
1810 fTab2ChannelCalibThermoComboBox->AddEntry(
"C", 2);
1811 fTab2ChannelCalibThermoComboBox->AddEntry(
"D1", 3);
1812 fTab2ChannelCalibThermoComboBox->AddEntry(
"D2", 4);
1813 fTab2ChannelCalibThermoComboBox->AddEntry(
"D3", 5);
1814 fTab2ChannelCalibThermoComboBox->AddEntry(
"D4", 6);
1815 fTab2ChannelCalibThermoComboBox->AddEntry(
"D5", 7);
1816 fTab2ChannelCalibThermoComboBox->Resize(210, 20);
1819 TGLabel *serialNoCalibThermo =
new TGLabel(f22,
new TGString(
"Calib Thermo File:"));
1821 fTab2SerialNoCalibThermo =
new TGTextEntry(f22);
1822 fTab2SerialNoCalibThermo->Resize(210, fTab2SerialNoCalibThermo->GetDefaultHeight());
1824 fTab2BrowseButton =
new TGTextButton(f22,
"&Browse");
1825 fTab2BrowseButton->Connect(
"Clicked()",
"PTempCalibGui",
this,
"DoBrowse()");
1827 f22->AddFrame(serialNoCalibThermo,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 10, 20, 3, 3));
1828 f22->AddFrame(fTab2SerialNoCalibThermo,
new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 10, 20, 3, 3));
1829 f22->AddFrame(fTab2BrowseButton,
new TGLayoutHints(kLHintsRight | kLHintsCenterY, 10, 20, 3, 3));
1832 TGLabel *noOfThermoForCalib =
new TGLabel(f23,
new TGString(
"No of Thermo for Calibration:"));
1834 fNoThermoForCalib =
new TGNumberEntry(f23, 2);
1835 fNoThermoForCalib->Connect(
"ValueSet(Long_t)",
"PTempCalibGui",
this,
"NoOfThermoCalibChanged(Long_t)");
1837 f23->AddFrame(noOfThermoForCalib,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 10, 20, 3, 3));
1838 f23->AddFrame(fNoThermoForCalib,
new TGLayoutHints(kLHintsRight | kLHintsCenterY, 10, 20, 3, 3));
1842 fTempCalibSensorsCanvas =
new TGCanvas(f24,
TCG_WIDTH, 240);
1843 fTempCalibSensorsContainer =
new PTempCalibSensors(fTempCalibSensorsCanvas->GetViewPort(), fLakeShore);
1844 fTempCalibSensorsContainer->
SetCanvas(fTempCalibSensorsCanvas);
1845 fTempCalibSensorsCanvas->SetContainer(fTempCalibSensorsContainer->GetFrame());
1848 fTempCalibSensorsContainer->GetFrame()->SetCleanup(kDeepCleanup);
1850 this->Connect(
"NoOfThermoCalibChanged(Long_t)",
"PTempCalibSensors", fTempCalibSensorsContainer,
"SetNoOfSensors(Long_t)");
1852 f24->AddFrame(fTempCalibSensorsCanvas,
new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 0, 0, 2, 2));
1855 TGLabel *drawDataNo =
new TGLabel(f25,
new TGString(
"Draw Data No:"));
1857 fDrawDataNo =
new TGNumberEntry(f25, 1);
1859 f25->AddFrame(drawDataNo,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 10, 20, 3, 3));
1860 f25->AddFrame(fDrawDataNo,
new TGLayoutHints(kLHintsRight | kLHintsCenterY, 10, 20, 3, 3));
1863 fTab2CalibButton =
new TGTextButton(f26,
"&Calibrate");
1864 fTab2CalibButton->Connect(
"Clicked()",
"PTempCalibGui",
this,
"DoCalibration()");
1865 f26->AddFrame(fTab2CalibButton,
new TGLayoutHints(kLHintsLeft, 5, 5, 3, 4));
1867 fTab2DrawButton =
new TGTextButton(f26,
"&Draw");
1868 fTab2DrawButton->Connect(
"Clicked()",
"PTempCalibGui",
this,
"DoDrawWithErrors()");
1869 f26->AddFrame(fTab2DrawButton,
new TGLayoutHints(kLHintsLeft, 5, 5, 3, 4));
1871 fTab2ExitButton =
new TGTextButton(f26,
"&Exit");
1872 fTab2ExitButton->Resize(200, fTab2ExitButton->GetDefaultHeight());
1873 fTab2ExitButton->Connect(
"Clicked()",
"PTempCalibGui",
this,
"CloseWindow()");
1874 f26->AddFrame(fTab2ExitButton,
new TGLayoutHints(kLHintsRight, 5, 5, 3, 4));
1877 tf->AddFrame(f21,
new TGLayoutHints(kLHintsTop | kLHintsExpandX));
1878 tf->AddFrame(f22,
new TGLayoutHints(kLHintsTop | kLHintsExpandX));
1879 tf->AddFrame(f23,
new TGLayoutHints(kLHintsTop | kLHintsExpandX));
1880 tf->AddFrame(f24,
new TGLayoutHints(kLHintsTop | kLHintsExpandX));
1881 tf->AddFrame(f25,
new TGLayoutHints(kLHintsTop | kLHintsExpandX));
1882 tf->AddFrame(f26,
new TGLayoutHints(kLHintsBottom | kLHintsExpandX));
1887 tf = fTab->AddTab(
"Plot");
1889 TGCompositeFrame *f31 =
new TGCompositeFrame(tf,
TCG_WIDTH, 80, kHorizontalFrame);
1890 TGCompositeFrame *f32 =
new TGCompositeFrame(tf,
TCG_WIDTH, 80, kHorizontalFrame);
1892 TGLabel *fileNameLabel3 =
new TGLabel(f31,
new TGString(
"File Name:"));
1893 fileNameLabel3->Resize(120, fileNameLabel3->GetDefaultHeight());
1895 fTab3FileName =
new TGTextEntry(f31);
1896 fTab3FileName->Resize(210, fTab3FileName->GetDefaultHeight());
1898 fTab3BrowseButton =
new TGTextButton(f31,
"&Browse");
1899 fTab3BrowseButton->Connect(
"Clicked()",
"PTempCalibGui",
this,
"DoBrowse()");
1901 f31->AddFrame(fileNameLabel3,
new TGLayoutHints(kLHintsLeft, 5, 5, 3, 4));
1902 f31->AddFrame(fTab3FileName,
new TGLayoutHints(kLHintsLeft, 5, 5, 3, 4));
1903 f31->AddFrame(fTab3BrowseButton,
new TGLayoutHints(kLHintsRight, 5, 5, 3, 4));
1905 fTab3DrawButton =
new TGTextButton(f32,
"&Draw");
1906 fTab3DrawButton->Connect(
"Clicked()",
"PTempCalibGui",
this,
"DoDrawCalibData()");
1907 f32->AddFrame(fTab3DrawButton,
new TGLayoutHints(kLHintsLeft, 5, 5, 3, 4));
1909 fTab3ExitButton =
new TGTextButton(f32,
"&Exit");
1910 fTab3ExitButton->Resize(200, fTab3ExitButton->GetDefaultHeight());
1911 fTab3ExitButton->Connect(
"Clicked()",
"PTempCalibGui",
this,
"CloseWindow()");
1912 f32->AddFrame(fTab3ExitButton,
new TGLayoutHints(kLHintsRight, 5, 5, 3, 4));
1914 tf->AddFrame(f31,
new TGLayoutHints(kLHintsTop | kLHintsExpandX));
1915 tf->AddFrame(f32,
new TGLayoutHints(kLHintsBottom | kLHintsExpandX));
1917 fFrame->AddFrame(fTab,
new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 0, 0, 2, 2));
1919 fTab->Connect(
"Selected(Int_t)",
"PTempCalibGui",
this,
"DoTabSelected(Int_t)");
1921 fMain->MapSubwindows();
1950 gApplication->Terminate();
1962 const char *filetypes[] = {
"All Files",
"*",
1963 "Raw Data Files",
"*.dat",
1966 static TString dir(
".");
1968 fi.fFileTypes = filetypes;
1969 fi.fIniDir = StrDup(dir);
1970 new TGFileDialog(gClient->GetRoot(), fMain, kFDOpen, &fi);
1974 switch (fTab->GetCurrent()) {
1976 fTab1FileName->SetText(fi.fFilename);
1977 LoadRawData(fi.fFilename);
1980 fTab2SerialNoCalibThermo->SetText(fi.fFilename);
1981 LoadCalibData(fi.fFilename);
1984 fTab3FileName->SetText(fi.fFilename);
1985 LoadCalibData(fi.fFilename);
2006 switch (fTab1XComboBox->GetSelected()) {
2038 if (fLakeShore ==
"340")
2044 if (fLakeShore ==
"340")
2050 if (fLakeShore ==
"340")
2056 if (fLakeShore ==
"340")
2062 if (fLakeShore ==
"340")
2068 if (fLakeShore ==
"340")
2084 switch (fTab1YComboBox->GetSelected()) {
2116 if (fLakeShore ==
"340")
2122 if (fLakeShore ==
"340")
2128 if (fLakeShore ==
"340")
2134 if (fLakeShore ==
"340")
2140 if (fLakeShore ==
"340")
2146 if (fLakeShore ==
"340")
2164 if (!fRawData.IsDataPresent())
2168 TString dateTimeStr = fTab1StartTime->GetDisplayText();
2169 fRawData.SetStartDateTime(dateTimeStr.Data());
2172 drawRawData->
Show();
2184 if (!fRawData.IsDataPresent()) {
2185 new TGMsgBox(gClient->GetRoot(), fMain,
"**ERROR**",
"No Raw Data Set present. Go to 'Raw Data' Tab and select one.");
2189 if (!fCalibData.IsValid()) {
2190 new TGMsgBox(gClient->GetRoot(), fMain,
"**ERROR**",
"No Calibration Table present. Go to 'Calibrate' Tab and select one.");
2194 if (fTab2ChannelCalibThermoComboBox->GetSelected() == -1) {
2195 new TGMsgBox(gClient->GetRoot(), fMain,
"**ERROR**",
"Calibration Channel needs to be selected!");
2199 for (UInt_t i=1; i<=fTempCalibSensorsContainer->GetNoOfSensors(); i++) {
2200 if (fTempCalibSensorsContainer->GetCh(i) == -1) {
2201 TString str(
"For Sensor ");
2203 str +=
" the channel assignment is missing! Needs to be done.";
2204 new TGMsgBox(gClient->GetRoot(), fMain,
"**ERROR**", str.Data());
2207 if (fTempCalibSensorsContainer->GetSensorType(i) == -1) {
2208 TString str(
"For Sensor ");
2210 str +=
" the sensor type assignment is missing! Needs to be done.";
2211 new TGMsgBox(gClient->GetRoot(), fMain,
"**ERROR**", str.Data());
2214 if (fTempCalibSensorsContainer->GetSensorName(i).IsWhitespace()) {
2215 TString str(
"For Sensor ");
2217 str +=
" the sensor name is missing! Needs to be done.";
2218 new TGMsgBox(gClient->GetRoot(), fMain,
"**ERROR**", str.Data());
2221 if (fTempCalibSensorsContainer->GetSerialNo(i).IsWhitespace()) {
2222 TString str(
"For Sensor ");
2224 str +=
" the serial number is missing! Needs to be done.";
2225 new TGMsgBox(gClient->GetRoot(), fMain,
"**ERROR**", str.Data());
2232 UInt_t idxCalib = fRawData.MapChNo(fTab2ChannelCalibThermoComboBox->GetSelected());
2236 for (UInt_t i=1; i<=fTempCalibSensorsContainer->GetNoOfSensors(); i++) {
2237 idx.push_back(fRawData.MapChNo(fTempCalibSensorsContainer->GetCh(i)));
2241 Double_t currentSP = 0.0;
2244 Double_t meanTemp = 0.0;
2245 Double_t meanCalib = 0.0;
2251 vector<Double_t> temp;
2252 vector<Double_t> calibData;
2253 vector< vector<Double_t> > data;
2254 data.resize(idx.size());
2256 currentSP = fRawData.GetSetPointTemp(0);
2257 for (UInt_t i=0; i<fRawData.GetSize(); i++) {
2258 if (fRawData.GetTime(i) < fRawData.GetStartTime()) {
2259 currentSP = fRawData.GetSetPointTemp(i);
2263 if (currentSP == fRawData.GetSetPointTemp(i)) {
2265 meanTemp += fRawData.GetTempMeasured(i);
2266 meanCalib += fRawData.GetRawData(idxCalib, i);
2267 for (UInt_t j=0; j<idx.size(); j++) {
2268 meanData[j] += fRawData.GetRawData(idx[j], i);
2272 temp.push_back(meanTemp/count);
2273 calibData.push_back(meanCalib/count);
2274 for (UInt_t j=0; j<idx.size(); j++) {
2275 data[j].push_back(meanData[j]/count);
2280 meanTemp = fRawData.GetTempMeasured(i);
2281 meanCalib = fRawData.GetRawData(idxCalib, i);
2282 for (UInt_t j=0; j<idx.size(); j++) {
2283 meanData[j] = fRawData.GetRawData(idx[j], i);
2286 currentSP = fRawData.GetSetPointTemp(i);
2292 temp.push_back(meanTemp/count);
2293 calibData.push_back(meanCalib/count);
2294 for (UInt_t j=0; j<idx.size(); j++) {
2295 data[j].push_back(meanData[j]/count);
2298 vector<Double_t> calibTemp;
2299 for (UInt_t i=0; i<calibData.size(); i++) {
2300 calibTemp.push_back(fCalibData.GetTemp(calibData[i]));
2304 TString filename(
"");
2308 TString dataFormat(
"");
2309 TString tempCoeff(
"");
2310 for (UInt_t i=0; i<data.size(); i++) {
2311 filename = fTempCalibSensorsContainer->GetSensorName(i+1) +
".340";
2312 fout.open(filename.Data(), ofstream::out);
2313 if (!fout.is_open()) {
2314 cerr <<
"**ERROR** couldn't open file: " << filename <<
"." << endl;
2319 if (dt.GetYear()-2000 >= 10) {
2320 date += dt.GetYear()-2000;
2323 date += dt.GetYear()-2000;
2325 if (dt.GetMonth() >= 10) {
2326 date += dt.GetMonth();
2329 date += dt.GetMonth();
2331 if (dt.GetDay() >= 10) {
2332 date += dt.GetDay();
2335 date += dt.GetDay();
2339 switch (fTempCalibSensorsContainer->GetDataFormat(i+1)) {
2341 dataFormat =
"1 (mV/Kelvin)";
2344 dataFormat =
"2 (Volts/Kelvin)";
2347 dataFormat =
"3 (Ohms/Kelvin)";
2350 dataFormat =
"4 (Log Ohms/Kelvin)";
2353 dataFormat =
"5 (Log Ohms/Log Kelvin)";
2360 switch (fTempCalibSensorsContainer->GetSensorType(i+1)) {
2364 tempCoeff =
"1 (Negative)";
2370 tempCoeff =
"2 (Positive)";
2376 tempCoeff =
"1 (Negative)";
2380 tempCoeff =
"2 (Positive)";
2383 tempCoeff =
"1 (Negative)";
2388 UInt_t noOfBreakPoints = data[i].size();
2389 if (calibTemp[data[i].size()-1] < 325.0)
2391 if (calibTemp[0] > 1.5)
2395 fout <<
"Sensor Model: " << fTempCalibSensorsContainer->GetSensorName(i+1).Data() <<
"/" << date.Data() << endl;
2396 fout <<
"Serial Number: " << fTempCalibSensorsContainer->GetSerialNo(i+1).Data() << endl;
2397 fout <<
"Data Format: " << dataFormat.Data() << endl;
2398 fout <<
"SetPoint Limit: 325. (Kelvin)" << endl;
2399 fout <<
"Temperature coefficient: " << tempCoeff.Data() << endl;
2400 fout <<
"Number of Breakpoints: " << noOfBreakPoints << endl;
2402 fout <<
"No. Units Temperature (K)" << endl;
2406 UInt_t size = data[i].size()-1;
2408 if (calibTemp[size] < 325.0) {
2414 fout.setf(ios::fixed, ios::floatfield);
2415 fout << data[i][size-1] + (data[i][size]-data[i][size-1])*(325.0-calibTemp[size-1])/(calibTemp[size]-calibTemp[size-1]) <<
" ";
2418 fout.setf(ios::fixed, ios::floatfield);
2419 fout <<
"325.000" << endl;
2423 for (UInt_t j=0; j<data[i].size(); j++) {
2425 fout << j+offset <<
" ";
2428 fout.setf(ios::fixed, ios::floatfield);
2429 fout << data[i][size-j] <<
" ";
2432 fout.setf(ios::fixed, ios::floatfield);
2433 fout << calibTemp[size-j] << endl;
2437 if (calibTemp[0] > 1.5) {
2439 fout << noOfBreakPoints <<
" ";
2442 fout.setf(ios::fixed, ios::floatfield);
2443 fout << data[i][0] - (data[i][1]-data[i][0])*(calibTemp[1]-1.5)/(calibTemp[1]-calibTemp[0]) <<
" ";
2446 fout.setf(ios::fixed, ios::floatfield);
2447 fout <<
"1.500" << endl;
2460 for (UInt_t i=0; i<data.size(); i++)
2466 new TGMsgBox(gClient->GetRoot(), fMain,
"**INFO**",
"Calibration done ...", kMBIconAsterisk, kMBClose);
2479 if (!fRawData.IsDataPresent()) {
2480 new TGMsgBox(gClient->GetRoot(), fMain,
"**ERROR**",
"No Raw Data Set present. Go to 'Raw Data' Tab and select one.");
2485 Long_t drawNo = fDrawDataNo->GetIntNumber();
2486 Long_t calibMaxNo = fNoThermoForCalib->GetIntNumber();
2488 if (drawNo > calibMaxNo)
2493 chNo = fTab2ChannelCalibThermoComboBox->GetSelected();
2495 chNo = fTempCalibSensorsContainer->GetCh(drawNo);
2498 Int_t rawChNo = fRawData.MapChNo(chNo);
2501 Double_t currentSP = 0.0;
2504 Double_t meanTemp = 0.0;
2505 Double_t sdvTemp = 0.0;
2506 Double_t meanData = 0.0;
2507 Double_t sdvData = 0.0;
2509 vector<Double_t> temp;
2510 vector<Double_t> errTemp;
2511 vector<Double_t> data;
2512 vector<Double_t> errData;
2514 currentSP = fRawData.GetSetPointTemp(0);
2515 for (UInt_t i=0; i<fRawData.GetSize(); i++) {
2516 if (fRawData.GetTime(i) < fRawData.GetStartTime()) {
2517 currentSP = fRawData.GetSetPointTemp(i);
2521 if (currentSP == fRawData.GetSetPointTemp(i)) {
2523 meanTemp += fRawData.GetTempMeasured(i);
2524 meanData += fRawData.GetRawData(rawChNo, i);
2527 temp.push_back(meanTemp/count);
2528 data.push_back(meanData/count);
2533 for (UInt_t j=i-count; j<i; j++) {
2534 sdvTemp += TMath::Power(fRawData.GetTempMeasured(j)-meanTemp/count, 2.0);
2535 sdvData += TMath::Power(fRawData.GetRawData(rawChNo, j)-meanData/count, 2.0);
2538 errTemp.push_back(TMath::Sqrt(sdvTemp/(count-1)));
2539 errData.push_back(TMath::Sqrt(sdvData/(count-1)));
2541 errTemp.push_back(0.0);
2542 errData.push_back(0.0);
2547 meanTemp = fRawData.GetTempMeasured(i);
2548 meanData = fRawData.GetRawData(rawChNo, i);
2550 currentSP = fRawData.GetSetPointTemp(i);
2557 temp.push_back(meanTemp/count);
2558 data.push_back(meanData/count);
2563 for (UInt_t j=fRawData.GetSize()-count; j<fRawData.GetSize(); j++) {
2564 sdvTemp += TMath::Power(fRawData.GetTempMeasured(j)-meanTemp/count, 2.0);
2565 sdvData += TMath::Power(fRawData.GetRawData(rawChNo, j)-meanData/count, 2.0);
2568 errTemp.push_back(TMath::Sqrt(sdvTemp/(count-1)));
2569 errData.push_back(TMath::Sqrt(sdvData/(count-1)));
2571 errTemp.push_back(0.0);
2572 errData.push_back(0.0);
2576 if ((fRawData.GetRawDataSensorType(chNo) == 1) || (fRawData.GetRawDataSensorType(chNo) == 2))
2583 ylabel =
"A" + units;
2586 ylabel =
"B" + units;
2589 if (fLakeShore ==
"340")
2590 ylabel =
"C1" + units;
2592 ylabel =
"C" + units;
2595 if (fLakeShore ==
"340")
2596 ylabel =
"C2" + units;
2598 ylabel =
"D1" + units;
2601 if (fLakeShore ==
"340")
2602 ylabel =
"C3" + units;
2604 ylabel =
"D2" + units;
2607 if (fLakeShore ==
"340")
2608 ylabel =
"C4" + units;
2610 ylabel =
"D3" + units;
2613 if (fLakeShore ==
"340")
2614 ylabel =
"D1" + units;
2616 ylabel =
"D4" + units;
2619 if (fLakeShore ==
"340")
2620 ylabel =
"D2" + units;
2622 ylabel =
"D5" + units;
2625 ylabel =
"D3" + units;
2628 ylabel =
"D4" + units;
2653 if (!fCalibData.IsValid())
2669 NoOfThermoCalibChanged(0);
2682 Long_t no = fNoThermoForCalib->GetIntNumber();
2684 Emit(
"NoOfThermoCalibChanged(Long_t)", no);
2695 ifstream ifs(filename, ifstream::in);
2698 vector<TString> rawData;
2699 while (!ifs.eof()) {
2700 ifs.getline(line, 512);
2701 rawData.push_back(TString(line));
2708 TObjArray *tokens = 0;
2709 TObjString *ostr = 0;
2711 Int_t datetime[6] = {0, 0, 0, 0, 0, 0};
2716 if (rawData[i].BeginsWith(
"%"))
2717 i = UpdateHeaderInfo(rawData, i);
2720 if (!rawData[i].IsWhitespace()) {
2721 tokens = rawData[i].Tokenize(
",");
2723 if (fLakeShore ==
"336")
2725 if (tokens->GetEntries() != noOfTok) {
2726 cerr << endl <<
">> **ERROR** in line " << i <<
", number of tokens should be " << noOfTok <<
", found " << tokens->GetEntries();
2727 cerr << endl <<
">> line = " << rawData[i].Data();
2728 cerr << endl <<
">> Will quit reading ..." << endl;
2733 ostr =
dynamic_cast<TObjString*
>(tokens->At(2));
2734 str = ostr->GetString();
2735 if (str.IsDigit()) {
2736 datetime[0] = str.Atoi();
2738 cerr << endl <<
">> **ERROR** in line " << i <<
", expected the year, found " << str.Data();
2739 cerr << endl <<
">> Will quit reading ..." << endl;
2743 ostr =
dynamic_cast<TObjString*
>(tokens->At(0));
2744 str = ostr->GetString();
2745 if (str.IsDigit()) {
2746 datetime[1] = str.Atoi();
2748 cerr << endl <<
">> **ERROR** in line " << i <<
", expected month, found " << str.Data();
2749 cerr << endl <<
">> Will quit reading ..." << endl;
2753 ostr =
dynamic_cast<TObjString*
>(tokens->At(1));
2754 str = ostr->GetString();
2755 if (str.IsDigit()) {
2756 datetime[2] = str.Atoi();
2758 cerr << endl <<
">> **ERROR** in line " << i <<
", expected day, found " << str.Data();
2759 cerr << endl <<
">> Will quit reading ..." << endl;
2763 ostr =
dynamic_cast<TObjString*
>(tokens->At(3));
2764 str = ostr->GetString();
2765 if (str.IsDigit()) {
2766 datetime[3] = str.Atoi();
2768 cerr << endl <<
">> **ERROR** in line " << i <<
", expected hh, found " << str.Data();
2769 cerr << endl <<
">> Will quit reading ..." << endl;
2773 ostr =
dynamic_cast<TObjString*
>(tokens->At(4));
2774 str = ostr->GetString();
2775 if (str.IsDigit()) {
2776 datetime[4] = str.Atoi();
2778 cerr << endl <<
">> **ERROR** in line " << i <<
", expected mm, found " << str.Data();
2779 cerr << endl <<
">> Will quit reading ..." << endl;
2783 ostr =
dynamic_cast<TObjString*
>(tokens->At(5));
2784 str = ostr->GetString();
2785 if (str.IsDigit()) {
2786 datetime[5] = str.Atoi();
2788 cerr << endl <<
">> **ERROR** in line " << i <<
", expected ss, found " << str.Data();
2789 cerr << endl <<
">> Will quit reading ..." << endl;
2792 dt =
new TDatime(datetime[0],datetime[1],datetime[2],datetime[3],datetime[4],datetime[5]);
2793 fRawData.AddDateTime(dt);
2796 ostr =
dynamic_cast<TObjString*
>(tokens->At(7));
2797 str = ostr->GetString();
2798 if (str.IsFloat()) {
2799 fRawData.AddTempMeasured(str.Atof());
2801 cerr << endl <<
">> **ERROR** in line " << i <<
", expected measured temperature, found " << str.Data();
2802 cerr << endl <<
">> Will quit reading ..." << endl;
2807 ostr =
dynamic_cast<TObjString*
>(tokens->At(8));
2808 str = ostr->GetString();
2809 if (str.IsFloat()) {
2810 fRawData.AddPressure(str.Atof());
2812 cerr << endl <<
">> **ERROR** in line " << i <<
", expected pressure, found " << str.Data();
2813 cerr << endl <<
">> Will quit reading ..." << endl;
2818 ostr =
dynamic_cast<TObjString*
>(tokens->At(9));
2819 str = ostr->GetString();
2820 if (str.IsFloat()) {
2821 fRawData.AddHeaterOutput(str.Atof());
2823 cerr << endl <<
">> **ERROR** in line " << i <<
", expected heater output, found " << str.Data();
2824 cerr << endl <<
">> Will quit reading ..." << endl;
2829 ostr =
dynamic_cast<TObjString*
>(tokens->At(10));
2830 str = ostr->GetString();
2831 if (str.IsFloat()) {
2832 fRawData.AddSetPointTemp(str.Atof());
2834 cerr << endl <<
">> **ERROR** in line " << i <<
", expected setpoint, found " << str.Data();
2835 cerr << endl <<
">> Will quit reading ..." << endl;
2840 ostr =
dynamic_cast<TObjString*
>(tokens->At(11));
2841 str = ostr->GetString();
2842 if (str.IsFloat()) {
2843 fRawData.AddHeaterRange(str.Atof());
2845 cerr << endl <<
">> **ERROR** in line " << i <<
", expected heater range, found " << str.Data();
2846 cerr << endl <<
">> Will quit reading ..." << endl;
2851 ostr =
dynamic_cast<TObjString*
>(tokens->At(12));
2852 str = ostr->GetString();
2853 if (str.IsFloat()) {
2854 fRawData.AddBH1Flow(str.Atof());
2856 cerr << endl <<
">> **ERROR** in line " << i <<
", expected BH1 flow, found " << str.Data();
2857 cerr << endl <<
">> Will quit reading ..." << endl;
2863 if (fLakeShore ==
"336")
2865 for (UInt_t j=0; j<noOfChs; j++) {
2866 ostr =
dynamic_cast<TObjString*
>(tokens->At(13+j));
2867 str = ostr->GetString();
2868 if (str.IsFloat()) {
2869 fRawData.AddRawData(str.Atof(), j);
2871 cerr << endl <<
">> **ERROR** in line " << i <<
", expected Raw Data Reading Entry " << j <<
", found " << str.Data();
2872 cerr << endl <<
">> Will quit reading ..." << endl;
2880 }
while ((i<rawData.size()) && !error);
2883 fRawData.SetDataPresent(
true);
2899 TObjArray *tokens = 0;
2900 TObjString *ostr = 0;
2905 if (rawData[idx].BeginsWith(
"% Number of Entries")) {
2906 tokens = rawData[idx].Tokenize(
":");
2907 if (tokens->GetEntries() == 2) {
2908 ostr =
dynamic_cast<TObjString*
>(tokens->At(1));
2909 str = ostr->GetString();
2910 if (str.IsDigit()) {
2911 fRawData.SetNoOfEntries(str.Atoi());
2919 }
else if (rawData[idx].BeginsWith(
"% Number of Raw Data Reading")) {
2920 tokens = rawData[idx].Tokenize(
":");
2921 if (tokens->GetEntries() == 2) {
2922 ostr =
dynamic_cast<TObjString*
>(tokens->At(1));
2923 str = ostr->GetString();
2924 if (str.IsDigit()) {
2925 fRawData.SetNoOfRawDataReadings(str.Atoi());
2933 }
else if (rawData[idx].BeginsWith(
"% First Raw Data Reading Entry")) {
2934 tokens = rawData[idx].Tokenize(
":");
2935 if (tokens->GetEntries() == 2) {
2936 ostr =
dynamic_cast<TObjString*
>(tokens->At(1));
2937 str = ostr->GetString();
2938 if (str.IsDigit()) {
2939 fRawData.SetRawDataReadingOffset(str.Atoi());
2947 }
else if (rawData[idx].Contains(
"measured temperature of control channel")) {
2948 tokens = rawData[idx].Tokenize(
"=");
2949 if (tokens->GetEntries() == 2) {
2950 ostr =
dynamic_cast<TObjString*
>(tokens->At(1));
2951 str = ostr->GetString();
2952 str.Remove(TString::kLeading,
' ');
2953 fRawData.SetCtrlCh(str);
2960 }
else if (rawData[idx].Contains(
"Raw Data Reading Entry")) {
2961 tokens = rawData[idx].Tokenize(
" ");
2962 if (tokens->GetEntries() == 16) {
2963 ostr =
dynamic_cast<TObjString*
>(tokens->At(8));
2964 str = ostr->GetString();
2965 if (str.IsDigit()) {
2966 UInt_t chNo = str.Atoi();
2968 if (fLakeShore ==
"336")
2970 if (chNo < noOfChs) {
2971 ostr =
dynamic_cast<TObjString*
>(tokens->At(11));
2972 str = ostr->GetString();
2973 str.Remove(TString::kLeading,
' ');
2974 fRawData.SetRawDataCh(str, chNo);
2975 ostr =
dynamic_cast<TObjString*
>(tokens->At(15));
2976 str = ostr->GetString();
2977 if (str.IsDigit()) {
2978 fRawData.SetRawDataSensorType(str.Atoi(), chNo);
2991 }
while (rawData[idx].BeginsWith(
"%"));
2995 UInt_t noOfToks = 23;
2996 if (fLakeShore ==
"336") {
3000 if (fRawData.GetNoOfEntries() != noOfToks) {
3001 cerr << endl <<
"**ERROR** UpdateHeaderInfo: Missing 'Number of Entries', something is wrong ..." << endl;
3002 }
else if (fRawData.GetNoOfRawDataReadings() != noOfChs) {
3003 cerr << endl <<
"**ERROR** UpdateHeaderInfo: Missing 'Number of Raw Data Reading', something is wrong ..." << endl;
3004 }
else if (fRawData.GetRawDataReadingOffset() != 14) {
3005 cerr << endl <<
"**ERROR** UpdateHeaderInfo: Missing 'First Raw Data Reading Entry', something is wrong ..." << endl;
3006 }
else if (fRawData.GetCtrlCh() ==
"undefined") {
3007 cerr << endl <<
"**ERROR** UpdateHeaderInfo: Missing 'measured temperature of control channel', something is wrong ..." << endl;
3010 for (UInt_t i=0; i<noOfChs; i++) {
3011 if (fRawData.GetRawDataCh(i) ==
"undefined") {
3012 cerr << endl <<
"**ERROR** UpdateHeaderInfo: Missing 'Raw Data Reading Entry " << i <<
"', something is wrong ..." << endl;
3029 ifstream ifs(filename, ifstream::in);
3032 vector<TString> calibData;
3033 while (!ifs.eof()) {
3034 ifs.getline(line, 512);
3035 calibData.push_back(TString(line));
3040 if (fLakeShore ==
"336")
3042 if (calibData.size() < noOfChs) {
3043 cerr << endl <<
">> **ERROR** Couldn't read enough data from file " << filename << endl;
3049 TObjArray *tokens = 0;
3050 TObjArray *tokens1 = 0;
3051 TObjString *ostr = 0;
3056 if (calibData[0].BeginsWith(
"Sensor Model:")) {
3057 tokens = calibData[0].Tokenize(
":");
3058 ostr =
dynamic_cast<TObjString*
>(tokens->At(1));
3059 str = ostr->GetString();
3060 str.Remove(TString::kBoth,
' ');
3061 fCalibData.SetSensorModel(str);
3068 cerr << endl <<
">> **ERROR** Expected line starting with 'Sensor Model', found " << calibData[0].Data() << endl;
3073 if (calibData[1].BeginsWith(
"Serial Number:")) {
3074 tokens = calibData[1].Tokenize(
":");
3075 ostr =
dynamic_cast<TObjString*
>(tokens->At(1));
3076 str = ostr->GetString();
3077 str.Remove(TString::kBoth,
' ');
3078 fCalibData.SetSerialNo(str);
3085 cerr << endl <<
">> **ERROR** Expected line starting with 'Serial Number', found " << calibData[1].Data() << endl;
3090 if (calibData[2].BeginsWith(
"Data Format:")) {
3091 tokens = calibData[2].Tokenize(
":");
3092 ostr =
dynamic_cast<TObjString*
>(tokens->At(1));
3093 str = ostr->GetString();
3094 tokens1 = str.Tokenize(
" \t");
3095 if (tokens1->GetEntries() > 1) {
3096 ostr =
dynamic_cast<TObjString*
>(tokens1->At(0));
3097 str = ostr->GetString();
3098 if (str.IsDigit()) {
3099 fCalibData.SetDataFormat(str.Atoi());
3101 cerr << endl <<
">> **ERROR** Data Format is not given as a number! str = " << str.Data() << endl;
3108 cerr << endl <<
">> **ERROR** Data Format has a wrong format: " << calibData[2].Data() << endl;
3116 cerr << endl <<
">> **ERROR** Expected line starting with 'Data Format', found " << calibData[2].Data() << endl;
3121 if (calibData[3].BeginsWith(
"SetPoint Limit:")) {
3122 tokens = calibData[3].Tokenize(
":");
3123 ostr =
dynamic_cast<TObjString*
>(tokens->At(1));
3124 str = ostr->GetString();
3125 tokens1 = str.Tokenize(
" \t");
3126 if (tokens1->GetEntries() > 1) {
3127 ostr =
dynamic_cast<TObjString*
>(tokens1->At(0));
3128 str = ostr->GetString();
3129 if (str.IsFloat()) {
3130 fCalibData.SetSetPointLimit(str.Atof());
3132 cerr << endl <<
">> **ERROR** SetPoint Limit is not given as a float! str = " << str.Data() << endl;
3139 cerr << endl <<
">> **ERROR** SetPoint Limit has a wrong format: " << calibData[3].Data() << endl;
3147 cerr << endl <<
">> **ERROR** Expected line starting with 'SetPoint Limit', found " << calibData[3].Data() << endl;
3152 if (calibData[4].BeginsWith(
"Temperature coefficient:")) {
3153 tokens = calibData[4].Tokenize(
":");
3154 ostr =
dynamic_cast<TObjString*
>(tokens->At(1));
3155 str = ostr->GetString();
3156 tokens1 = str.Tokenize(
" \t");
3157 if (tokens1->GetEntries() > 1) {
3158 ostr =
dynamic_cast<TObjString*
>(tokens1->At(0));
3159 str = ostr->GetString();
3160 if (str.IsDigit()) {
3161 fCalibData.SetTempCoeff(str.Atoi());
3163 cerr << endl <<
">> **ERROR** Temp. Coeff. is not given as a number! str = " << str.Data() << endl;
3170 cerr << endl <<
">> **ERROR** Temp. Coeff. has a wrong format: " << calibData[4].Data() << endl;
3178 cerr << endl <<
">> **ERROR** Expected line starting with 'Temperature coefficient', found " << calibData[4].Data() << endl;
3183 if (calibData[5].BeginsWith(
"Number of Breakpoints:")) {
3184 tokens = calibData[5].Tokenize(
":");
3185 ostr =
dynamic_cast<TObjString*
>(tokens->At(1));
3186 str = ostr->GetString();
3187 str.Remove(TString::kTrailing,
'\n');
3188 str.Remove(TString::kTrailing,
'\r');
3189 if (str.IsDigit()) {
3190 fCalibData.SetNoOfPoints(str.Atoi());
3192 cerr << endl <<
">> **ERROR** Number of Breakpoints is not given as a number! str = '" << str.Data() <<
"'" << endl;
3200 cerr << endl <<
">> **ERROR** Expected line starting with 'Number of Breakpoints', found " << calibData[5].Data() << endl;
3205 vector<Double_t> unit, temp;
3207 for (UInt_t i=9; i<calibData.size(); i++) {
3208 if (calibData[i].IsWhitespace())
3211 tokens = calibData[i].Tokenize(
" \t");
3212 if (tokens->GetEntries() != 3) {
3213 cerr << endl <<
">> **ERROR** in line " << i <<
". Expect 3 numbers." << endl;
3217 ostr =
dynamic_cast<TObjString*
>(tokens->At(1));
3218 str = ostr->GetString();
3219 if (str.IsFloat()) {
3220 unit.push_back(str.Atof());
3222 cerr << endl <<
">> **ERROR** in line " << i <<
". Units entry doesn't seem to be a float: " << str.Data() << endl;
3226 ostr =
dynamic_cast<TObjString*
>(tokens->At(2));
3227 str = ostr->GetString();
3228 str.Remove(TString::kTrailing,
'\n');
3229 str.Remove(TString::kTrailing,
'\r');
3230 if (str.IsFloat()) {
3231 temp.push_back(str.Atof());
3233 cerr << endl <<
">> **ERROR** in line " << i <<
". Temp. entry doesn't seem to be a float: " << str.Data() << endl;
3249 if ((fCalibData.GetNoOfPoints() == unit.size()) && (fCalibData.GetNoOfPoints() == temp.size())) {
3250 fCalibData.SetValid(
true);
3251 for (UInt_t i=0; i<unit.size(); i++) {
3252 fCalibData.AddMeasured(unit[unit.size()-i-1]);
3253 fCalibData.AddTemp(temp[unit.size()-i-1]);
3256 cerr << endl <<
">> **ERROR** Found " << fCalibData.GetMeasuredSize() <<
" points, file claims " << fCalibData.GetNoOfPoints() <<
" should be present!" << endl;
virtual Int_t GetSensorType(UInt_t sensorIdx)
virtual Double_t GetPressure(UInt_t idx)
virtual void SetRawDataSensorType(UInt_t type, UInt_t idx)
virtual void DoDrawCalibData()
virtual void AddHeaterOutput(Double_t heaterOutput)
virtual void AddSetPointTemp(Double_t setPoint)
virtual void SetDataFormat(UInt_t ival)
virtual TString GetRawDataCh(UInt_t idx)
virtual UInt_t GetTime(UInt_t idx)
virtual void AddDateTime(TDatime *dt)
virtual UInt_t GetRawDataSensorType(UInt_t idx)
virtual Double_t GetTemp(UInt_t idx)
virtual TString GetSensorName(UInt_t sensorIdx)
virtual Double_t GetHeaterRange(UInt_t idx)
virtual void SetCanvas(TGCanvas *canvas)
virtual Int_t GetDataFormat()
virtual void DoTabSelected(Int_t id)
virtual void DoCalibration()
virtual Double_t GetTempMeasured(UInt_t idx)
virtual Double_t GetHeaterOutput(UInt_t idx)
virtual void DoDrawWithErrors()
virtual void AddPressure(Double_t pressure)
virtual TString GetUnits(UInt_t idx)
virtual void SetCtrlCh(const TString &str)
virtual void AddTempMeasured(Double_t temp)
virtual TString GetSerialNo(UInt_t sensorIdx)
virtual ~PDrawMeanRawData()
virtual Int_t GetCh(UInt_t sensorIdx)
virtual ~PDrawCalibData()
virtual Double_t GetBH1Flow(UInt_t idx)
virtual ~PTempCalibSensors()
virtual Double_t GetRawData(UInt_t ch, UInt_t idx)
virtual UInt_t UpdateHeaderInfo(vector< TString > &rawData, UInt_t idx)
virtual void AddBH1Flow(Double_t bh1Flow)
virtual void SetNoOfSensors(Long_t)
virtual Int_t GetDataFormat(UInt_t sensorIdx)
virtual void LoadCalibData(const char *filename)
virtual void NoOfThermoCalibChanged(Long_t)
virtual Double_t GetMeasured(UInt_t idx)
virtual void AddHeaterRange(Double_t heaterRange)
virtual void AddRawData(Double_t data, UInt_t ch)
virtual void TypeChanged(Int_t)
virtual void CloseWindow()
virtual void SetRawDataCh(const TString &str, UInt_t idx)
virtual Int_t MapChNo(UInt_t chNo)
virtual void LoadRawData(const char *filename)
#define TCG_NO_OF_RAW_DATA_CH
virtual Double_t GetSetPointTemp(UInt_t idx)
virtual void SetTempCoeff(UInt_t ival)
virtual void DoDrawRawData()