diff --git a/src/classes/PMusrCanvas.cpp b/src/classes/PMusrCanvas.cpp index f58b76c8..6d1cc114 100644 --- a/src/classes/PMusrCanvas.cpp +++ b/src/classes/PMusrCanvas.cpp @@ -902,8 +902,6 @@ void PMusrCanvas::HandleMenuPopup(Int_t id) } } else if (id == P_MENU_ID_SAVE_DATA+P_MENU_PLOT_OFFSET*fPlotNumber+P_MENU_ID_SAVE_ASCII) { SaveDataAscii(); - } else if (id == P_MENU_ID_SAVE_DATA+P_MENU_PLOT_OFFSET*fPlotNumber+P_MENU_ID_SAVE_DB) { - SaveDataDb(); } // check if phase increment/decrement needs to be ghost @@ -1084,7 +1082,6 @@ void PMusrCanvas::InitMusrCanvas(const char* title, Int_t wtopx, Int_t wtopy, In fPopupSave = new TGPopupMenu(); fPopupSave->AddEntry("Save ascii", P_MENU_ID_SAVE_DATA+P_MENU_PLOT_OFFSET*fPlotNumber+P_MENU_ID_SAVE_ASCII); - fPopupSave->AddEntry("Save db", P_MENU_ID_SAVE_DATA+P_MENU_PLOT_OFFSET*fPlotNumber+P_MENU_ID_SAVE_DB); fPopupMain->AddPopup("&Save Data", fPopupSave); fBar->MapSubwindows(); @@ -3843,648 +3840,3 @@ void PMusrCanvas::SaveDataAscii() cout << endl << ">> Data windows saved in ascii format ..." << endl; } - -//-------------------------------------------------------------------------- -// SaveDataDb (private) -//-------------------------------------------------------------------------- -/** - *

- * - */ -void PMusrCanvas::SaveDataDb() -{ - // 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(""); - for (int i=0; iGetEntries()-1; i++) { - ostr = dynamic_cast(tokens->At(i)); - str += ostr->GetString() + TString("."); - } - str += "db"; - - if (tokens) { - delete tokens; - tokens = 0; - } - - if (tokens) { - delete tokens; - tokens = 0; - } - - // open file - ofstream fout; - - // open mlog-file - fout.open(str.Data(), iostream::out); - if (!fout.is_open()) { - cout << endl << ">> PMusrCanvas::SaveDataDb: **ERROR** couldn't open file " << str.Data() << " for writing." << endl; - return; - } - - // extract data - Double_t time, xval, yval; - Int_t xminBin; - Int_t xmaxBin; - Int_t theoBin; - Double_t xmin; - Double_t xmax; - switch (fPlotType) { - case MSR_PLOT_SINGLE_HISTO: - case MSR_PLOT_ASYM: - case MSR_PLOT_ASYM_RRF: - if (fDifferenceView) { // difference view plot - switch (fCurrentPlotView) { - case PV_DATA: - // write header - fout << "TITLE" << endl; - fout << " " << fMsrHandler->GetMsrTitle()->Data() << endl; - fout << "LABELS" << endl; - fout << " Time (us)" << endl; - for (unsigned int j=0; jGetXaxis()->GetFirst(); // first bin of the zoomed range - xmaxBin = fData[0].diff->GetXaxis()->GetLast(); // last bin of the zoomed range - xmin = fData[0].diff->GetXaxis()->GetBinCenter(xminBin); - xmax = fData[0].diff->GetXaxis()->GetBinCenter(xmaxBin); - // get difference data - for (int i=1; iGetNbinsX()-1; i++) { - time = fData[0].diff->GetBinCenter(i); // get time - if ((time < xmin) || (time > xmax)) - continue; - fout << time << ",,, "; - for (unsigned int j=0; jGetBinContent(i) << ", "; - fout << fData[j].diff->GetBinError(i) << ",, "; - } - // write last data set - fout << fData[fData.size()-1].diff->GetBinContent(i) << ", "; - fout << fData[fData.size()-1].diff->GetBinError(i) << ",,"; - fout << endl; - } - 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: - // write header - fout << "TITLE" << endl; - fout << " " << fMsrHandler->GetMsrTitle()->Data() << endl; - fout << "LABELS" << endl; - fout << " Time (us)" << endl; - for (unsigned int j=0; jGetXaxis()->GetFirst(); // first bin of the zoomed range - xmaxBin = fData[0].data->GetXaxis()->GetLast(); // last bin of the zoomed range - xmin = fData[0].data->GetXaxis()->GetBinCenter(xminBin); - xmax = fData[0].data->GetXaxis()->GetBinCenter(xmaxBin); - // get data - for (int i=1; iGetNbinsX()-1; i++) { - time = fData[0].data->GetBinCenter(i); // get time - if ((time < xmin) || (time > xmax)) - continue; - fout << time << ",,, "; - for (unsigned int j=0; jGetBinContent(i) << ", "; - fout << fData[j].data->GetBinError(i) << ",, "; - theoBin = fData[j].theory->FindBin(time); - fout << fData[j].theory->GetBinContent(theoBin) << ",,, "; - } - // write last data set - fout << fData[fData.size()-1].data->GetBinContent(i) << ", "; - fout << fData[fData.size()-1].data->GetBinError(i) << ",, "; - theoBin = fData[fData.size()-1].theory->FindBin(time); - fout << fData[fData.size()-1].theory->GetBinContent(theoBin) << ",,, "; - fout << endl; - } - break; - case PV_FOURIER_REAL: - // 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) << ",,, "; - } - // 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; - } - } - break; - case MSR_PLOT_NON_MUSR: - if (fDifferenceView) { // difference view plot - switch (fCurrentPlotView) { - case PV_DATA: - // write header - fout << "TITLE" << endl; - fout << " " << fMsrHandler->GetMsrTitle()->Data() << endl; - fout << "LABELS" << endl; - fout << " Time (us)" << endl; - for (unsigned int j=0; jGetXaxis()->GetFirst(); // first bin of the zoomed range - xmaxBin = fNonMusrData[0].diff->GetXaxis()->GetLast(); // last bin of the zoomed range - xmin = fNonMusrData[0].diff->GetXaxis()->GetBinCenter(xminBin); - xmax = fNonMusrData[0].diff->GetXaxis()->GetBinCenter(xmaxBin); - // get data - for (int i=0; iGetN(); i++) { - fNonMusrData[0].diff->GetPoint(i,xval,yval); // get values - if ((xval < xmin) || (xval > xmax)) - continue; - fout << xval << ",,, "; - for (unsigned int j=0; jGetPoint(i,xval,yval); // get values - fout << yval << ", "; - fout << fNonMusrData[j].diff->GetErrorY(i) << ",, "; - } - // write last data set - fNonMusrData[fNonMusrData.size()-1].diff->GetPoint(i,xval,yval); // get values - fout << yval << ", "; - fout << fNonMusrData[fNonMusrData.size()-1].diff->GetErrorY(i) << ",,"; - fout << endl; - } - 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: - // write header - fout << "TITLE" << endl; - fout << " " << fMsrHandler->GetMsrTitle()->Data() << endl; - fout << "LABELS" << endl; - fout << " Time (us)" << endl; - for (unsigned int j=0; jGetXaxis()->GetFirst(); // first bin of the zoomed range - xmaxBin = fNonMusrData[0].data->GetXaxis()->GetLast(); // last bin of the zoomed range - xmin = fNonMusrData[0].data->GetXaxis()->GetBinCenter(xminBin); - xmax = fNonMusrData[0].data->GetXaxis()->GetBinCenter(xmaxBin); - // get data - for (int i=0; iGetN(); i++) { - fNonMusrData[0].data->GetPoint(i,xval,yval); // get values - if ((xval < xmin) || (xval > xmax)) - continue; - fout << xval << ",,, "; - for (unsigned int j=0; jGetPoint(i,xval,yval); // get values - fout << yval << ", "; - fout << fNonMusrData[j].data->GetErrorY(i) << ",, "; - theoBin = FindBin(xval, fNonMusrData[j].theory); - fNonMusrData[j].theory->GetPoint(theoBin,xval,yval); // get values - fout << yval << ",,,"; - } - // write last data set - fNonMusrData[fNonMusrData.size()-1].data->GetPoint(i,xval,yval); // get values - fout << yval << ", "; - fout << fNonMusrData[fNonMusrData.size()-1].data->GetErrorY(i) << ",, "; - theoBin = FindBin(xval, fNonMusrData[fNonMusrData.size()-1].theory); - fNonMusrData[fNonMusrData.size()-1].theory->GetPoint(theoBin,xval,yval); // get values - fout << yval << ",,,"; - fout << endl; - } - 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; - } - - // close file - fout.close(); - - cout << endl << ">> Data windows saved in db format ..." << endl; -} diff --git a/src/include/PMusrCanvas.h b/src/include/PMusrCanvas.h index 2270b84a..49652613 100644 --- a/src/include/PMusrCanvas.h +++ b/src/include/PMusrCanvas.h @@ -81,7 +81,6 @@ #define P_MENU_ID_FOURIER_PHASE_MINUS 106 #define P_MENU_ID_SAVE_ASCII 200 -#define P_MENU_ID_SAVE_DB 201 //------------------------------------------------------------------------ /** @@ -254,7 +253,6 @@ class PMusrCanvas : public TObject, public TQObject virtual void DecrementFourierPhase(); virtual void SaveDataAscii(); - virtual void SaveDataDb(); ClassDef(PMusrCanvas, 1) };