added some more sanity checks for musrt0.

This commit is contained in:
2025-11-12 10:48:36 +01:00
parent 30a4f457cc
commit bc68107b4e

View File

@@ -146,6 +146,9 @@ Int_t musrt0_getMaxBin(const PDoubleVector *data)
Int_t maxBin = -1; Int_t maxBin = -1;
Double_t maxData = -999; Double_t maxData = -999;
if (data == nullptr)
return maxBin;
for (UInt_t i=0; i<data->size(); i++) { for (UInt_t i=0; i<data->size(); i++) {
if (data->at(i) > maxData) { if (data->at(i) > maxData) {
maxData = data->at(i); maxData = data->at(i);
@@ -221,7 +224,7 @@ Int_t main(Int_t argc, Char_t *argv[])
return PMUSR_SUCCESS; return PMUSR_SUCCESS;
} else if (strstr(argv[i], ".msr")) { // check for filename } else if (strstr(argv[i], ".msr")) { // check for filename
if (strlen(filename) == 0) { if (strlen(filename) == 0) {
strcpy(filename, argv[i]); strncpy(filename, argv[i], sizeof(filename));
} else { } else {
std::cout << std::endl << "**ERROR** only one file name allowed." << std::endl; std::cout << std::endl << "**ERROR** only one file name allowed." << std::endl;
show_syntax = true; show_syntax = true;
@@ -816,7 +819,7 @@ Int_t main(Int_t argc, Char_t *argv[])
musrT0Data.SetCmdTag(PMUSRT0_GET_T0_DATA_AND_BKG_RANGE); musrT0Data.SetCmdTag(PMUSRT0_GET_T0_DATA_AND_BKG_RANGE);
// execute cmd // execute cmd
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) { if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
exit(0); return 0;
} }
} else { } else {
if ((runList->at(i).GetRunNameSize() > 1) && (runList->at(i).GetForwardHistoNoSize() == 1)) { // addruns / no grouping if ((runList->at(i).GetRunNameSize() > 1) && (runList->at(i).GetForwardHistoNoSize() == 1)) { // addruns / no grouping
@@ -842,7 +845,7 @@ Int_t main(Int_t argc, Char_t *argv[])
// feed necessary data // feed necessary data
musrT0Data.SetAddRunIdx(j); // addruns musrT0Data.SetAddRunIdx(j); // addruns
if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) { if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) {
exit(0); return 0;
} }
} }
} else if ((runList->at(i).GetRunNameSize() == 1) && (runList->at(i).GetForwardHistoNoSize() > 1)) { // no addruns / grouping } else if ((runList->at(i).GetRunNameSize() == 1) && (runList->at(i).GetForwardHistoNoSize() > 1)) { // no addruns / grouping
@@ -868,7 +871,7 @@ Int_t main(Int_t argc, Char_t *argv[])
// feed necessary data // feed necessary data
musrT0Data.SetHistoNoIdx(j); musrT0Data.SetHistoNoIdx(j);
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) { if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
exit(0); return 0;
} }
} }
} else { // addruns / grouping } else { // addruns / grouping
@@ -896,7 +899,7 @@ Int_t main(Int_t argc, Char_t *argv[])
// feed necessary data // feed necessary data
musrT0Data.SetHistoNoIdx(k); musrT0Data.SetHistoNoIdx(k);
if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) { if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) {
exit(0); return 0;
} }
} }
} }
@@ -911,7 +914,7 @@ Int_t main(Int_t argc, Char_t *argv[])
} }
} }
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) { if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
exit(0); return 0;
} }
} }
break; break;
@@ -939,7 +942,7 @@ Int_t main(Int_t argc, Char_t *argv[])
musrT0Data.SetCmdTag(PMUSRT0_GET_T0_DATA_AND_BKG_RANGE); musrT0Data.SetCmdTag(PMUSRT0_GET_T0_DATA_AND_BKG_RANGE);
// execute cmd // execute cmd
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) { if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
exit(0); return 0;
} }
// feed necessary data backward // feed necessary data backward
musrT0Data.InitData(); musrT0Data.InitData();
@@ -961,7 +964,7 @@ Int_t main(Int_t argc, Char_t *argv[])
musrT0Data.SetCmdTag(PMUSRT0_GET_T0_DATA_AND_BKG_RANGE); musrT0Data.SetCmdTag(PMUSRT0_GET_T0_DATA_AND_BKG_RANGE);
// execute cmd // execute cmd
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) { if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
exit(0); return 0;
} }
} else { } else {
// get t0's // get t0's
@@ -988,7 +991,7 @@ Int_t main(Int_t argc, Char_t *argv[])
// feed necessary data // feed necessary data
musrT0Data.SetAddRunIdx(j); // addruns musrT0Data.SetAddRunIdx(j); // addruns
if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) { if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) {
exit(0); return 0;
} }
} }
// feed necessary backward data // feed necessary backward data
@@ -1013,7 +1016,7 @@ Int_t main(Int_t argc, Char_t *argv[])
// feed necessary data // feed necessary data
musrT0Data.SetAddRunIdx(j); // addruns musrT0Data.SetAddRunIdx(j); // addruns
if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) { if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) {
exit(0); return 0;
} }
} }
} else if ((runList->at(i).GetRunNameSize() == 1) && (runList->at(i).GetForwardHistoNoSize() > 1)) { // no addruns / grouping } else if ((runList->at(i).GetRunNameSize() == 1) && (runList->at(i).GetForwardHistoNoSize() > 1)) { // no addruns / grouping
@@ -1039,7 +1042,7 @@ Int_t main(Int_t argc, Char_t *argv[])
// feed necessary data // feed necessary data
musrT0Data.SetHistoNoIdx(j); musrT0Data.SetHistoNoIdx(j);
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) { if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
exit(0); return 0;
} }
} }
// feed necessary backward data // feed necessary backward data
@@ -1064,7 +1067,7 @@ Int_t main(Int_t argc, Char_t *argv[])
// feed necessary data // feed necessary data
musrT0Data.SetHistoNoIdx(j); musrT0Data.SetHistoNoIdx(j);
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) { if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
exit(0); return 0;
} }
} }
} else { // addruns / grouping } else { // addruns / grouping
@@ -1092,7 +1095,7 @@ Int_t main(Int_t argc, Char_t *argv[])
// feed necessary data // feed necessary data
musrT0Data.SetHistoNoIdx(k); musrT0Data.SetHistoNoIdx(k);
if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) { if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) {
exit(0); return 0;
} }
} }
} }
@@ -1120,7 +1123,7 @@ Int_t main(Int_t argc, Char_t *argv[])
// feed necessary data // feed necessary data
musrT0Data.SetHistoNoIdx(k); musrT0Data.SetHistoNoIdx(k);
if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) { if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) {
exit(0); return 0;
} }
} }
} }
@@ -1137,12 +1140,12 @@ Int_t main(Int_t argc, Char_t *argv[])
musrT0Data.SetHistoNo(forwardHistos); musrT0Data.SetHistoNo(forwardHistos);
musrT0Data.SetDetectorTag(PMUSRT0_FORWARD); musrT0Data.SetDetectorTag(PMUSRT0_FORWARD);
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) { if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
exit(0); return 0;
} }
musrT0Data.SetHistoNo(backwardHistos); musrT0Data.SetHistoNo(backwardHistos);
musrT0Data.SetDetectorTag(PMUSRT0_BACKWARD); musrT0Data.SetDetectorTag(PMUSRT0_BACKWARD);
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) { if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
exit(0); return 0;
} }
} }
break; break;
@@ -1166,7 +1169,8 @@ Int_t main(Int_t argc, Char_t *argv[])
// copy mlog-file -> msr-file // copy mlog-file -> msr-file
TString fln = TString(filename); TString fln = TString(filename);
Char_t ext[32]; Char_t ext[32];
strcpy(ext, ".mlog"); memset(ext, '\0', sizeof(ext));
strncpy(ext, ".mlog", sizeof(ext));
fln.ReplaceAll(".msr", 4, ext, strlen(ext)); fln.ReplaceAll(".msr", 4, ext, strlen(ext));
gSystem->CopyFile(fln.Data(), filename, kTRUE); gSystem->CopyFile(fln.Data(), filename, kTRUE);
// copy __temp.msr -> mlog-file // copy __temp.msr -> mlog-file