179Int_t
main(Int_t argc, Char_t *argv[])
181 Bool_t show_syntax =
false;
183 Bool_t success =
true;
184 Char_t filename[1024];
185 Bool_t getT0FromPromptPeak =
false;
186 Bool_t firstGoodBinOffsetPresent =
false;
187 Int_t firstGoodBinOffset = 0;
197 const char *dsp = gSystem->GetDynamicPath();
198 if (strstr(dsp,
"/usr/local/lib") ==
nullptr)
199 gSystem->AddDynamicPath(
"/usr/local/lib");
201 memset(filename,
'\0',
sizeof(filename));
202 for (
int i=1; i<argc; i++) {
203 if (!strcmp(argv[i],
"--version")) {
206 std::cout << std::endl <<
"musrt0 version: " << PACKAGE_VERSION <<
", git-branch: " << GIT_BRANCH <<
", git-rev: " << GIT_CURRENT_SHA1 <<
" (" << BUILD_TYPE <<
"), ROOT version: " << ROOT_VERSION_USED << std::endl << std::endl;
208 std::cout << std::endl <<
"musrt0 version: " << PACKAGE_VERSION <<
" (" << BUILD_TYPE <<
"), ROOT version: " << ROOT_VERSION_USED << std::endl << std::endl;
212 std::cout << std::endl <<
"musrt0 git-branch: " << GIT_BRANCH <<
", git-rev: " << GIT_CURRENT_SHA1 << std::endl << std::endl;
214 std::cout << std::endl <<
"musrt0 version: unknown." << std::endl << std::endl;
218 }
else if (!strcmp(argv[i],
"--help")) {
221 }
else if (!strcmp(argv[i],
"--show-dynamic-path")) {
222 std::cout << std::endl <<
"musrt0: internal dynamic search paths for shared libraries/root dictionaries:";
223 std::cout << std::endl <<
" '" << gSystem->GetDynamicPath() <<
"'" << std::endl << std::endl;
225 }
else if (strstr(argv[i],
".msr")) {
226 if (strlen(filename) == 0) {
227 strncpy(filename, argv[i],
sizeof(filename));
229 std::cout << std::endl <<
"**ERROR** only one file name allowed." << std::endl;
233 }
else if (!strcmp(argv[i],
"--getT0FromPromptPeak") || !strcmp(argv[i],
"-g")) {
234 getT0FromPromptPeak =
true;
236 TString offset(argv[i+1]);
237 if (offset.IsFloat()) {
238 firstGoodBinOffsetPresent =
true;
239 firstGoodBinOffset = offset.Atof();
243 }
else if (!strcmp(argv[i],
"--timeout")) {
245 TString numStr(argv[i+1]);
246 if (numStr.IsDigit()) {
249 std::cout << std::endl <<
"**ERROR** timeout '" << argv[i+1] <<
"' is not a number" << std::endl;
255 std::cout << std::endl <<
"**ERROR** no timeout given." << std::endl;
265 if (strlen(filename) == 0) {
266 std::cout << std::endl <<
"**ERROR** msr-file missing!" << std::endl;
277 std::unique_ptr<TSAXParser> saxParser = std::make_unique<TSAXParser>();
278 std::unique_ptr<PStartupHandler> startupHandler = std::make_unique<PStartupHandler>();
279 if (!startupHandler->StartupFileFound()) {
280 std::cerr << std::endl <<
">> musrt0 **WARNING** couldn't find " << startupHandler->GetStartupFilePath().Data();
281 std::cerr << std::endl;
284 saxParser->ConnectToHandler(
"PStartupHandler", startupHandler.get());
291 std::cerr << std::endl <<
">> musrt0 **WARNING** Reading/parsing musrfit_startup.xml failed.";
292 std::cerr << std::endl;
297 std::unique_ptr<PMsrHandler> msrHandler = std::make_unique<PMsrHandler>(filename);
298 status = msrHandler->ReadMsrFile();
302 std::cout << std::endl <<
">> musrt0 **ERROR** couldn't find '" << filename <<
"'" << std::endl << std::endl;
305 std::cout << std::endl <<
"**SYNTAX ERROR** in file " << filename <<
", full stop here." << std::endl << std::endl;
308 std::cout << std::endl <<
"**UNKNOWN ERROR** when trying to read the msr-file" << std::endl << std::endl;
313 msrHandler->CopyMsrStatisticBlock();
316 PMsrRunList *runList = msrHandler->GetMsrRunList();
317 for (UInt_t i=0; i<runList->size(); i++) {
318 fitType = runList->at(i).GetFitType();
320 fitType = msrHandler->GetMsrGlobal()->GetFitType();
323 std::cout << std::endl <<
">> musrt0 **ERROR** t0 setting for NonMusr fit type doesn't make any sense, will quit ..." << std::endl;
330 std::unique_ptr<PRunDataHandler> dataHandler;
333 dataHandler = std::make_unique<PRunDataHandler>(msrHandler.get(), startupHandler->GetDataPathList());
335 dataHandler = std::make_unique<PRunDataHandler>(msrHandler.get());
337 dataHandler->ReadData();
339 success = dataHandler->IsAllDataAvailable();
341 std::cout << std::endl <<
">> musrt0 **ERROR** Couldn't read all data files, will quit ..." << std::endl;
345 if (getT0FromPromptPeak && success) {
349 TString *runName =
nullptr;
353 for (UInt_t i=0; i<runList->size(); i++) {
354 fitType = runList->at(i).GetFitType();
356 fitType = msrHandler->GetMsrGlobal()->GetFitType();
361 if ((runList->at(i).GetRunNameSize() == 1) && (runList->at(i).GetForwardHistoNoSize() == 1)) {
363 histoNo = runList->at(i).GetForwardHistoNo();
364 runName = runList->at(i).GetRunName();
366 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
368 runList->at(i).SetT0Bin(t0Bin, 0);
370 if (firstGoodBinOffsetPresent) {
371 start = t0Bin + firstGoodBinOffset;
372 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
373 runList->at(i).SetDataRange(start, 0);
374 runList->at(i).SetDataRange(end, 1);
376 }
else if ((runList->at(i).GetRunNameSize() > 1) && (runList->at(i).GetForwardHistoNoSize() == 1)) {
378 histoNo = runList->at(i).GetForwardHistoNo();
379 runName = runList->at(i).GetRunName();
381 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
383 runList->at(i).SetT0Bin(t0Bin, 0);
385 if (firstGoodBinOffsetPresent) {
386 start = t0Bin + firstGoodBinOffset;
387 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
388 runList->at(i).SetDataRange(start, 0);
389 runList->at(i).SetDataRange(end, 1);
392 for (UInt_t j=1; j<runList->at(i).GetRunNameSize(); j++) {
393 runName = runList->at(i).GetRunName(j);
395 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
397 runList->at(i).SetAddT0Bin(t0Bin, j-1, 0);
399 }
else if ((runList->at(i).GetRunNameSize() == 1) && (runList->at(i).GetForwardHistoNoSize() > 1)) {
400 for (UInt_t j=0; j<runList->at(i).GetForwardHistoNoSize(); j++) {
402 histoNo = runList->at(i).GetForwardHistoNo(j);
403 runName = runList->at(i).GetRunName();
405 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
407 runList->at(i).SetT0Bin(t0Bin, j);
408 if (firstGoodBinOffsetPresent && (j==0)) {
409 start = t0Bin + firstGoodBinOffset;
410 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
411 runList->at(i).SetDataRange(start, 0);
412 runList->at(i).SetDataRange(end, 1);
416 for (UInt_t j=0; j<runList->at(i).GetForwardHistoNoSize(); j++) {
418 histoNo = runList->at(i).GetForwardHistoNo(j);
419 runName = runList->at(i).GetRunName();
421 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
423 runList->at(i).SetT0Bin(t0Bin, j);
424 if (firstGoodBinOffsetPresent && (j==0)) {
425 start = t0Bin + firstGoodBinOffset;
426 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
427 runList->at(i).SetDataRange(start, 0);
428 runList->at(i).SetDataRange(end, 1);
431 for (UInt_t k=1; k<runList->at(i).GetRunNameSize(); k++) {
432 runName = runList->at(i).GetRunName(k);
434 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
436 runList->at(i).SetAddT0Bin(t0Bin, k-1, j);
442 if ((runList->at(i).GetRunNameSize() == 1) && (runList->at(i).GetForwardHistoNoSize() == 1)) {
445 histoNo = runList->at(i).GetForwardHistoNo();
446 runName = runList->at(i).GetRunName();
448 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
450 runList->at(i).SetT0Bin(t0Bin, 0);
452 if (firstGoodBinOffsetPresent) {
453 start = t0Bin + firstGoodBinOffset;
454 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
455 runList->at(i).SetDataRange(start, 0);
456 runList->at(i).SetDataRange(end, 1);
460 histoNo = runList->at(i).GetBackwardHistoNo();
461 runName = runList->at(i).GetRunName();
463 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
465 runList->at(i).SetT0Bin(t0Bin, 1);
467 if (firstGoodBinOffsetPresent) {
468 start = t0Bin + firstGoodBinOffset;
469 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
470 runList->at(i).SetDataRange(start, 2);
471 runList->at(i).SetDataRange(end, 3);
473 }
else if ((runList->at(i).GetRunNameSize() > 1) && (runList->at(i).GetForwardHistoNoSize() == 1)) {
476 histoNo = runList->at(i).GetForwardHistoNo();
477 runName = runList->at(i).GetRunName();
479 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
481 runList->at(i).SetT0Bin(t0Bin, 0);
483 if (firstGoodBinOffsetPresent) {
484 start = t0Bin + firstGoodBinOffset;
485 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
486 runList->at(i).SetDataRange(start, 0);
487 runList->at(i).SetDataRange(end, 1);
490 for (UInt_t j=1; j<runList->at(i).GetRunNameSize(); j++) {
491 runName = runList->at(i).GetRunName(j);
493 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
495 runList->at(i).SetAddT0Bin(t0Bin, j-1, 0);
499 histoNo = runList->at(i).GetBackwardHistoNo();
500 runName = runList->at(i).GetRunName();
502 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
504 runList->at(i).SetT0Bin(t0Bin, 1);
506 if (firstGoodBinOffsetPresent) {
507 start = t0Bin + firstGoodBinOffset;
508 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
509 runList->at(i).SetDataRange(start, 2);
510 runList->at(i).SetDataRange(end, 3);
513 for (UInt_t j=1; j<runList->at(i).GetRunNameSize(); j++) {
514 runName = runList->at(i).GetRunName(j);
516 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
518 runList->at(i).SetAddT0Bin(t0Bin, j-1, 1);
520 }
else if ((runList->at(i).GetRunNameSize() == 1) && (runList->at(i).GetForwardHistoNoSize() > 1)) {
522 for (UInt_t j=0; j<runList->at(i).GetForwardHistoNoSize(); j++) {
524 histoNo = runList->at(i).GetForwardHistoNo(j);
525 runName = runList->at(i).GetRunName();
527 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
529 runList->at(i).SetT0Bin(t0Bin, 2*j);
530 if (firstGoodBinOffsetPresent && (j==0)) {
531 start = t0Bin + firstGoodBinOffset;
532 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
533 runList->at(i).SetDataRange(start, 0);
534 runList->at(i).SetDataRange(end, 1);
538 for (UInt_t j=0; j<runList->at(i).GetBackwardHistoNoSize(); j++) {
540 histoNo = runList->at(i).GetBackwardHistoNo(j);
541 runName = runList->at(i).GetRunName();
543 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
545 runList->at(i).SetT0Bin(t0Bin, 2*j+1);
546 if (firstGoodBinOffsetPresent && (j==0)) {
547 start = t0Bin + firstGoodBinOffset;
548 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
549 runList->at(i).SetDataRange(start, 2);
550 runList->at(i).SetDataRange(end, 3);
555 for (UInt_t j=0; j<runList->at(i).GetForwardHistoNoSize(); j++) {
557 histoNo = runList->at(i).GetForwardHistoNo(j);
558 runName = runList->at(i).GetRunName();
560 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
562 runList->at(i).SetT0Bin(t0Bin, 2*j);
563 if (firstGoodBinOffsetPresent && (j==0)) {
564 start = t0Bin + firstGoodBinOffset;
565 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
566 runList->at(i).SetDataRange(start, 0);
567 runList->at(i).SetDataRange(end, 1);
570 for (UInt_t k=1; k<runList->at(i).GetRunNameSize(); k++) {
571 runName = runList->at(i).GetRunName(k);
573 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
575 runList->at(i).SetAddT0Bin(t0Bin, k-1, 2*j);
579 for (UInt_t j=0; j<runList->at(i).GetBackwardHistoNoSize(); j++) {
581 histoNo = runList->at(i).GetBackwardHistoNo(j);
582 runName = runList->at(i).GetRunName();
584 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
586 runList->at(i).SetT0Bin(t0Bin, 2*j+1);
587 if (firstGoodBinOffsetPresent && (j==0)) {
588 start = t0Bin + firstGoodBinOffset;
589 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
590 runList->at(i).SetDataRange(start, 2);
591 runList->at(i).SetDataRange(end, 3);
594 for (UInt_t k=1; k<runList->at(i).GetRunNameSize(); k++) {
595 runName = runList->at(i).GetRunName(k);
597 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
599 runList->at(i).SetAddT0Bin(t0Bin, k-1, 2*j+1);
605 if ((runList->at(i).GetRunNameSize() == 1) && (runList->at(i).GetForwardHistoNoSize() == 1)) {
608 histoNo = runList->at(i).GetForwardHistoNo();
609 runName = runList->at(i).GetRunName();
611 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
613 runList->at(i).SetT0Bin(t0Bin, 0);
615 if (firstGoodBinOffsetPresent) {
616 start = t0Bin + firstGoodBinOffset;
617 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
618 runList->at(i).SetDataRange(start, 0);
619 runList->at(i).SetDataRange(end, 1);
623 histoNo = runList->at(i).GetBackwardHistoNo();
624 runName = runList->at(i).GetRunName();
626 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
628 runList->at(i).SetT0Bin(t0Bin, 1);
630 if (firstGoodBinOffsetPresent) {
631 start = t0Bin + firstGoodBinOffset;
632 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
633 runList->at(i).SetDataRange(start, 2);
634 runList->at(i).SetDataRange(end, 3);
636 }
else if ((runList->at(i).GetRunNameSize() > 1) && (runList->at(i).GetForwardHistoNoSize() == 1)) {
639 histoNo = runList->at(i).GetForwardHistoNo();
640 runName = runList->at(i).GetRunName();
642 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
644 runList->at(i).SetT0Bin(t0Bin, 0);
646 if (firstGoodBinOffsetPresent) {
647 start = t0Bin + firstGoodBinOffset;
648 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
649 runList->at(i).SetDataRange(start, 0);
650 runList->at(i).SetDataRange(end, 1);
653 for (UInt_t j=1; j<runList->at(i).GetRunNameSize(); j++) {
654 runName = runList->at(i).GetRunName(j);
656 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
658 runList->at(i).SetAddT0Bin(t0Bin, j-1, 0);
662 histoNo = runList->at(i).GetBackwardHistoNo();
663 runName = runList->at(i).GetRunName();
665 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
667 runList->at(i).SetT0Bin(t0Bin, 1);
669 if (firstGoodBinOffsetPresent) {
670 start = t0Bin + firstGoodBinOffset;
671 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
672 runList->at(i).SetDataRange(start, 2);
673 runList->at(i).SetDataRange(end, 3);
676 for (UInt_t j=1; j<runList->at(i).GetRunNameSize(); j++) {
677 runName = runList->at(i).GetRunName(j);
679 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
681 runList->at(i).SetAddT0Bin(t0Bin, j-1, 1);
683 }
else if ((runList->at(i).GetRunNameSize() == 1) && (runList->at(i).GetForwardHistoNoSize() > 1)) {
685 for (UInt_t j=0; j<runList->at(i).GetForwardHistoNoSize(); j++) {
687 histoNo = runList->at(i).GetForwardHistoNo(j);
688 runName = runList->at(i).GetRunName();
690 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
692 runList->at(i).SetT0Bin(t0Bin, 2*j);
693 if (firstGoodBinOffsetPresent && (j==0)) {
694 start = t0Bin + firstGoodBinOffset;
695 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
696 runList->at(i).SetDataRange(start, 0);
697 runList->at(i).SetDataRange(end, 1);
701 for (UInt_t j=0; j<runList->at(i).GetBackwardHistoNoSize(); j++) {
703 histoNo = runList->at(i).GetBackwardHistoNo(j);
704 runName = runList->at(i).GetRunName();
706 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
708 runList->at(i).SetT0Bin(t0Bin, 2*j+1);
709 if (firstGoodBinOffsetPresent && (j==0)) {
710 start = t0Bin + firstGoodBinOffset;
711 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
712 runList->at(i).SetDataRange(start, 2);
713 runList->at(i).SetDataRange(end, 3);
718 for (UInt_t j=0; j<runList->at(i).GetForwardHistoNoSize(); j++) {
720 histoNo = runList->at(i).GetForwardHistoNo(j);
721 runName = runList->at(i).GetRunName();
723 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
725 runList->at(i).SetT0Bin(t0Bin, 2*j);
726 if (firstGoodBinOffsetPresent && (j==0)) {
727 start = t0Bin + firstGoodBinOffset;
728 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
729 runList->at(i).SetDataRange(start, 0);
730 runList->at(i).SetDataRange(end, 1);
733 for (UInt_t k=1; k<runList->at(i).GetRunNameSize(); k++) {
734 runName = runList->at(i).GetRunName(k);
736 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
738 runList->at(i).SetAddT0Bin(t0Bin, k-1, 2*j);
742 for (UInt_t j=0; j<runList->at(i).GetBackwardHistoNoSize(); j++) {
744 histoNo = runList->at(i).GetBackwardHistoNo(j);
745 runName = runList->at(i).GetRunName();
747 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
749 runList->at(i).SetT0Bin(t0Bin, 2*j+1);
750 if (firstGoodBinOffsetPresent && (j==0)) {
751 start = t0Bin + firstGoodBinOffset;
752 end = dataHandler->GetRunData(*runName)->GetDataBin(histoNo)->size();
753 runList->at(i).SetDataRange(start, 2);
754 runList->at(i).SetDataRange(end, 3);
757 for (UInt_t k=1; k<runList->at(i).GetRunNameSize(); k++) {
758 runName = runList->at(i).GetRunName(k);
760 t0Bin =
musrt0_getMaxBin(dataHandler->GetRunData(*runName)->GetDataBin(histoNo));
762 runList->at(i).SetAddT0Bin(t0Bin, k-1, 2*j+1);
785 TApplication app(
"App",
nullptr,
nullptr);
788 std::vector<PRawRunData*> rawRunData;
792 for (UInt_t i=0; i<runList->size(); i++) {
793 fitType = runList->at(i).GetFitType();
795 fitType = msrHandler->GetMsrGlobal()->GetFitType();
801 if ((runList->at(i).GetRunNameSize() == 1) && (runList->at(i).GetForwardHistoNoSize() == 1)) {
806 rawRunData.push_back(dataHandler->GetRunData(*(runList->at(i).GetRunName(0))));
809 if (rawRunData[0]->IsPresent(runList->at(i).GetForwardHistoNo(0))) {
810 musrT0Data.
SetT0BinData((UInt_t)rawRunData[0]->GetT0Bin(runList->at(i).GetForwardHistoNo(0)));
815 forwardHistos.clear();
816 forwardHistos.push_back(runList->at(i).GetForwardHistoNo(0));
825 if ((runList->at(i).GetRunNameSize() > 1) && (runList->at(i).GetForwardHistoNoSize() == 1)) {
831 forwardHistos.clear();
832 forwardHistos.push_back(runList->at(i).GetForwardHistoNo(0));
837 for (UInt_t j=0; j<runList->at(i).GetRunNameSize(); j++)
838 rawRunData.push_back(dataHandler->GetRunData(*(runList->at(i).GetRunName(j))));
840 for (UInt_t j=0; j<runList->at(i).GetRunNameSize(); j++) {
842 if (rawRunData[j]->IsPresent(runList->at(i).GetForwardHistoNo(0))) {
843 musrT0Data.
SetT0BinData((UInt_t)rawRunData[j]->GetT0Bin(runList->at(i).GetForwardHistoNo(0)));
851 }
else if ((runList->at(i).GetRunNameSize() == 1) && (runList->at(i).GetForwardHistoNoSize() > 1)) {
856 forwardHistos.clear();
857 for (UInt_t j=0; j<runList->at(i).GetForwardHistoNoSize(); j++)
858 forwardHistos.push_back(runList->at(i).GetForwardHistoNo(j));
863 rawRunData.push_back(dataHandler->GetRunData(*(runList->at(i).GetRunName(0))));
866 for (UInt_t j=0; j<runList->at(i).GetForwardHistoNoSize(); j++) {
868 if (rawRunData[0]->IsPresent(runList->at(i).GetForwardHistoNo(j))) {
869 musrT0Data.
SetT0BinData((UInt_t)rawRunData[0]->GetT0Bin(runList->at(i).GetForwardHistoNo(j)));
882 forwardHistos.clear();
883 for (UInt_t j=0; j<runList->at(i).GetForwardHistoNoSize(); j++)
884 forwardHistos.push_back(runList->at(i).GetForwardHistoNo(j));
889 for (UInt_t j=0; j<runList->at(i).GetRunNameSize(); j++)
890 rawRunData.push_back(dataHandler->GetRunData(*(runList->at(i).GetRunName(j))));
892 for (UInt_t j=0; j<runList->at(i).GetRunNameSize(); j++) {
894 for (UInt_t k=0; k<runList->at(i).GetForwardHistoNoSize(); k++) {
896 if (rawRunData[j]->IsPresent(runList->at(i).GetForwardHistoNo(k))) {
897 musrT0Data.
SetT0BinData((UInt_t)rawRunData[j]->GetT0Bin(runList->at(i).GetForwardHistoNo(k)));
910 for (UInt_t j=0; j<runList->at(i).GetT0BinSize(); j++) {
911 musrT0Data.
SetT0Bin((UInt_t)runList->at(i).GetT0Bin(j), j);
912 for (UInt_t k=0; k<runList->at(i).GetAddT0BinEntries(); k++) {
913 musrT0Data.
SetAddT0Bin((UInt_t)runList->at(i).GetAddT0Bin(k, j), k, j);
924 if ((runList->at(i).GetRunNameSize() == 1) && (runList->at(i).GetForwardHistoNoSize() == 1)) {
929 rawRunData.push_back(dataHandler->GetRunData(*(runList->at(i).GetRunName(0))));
932 if (rawRunData[0]->IsPresent(runList->at(i).GetForwardHistoNo(0))) {
933 musrT0Data.
SetT0BinData((UInt_t)rawRunData[0]->GetT0Bin(runList->at(i).GetForwardHistoNo(0)));
938 forwardHistos.clear();
939 forwardHistos.push_back(runList->at(i).GetForwardHistoNo(0));
951 rawRunData.push_back(dataHandler->GetRunData(*(runList->at(i).GetRunName(0))));
954 if (rawRunData[0]->IsPresent(runList->at(i).GetForwardHistoNo(0))) {
955 musrT0Data.
SetT0BinData((UInt_t)rawRunData[0]->GetT0Bin(runList->at(i).GetForwardHistoNo(0)));
960 backwardHistos.clear();
961 backwardHistos.push_back(runList->at(i).GetBackwardHistoNo(0));
971 if ((runList->at(i).GetRunNameSize() > 1) && (runList->at(i).GetForwardHistoNoSize() == 1)) {
977 forwardHistos.clear();
978 forwardHistos.push_back(runList->at(i).GetForwardHistoNo(0));
983 for (UInt_t j=0; j<runList->at(i).GetRunNameSize(); j++)
984 rawRunData.push_back(dataHandler->GetRunData(*(runList->at(i).GetRunName(j))));
986 for (UInt_t j=0; j<runList->at(i).GetRunNameSize(); j++) {
988 if (rawRunData[j]->IsPresent(runList->at(i).GetForwardHistoNo(0))) {
989 musrT0Data.
SetT0BinData((UInt_t)rawRunData[j]->GetT0Bin(runList->at(i).GetForwardHistoNo(0)));
1002 backwardHistos.clear();
1003 backwardHistos.push_back(runList->at(i).GetBackwardHistoNo(0));
1008 for (UInt_t j=0; j<runList->at(i).GetRunNameSize(); j++)
1009 rawRunData.push_back(dataHandler->GetRunData(*(runList->at(i).GetRunName(j))));
1011 for (UInt_t j=0; j<runList->at(i).GetRunNameSize(); j++) {
1013 if (rawRunData[j]->IsPresent(runList->at(i).GetForwardHistoNo(0))) {
1014 musrT0Data.
SetT0BinData((UInt_t)rawRunData[j]->GetT0Bin(runList->at(i).GetForwardHistoNo(0)));
1022 }
else if ((runList->at(i).GetRunNameSize() == 1) && (runList->at(i).GetForwardHistoNoSize() > 1)) {
1027 forwardHistos.clear();
1028 for (UInt_t j=0; j<runList->at(i).GetForwardHistoNoSize(); j++)
1029 forwardHistos.push_back(runList->at(i).GetForwardHistoNo(j));
1034 rawRunData.push_back(dataHandler->GetRunData(*(runList->at(i).GetRunName(0))));
1037 for (UInt_t j=0; j<runList->at(i).GetForwardHistoNoSize(); j++) {
1039 if (rawRunData[0]->IsPresent(runList->at(i).GetForwardHistoNo(j))) {
1040 musrT0Data.
SetT0BinData((UInt_t)rawRunData[0]->GetT0Bin(runList->at(i).GetForwardHistoNo(j)));
1052 backwardHistos.clear();
1053 for (UInt_t j=0; j<runList->at(i).GetBackwardHistoNoSize(); j++)
1054 backwardHistos.push_back(runList->at(i).GetBackwardHistoNo(j));
1059 rawRunData.push_back(dataHandler->GetRunData(*(runList->at(i).GetRunName(0))));
1062 for (UInt_t j=0; j<runList->at(i).GetBackwardHistoNoSize(); j++) {
1064 if (rawRunData[0]->IsPresent(runList->at(i).GetForwardHistoNo(j))) {
1065 musrT0Data.
SetT0BinData((UInt_t)rawRunData[0]->GetT0Bin(runList->at(i).GetForwardHistoNo(j)));
1078 forwardHistos.clear();
1079 for (UInt_t j=0; j<runList->at(i).GetForwardHistoNoSize(); j++)
1080 forwardHistos.push_back(runList->at(i).GetForwardHistoNo(j));
1085 for (UInt_t j=0; j<runList->at(i).GetRunNameSize(); j++)
1086 rawRunData.push_back(dataHandler->GetRunData(*(runList->at(i).GetRunName(j))));
1088 for (UInt_t j=0; j<runList->at(i).GetRunNameSize(); j++) {
1090 for (UInt_t k=0; k<runList->at(i).GetForwardHistoNoSize(); k++) {
1092 if (rawRunData[j]->IsPresent(runList->at(i).GetForwardHistoNo(k))) {
1093 musrT0Data.
SetT0BinData((UInt_t)rawRunData[j]->GetT0Bin(runList->at(i).GetForwardHistoNo(k)));
1106 backwardHistos.clear();
1107 for (UInt_t j=0; j<runList->at(i).GetBackwardHistoNoSize(); j++)
1108 backwardHistos.push_back(runList->at(i).GetBackwardHistoNo(j));
1113 for (UInt_t j=0; j<runList->at(i).GetRunNameSize(); j++)
1114 rawRunData.push_back(dataHandler->GetRunData(*(runList->at(i).GetRunName(j))));
1116 for (UInt_t j=0; j<runList->at(i).GetRunNameSize(); j++) {
1118 for (UInt_t k=0; k<runList->at(i).GetBackwardHistoNoSize(); k++) {
1120 if (rawRunData[j]->IsPresent(runList->at(i).GetForwardHistoNo(k))) {
1121 musrT0Data.
SetT0BinData((UInt_t)rawRunData[j]->GetT0Bin(runList->at(i).GetForwardHistoNo(k)));
1134 for (UInt_t j=0; j<runList->at(i).GetT0BinSize(); j++) {
1135 musrT0Data.
SetT0Bin((UInt_t)runList->at(i).GetT0Bin(j), j);
1136 for (UInt_t k=0; k<runList->at(i).GetAddT0BinEntries(); k++) {
1137 musrT0Data.
SetAddT0Bin((UInt_t)runList->at(i).GetAddT0Bin(k, j), k, j);
1158 forwardHistos.clear();
1159 backwardHistos.clear();
1164 msrHandler->WriteMsrLogFile(
false);
1168 gSystem->CopyFile(filename,
"__temp.msr", kTRUE);
1170 TString fln = TString(filename);
1172 memset(ext,
'\0',
sizeof(ext));
1173 strncpy(ext,
".mlog",
sizeof(ext));
1174 fln.ReplaceAll(
".msr", 4, ext, strlen(ext));
1175 gSystem->CopyFile(fln.Data(), filename, kTRUE);
1177 gSystem->CopyFile(
"__temp.msr", fln.Data(), kTRUE);
1179 gSystem->Exec(
"rm __temp.msr");