298 str = *fMusrT0Data.GetRawRunData(fMusrT0Data.GetAddRunIdx())->GetRunName() + TString(
" : ");
299 str += fMusrT0Data.GetHistoNo(fMusrT0Data.GetHistoNoIdx());
300 if (fMusrT0Data.GetDetectorTag() == PMUSRT0_FORWARD)
304 str +=
", msr runNo = ";
305 str += fMusrT0Data.GetRunNo()+1;
309 PRawRunData *rawRunData = fMusrT0Data.GetRawRunData(fMusrT0Data.GetAddRunIdx());
310 if (rawRunData == nullptr) {
315 if (!rawRunData->IsPresent(histoNo)) {
316 std::cerr << std::endl <<
">> PMusrT0::PMusrT0: **ERROR** found histogram number " << histoNo+1 <<
" which is NOT present in the data file.";
317 std::cerr << std::endl <<
">> Please try to fix this first ..." << std::endl;
321 Int_t noOfBins = rawRunData->GetDataBin(histoNo)->size();
322 Double_t start = -0.5;
323 Double_t end = noOfBins - 0.5;
324 fHisto = std::make_unique<TH1F>(
"fHisto", str.Data(), noOfBins, start, end);
325 fHisto->SetMarkerStyle(21);
326 fHisto->SetMarkerSize(0.5);
327 fHisto->SetMarkerColor(TColor::GetColor(0,0,0));
329 Double_t maxVal = 0.0;
331 for (UInt_t i=0; i<rawRunData->GetDataBin(histoNo)->size(); i++) {
332 fHisto->SetBinContent(i+1, rawRunData->GetDataBin(histoNo)->at(i));
333 if (rawRunData->GetDataBin(histoNo)->at(i) > maxVal) {
334 maxVal = rawRunData->GetDataBin(histoNo)->at(i);
339 str = *fMusrT0Data.GetRawRunData(0)->GetRunName() + TString(
" : ");
341 str +=
" forward grouped and runs added";
343 str +=
" backward grouped and runs added";
344 str +=
", msr runNo = ";
345 str += fMusrT0Data.GetRunNo()+1;
348 PRawRunData *rawRunData = fMusrT0Data.GetRawRunData(0);
349 if (rawRunData ==
nullptr) {
355 Int_t histoNo = fMusrT0Data.GetHistoNo(0);
356 Int_t noOfBins = rawRunData->
GetDataBin(histoNo)->size();
357 Double_t start = -0.5;
358 Double_t end = noOfBins - 0.5;
359 fHisto = std::make_unique<TH1F>(
"fHisto", str.Data(), noOfBins, start, end);
360 fHisto->SetMarkerStyle(21);
361 fHisto->SetMarkerSize(0.5);
362 fHisto->SetMarkerColor(TColor::GetColor(0,0,0));
371 if (!fMusrT0Data.IsSingleHisto())
375 t00 = fMusrT0Data.GetT0Bin(0);
377 t00 = fMusrT0Data.GetT0Bin(1);
380 if ((fMusrT0Data.GetRawRunDataSize() > 1) && (fMusrT0Data.GetHistoNoSize() > 1)) {
382 for (Int_t i=0; i<noOfBins; i++) {
386 for (UInt_t k=0; k<fMusrT0Data.GetHistoNoSize(); k++) {
388 histoNo = fMusrT0Data.GetHistoNo(k);
392 t0 = fMusrT0Data.GetT0Bin(factor*k);
394 t0 = fMusrT0Data.GetT0Bin(factor*k+1);
397 rawRunData = fMusrT0Data.GetRawRunData(0);
400 if ((i+t0-t00 > 0) && (i+t0-t00 <
static_cast<Int_t
>(rawRunData->
GetDataBin(histoNo)->size())))
401 dval += rawRunData->
GetDataBin(histoNo)->at(i+t0-t00);
403 for (UInt_t j=1; j<fMusrT0Data.GetRawRunDataSize(); j++) {
405 rawRunData = fMusrT0Data.GetRawRunData(j);
409 t0 = fMusrT0Data.GetAddT0Bin(j-1, factor*k);
411 t0 = fMusrT0Data.GetAddT0Bin(j-1, factor*k+1);
414 if ((i+t0-t00 > 0) && (i+t0-t00 <
static_cast<Int_t
>(rawRunData->
GetDataBin(histoNo)->size())))
415 dval += rawRunData->
GetDataBin(histoNo)->at(i+t0-t00);
419 fHisto->SetBinContent(i+1, dval);
422 }
else if (fMusrT0Data.GetRawRunDataSize() > 1) {
424 for (Int_t i=0; i<noOfBins; i++) {
428 histoNo = fMusrT0Data.GetHistoNo(0);
432 t0 = fMusrT0Data.GetT0Bin(0);
434 t0 = fMusrT0Data.GetT0Bin(1);
437 rawRunData = fMusrT0Data.GetRawRunData(0);
440 if ((i+t0-t00 > 0) && (i+t0-t00 <
static_cast<Int_t
>(rawRunData->
GetDataBin(histoNo)->size())))
441 dval += rawRunData->
GetDataBin(histoNo)->at(i+t0-t00);
443 for (UInt_t j=1; j<fMusrT0Data.GetRawRunDataSize(); j++) {
446 rawRunData = fMusrT0Data.GetRawRunData(j);
450 t0 = fMusrT0Data.GetAddT0Bin(j-1, 0);
452 t0 = fMusrT0Data.GetAddT0Bin(j-1, 1);
455 if ((i+t0-t00 > 0) && (i+t0-t00 <
static_cast<Int_t
>(rawRunData->
GetDataBin(histoNo)->size())))
456 dval += rawRunData->
GetDataBin(histoNo)->at(i+t0-t00);
459 fHisto->SetBinContent(i+1, dval);
462 }
else if (fMusrT0Data.GetHistoNoSize() > 1) {
464 for (Int_t i=0; i<noOfBins; i++) {
469 rawRunData = fMusrT0Data.GetRawRunData(0);
471 for (UInt_t k=0; k<fMusrT0Data.GetHistoNoSize(); k++) {
473 histoNo = fMusrT0Data.GetHistoNo(k);
477 t0 = fMusrT0Data.GetT0Bin(factor*k);
479 t0 = fMusrT0Data.GetT0Bin(factor*k+1);
482 if ((i+t0-t00 > 0) && (i+t0-t00 <
static_cast<Int_t
>(rawRunData->
GetDataBin(histoNo)->size())))
483 dval += rawRunData->
GetDataBin(histoNo)->at(i+t0-t00);
487 fHisto->SetBinContent(i+1, dval);
494 fMainCanvas = std::make_unique<TCanvas>(
"fMainCanvas", str);
495 fMainCanvas->SetFillColor(TColor::GetColor(255,255,255));
500 fMainCanvas->Connect(
"ProcessedEvent(Int_t,Int_t,Int_t,TObject*)",
"PMusrT0",
501 this,
"HandleCmdKey(Int_t,Int_t,Int_t,TObject*)");
502 fMainCanvas->Connect(
"Closed()",
"PMusrT0",
this,
"Quit()");
505 fDataAndBkgEnabled =
true;
507 fDataAndBkgEnabled =
false;
515 fHisto->SetStats(kFALSE);
518 fHisto->Draw(
"p0 9 hist");
521 str =
"please set t0 bin only.";
522 fToDoInfo = std::make_unique<TLatex>();
523 fToDoInfo->SetTextFont(51);
524 fToDoInfo->SetTextSize(0.030);
525 fToDoInfo->SetLineWidth(2);
526 fToDoInfo->SetNDC(kTRUE);
527 fToDoInfo->DrawLatex(0.1, 0.91, str.Data());
530 str =
"please set data and bkg range.";
531 fToDoInfo = std::make_unique<TLatex>();
532 fToDoInfo->SetTextFont(51);
533 fToDoInfo->SetTextSize(0.030);
534 fToDoInfo->SetLineWidth(2);
535 fToDoInfo->SetNDC(kTRUE);
536 fToDoInfo->DrawLatex(0.1, 0.91, str.Data());
759 fData = std::make_unique<TH1F>(
"fData",
"fData", noOfBins, start, end);
760 fData->SetMarkerStyle(21);
761 fData->SetMarkerSize(0.5);
762 fData->SetMarkerColor(TColor::GetColor(0,0,255));
764 for (Int_t i=0; i<noOfBins; i++) {
767 fData->Draw(
"p0 9 hist same");
787 fBkg = std::make_unique<TH1F>(
"fBkg",
"fBkg", noOfBins, start, end);
788 fBkg->SetMarkerStyle(21);
789 fBkg->SetMarkerSize(0.5);
790 fBkg->SetMarkerColor(TColor::GetColor(255,0,0));
792 for (Int_t i=0; i<noOfBins; i++) {
795 fBkg->Draw(
"p0 9 hist same");
798 Double_t max =
fHisto->GetMaximum();