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 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
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 y-unzoom failure for musrt0 (MUSR-77)
FIXED fitting issue for boundaries none/none (MUSR-136)
@ -50,6 +52,7 @@ FIXED warning messages
FIXED db data tag reading error
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.
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: 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

View File

@ -3472,7 +3472,9 @@ Bool_t PMsrHandler::HandlePlotEntry(PMsrLines &lines)
param.fYmax.push_back((Double_t)str.Atof());
else
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 << ">> Will ignore this PLOT block command line, sorry.";
cerr << endl << ">> Proper syntax: use_fit_ranges [ymin ymax]";

View File

@ -3408,9 +3408,15 @@ void PMusrCanvas::PlotFourier(Bool_t unzoom)
}
// set y-range
// first find minimum/maximum of all histos
// first find minimum/maximum of all histos and theories
ymin = GetMinimum(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++) {
binContent = GetMinimum(fData[i].dataFourierRe);
if (binContent < ymin)
@ -3418,6 +3424,12 @@ void PMusrCanvas::PlotFourier(Bool_t unzoom)
binContent = GetMaximum(fData[i].dataFourierRe);
if (binContent > ymax)
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);
@ -3463,6 +3475,12 @@ void PMusrCanvas::PlotFourier(Bool_t unzoom)
// first find minimum/maximum of all histos
ymin = GetMinimum(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++) {
binContent = GetMinimum(fData[i].dataFourierIm);
if (binContent < ymin)
@ -3470,6 +3488,12 @@ void PMusrCanvas::PlotFourier(Bool_t unzoom)
binContent = GetMaximum(fData[i].dataFourierIm);
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);
@ -3533,6 +3557,21 @@ void PMusrCanvas::PlotFourier(Bool_t unzoom)
if (binContent > ymax)
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);
@ -3580,9 +3619,15 @@ void PMusrCanvas::PlotFourier(Bool_t unzoom)
}
// set y-range
// first find minimum/maximum of all histos
// first find minimum/maximum of all histos and theory
ymin = GetMinimum(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++) {
binContent = GetMinimum(fData[i].dataFourierPwr);
if (binContent < ymin)
@ -3590,6 +3635,12 @@ void PMusrCanvas::PlotFourier(Bool_t unzoom)
binContent = GetMaximum(fData[i].dataFourierPwr);
if (binContent > ymax)
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);
@ -3633,6 +3684,12 @@ void PMusrCanvas::PlotFourier(Bool_t unzoom)
// first find minimum/maximum of all histos
ymin = GetMinimum(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++) {
binContent = GetMinimum(fData[i].dataFourierPhase);
if (binContent < ymin)
@ -3640,6 +3697,12 @@ void PMusrCanvas::PlotFourier(Bool_t unzoom)
binContent = GetMaximum(fData[i].dataFourierPhase);
if (binContent > ymax)
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);