From 77fcf94b266ec649012026b15f65ebef1b95b4ba Mon Sep 17 00:00:00 2001 From: nemu Date: Mon, 5 Jan 2009 15:53:29 +0000 Subject: [PATCH] added data export for Fourier --- src/classes/PMusrCanvas.cpp | 599 +++++++++++++++++++++++++++++++++++- 1 file changed, 598 insertions(+), 1 deletion(-) diff --git a/src/classes/PMusrCanvas.cpp b/src/classes/PMusrCanvas.cpp index 9412a619..83454612 100644 --- a/src/classes/PMusrCanvas.cpp +++ b/src/classes/PMusrCanvas.cpp @@ -1988,6 +1988,8 @@ void PMusrCanvas::SaveDataAscii() break; case PV_FOURIER_IMAG: break; + case PV_FOURIER_REAL_AND_IMAG: + break; case PV_FOURIER_PWR: break; case PV_FOURIER_PHASE: @@ -2031,12 +2033,247 @@ void PMusrCanvas::SaveDataAscii() } break; case PV_FOURIER_REAL: + // write header + str = TString("% "); + switch (fFourier.fUnits) { + case FOURIER_UNIT_FIELD: + str += TString(" Field (G)"); + break; + case FOURIER_UNIT_FREQ: + str += TString(" Frequency (MHz)"); + break; + case FOURIER_UNIT_CYCLES: + str += TString(" Angular Frequency (Mc/s)"); + break; + default: + str += TString(" ????"); + break; + } + str += TString(", "); + fout << endl << str.Data(); + for (unsigned int j=0; jGetXaxis()->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); + // get data + for (int i=1; iGetNbinsX()-1; i++) { + xval = fData[0].dataFourierRe->GetBinCenter(i); // get x-unit + if ((xval < xmin) || (xval > xmax)) + continue; + fout << xval << ", "; + for (unsigned int j=0; jGetBinContent(i) << ", "; + theoBin = fData[j].theoryFourierRe->FindBin(xval); + fout << fData[j].theoryFourierRe->GetBinContent(theoBin) << ", "; + } + // write last data set + fout << fData[fData.size()-1].dataFourierRe->GetBinContent(i) << ", "; + theoBin = fData[fData.size()-1].theoryFourierRe->FindBin(xval); + fout << fData[fData.size()-1].theoryFourierRe->GetBinContent(theoBin); + fout << endl; + } break; case PV_FOURIER_IMAG: + // write header + str = TString("% "); + switch (fFourier.fUnits) { + case FOURIER_UNIT_FIELD: + str += TString(" Field (G)"); + break; + case FOURIER_UNIT_FREQ: + str += TString(" Frequency (MHz)"); + break; + case FOURIER_UNIT_CYCLES: + str += TString(" Angular Frequency (Mc/s)"); + break; + default: + str += TString(" ????"); + break; + } + str += TString(", "); + fout << endl << str.Data(); + for (unsigned int j=0; jGetXaxis()->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); + // get data + for (int i=1; iGetNbinsX()-1; i++) { + xval = fData[0].dataFourierIm->GetBinCenter(i); // get x-unit + if ((xval < xmin) || (xval > xmax)) + continue; + fout << xval << ", "; + for (unsigned int j=0; jGetBinContent(i) << ", "; + theoBin = fData[j].theoryFourierIm->FindBin(xval); + fout << fData[j].theoryFourierIm->GetBinContent(theoBin) << ", "; + } + // write last data set + fout << fData[fData.size()-1].dataFourierIm->GetBinContent(i) << ", "; + theoBin = fData[fData.size()-1].theoryFourierIm->FindBin(xval); + fout << fData[fData.size()-1].theoryFourierIm->GetBinContent(theoBin); + fout << endl; + } + break; + case PV_FOURIER_REAL_AND_IMAG: + // write header + str = TString("% "); + switch (fFourier.fUnits) { + case FOURIER_UNIT_FIELD: + str += TString(" Field (G)"); + break; + case FOURIER_UNIT_FREQ: + str += TString(" Frequency (MHz)"); + break; + case FOURIER_UNIT_CYCLES: + str += TString(" Angular Frequency (Mc/s)"); + break; + default: + str += TString(" ????"); + break; + } + str += TString(", "); + fout << endl << str.Data(); + for (unsigned int j=0; jGetXaxis()->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); + // get data + for (int i=1; iGetNbinsX()-1; i++) { + xval = fData[0].dataFourierRe->GetBinCenter(i); // get x-unit + if ((xval < xmin) || (xval > xmax)) + continue; + fout << xval << ", "; + for (unsigned int j=0; jGetBinContent(i) << ", "; + theoBin = fData[j].theoryFourierRe->FindBin(xval); + fout << fData[j].theoryFourierRe->GetBinContent(theoBin) << ", "; + fout << fData[j].dataFourierIm->GetBinContent(i) << ", "; + theoBin = fData[j].theoryFourierIm->FindBin(xval); + fout << fData[j].theoryFourierIm->GetBinContent(theoBin) << ", "; + } + // write last data set + fout << fData[fData.size()-1].dataFourierRe->GetBinContent(i) << ", "; + theoBin = fData[fData.size()-1].theoryFourierRe->FindBin(xval); + fout << fData[fData.size()-1].theoryFourierRe->GetBinContent(theoBin) << ", "; + fout << fData[fData.size()-1].dataFourierIm->GetBinContent(i) << ", "; + theoBin = fData[fData.size()-1].theoryFourierIm->FindBin(xval); + fout << fData[fData.size()-1].theoryFourierIm->GetBinContent(theoBin); + fout << endl; + } break; case PV_FOURIER_PWR: + // write header + str = TString("% "); + switch (fFourier.fUnits) { + case FOURIER_UNIT_FIELD: + str += TString(" Field (G)"); + break; + case FOURIER_UNIT_FREQ: + str += TString(" Frequency (MHz)"); + break; + case FOURIER_UNIT_CYCLES: + str += TString(" Angular Frequency (Mc/s)"); + break; + default: + str += TString(" ????"); + break; + } + str += TString(", "); + fout << endl << str.Data(); + for (unsigned int j=0; jGetXaxis()->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); + // get data + for (int i=1; iGetNbinsX()-1; i++) { + xval = fData[0].dataFourierPwr->GetBinCenter(i); // get x-unit + if ((xval < xmin) || (xval > xmax)) + continue; + fout << xval << ", "; + for (unsigned int j=0; jGetBinContent(i) << ", "; + theoBin = fData[j].theoryFourierPwr->FindBin(xval); + fout << fData[j].theoryFourierPwr->GetBinContent(theoBin) << ", "; + } + // write last data set + fout << fData[fData.size()-1].dataFourierPwr->GetBinContent(i) << ", "; + theoBin = fData[fData.size()-1].theoryFourierPwr->FindBin(xval); + fout << fData[fData.size()-1].theoryFourierPwr->GetBinContent(theoBin); + fout << endl; + } break; case PV_FOURIER_PHASE: + // write header + str = TString("% "); + switch (fFourier.fUnits) { + case FOURIER_UNIT_FIELD: + str += TString(" Field (G)"); + break; + case FOURIER_UNIT_FREQ: + str += TString(" Frequency (MHz)"); + break; + case FOURIER_UNIT_CYCLES: + str += TString(" Angular Frequency (Mc/s)"); + break; + default: + str += TString(" ????"); + break; + } + str += TString(", "); + fout << endl << str.Data(); + for (unsigned int j=0; jGetXaxis()->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); + // get data + for (int i=1; iGetNbinsX()-1; i++) { + xval = fData[0].dataFourierPhase->GetBinCenter(i); // get x-unit + if ((xval < xmin) || (xval > xmax)) + continue; + fout << xval << ", "; + for (unsigned int j=0; jGetBinContent(i) << ", "; + theoBin = fData[j].theoryFourierPhase->FindBin(xval); + fout << fData[j].theoryFourierPhase->GetBinContent(theoBin) << ", "; + } + // write last data set + fout << fData[fData.size()-1].dataFourierPhase->GetBinContent(i) << ", "; + theoBin = fData[fData.size()-1].theoryFourierPhase->FindBin(xval); + fout << fData[fData.size()-1].theoryFourierPhase->GetBinContent(theoBin); + fout << endl; + } break; default: break; @@ -2082,6 +2319,8 @@ void PMusrCanvas::SaveDataAscii() break; case PV_FOURIER_IMAG: break; + case PV_FOURIER_REAL_AND_IMAG: + break; case PV_FOURIER_PWR: break; case PV_FOURIER_PHASE: @@ -2133,6 +2372,8 @@ void PMusrCanvas::SaveDataAscii() break; case PV_FOURIER_IMAG: break; + case PV_FOURIER_REAL_AND_IMAG: + break; case PV_FOURIER_PWR: break; case PV_FOURIER_PHASE: @@ -2248,6 +2489,8 @@ void PMusrCanvas::SaveDataDb() break; case PV_FOURIER_IMAG: break; + case PV_FOURIER_REAL_AND_IMAG: + break; case PV_FOURIER_PWR: break; case PV_FOURIER_PHASE: @@ -2270,7 +2513,7 @@ void PMusrCanvas::SaveDataDb() fout << endl; fout << "DATA t "; for (unsigned int j=0; jGetMsrTitle()->Data() << endl; + fout << "LABELS" << endl; + switch (fFourier.fUnits) { + case FOURIER_UNIT_FIELD: + str = TString(" Field (G)"); + break; + case FOURIER_UNIT_FREQ: + str = TString(" Frequency (MHz)"); + break; + case FOURIER_UNIT_CYCLES: + str = TString(" Angular Frequency (Mc/s)"); + break; + default: + str = TString(" ????"); + break; + } + fout << str.Data() << endl; + for (unsigned int j=0; jGetXaxis()->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); + // get data + for (int i=1; iGetNbinsX()-1; i++) { + xval = fData[0].dataFourierRe->GetBinCenter(i); // get x-val + if ((xval < xmin) || (xval > xmax)) + continue; + fout << xval << ",,, "; + for (unsigned int j=0; jGetBinContent(i) << ",,, "; + theoBin = fData[j].theoryFourierRe->FindBin(xval); + fout << fData[j].theoryFourierRe->GetBinContent(theoBin) << ",,, "; + } + // write last data set + fout << fData[fData.size()-1].dataFourierRe->GetBinContent(i) << ",,, "; + theoBin = fData[fData.size()-1].theoryFourierRe->FindBin(xval); + fout << fData[fData.size()-1].theoryFourierRe->GetBinContent(theoBin) << ",,, "; + fout << endl; + } break; case PV_FOURIER_IMAG: + // write header + fout << "TITLE" << endl; + fout << " " << fMsrHandler->GetMsrTitle()->Data() << endl; + fout << "LABELS" << endl; + switch (fFourier.fUnits) { + case FOURIER_UNIT_FIELD: + str = TString(" Field (G)"); + break; + case FOURIER_UNIT_FREQ: + str = TString(" Frequency (MHz)"); + break; + case FOURIER_UNIT_CYCLES: + str = TString(" Angular Frequency (Mc/s)"); + break; + default: + str = TString(" ????"); + break; + } + fout << str.Data() << endl; + for (unsigned int j=0; jGetXaxis()->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); + // get data + for (int i=1; iGetNbinsX()-1; i++) { + xval = fData[0].dataFourierIm->GetBinCenter(i); // get x-val + if ((xval < xmin) || (xval > xmax)) + continue; + fout << xval << ",,, "; + for (unsigned int j=0; jGetBinContent(i) << ",,, "; + theoBin = fData[j].theoryFourierIm->FindBin(xval); + fout << fData[j].theoryFourierIm->GetBinContent(theoBin) << ",,, "; + } + // write last data set + fout << fData[fData.size()-1].dataFourierIm->GetBinContent(i) << ",,, "; + theoBin = fData[fData.size()-1].theoryFourierIm->FindBin(xval); + fout << fData[fData.size()-1].theoryFourierIm->GetBinContent(theoBin) << ",,, "; + fout << endl; + } + break; + case PV_FOURIER_REAL_AND_IMAG: + // write header + fout << "TITLE" << endl; + fout << " " << fMsrHandler->GetMsrTitle()->Data() << endl; + fout << "LABELS" << endl; + switch (fFourier.fUnits) { + case FOURIER_UNIT_FIELD: + str = TString(" Field (G)"); + break; + case FOURIER_UNIT_FREQ: + str = TString(" Frequency (MHz)"); + break; + case FOURIER_UNIT_CYCLES: + str = TString(" Angular Frequency (Mc/s)"); + break; + default: + str = TString(" ????"); + break; + } + fout << str.Data() << endl; + for (unsigned int j=0; jGetXaxis()->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); + // get data + for (int i=1; iGetNbinsX()-1; i++) { + xval = fData[0].dataFourierRe->GetBinCenter(i); // get x-val + if ((xval < xmin) || (xval > xmax)) + continue; + fout << xval << ",,, "; + for (unsigned int j=0; jGetBinContent(i) << ",,, "; + theoBin = fData[j].theoryFourierRe->FindBin(xval); + fout << fData[j].theoryFourierRe->GetBinContent(theoBin) << ",,, "; + fout << fData[j].dataFourierIm->GetBinContent(i) << ",,, "; + theoBin = fData[j].theoryFourierIm->FindBin(xval); + fout << fData[j].theoryFourierIm->GetBinContent(theoBin) << ",,, "; + } + // write last data set + fout << fData[fData.size()-1].dataFourierRe->GetBinContent(i) << ",,, "; + theoBin = fData[fData.size()-1].theoryFourierRe->FindBin(xval); + fout << fData[fData.size()-1].theoryFourierRe->GetBinContent(theoBin) << ",,, "; + fout << fData[fData.size()-1].dataFourierIm->GetBinContent(i) << ",,, "; + theoBin = fData[fData.size()-1].theoryFourierIm->FindBin(xval); + fout << fData[fData.size()-1].theoryFourierIm->GetBinContent(theoBin) << ",,, "; + fout << endl; + } break; case PV_FOURIER_PWR: + // write header + fout << "TITLE" << endl; + fout << " " << fMsrHandler->GetMsrTitle()->Data() << endl; + fout << "LABELS" << endl; + switch (fFourier.fUnits) { + case FOURIER_UNIT_FIELD: + str = TString(" Field (G)"); + break; + case FOURIER_UNIT_FREQ: + str = TString(" Frequency (MHz)"); + break; + case FOURIER_UNIT_CYCLES: + str = TString(" Angular Frequency (Mc/s)"); + break; + default: + str = TString(" ????"); + break; + } + fout << str.Data() << endl; + for (unsigned int j=0; jGetXaxis()->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); + // get data + for (int i=1; iGetNbinsX()-1; i++) { + xval = fData[0].dataFourierPwr->GetBinCenter(i); // get x-val + if ((xval < xmin) || (xval > xmax)) + continue; + fout << xval << ",,, "; + for (unsigned int j=0; jGetBinContent(i) << ",,, "; + theoBin = fData[j].theoryFourierPwr->FindBin(xval); + fout << fData[j].theoryFourierPwr->GetBinContent(theoBin) << ",,, "; + } + // write last data set + fout << fData[fData.size()-1].dataFourierPwr->GetBinContent(i) << ",,, "; + theoBin = fData[fData.size()-1].theoryFourierPwr->FindBin(xval); + fout << fData[fData.size()-1].theoryFourierPwr->GetBinContent(theoBin) << ",,, "; + fout << endl; + } break; case PV_FOURIER_PHASE: + // write header + fout << "TITLE" << endl; + fout << " " << fMsrHandler->GetMsrTitle()->Data() << endl; + fout << "LABELS" << endl; + switch (fFourier.fUnits) { + case FOURIER_UNIT_FIELD: + str = TString(" Field (G)"); + break; + case FOURIER_UNIT_FREQ: + str = TString(" Frequency (MHz)"); + break; + case FOURIER_UNIT_CYCLES: + str = TString(" Angular Frequency (Mc/s)"); + break; + default: + str = TString(" ????"); + break; + } + fout << str.Data() << endl; + for (unsigned int j=0; jGetXaxis()->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); + // get data + for (int i=1; iGetNbinsX()-1; i++) { + xval = fData[0].dataFourierPhase->GetBinCenter(i); // get x-val + if ((xval < xmin) || (xval > xmax)) + continue; + fout << xval << ",,, "; + for (unsigned int j=0; jGetBinContent(i) << ",,, "; + theoBin = fData[j].theoryFourierPhase->FindBin(xval); + fout << fData[j].theoryFourierPhase->GetBinContent(theoBin) << ",,, "; + } + // write last data set + fout << fData[fData.size()-1].dataFourierPhase->GetBinContent(i) << ",,, "; + theoBin = fData[fData.size()-1].theoryFourierPhase->FindBin(xval); + fout << fData[fData.size()-1].theoryFourierPhase->GetBinContent(theoBin) << ",,, "; + fout << endl; + } break; default: break; @@ -2361,6 +2954,8 @@ void PMusrCanvas::SaveDataDb() break; case PV_FOURIER_IMAG: break; + case PV_FOURIER_REAL_AND_IMAG: + break; case PV_FOURIER_PWR: break; case PV_FOURIER_PHASE: @@ -2422,6 +3017,8 @@ void PMusrCanvas::SaveDataDb() break; case PV_FOURIER_IMAG: break; + case PV_FOURIER_REAL_AND_IMAG: + break; case PV_FOURIER_PWR: break; case PV_FOURIER_PHASE: