improved y-axis scaling for Fourier. Fix of wrong WARNING for use_fit_ranges

This commit is contained in:
nemu
2010-10-28 11:47:29 +00:00
parent e191844270
commit 622f656849
3 changed files with 71 additions and 3 deletions

View File

@ -22,6 +22,8 @@ NEW integration of a few external musrfit plug-ins into the standard build proce
NEW default estimates for 'data' and 'background' entries in RUN blocks NEW default estimates for 'data' and 'background' entries in RUN blocks
NEW directory with some msr- and data-files for quick testing of new musrfit installations NEW directory with some msr- and data-files for quick testing of new musrfit installations
NEW option to musrt0: the key 'T' will set the t0 cursor to the maximum of the histogram NEW option to musrt0: the key 'T' will set the t0 cursor to the maximum of the histogram
FIXED wrong WARNING message for use_fit_ranges
FIXED bug in event handling leading to crash for non-muSR when switching between view and difference view
FIXED chisq/maxLH lables in the statistics block are properly handled now (MUSR-148) FIXED chisq/maxLH lables in the statistics block are properly handled now (MUSR-148)
FIXED y-unzoom failure for musrt0 (MUSR-77) FIXED y-unzoom failure for musrt0 (MUSR-77)
FIXED fitting issue for boundaries none/none (MUSR-136) FIXED fitting issue for boundaries none/none (MUSR-136)
@ -50,6 +52,7 @@ FIXED warning messages
FIXED db data tag reading error FIXED db data tag reading error
FIXED usage of BOOST >= 1.38.0 FIXED usage of BOOST >= 1.38.0
FIXED the extraction of the time resolution for the mud data format, since MUD_getHistFsPerBin seems sometimes to return just crap. FIXED the extraction of the time resolution for the mud data format, since MUD_getHistFsPerBin seems sometimes to return just crap.
CHANGED improved y-range scaling for Fourier
CHANGED musredit: change into the msr-file directory before calling musrview. This is needed if userFcn's are using startup XMLs. CHANGED musredit: change into the msr-file directory before calling musrview. This is needed if userFcn's are using startup XMLs.
CHANGED musredit: improved file system watcher notification mechanism to prevent multiple user notifications. CHANGED musredit: improved file system watcher notification mechanism to prevent multiple user notifications.
CHANGED fit range decimal precision handling of PMsrHandler improved (MUSR-150 request). It is now CHANGED fit range decimal precision handling of PMsrHandler improved (MUSR-150 request). It is now

View File

@ -3472,7 +3472,9 @@ Bool_t PMsrHandler::HandlePlotEntry(PMsrLines &lines)
param.fYmax.push_back((Double_t)str.Atof()); param.fYmax.push_back((Double_t)str.Atof());
else else
error = true; error = true;
} else { }
if ((tokens->GetEntries() != 1) && (tokens->GetEntries() != 3)) {
cerr << endl << ">> PMsrHandler::HandlePlotEntry: **WARNING** use_fit_ranges with undefined additional parameters in line " << iter1->fLineNo; cerr << endl << ">> PMsrHandler::HandlePlotEntry: **WARNING** use_fit_ranges with undefined additional parameters in line " << iter1->fLineNo;
cerr << endl << ">> Will ignore this PLOT block command line, sorry."; cerr << endl << ">> Will ignore this PLOT block command line, sorry.";
cerr << endl << ">> Proper syntax: use_fit_ranges [ymin ymax]"; cerr << endl << ">> Proper syntax: use_fit_ranges [ymin ymax]";

View File

@ -3408,9 +3408,15 @@ void PMusrCanvas::PlotFourier(Bool_t unzoom)
} }
// set y-range // set y-range
// first find minimum/maximum of all histos // first find minimum/maximum of all histos and theories
ymin = GetMinimum(fData[0].dataFourierRe); ymin = GetMinimum(fData[0].dataFourierRe);
ymax = GetMaximum(fData[0].dataFourierRe); ymax = GetMaximum(fData[0].dataFourierRe);
binContent = GetMinimum(fData[0].theoryFourierRe);
if (binContent < ymin)
ymin = binContent;
binContent = GetMaximum(fData[0].theoryFourierRe);
if (binContent > ymax)
ymax = binContent;
for (UInt_t i=1; i<fData.size(); i++) { for (UInt_t i=1; i<fData.size(); i++) {
binContent = GetMinimum(fData[i].dataFourierRe); binContent = GetMinimum(fData[i].dataFourierRe);
if (binContent < ymin) if (binContent < ymin)
@ -3418,6 +3424,12 @@ void PMusrCanvas::PlotFourier(Bool_t unzoom)
binContent = GetMaximum(fData[i].dataFourierRe); binContent = GetMaximum(fData[i].dataFourierRe);
if (binContent > ymax) if (binContent > ymax)
ymax = binContent; ymax = binContent;
binContent = GetMinimum(fData[i].theoryFourierRe);
if (binContent < ymin)
ymin = binContent;
binContent = GetMaximum(fData[i].theoryFourierRe);
if (binContent > ymax)
ymax = binContent;
} }
fHistoFrame = fDataTheoryPad->DrawFrame(xmin, 1.05*ymin, xmax, 1.05*ymax); fHistoFrame = fDataTheoryPad->DrawFrame(xmin, 1.05*ymin, xmax, 1.05*ymax);
@ -3463,6 +3475,12 @@ void PMusrCanvas::PlotFourier(Bool_t unzoom)
// first find minimum/maximum of all histos // first find minimum/maximum of all histos
ymin = GetMinimum(fData[0].dataFourierIm); ymin = GetMinimum(fData[0].dataFourierIm);
ymax = GetMaximum(fData[0].dataFourierIm); ymax = GetMaximum(fData[0].dataFourierIm);
binContent = GetMinimum(fData[0].theoryFourierIm);
if (binContent < ymin)
ymin = binContent;
binContent = GetMaximum(fData[0].theoryFourierIm);
if (binContent > ymax)
ymax = binContent;
for (UInt_t i=1; i<fData.size(); i++) { for (UInt_t i=1; i<fData.size(); i++) {
binContent = GetMinimum(fData[i].dataFourierIm); binContent = GetMinimum(fData[i].dataFourierIm);
if (binContent < ymin) if (binContent < ymin)
@ -3470,6 +3488,12 @@ void PMusrCanvas::PlotFourier(Bool_t unzoom)
binContent = GetMaximum(fData[i].dataFourierIm); binContent = GetMaximum(fData[i].dataFourierIm);
if (binContent > ymax) if (binContent > ymax)
ymax = binContent; ymax = binContent;
binContent = GetMinimum(fData[i].theoryFourierIm);
if (binContent < ymin)
ymin = binContent;
binContent = GetMaximum(fData[i].theoryFourierIm);
if (binContent > ymax)
ymax = binContent;
} }
fHistoFrame = fDataTheoryPad->DrawFrame(xmin, 1.05*ymin, xmax, 1.05*ymax); fHistoFrame = fDataTheoryPad->DrawFrame(xmin, 1.05*ymin, xmax, 1.05*ymax);
@ -3533,6 +3557,21 @@ void PMusrCanvas::PlotFourier(Bool_t unzoom)
if (binContent > ymax) if (binContent > ymax)
ymax = binContent; ymax = binContent;
} }
// theory part min/max
for (UInt_t i=0; i<fData.size(); i++) {
binContent = GetMinimum(fData[i].theoryFourierRe);
if (binContent < ymin)
ymin = binContent;
binContent = GetMaximum(fData[i].theoryFourierRe);
if (binContent > ymax)
ymax = binContent;
binContent = GetMinimum(fData[i].theoryFourierIm);
if (binContent < ymin)
ymin = binContent;
binContent = GetMaximum(fData[i].theoryFourierIm);
if (binContent > ymax)
ymax = binContent;
}
fHistoFrame = fDataTheoryPad->DrawFrame(xmin, 1.05*ymin, xmax, 1.05*ymax); fHistoFrame = fDataTheoryPad->DrawFrame(xmin, 1.05*ymin, xmax, 1.05*ymax);
@ -3580,9 +3619,15 @@ void PMusrCanvas::PlotFourier(Bool_t unzoom)
} }
// set y-range // set y-range
// first find minimum/maximum of all histos // first find minimum/maximum of all histos and theory
ymin = GetMinimum(fData[0].dataFourierPwr); ymin = GetMinimum(fData[0].dataFourierPwr);
ymax = GetMaximum(fData[0].dataFourierPwr); ymax = GetMaximum(fData[0].dataFourierPwr);
binContent = GetMinimum(fData[0].theoryFourierPwr);
if (binContent < ymin)
ymin = binContent;
binContent = GetMaximum(fData[0].theoryFourierPwr);
if (binContent > ymax)
ymax = binContent;
for (UInt_t i=1; i<fData.size(); i++) { for (UInt_t i=1; i<fData.size(); i++) {
binContent = GetMinimum(fData[i].dataFourierPwr); binContent = GetMinimum(fData[i].dataFourierPwr);
if (binContent < ymin) if (binContent < ymin)
@ -3590,6 +3635,12 @@ void PMusrCanvas::PlotFourier(Bool_t unzoom)
binContent = GetMaximum(fData[i].dataFourierPwr); binContent = GetMaximum(fData[i].dataFourierPwr);
if (binContent > ymax) if (binContent > ymax)
ymax = binContent; ymax = binContent;
binContent = GetMinimum(fData[i].theoryFourierPwr);
if (binContent < ymin)
ymin = binContent;
binContent = GetMaximum(fData[i].theoryFourierPwr);
if (binContent > ymax)
ymax = binContent;
} }
fHistoFrame = fDataTheoryPad->DrawFrame(xmin, 1.05*ymin, xmax, 1.05*ymax); fHistoFrame = fDataTheoryPad->DrawFrame(xmin, 1.05*ymin, xmax, 1.05*ymax);
@ -3633,6 +3684,12 @@ void PMusrCanvas::PlotFourier(Bool_t unzoom)
// first find minimum/maximum of all histos // first find minimum/maximum of all histos
ymin = GetMinimum(fData[0].dataFourierPhase); ymin = GetMinimum(fData[0].dataFourierPhase);
ymax = GetMaximum(fData[0].dataFourierPhase); ymax = GetMaximum(fData[0].dataFourierPhase);
binContent = GetMinimum(fData[0].theoryFourierPhase);
if (binContent < ymin)
ymin = binContent;
binContent = GetMaximum(fData[0].theoryFourierPhase);
if (binContent > ymax)
ymax = binContent;
for (UInt_t i=1; i<fData.size(); i++) { for (UInt_t i=1; i<fData.size(); i++) {
binContent = GetMinimum(fData[i].dataFourierPhase); binContent = GetMinimum(fData[i].dataFourierPhase);
if (binContent < ymin) if (binContent < ymin)
@ -3640,6 +3697,12 @@ void PMusrCanvas::PlotFourier(Bool_t unzoom)
binContent = GetMaximum(fData[i].dataFourierPhase); binContent = GetMaximum(fData[i].dataFourierPhase);
if (binContent > ymax) if (binContent > ymax)
ymax = binContent; ymax = binContent;
binContent = GetMinimum(fData[i].theoryFourierPhase);
if (binContent < ymin)
ymin = binContent;
binContent = GetMaximum(fData[i].theoryFourierPhase);
if (binContent > ymax)
ymax = binContent;
} }
fHistoFrame = fDataTheoryPad->DrawFrame(xmin, 1.05*ymin, xmax, 1.05*ymax); fHistoFrame = fDataTheoryPad->DrawFrame(xmin, 1.05*ymin, xmax, 1.05*ymax);