diff --git a/src/classes/PMusrCanvas.cpp b/src/classes/PMusrCanvas.cpp
index 046553df..9762e17b 100644
--- a/src/classes/PMusrCanvas.cpp
+++ b/src/classes/PMusrCanvas.cpp
@@ -1362,13 +1362,12 @@ void PMusrCanvas::SaveGraphicsAndQuit(Char_t *fileName, Char_t *graphicsFormat)
}
//--------------------------------------------------------------------------
-// SaveDataAsciiAndQuit
+// SaveDataAscii
//--------------------------------------------------------------------------
/**
*
Saves the currently seen data (data, difference, Fourier spectra, ...) in ascii column format.
- * This function is used to dump the ascii output in batch mode.
*/
-void PMusrCanvas::SaveDataAsciiAndQuit()
+void PMusrCanvas::SaveDataAscii()
{
// collect relevant data
PMusrCanvasAsciiDump dump;
@@ -1382,637 +1381,637 @@ void PMusrCanvas::SaveDataAsciiAndQuit()
Double_t xval, yval;
switch (fPlotType) {
- case MSR_PLOT_SINGLE_HISTO:
- case MSR_PLOT_ASYM:
- case MSR_PLOT_MU_MINUS:
- if (fDifferenceView) { // difference view plot
- switch (fCurrentPlotView) {
- case PV_DATA:
- // get current x-range
- xminBin = fHistoFrame->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fHistoFrame->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fHistoFrame->GetXaxis()->GetBinCenter(xminBin);
- xmax = fHistoFrame->GetXaxis()->GetBinCenter(xmaxBin);
+ case MSR_PLOT_SINGLE_HISTO:
+ case MSR_PLOT_ASYM:
+ case MSR_PLOT_MU_MINUS:
+ if (fDifferenceView) { // difference view plot
+ switch (fCurrentPlotView) {
+ case PV_DATA:
+ // get current x-range
+ xminBin = fHistoFrame->GetXaxis()->GetFirst(); // first bin of the zoomed range
+ xmaxBin = fHistoFrame->GetXaxis()->GetLast(); // last bin of the zoomed range
+ xmin = fHistoFrame->GetXaxis()->GetBinCenter(xminBin);
+ xmax = fHistoFrame->GetXaxis()->GetBinCenter(xmaxBin);
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get time
- time = fData[i].diff->GetBinCenter(j);
- // check if time is in the current range
- if ((time >= xmin) && (time <= xmax)) {
- dump.dataX.push_back(time);
- dump.data.push_back(fData[i].diff->GetBinContent(j));
- dump.dataErr.push_back(fData[i].diff->GetBinError(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- case PV_FOURIER_REAL:
- // get current x-range
- xminBin = fData[0].diffFourierRe->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].diffFourierRe->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].diffFourierRe->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].diffFourierRe->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].diffFourierRe->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].diffFourierRe->GetBinContent(j));
- }
- }
+ // go through all difference data bins
+ for (Int_t j=1; jGetNbinsX(); j++) {
+ // get time
+ time = fData[i].diff->GetBinCenter(j);
+ // check if time is in the current range
+ if ((time >= xmin) && (time <= xmax)) {
+ dump.dataX.push_back(time);
+ dump.data.push_back(fData[i].diff->GetBinContent(j));
+ dump.dataErr.push_back(fData[i].diff->GetBinError(j));
+ }
+ }
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- case PV_FOURIER_IMAG:
- // get current x-range
- xminBin = fData[0].diffFourierIm->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].diffFourierIm->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].diffFourierIm->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].diffFourierIm->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].diffFourierIm->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].diffFourierIm->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- case PV_FOURIER_REAL_AND_IMAG:
- // get current x-range
- xminBin = fData[0].diffFourierRe->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].diffFourierRe->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].diffFourierRe->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].diffFourierRe->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].diffFourierRe->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].diffFourierRe->GetBinContent(j));
- }
- }
- for (Int_t j=1; jGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].diffFourierIm->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].diffFourierIm->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- case PV_FOURIER_PWR:
- // get current x-range
- xminBin = fData[0].diffFourierPwr->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].diffFourierPwr->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].diffFourierPwr->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].diffFourierPwr->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].diffFourierPwr->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].diffFourierPwr->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- case PV_FOURIER_PHASE:
- // get current x-range
- xminBin = fData[0].diffFourierPhase->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].diffFourierPhase->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].diffFourierPhase->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].diffFourierPhase->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].diffFourierPhase->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].diffFourierPhase->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- default:
- break;
+ // if anything found keep it
+ if (dump.dataX.size() > 0)
+ dumpVector.push_back(dump);
+ }
+ break;
+ case PV_FOURIER_REAL:
+ // get current x-range
+ xminBin = fData[0].diffFourierRe->GetXaxis()->GetFirst(); // first bin of the zoomed range
+ xmaxBin = fData[0].diffFourierRe->GetXaxis()->GetLast(); // last bin of the zoomed range
+ xmin = fData[0].diffFourierRe->GetXaxis()->GetBinCenter(xminBin);
+ xmax = fData[0].diffFourierRe->GetXaxis()->GetBinCenter(xmaxBin);
+
+ // fill ascii dump data
+ for (UInt_t i=0; iGetNbinsX(); j++) {
+ // get frequency
+ freq = fData[i].diffFourierRe->GetBinCenter(j);
+ // check if time is in the current range
+ if ((freq >= xmin) && (freq <= xmax)) {
+ dump.dataX.push_back(freq);
+ dump.data.push_back(fData[i].diffFourierRe->GetBinContent(j));
+ }
+ }
+
+ // if anything found keep it
+ if (dump.dataX.size() > 0)
+ dumpVector.push_back(dump);
+ }
+ break;
+ case PV_FOURIER_IMAG:
+ // get current x-range
+ xminBin = fData[0].diffFourierIm->GetXaxis()->GetFirst(); // first bin of the zoomed range
+ xmaxBin = fData[0].diffFourierIm->GetXaxis()->GetLast(); // last bin of the zoomed range
+ xmin = fData[0].diffFourierIm->GetXaxis()->GetBinCenter(xminBin);
+ xmax = fData[0].diffFourierIm->GetXaxis()->GetBinCenter(xmaxBin);
+
+ // fill ascii dump data
+ for (UInt_t i=0; iGetNbinsX(); j++) {
+ // get frequency
+ freq = fData[i].diffFourierIm->GetBinCenter(j);
+ // check if time is in the current range
+ if ((freq >= xmin) && (freq <= xmax)) {
+ dump.dataX.push_back(freq);
+ dump.data.push_back(fData[i].diffFourierIm->GetBinContent(j));
+ }
+ }
+
+ // if anything found keep it
+ if (dump.dataX.size() > 0)
+ dumpVector.push_back(dump);
+ }
+ break;
+ case PV_FOURIER_REAL_AND_IMAG:
+ // get current x-range
+ xminBin = fData[0].diffFourierRe->GetXaxis()->GetFirst(); // first bin of the zoomed range
+ xmaxBin = fData[0].diffFourierRe->GetXaxis()->GetLast(); // last bin of the zoomed range
+ xmin = fData[0].diffFourierRe->GetXaxis()->GetBinCenter(xminBin);
+ xmax = fData[0].diffFourierRe->GetXaxis()->GetBinCenter(xmaxBin);
+
+ // fill ascii dump data
+ for (UInt_t i=0; iGetNbinsX(); j++) {
+ // get frequency
+ freq = fData[i].diffFourierRe->GetBinCenter(j);
+ // check if time is in the current range
+ if ((freq >= xmin) && (freq <= xmax)) {
+ dump.dataX.push_back(freq);
+ dump.data.push_back(fData[i].diffFourierRe->GetBinContent(j));
+ }
+ }
+ for (Int_t j=1; jGetNbinsX(); j++) {
+ // get frequency
+ freq = fData[i].diffFourierIm->GetBinCenter(j);
+ // check if time is in the current range
+ if ((freq >= xmin) && (freq <= xmax)) {
+ dump.dataX.push_back(freq);
+ dump.data.push_back(fData[i].diffFourierIm->GetBinContent(j));
+ }
+ }
+
+ // if anything found keep it
+ if (dump.dataX.size() > 0)
+ dumpVector.push_back(dump);
+ }
+ break;
+ case PV_FOURIER_PWR:
+ // get current x-range
+ xminBin = fData[0].diffFourierPwr->GetXaxis()->GetFirst(); // first bin of the zoomed range
+ xmaxBin = fData[0].diffFourierPwr->GetXaxis()->GetLast(); // last bin of the zoomed range
+ xmin = fData[0].diffFourierPwr->GetXaxis()->GetBinCenter(xminBin);
+ xmax = fData[0].diffFourierPwr->GetXaxis()->GetBinCenter(xmaxBin);
+
+ // fill ascii dump data
+ for (UInt_t i=0; iGetNbinsX(); j++) {
+ // get frequency
+ freq = fData[i].diffFourierPwr->GetBinCenter(j);
+ // check if time is in the current range
+ if ((freq >= xmin) && (freq <= xmax)) {
+ dump.dataX.push_back(freq);
+ dump.data.push_back(fData[i].diffFourierPwr->GetBinContent(j));
+ }
+ }
+
+ // if anything found keep it
+ if (dump.dataX.size() > 0)
+ dumpVector.push_back(dump);
+ }
+ break;
+ case PV_FOURIER_PHASE:
+ // get current x-range
+ xminBin = fData[0].diffFourierPhase->GetXaxis()->GetFirst(); // first bin of the zoomed range
+ xmaxBin = fData[0].diffFourierPhase->GetXaxis()->GetLast(); // last bin of the zoomed range
+ xmin = fData[0].diffFourierPhase->GetXaxis()->GetBinCenter(xminBin);
+ xmax = fData[0].diffFourierPhase->GetXaxis()->GetBinCenter(xmaxBin);
+
+ // fill ascii dump data
+ for (UInt_t i=0; iGetNbinsX(); j++) {
+ // get frequency
+ freq = fData[i].diffFourierPhase->GetBinCenter(j);
+ // check if time is in the current range
+ if ((freq >= xmin) && (freq <= xmax)) {
+ dump.dataX.push_back(freq);
+ dump.data.push_back(fData[i].diffFourierPhase->GetBinContent(j));
+ }
+ }
+
+ // if anything found keep it
+ if (dump.dataX.size() > 0)
+ dumpVector.push_back(dump);
+ }
+ break;
+ default:
+ break;
+ }
+ } else { // not a difference view plot
+ switch (fCurrentPlotView) {
+ case PV_DATA:
+ // get current x-range
+ xminBin = fHistoFrame->GetXaxis()->GetFirst(); // first bin of the zoomed range
+ xmaxBin = fHistoFrame->GetXaxis()->GetLast(); // last bin of the zoomed range
+ xmin = fHistoFrame->GetXaxis()->GetBinCenter(xminBin);
+ xmax = fHistoFrame->GetXaxis()->GetBinCenter(xmaxBin);
+
+ // fill ascii dump data
+ for (UInt_t i=0; iGetNbinsX(); j++) {
+ // get time
+ time = fData[i].data->GetBinCenter(j);
+ // check if time is in the current range
+ if ((time >= xmin) && (time <= xmax)) {
+ dump.dataX.push_back(time);
+ dump.data.push_back(fData[i].data->GetBinContent(j));
+ dump.dataErr.push_back(fData[i].data->GetBinError(j));
+ }
+ }
+
+ // go through all theory bins
+ for (Int_t j=1; jGetNbinsX(); j++) {
+ // get time
+ time = fData[i].theory->GetBinCenter(j);
+ // check if time is in the current range
+ if ((time >= xmin) && (time <= xmax)) {
+ dump.theoryX.push_back(time);
+ dump.theory.push_back(fData[i].theory->GetBinContent(j));
+ }
+ }
+
+ // if anything found keep it
+ if (dump.dataX.size() > 0)
+ dumpVector.push_back(dump);
+ }
+
+ break;
+ case PV_FOURIER_REAL:
+ // get current x-range
+ xminBin = fData[0].dataFourierRe->GetXaxis()->GetFirst(); // first bin of the zoomed range
+ xmaxBin = fData[0].dataFourierRe->GetXaxis()->GetLast(); // last bin of the zoomed range
+ xmin = fData[0].dataFourierRe->GetXaxis()->GetBinCenter(xminBin);
+ xmax = fData[0].dataFourierRe->GetXaxis()->GetBinCenter(xmaxBin);
+
+ // fill ascii dump data
+ for (UInt_t i=0; iGetNbinsX(); j++) {
+ // get frequency
+ freq = fData[i].dataFourierRe->GetBinCenter(j);
+ // check if time is in the current range
+ if ((freq >= xmin) && (freq <= xmax)) {
+ dump.dataX.push_back(freq);
+ dump.data.push_back(fData[i].dataFourierRe->GetBinContent(j));
+ }
+ }
+
+ // go through all theory bins
+ for (Int_t j=1; jGetNbinsX(); j++) {
+ // get frequency
+ freq = fData[i].theoryFourierRe->GetBinCenter(j);
+ // check if time is in the current range
+ if ((freq >= xmin) && (freq <= xmax)) {
+ dump.theoryX.push_back(freq);
+ dump.theory.push_back(fData[i].theoryFourierRe->GetBinContent(j));
+ }
+ }
+
+ // if anything found keep it
+ if (dump.dataX.size() > 0)
+ dumpVector.push_back(dump);
+ }
+ break;
+ case PV_FOURIER_IMAG:
+ // get current x-range
+ xminBin = fData[0].dataFourierIm->GetXaxis()->GetFirst(); // first bin of the zoomed range
+ xmaxBin = fData[0].dataFourierIm->GetXaxis()->GetLast(); // last bin of the zoomed range
+ xmin = fData[0].dataFourierIm->GetXaxis()->GetBinCenter(xminBin);
+ xmax = fData[0].dataFourierIm->GetXaxis()->GetBinCenter(xmaxBin);
+
+ // fill ascii dump data
+ for (UInt_t i=0; iGetNbinsX(); j++) {
+ // get frequency
+ freq = fData[i].dataFourierIm->GetBinCenter(j);
+ // check if time is in the current range
+ if ((freq >= xmin) && (freq <= xmax)) {
+ dump.dataX.push_back(freq);
+ dump.data.push_back(fData[i].dataFourierIm->GetBinContent(j));
+ }
+ }
+
+ // go through all theory bins
+ for (Int_t j=1; jGetNbinsX(); j++) {
+ // get frequency
+ freq = fData[i].theoryFourierIm->GetBinCenter(j);
+ // check if time is in the current range
+ if ((freq >= xmin) && (freq <= xmax)) {
+ dump.theoryX.push_back(freq);
+ dump.theory.push_back(fData[i].theoryFourierIm->GetBinContent(j));
+ }
+ }
+
+ // if anything found keep it
+ if (dump.dataX.size() > 0)
+ dumpVector.push_back(dump);
+ }
+ break;
+ case PV_FOURIER_REAL_AND_IMAG:
+ // get current x-range
+ xminBin = fData[0].dataFourierRe->GetXaxis()->GetFirst(); // first bin of the zoomed range
+ xmaxBin = fData[0].dataFourierRe->GetXaxis()->GetLast(); // last bin of the zoomed range
+ xmin = fData[0].dataFourierRe->GetXaxis()->GetBinCenter(xminBin);
+ xmax = fData[0].dataFourierRe->GetXaxis()->GetBinCenter(xmaxBin);
+
+ // fill ascii dump data
+ for (UInt_t i=0; iGetNbinsX(); j++) {
+ // get frequency
+ freq = fData[i].dataFourierRe->GetBinCenter(j);
+ // check if time is in the current range
+ if ((freq >= xmin) && (freq <= xmax)) {
+ dump.dataX.push_back(freq);
+ dump.data.push_back(fData[i].dataFourierRe->GetBinContent(j));
+ }
+ }
+
+ // go through all theory bins
+ for (Int_t j=1; jGetNbinsX(); j++) {
+ // get frequency
+ freq = fData[i].theoryFourierRe->GetBinCenter(j);
+ // check if time is in the current range
+ if ((freq >= xmin) && (freq <= xmax)) {
+ dump.theoryX.push_back(freq);
+ dump.theory.push_back(fData[i].theoryFourierRe->GetBinContent(j));
+ }
+ }
+
+ // if anything found keep it
+ if (dump.dataX.size() > 0)
+ dumpVector.push_back(dump);
+
+ //-----------------------------
+ // Im
+ //-----------------------------
+ // clean up dump
+ dump.dataX.clear();
+ dump.data.clear();
+ dump.dataErr.clear();
+ dump.theoryX.clear();
+ dump.theory.clear();
+
+ // go through all data bins
+ for (Int_t j=1; jGetNbinsX(); j++) {
+ // get frequency
+ freq = fData[i].dataFourierIm->GetBinCenter(j);
+ // check if time is in the current range
+ if ((freq >= xmin) && (freq <= xmax)) {
+ dump.dataX.push_back(freq);
+ dump.data.push_back(fData[i].dataFourierIm->GetBinContent(j));
+ }
+ }
+
+ // go through all theory bins
+ for (Int_t j=1; jGetNbinsX(); j++) {
+ // get frequency
+ freq = fData[i].theoryFourierIm->GetBinCenter(j);
+ // check if time is in the current range
+ if ((freq >= xmin) && (freq <= xmax)) {
+ dump.theoryX.push_back(freq);
+ dump.theory.push_back(fData[i].theoryFourierIm->GetBinContent(j));
+ }
+ }
+
+ // if anything found keep it
+ if (dump.dataX.size() > 0)
+ dumpVector.push_back(dump);
+
+ }
+ break;
+ case PV_FOURIER_PWR:
+ // get current x-range
+ xminBin = fData[0].dataFourierPwr->GetXaxis()->GetFirst(); // first bin of the zoomed range
+ xmaxBin = fData[0].dataFourierPwr->GetXaxis()->GetLast(); // last bin of the zoomed range
+ xmin = fData[0].dataFourierPwr->GetXaxis()->GetBinCenter(xminBin);
+ xmax = fData[0].dataFourierPwr->GetXaxis()->GetBinCenter(xmaxBin);
+
+ // fill ascii dump data
+ for (UInt_t i=0; iGetNbinsX(); j++) {
+ // get frequency
+ freq = fData[i].dataFourierPwr->GetBinCenter(j);
+ // check if time is in the current range
+ if ((freq >= xmin) && (freq <= xmax)) {
+ dump.dataX.push_back(freq);
+ dump.data.push_back(fData[i].dataFourierPwr->GetBinContent(j));
+ }
+ }
+
+ // go through all theory bins
+ for (Int_t j=1; jGetNbinsX(); j++) {
+ // get frequency
+ freq = fData[i].theoryFourierPwr->GetBinCenter(j);
+ // check if time is in the current range
+ if ((freq >= xmin) && (freq <= xmax)) {
+ dump.theoryX.push_back(freq);
+ dump.theory.push_back(fData[i].theoryFourierPwr->GetBinContent(j));
+ }
+ }
+
+ // if anything found keep it
+ if (dump.dataX.size() > 0)
+ dumpVector.push_back(dump);
+ }
+ break;
+ case PV_FOURIER_PHASE:
+ // get current x-range
+ xminBin = fData[0].dataFourierPhase->GetXaxis()->GetFirst(); // first bin of the zoomed range
+ xmaxBin = fData[0].dataFourierPhase->GetXaxis()->GetLast(); // last bin of the zoomed range
+ xmin = fData[0].dataFourierPhase->GetXaxis()->GetBinCenter(xminBin);
+ xmax = fData[0].dataFourierPhase->GetXaxis()->GetBinCenter(xmaxBin);
+
+ // fill ascii dump data
+ for (UInt_t i=0; iGetNbinsX(); j++) {
+ // get frequency
+ freq = fData[i].dataFourierPhase->GetBinCenter(j);
+ // check if time is in the current range
+ if ((freq >= xmin) && (freq <= xmax)) {
+ dump.dataX.push_back(freq);
+ dump.data.push_back(fData[i].dataFourierPhase->GetBinContent(j));
+ }
+ }
+
+ // go through all theory bins
+ for (Int_t j=1; jGetNbinsX(); j++) {
+ // get frequency
+ freq = fData[i].theoryFourierPhase->GetBinCenter(j);
+ // check if time is in the current range
+ if ((freq >= xmin) && (freq <= xmax)) {
+ dump.theoryX.push_back(freq);
+ dump.theory.push_back(fData[i].theoryFourierPhase->GetBinContent(j));
+ }
+ }
+
+ // if anything found keep it
+ if (dump.dataX.size() > 0)
+ dumpVector.push_back(dump);
+ }
+ break;
+ default:
+ break;
+ }
}
- } else { // not a difference view plot
- switch (fCurrentPlotView) {
- case PV_DATA:
- // get current x-range
- xminBin = fHistoFrame->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fHistoFrame->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fHistoFrame->GetXaxis()->GetBinCenter(xminBin);
- xmax = fHistoFrame->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get time
- time = fData[i].data->GetBinCenter(j);
- // check if time is in the current range
- if ((time >= xmin) && (time <= xmax)) {
- dump.dataX.push_back(time);
- dump.data.push_back(fData[i].data->GetBinContent(j));
- dump.dataErr.push_back(fData[i].data->GetBinError(j));
- }
- }
-
- // go through all theory bins
- for (Int_t j=1; jGetNbinsX(); j++) {
- // get time
- time = fData[i].theory->GetBinCenter(j);
- // check if time is in the current range
- if ((time >= xmin) && (time <= xmax)) {
- dump.theoryX.push_back(time);
- dump.theory.push_back(fData[i].theory->GetBinContent(j));
- }
- }
+ break;
+ case MSR_PLOT_NON_MUSR:
+ if (fDifferenceView) { // difference view plot
+ switch (fCurrentPlotView) {
+ case PV_DATA:
+ // get current x-range
+ xminBin = fMultiGraphData->GetXaxis()->GetFirst(); // first bin of the zoomed range
+ xmaxBin = fMultiGraphData->GetXaxis()->GetLast(); // last bin of the zoomed range
+ xmin = fMultiGraphData->GetXaxis()->GetBinCenter(xminBin);
+ xmax = fMultiGraphData->GetXaxis()->GetBinCenter(xmaxBin);
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
+ // fill ascii dump data
+ for (UInt_t i=0; iGetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].dataFourierRe->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].dataFourierRe->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].dataFourierRe->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].dataFourierRe->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].dataFourierRe->GetBinContent(j));
- }
- }
-
- // go through all theory bins
- for (Int_t j=1; jGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].theoryFourierRe->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.theoryX.push_back(freq);
- dump.theory.push_back(fData[i].theoryFourierRe->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- case PV_FOURIER_IMAG:
- // get current x-range
- xminBin = fData[0].dataFourierIm->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].dataFourierIm->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].dataFourierIm->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].dataFourierIm->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].dataFourierIm->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].dataFourierIm->GetBinContent(j));
- }
- }
-
- // go through all theory bins
- for (Int_t j=1; jGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].theoryFourierIm->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.theoryX.push_back(freq);
- dump.theory.push_back(fData[i].theoryFourierIm->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- case PV_FOURIER_REAL_AND_IMAG:
- // get current x-range
- xminBin = fData[0].dataFourierRe->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].dataFourierRe->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].dataFourierRe->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].dataFourierRe->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].dataFourierRe->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].dataFourierRe->GetBinContent(j));
- }
- }
-
- // go through all theory bins
- for (Int_t j=1; jGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].theoryFourierRe->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.theoryX.push_back(freq);
- dump.theory.push_back(fData[i].theoryFourierRe->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
-
- //-----------------------------
- // Im
- //-----------------------------
- // clean up dump
- dump.dataX.clear();
- dump.data.clear();
- dump.dataErr.clear();
- dump.theoryX.clear();
- dump.theory.clear();
+ // go through all data bins
+ for (Int_t j=0; jGetN(); j++) {
+ // get x and y value
+ fNonMusrData[i].diff->GetPoint(j,xval,yval);
+ // check if time is in the current range
+ if ((xval >= xmin) && (xval <= xmax)) {
+ dump.dataX.push_back(xval);
+ dump.data.push_back(yval);
+ dump.dataErr.push_back(fNonMusrData[i].diff->GetErrorY(j));
+ }
+ }
- // go through all data bins
- for (Int_t j=1; jGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].dataFourierIm->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].dataFourierIm->GetBinContent(j));
- }
- }
+ // if anything found keep it
+ if (dump.dataX.size() > 0)
+ dumpVector.push_back(dump);
+ }
- // go through all theory bins
- for (Int_t j=1; jGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].theoryFourierIm->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.theoryX.push_back(freq);
- dump.theory.push_back(fData[i].theoryFourierIm->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
-
- }
- break;
- case PV_FOURIER_PWR:
- // get current x-range
- xminBin = fData[0].dataFourierPwr->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].dataFourierPwr->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].dataFourierPwr->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].dataFourierPwr->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].dataFourierPwr->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].dataFourierPwr->GetBinContent(j));
- }
- }
-
- // go through all theory bins
- for (Int_t j=1; jGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].theoryFourierPwr->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.theoryX.push_back(freq);
- dump.theory.push_back(fData[i].theoryFourierPwr->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- case PV_FOURIER_PHASE:
- // get current x-range
- xminBin = fData[0].dataFourierPhase->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].dataFourierPhase->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].dataFourierPhase->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].dataFourierPhase->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].dataFourierPhase->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].dataFourierPhase->GetBinContent(j));
- }
- }
-
- // go through all theory bins
- for (Int_t j=1; jGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].theoryFourierPhase->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.theoryX.push_back(freq);
- dump.theory.push_back(fData[i].theoryFourierPhase->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- default:
- break;
+ break;
+ case PV_FOURIER_REAL:
+ break;
+ case PV_FOURIER_IMAG:
+ break;
+ case PV_FOURIER_REAL_AND_IMAG:
+ break;
+ case PV_FOURIER_PWR:
+ break;
+ case PV_FOURIER_PHASE:
+ break;
+ default:
+ break;
+ }
+ } else { // not a difference view plot
+ switch (fCurrentPlotView) {
+ case PV_DATA:
+ // get current x-range
+ xminBin = fMultiGraphData->GetXaxis()->GetFirst(); // first bin of the zoomed range
+ xmaxBin = fMultiGraphData->GetXaxis()->GetLast(); // last bin of the zoomed range
+ xmin = fMultiGraphData->GetXaxis()->GetBinCenter(xminBin);
+ xmax = fMultiGraphData->GetXaxis()->GetBinCenter(xmaxBin);
+
+ // fill ascii dump data
+ for (UInt_t i=0; iGetN(); j++) {
+ // get x and y value
+ fNonMusrData[i].data->GetPoint(j,xval,yval);
+ // check if time is in the current range
+ if ((xval >= xmin) && (xval <= xmax)) {
+ dump.dataX.push_back(xval);
+ dump.data.push_back(yval);
+ dump.dataErr.push_back(fNonMusrData[i].data->GetErrorY(j));
+ }
+ }
+
+ // go through all theory bins
+ for (Int_t j=0; jGetN(); j++) {
+ // get x and y value
+ fNonMusrData[i].theory->GetPoint(j,xval,yval);
+ // check if time is in the current range
+ if ((xval >= xmin) && (xval <= xmax)) {
+ dump.theoryX.push_back(xval);
+ dump.theory.push_back(yval);
+ }
+ }
+
+ // if anything found keep it
+ if (dump.dataX.size() > 0)
+ dumpVector.push_back(dump);
+ }
+
+ break;
+ case PV_FOURIER_REAL:
+ break;
+ case PV_FOURIER_IMAG:
+ break;
+ case PV_FOURIER_REAL_AND_IMAG:
+ break;
+ case PV_FOURIER_PWR:
+ break;
+ case PV_FOURIER_PHASE:
+ break;
+ default:
+ break;
+ }
}
- }
- break;
- case MSR_PLOT_NON_MUSR:
- if (fDifferenceView) { // difference view plot
- switch (fCurrentPlotView) {
- case PV_DATA:
- // get current x-range
- xminBin = fMultiGraphData->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fMultiGraphData->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fMultiGraphData->GetXaxis()->GetBinCenter(xminBin);
- xmax = fMultiGraphData->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetN(); j++) {
- // get x and y value
- fNonMusrData[i].diff->GetPoint(j,xval,yval);
- // check if time is in the current range
- if ((xval >= xmin) && (xval <= xmax)) {
- dump.dataX.push_back(xval);
- dump.data.push_back(yval);
- dump.dataErr.push_back(fNonMusrData[i].diff->GetErrorY(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
-
- break;
- case PV_FOURIER_REAL:
- break;
- case PV_FOURIER_IMAG:
- break;
- case PV_FOURIER_REAL_AND_IMAG:
- break;
- case PV_FOURIER_PWR:
- break;
- case PV_FOURIER_PHASE:
- break;
- default:
- break;
- }
- } else { // not a difference view plot
- switch (fCurrentPlotView) {
- case PV_DATA:
- // get current x-range
- xminBin = fMultiGraphData->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fMultiGraphData->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fMultiGraphData->GetXaxis()->GetBinCenter(xminBin);
- xmax = fMultiGraphData->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetN(); j++) {
- // get x and y value
- fNonMusrData[i].data->GetPoint(j,xval,yval);
- // check if time is in the current range
- if ((xval >= xmin) && (xval <= xmax)) {
- dump.dataX.push_back(xval);
- dump.data.push_back(yval);
- dump.dataErr.push_back(fNonMusrData[i].data->GetErrorY(j));
- }
- }
-
- // go through all theory bins
- for (Int_t j=0; jGetN(); j++) {
- // get x and y value
- fNonMusrData[i].theory->GetPoint(j,xval,yval);
- // check if time is in the current range
- if ((xval >= xmin) && (xval <= xmax)) {
- dump.theoryX.push_back(xval);
- dump.theory.push_back(yval);
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
-
- break;
- case PV_FOURIER_REAL:
- break;
- case PV_FOURIER_IMAG:
- break;
- case PV_FOURIER_REAL_AND_IMAG:
- break;
- case PV_FOURIER_PWR:
- break;
- case PV_FOURIER_PHASE:
- break;
- default:
- break;
- }
- }
- break;
- default:
- break;
+ break;
+ default:
+ break;
}
// generate output filename
@@ -2043,7 +2042,7 @@ void PMusrCanvas::SaveDataAsciiAndQuit()
// open output data-file
fout.open(fln.Data(), iostream::out);
if (!fout.is_open()) {
- cerr << endl << ">> PMusrCanvas::SaveDataAsciiAndQuit: **ERROR** couldn't open file " << fln.Data() << " for writing." << endl;
+ cerr << endl << ">> PMusrCanvas::SaveDataAscii: **ERROR** couldn't open file " << fln.Data() << " for writing." << endl;
return;
}
@@ -2272,9 +2271,10 @@ void PMusrCanvas::SaveDataAsciiAndQuit()
dumpVector.clear();
cout << endl << ">> Data windows saved in ascii format ..." << endl;
-
- if (fPlotNumber == static_cast(fMsrHandler->GetMsrPlotList()->size()) - 1)
- Done(0);
+ // if (asciiOutput) {
+ // if (fPlotNumber == static_cast(fMsrHandler->GetMsrPlotList()->size()) - 1)
+ // Done(0);
+ // }
}
//--------------------------------------------------------------------------
@@ -6188,917 +6188,6 @@ void PMusrCanvas::DecrementFourierPhase()
}
}
-//--------------------------------------------------------------------------
-// SaveDataAscii (private)
-//--------------------------------------------------------------------------
-/**
- * Saves the currently seen data (data, difference, Fourier spectra, ...) in ascii column format.
- */
-void PMusrCanvas::SaveDataAscii()
-{
- // collect relevant data
- PMusrCanvasAsciiDump dump;
- PMusrCanvasAsciiDumpVector dumpVector;
-
- Int_t xminBin;
- Int_t xmaxBin;
- Double_t xmin;
- Double_t xmax;
- Double_t time, freq;
- Double_t xval, yval;
-
- switch (fPlotType) {
- case MSR_PLOT_SINGLE_HISTO:
- case MSR_PLOT_ASYM:
- case MSR_PLOT_MU_MINUS:
- if (fDifferenceView) { // difference view plot
- switch (fCurrentPlotView) {
- case PV_DATA:
- // get current x-range
- xminBin = fHistoFrame->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fHistoFrame->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fHistoFrame->GetXaxis()->GetBinCenter(xminBin);
- xmax = fHistoFrame->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get time
- time = fData[i].diff->GetBinCenter(j);
- // check if time is in the current range
- if ((time >= xmin) && (time <= xmax)) {
- dump.dataX.push_back(time);
- dump.data.push_back(fData[i].diff->GetBinContent(j));
- dump.dataErr.push_back(fData[i].diff->GetBinError(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- case PV_FOURIER_REAL:
- // get current x-range
- xminBin = fData[0].diffFourierRe->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].diffFourierRe->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].diffFourierRe->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].diffFourierRe->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].diffFourierRe->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].diffFourierRe->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- case PV_FOURIER_IMAG:
- // get current x-range
- xminBin = fData[0].diffFourierIm->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].diffFourierIm->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].diffFourierIm->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].diffFourierIm->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].diffFourierIm->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].diffFourierIm->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- case PV_FOURIER_REAL_AND_IMAG:
- // get current x-range
- xminBin = fData[0].diffFourierRe->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].diffFourierRe->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].diffFourierRe->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].diffFourierRe->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].diffFourierRe->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].diffFourierRe->GetBinContent(j));
- }
- }
- for (Int_t j=1; jGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].diffFourierIm->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].diffFourierIm->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- case PV_FOURIER_PWR:
- // get current x-range
- xminBin = fData[0].diffFourierPwr->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].diffFourierPwr->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].diffFourierPwr->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].diffFourierPwr->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].diffFourierPwr->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].diffFourierPwr->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- case PV_FOURIER_PHASE:
- // get current x-range
- xminBin = fData[0].diffFourierPhase->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].diffFourierPhase->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].diffFourierPhase->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].diffFourierPhase->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].diffFourierPhase->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].diffFourierPhase->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- default:
- break;
- }
- } else { // not a difference view plot
- switch (fCurrentPlotView) {
- case PV_DATA:
- // get current x-range
- xminBin = fHistoFrame->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fHistoFrame->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fHistoFrame->GetXaxis()->GetBinCenter(xminBin);
- xmax = fHistoFrame->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get time
- time = fData[i].data->GetBinCenter(j);
- // check if time is in the current range
- if ((time >= xmin) && (time <= xmax)) {
- dump.dataX.push_back(time);
- dump.data.push_back(fData[i].data->GetBinContent(j));
- dump.dataErr.push_back(fData[i].data->GetBinError(j));
- }
- }
-
- // go through all theory bins
- for (Int_t j=1; jGetNbinsX(); j++) {
- // get time
- time = fData[i].theory->GetBinCenter(j);
- // check if time is in the current range
- if ((time >= xmin) && (time <= xmax)) {
- dump.theoryX.push_back(time);
- dump.theory.push_back(fData[i].theory->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
-
- break;
- case PV_FOURIER_REAL:
- // get current x-range
- xminBin = fData[0].dataFourierRe->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].dataFourierRe->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].dataFourierRe->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].dataFourierRe->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].dataFourierRe->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].dataFourierRe->GetBinContent(j));
- }
- }
-
- // go through all theory bins
- for (Int_t j=1; jGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].theoryFourierRe->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.theoryX.push_back(freq);
- dump.theory.push_back(fData[i].theoryFourierRe->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- case PV_FOURIER_IMAG:
- // get current x-range
- xminBin = fData[0].dataFourierIm->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].dataFourierIm->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].dataFourierIm->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].dataFourierIm->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].dataFourierIm->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].dataFourierIm->GetBinContent(j));
- }
- }
-
- // go through all theory bins
- for (Int_t j=1; jGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].theoryFourierIm->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.theoryX.push_back(freq);
- dump.theory.push_back(fData[i].theoryFourierIm->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- case PV_FOURIER_REAL_AND_IMAG:
- // get current x-range
- xminBin = fData[0].dataFourierRe->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].dataFourierRe->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].dataFourierRe->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].dataFourierRe->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].dataFourierRe->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].dataFourierRe->GetBinContent(j));
- }
- }
-
- // go through all theory bins
- for (Int_t j=1; jGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].theoryFourierRe->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.theoryX.push_back(freq);
- dump.theory.push_back(fData[i].theoryFourierRe->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
-
- //-----------------------------
- // Im
- //-----------------------------
- // clean up dump
- dump.dataX.clear();
- dump.data.clear();
- dump.dataErr.clear();
- dump.theoryX.clear();
- dump.theory.clear();
-
- // go through all data bins
- for (Int_t j=1; jGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].dataFourierIm->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].dataFourierIm->GetBinContent(j));
- }
- }
-
- // go through all theory bins
- for (Int_t j=1; jGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].theoryFourierIm->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.theoryX.push_back(freq);
- dump.theory.push_back(fData[i].theoryFourierIm->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
-
- }
- break;
- case PV_FOURIER_PWR:
- // get current x-range
- xminBin = fData[0].dataFourierPwr->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].dataFourierPwr->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].dataFourierPwr->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].dataFourierPwr->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].dataFourierPwr->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].dataFourierPwr->GetBinContent(j));
- }
- }
-
- // go through all theory bins
- for (Int_t j=1; jGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].theoryFourierPwr->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.theoryX.push_back(freq);
- dump.theory.push_back(fData[i].theoryFourierPwr->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- case PV_FOURIER_PHASE:
- // get current x-range
- xminBin = fData[0].dataFourierPhase->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fData[0].dataFourierPhase->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fData[0].dataFourierPhase->GetXaxis()->GetBinCenter(xminBin);
- xmax = fData[0].dataFourierPhase->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].dataFourierPhase->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.dataX.push_back(freq);
- dump.data.push_back(fData[i].dataFourierPhase->GetBinContent(j));
- }
- }
-
- // go through all theory bins
- for (Int_t j=1; jGetNbinsX(); j++) {
- // get frequency
- freq = fData[i].theoryFourierPhase->GetBinCenter(j);
- // check if time is in the current range
- if ((freq >= xmin) && (freq <= xmax)) {
- dump.theoryX.push_back(freq);
- dump.theory.push_back(fData[i].theoryFourierPhase->GetBinContent(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
- break;
- default:
- break;
- }
- }
- break;
- case MSR_PLOT_NON_MUSR:
- if (fDifferenceView) { // difference view plot
- switch (fCurrentPlotView) {
- case PV_DATA:
- // get current x-range
- xminBin = fMultiGraphData->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fMultiGraphData->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fMultiGraphData->GetXaxis()->GetBinCenter(xminBin);
- xmax = fMultiGraphData->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetN(); j++) {
- // get x and y value
- fNonMusrData[i].diff->GetPoint(j,xval,yval);
- // check if time is in the current range
- if ((xval >= xmin) && (xval <= xmax)) {
- dump.dataX.push_back(xval);
- dump.data.push_back(yval);
- dump.dataErr.push_back(fNonMusrData[i].diff->GetErrorY(j));
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
-
- break;
- case PV_FOURIER_REAL:
- break;
- case PV_FOURIER_IMAG:
- break;
- case PV_FOURIER_REAL_AND_IMAG:
- break;
- case PV_FOURIER_PWR:
- break;
- case PV_FOURIER_PHASE:
- break;
- default:
- break;
- }
- } else { // not a difference view plot
- switch (fCurrentPlotView) {
- case PV_DATA:
- // get current x-range
- xminBin = fMultiGraphData->GetXaxis()->GetFirst(); // first bin of the zoomed range
- xmaxBin = fMultiGraphData->GetXaxis()->GetLast(); // last bin of the zoomed range
- xmin = fMultiGraphData->GetXaxis()->GetBinCenter(xminBin);
- xmax = fMultiGraphData->GetXaxis()->GetBinCenter(xmaxBin);
-
- // fill ascii dump data
- for (UInt_t i=0; iGetN(); j++) {
- // get x and y value
- fNonMusrData[i].data->GetPoint(j,xval,yval);
- // check if time is in the current range
- if ((xval >= xmin) && (xval <= xmax)) {
- dump.dataX.push_back(xval);
- dump.data.push_back(yval);
- dump.dataErr.push_back(fNonMusrData[i].data->GetErrorY(j));
- }
- }
-
- // go through all theory bins
- for (Int_t j=0; jGetN(); j++) {
- // get x and y value
- fNonMusrData[i].theory->GetPoint(j,xval,yval);
- // check if time is in the current range
- if ((xval >= xmin) && (xval <= xmax)) {
- dump.theoryX.push_back(xval);
- dump.theory.push_back(yval);
- }
- }
-
- // if anything found keep it
- if (dump.dataX.size() > 0)
- dumpVector.push_back(dump);
- }
-
- break;
- case PV_FOURIER_REAL:
- break;
- case PV_FOURIER_IMAG:
- break;
- case PV_FOURIER_REAL_AND_IMAG:
- break;
- case PV_FOURIER_PWR:
- break;
- case PV_FOURIER_PHASE:
- break;
- default:
- break;
- }
- }
- break;
- default:
- break;
- }
-
- // generate output filename
-
- // in order to handle names with "." correctly this slightly odd data-filename generation
- TObjArray *tokens = fMsrHandler->GetFileName().Tokenize(".");
- TObjString *ostr;
- TString str;
- TString fln = TString("");
- for (Int_t i=0; iGetEntries()-1; i++) {
- ostr = dynamic_cast(tokens->At(i));
- fln += ostr->GetString() + TString(".");
- }
- if (!fDifferenceView) {
- fln += "data.ascii";
- } else {
- fln += "diff.ascii";
- }
-
- if (tokens) {
- delete tokens;
- tokens = 0;
- }
-
- // open file
- ofstream fout;
-
- // open output data-file
- fout.open(fln.Data(), iostream::out);
- if (!fout.is_open()) {
- cerr << endl << ">> PMusrCanvas::SaveDataAscii: **ERROR** couldn't open file " << fln.Data() << " for writing." << endl;
- return;
- }
-
- // find out what is the longest data/theory vector
- UInt_t maxDataLength = 0;
- UInt_t maxTheoryLength = 0;
- for (UInt_t i=0; i 0)
- fout << dumpVector[j].dataErr[i] << ", ";
- } else {
- if (dumpVector[j].dataErr.size() > 0)
- fout << ", , , ";
- else
- fout << ", , ";
- }
- }
- // write last difference entry
- if (i 0)
- fout << dumpVector[dumpVector.size()-1].dataErr[i];
- } else {
- if (dumpVector[dumpVector.size()-1].dataErr.size() > 0)
- fout << ", , ";
- else
- fout << ", ";
- }
- fout << endl;
- }
- } else { // no difference view
- // write header
- switch (fCurrentPlotView) {
- case PV_DATA:
- fout << "% ";
- for (UInt_t i=0; i maxTheoryLength)
- maxLength = maxDataLength;
- else
- maxLength = maxTheoryLength;
-
- // write data and theory
- for (UInt_t i=0; i 0)
- fout << dumpVector[j].dataErr[i] << ", ";
- } else {
- if (dumpVector[j].dataErr.size() > 0)
- fout << " , , , ";
- else
- fout << " , , ";
- }
- }
- // write theory
- for (UInt_t j=0; j> Data windows saved in ascii format ..." << endl;
-}
//--------------------------------------------------------------------------
// IsScaleN0AndBkg (private)
diff --git a/src/include/PMusrCanvas.h b/src/include/PMusrCanvas.h
index 8e4b79d2..7b44260e 100644
--- a/src/include/PMusrCanvas.h
+++ b/src/include/PMusrCanvas.h
@@ -229,7 +229,7 @@ class PMusrCanvas : public TObject, public TQObject
virtual void LastCanvasClosed(); // SLOT
virtual void SaveGraphicsAndQuit(Char_t *fileName, Char_t *graphicsFormat);
- virtual void SaveDataAsciiAndQuit();
+ virtual void SaveDataAscii();
private:
Int_t fTimeout; ///< timeout after which the Done signal should be emited. If timeout <= 0, no timeout is taking place
@@ -330,8 +330,6 @@ class PMusrCanvas : public TObject, public TQObject
virtual void IncrementFourierPhase();
virtual void DecrementFourierPhase();
- virtual void SaveDataAscii();
-
virtual Bool_t IsScaleN0AndBkg();
virtual UInt_t GetNeededAccuracy(PMsrParamStructure param);
diff --git a/src/musrview.cpp b/src/musrview.cpp
index 2568bb7c..6e035945 100644
--- a/src/musrview.cpp
+++ b/src/musrview.cpp
@@ -340,7 +340,9 @@ int main(int argc, char *argv[])
}
if (asciiOutput) {
- musrCanvas->SaveDataAsciiAndQuit();
+ // save data in batch mode
+ musrCanvas->SaveDataAscii();
+ musrCanvas->Done(0);
}
// keep musrCanvas objects