304 str = *fMusrT0Data.GetRawRunData(fMusrT0Data.GetAddRunIdx())->GetRunName() + TString(
" : ");
305 str += fMusrT0Data.GetHistoNo(fMusrT0Data.GetHistoNoIdx());
306 if (fMusrT0Data.GetDetectorTag() == PMUSRT0_FORWARD)
310 str +=
", msr runNo = ";
311 str += fMusrT0Data.GetRunNo()+1;
315 PRawRunData *rawRunData = fMusrT0Data.GetRawRunData(fMusrT0Data.GetAddRunIdx());
316 if (rawRunData == nullptr) {
321 if (!rawRunData->IsPresent(histoNo)) {
322 std::cerr << std::endl <<
">> PMusrT0::PMusrT0: **ERROR** found histogram number " << histoNo+1 <<
" which is NOT present in the data file.";
323 std::cerr << std::endl <<
">> Please try to fix this first ..." << std::endl;
327 Int_t noOfBins = rawRunData->GetDataBin(histoNo)->size();
328 Double_t start = -0.5;
329 Double_t end = noOfBins - 0.5;
330 fHisto = std::make_unique<TH1F>(
"fHisto", str.Data(), noOfBins, start, end);
331 fHisto->SetMarkerStyle(21);
332 fHisto->SetMarkerSize(0.5);
333 fHisto->SetMarkerColor(TColor::GetColor(0,0,0));
335 Double_t maxVal = 0.0;
337 for (UInt_t i=0; i<rawRunData->GetDataBin(histoNo)->size(); i++) {
338 fHisto->SetBinContent(i+1, rawRunData->GetDataBin(histoNo)->at(i));
339 if (rawRunData->GetDataBin(histoNo)->at(i) > maxVal) {
340 maxVal = rawRunData->GetDataBin(histoNo)->at(i);
345 str = *fMusrT0Data.GetRawRunData(0)->GetRunName() + TString(
" : ");
347 str +=
" forward grouped and runs added";
349 str +=
" backward grouped and runs added";
350 str +=
", msr runNo = ";
351 str += fMusrT0Data.GetRunNo()+1;
354 PRawRunData *rawRunData = fMusrT0Data.GetRawRunData(0);
355 if (rawRunData ==
nullptr) {
361 Int_t histoNo = fMusrT0Data.GetHistoNo(0);
362 Int_t noOfBins = rawRunData->
GetDataBin(histoNo)->size();
363 Double_t start = -0.5;
364 Double_t end = noOfBins - 0.5;
365 fHisto = std::make_unique<TH1F>(
"fHisto", str.Data(), noOfBins, start, end);
366 fHisto->SetMarkerStyle(21);
367 fHisto->SetMarkerSize(0.5);
368 fHisto->SetMarkerColor(TColor::GetColor(0,0,0));
377 if (!fMusrT0Data.IsSingleHisto())
381 t00 = fMusrT0Data.GetT0Bin(0);
383 t00 = fMusrT0Data.GetT0Bin(1);
386 if ((fMusrT0Data.GetRawRunDataSize() > 1) && (fMusrT0Data.GetHistoNoSize() > 1)) {
388 for (Int_t i=0; i<noOfBins; i++) {
392 for (UInt_t k=0; k<fMusrT0Data.GetHistoNoSize(); k++) {
394 histoNo = fMusrT0Data.GetHistoNo(k);
398 t0 = fMusrT0Data.GetT0Bin(factor*k);
400 t0 = fMusrT0Data.GetT0Bin(factor*k+1);
403 rawRunData = fMusrT0Data.GetRawRunData(0);
406 if ((i+t0-t00 > 0) && (i+t0-t00 <
static_cast<Int_t
>(rawRunData->
GetDataBin(histoNo)->size())))
407 dval += rawRunData->
GetDataBin(histoNo)->at(i+t0-t00);
409 for (UInt_t j=1; j<fMusrT0Data.GetRawRunDataSize(); j++) {
411 rawRunData = fMusrT0Data.GetRawRunData(j);
415 t0 = fMusrT0Data.GetAddT0Bin(j-1, factor*k);
417 t0 = fMusrT0Data.GetAddT0Bin(j-1, factor*k+1);
420 if ((i+t0-t00 > 0) && (i+t0-t00 <
static_cast<Int_t
>(rawRunData->
GetDataBin(histoNo)->size())))
421 dval += rawRunData->
GetDataBin(histoNo)->at(i+t0-t00);
425 fHisto->SetBinContent(i+1, dval);
428 }
else if (fMusrT0Data.GetRawRunDataSize() > 1) {
430 for (Int_t i=0; i<noOfBins; i++) {
434 histoNo = fMusrT0Data.GetHistoNo(0);
438 t0 = fMusrT0Data.GetT0Bin(0);
440 t0 = fMusrT0Data.GetT0Bin(1);
443 rawRunData = fMusrT0Data.GetRawRunData(0);
446 if ((i+t0-t00 > 0) && (i+t0-t00 <
static_cast<Int_t
>(rawRunData->
GetDataBin(histoNo)->size())))
447 dval += rawRunData->
GetDataBin(histoNo)->at(i+t0-t00);
449 for (UInt_t j=1; j<fMusrT0Data.GetRawRunDataSize(); j++) {
452 rawRunData = fMusrT0Data.GetRawRunData(j);
456 t0 = fMusrT0Data.GetAddT0Bin(j-1, 0);
458 t0 = fMusrT0Data.GetAddT0Bin(j-1, 1);
461 if ((i+t0-t00 > 0) && (i+t0-t00 <
static_cast<Int_t
>(rawRunData->
GetDataBin(histoNo)->size())))
462 dval += rawRunData->
GetDataBin(histoNo)->at(i+t0-t00);
465 fHisto->SetBinContent(i+1, dval);
468 }
else if (fMusrT0Data.GetHistoNoSize() > 1) {
470 for (Int_t i=0; i<noOfBins; i++) {
475 rawRunData = fMusrT0Data.GetRawRunData(0);
477 for (UInt_t k=0; k<fMusrT0Data.GetHistoNoSize(); k++) {
479 histoNo = fMusrT0Data.GetHistoNo(k);
483 t0 = fMusrT0Data.GetT0Bin(factor*k);
485 t0 = fMusrT0Data.GetT0Bin(factor*k+1);
488 if ((i+t0-t00 > 0) && (i+t0-t00 <
static_cast<Int_t
>(rawRunData->
GetDataBin(histoNo)->size())))
489 dval += rawRunData->
GetDataBin(histoNo)->at(i+t0-t00);
493 fHisto->SetBinContent(i+1, dval);
500 fMainCanvas = std::make_unique<TCanvas>(
"fMainCanvas", str);
501 fMainCanvas->SetFillColor(TColor::GetColor(255,255,255));
504 TRootCanvas *imp =
dynamic_cast<TRootCanvas*
>(fMainCanvas->GetCanvasImp());
506 imp->SetIconPixmap(
const_cast<char**
>(musrt0_icon_xpm));
507 imp->SetClassHints(
"musrt0",
"musrt0");
512 SetMacDockIcon(musrt0_icon_png, musrt0_icon_png_len);
517 fMainCanvas->Connect(
"ProcessedEvent(Int_t,Int_t,Int_t,TObject*)",
"PMusrT0",
518 this,
"HandleCmdKey(Int_t,Int_t,Int_t,TObject*)");
519 fMainCanvas->Connect(
"Closed()",
"PMusrT0",
this,
"Quit()");
522 fDataAndBkgEnabled =
true;
524 fDataAndBkgEnabled =
false;
532 fHisto->SetStats(kFALSE);
535 fHisto->Draw(
"p0 9 hist");
538 str =
"please set t0 bin only.";
539 fToDoInfo = std::make_unique<TLatex>();
540 fToDoInfo->SetTextFont(51);
541 fToDoInfo->SetTextSize(0.030);
542 fToDoInfo->SetLineWidth(2);
543 fToDoInfo->SetNDC(kTRUE);
544 fToDoInfo->DrawLatex(0.1, 0.91, str.Data());
547 str =
"please set data and bkg range.";
548 fToDoInfo = std::make_unique<TLatex>();
549 fToDoInfo->SetTextFont(51);
550 fToDoInfo->SetTextSize(0.030);
551 fToDoInfo->SetLineWidth(2);
552 fToDoInfo->SetNDC(kTRUE);
553 fToDoInfo->DrawLatex(0.1, 0.91, str.Data());
776 fData = std::make_unique<TH1F>(
"fData",
"fData", noOfBins, start, end);
777 fData->SetMarkerStyle(21);
778 fData->SetMarkerSize(0.5);
779 fData->SetMarkerColor(TColor::GetColor(0,0,255));
781 for (Int_t i=0; i<noOfBins; i++) {
784 fData->Draw(
"p0 9 hist same");
804 fBkg = std::make_unique<TH1F>(
"fBkg",
"fBkg", noOfBins, start, end);
805 fBkg->SetMarkerStyle(21);
806 fBkg->SetMarkerSize(0.5);
807 fBkg->SetMarkerColor(TColor::GetColor(255,0,0));
809 for (Int_t i=0; i<noOfBins; i++) {
812 fBkg->Draw(
"p0 9 hist same");
815 Double_t max =
fHisto->GetMaximum();