removed 'save db' support from PMusrCanvas.
This commit is contained in:
@ -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) {
|
} else if (id == P_MENU_ID_SAVE_DATA+P_MENU_PLOT_OFFSET*fPlotNumber+P_MENU_ID_SAVE_ASCII) {
|
||||||
SaveDataAscii();
|
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
|
// 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 = new TGPopupMenu();
|
||||||
fPopupSave->AddEntry("Save ascii", P_MENU_ID_SAVE_DATA+P_MENU_PLOT_OFFSET*fPlotNumber+P_MENU_ID_SAVE_ASCII);
|
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);
|
fPopupMain->AddPopup("&Save Data", fPopupSave);
|
||||||
fBar->MapSubwindows();
|
fBar->MapSubwindows();
|
||||||
@ -3843,648 +3840,3 @@ void PMusrCanvas::SaveDataAscii()
|
|||||||
|
|
||||||
cout << endl << ">> Data windows saved in ascii format ..." << endl;
|
cout << endl << ">> Data windows saved in ascii format ..." << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------
|
|
||||||
// SaveDataDb (private)
|
|
||||||
//--------------------------------------------------------------------------
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
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; i<tokens->GetEntries()-1; i++) {
|
|
||||||
ostr = dynamic_cast<TObjString*>(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; j<fData.size(); j++) {
|
|
||||||
fout << " Diff" << j << endl;
|
|
||||||
}
|
|
||||||
fout << endl;
|
|
||||||
fout << "DATA t ";
|
|
||||||
for (unsigned int j=0; j<fData.size(); j++) {
|
|
||||||
fout << "diff" << j << " ";
|
|
||||||
}
|
|
||||||
fout << endl;
|
|
||||||
fout << "\\-e" << endl;
|
|
||||||
|
|
||||||
// get current x-range
|
|
||||||
xminBin = fData[0].diff->GetXaxis()->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; i<fData[0].diff->GetNbinsX()-1; i++) {
|
|
||||||
time = fData[0].diff->GetBinCenter(i); // get time
|
|
||||||
if ((time < xmin) || (time > xmax))
|
|
||||||
continue;
|
|
||||||
fout << time << ",,, ";
|
|
||||||
for (unsigned int j=0; j<fData.size()-1; j++) {
|
|
||||||
fout << fData[j].diff->GetBinContent(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; j<fData.size(); j++) {
|
|
||||||
fout << " Data" << j << endl;
|
|
||||||
fout << " Theo" << j << endl;
|
|
||||||
}
|
|
||||||
fout << endl;
|
|
||||||
fout << "DATA t ";
|
|
||||||
for (unsigned int j=0; j<fData.size(); j++) {
|
|
||||||
fout << "data" << j << " " << "theo" << j << " ";
|
|
||||||
}
|
|
||||||
fout << endl;
|
|
||||||
fout << "\\-e" << endl;
|
|
||||||
|
|
||||||
// get current x-range
|
|
||||||
xminBin = fData[0].data->GetXaxis()->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; i<fData[0].data->GetNbinsX()-1; i++) {
|
|
||||||
time = fData[0].data->GetBinCenter(i); // get time
|
|
||||||
if ((time < xmin) || (time > xmax))
|
|
||||||
continue;
|
|
||||||
fout << time << ",,, ";
|
|
||||||
for (unsigned int j=0; j<fData.size()-1; j++) {
|
|
||||||
fout << fData[j].data->GetBinContent(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; j<fData.size(); j++) {
|
|
||||||
fout << " DataFourierRe" << j << endl;
|
|
||||||
fout << " TheoFourierRe" << j << endl;
|
|
||||||
}
|
|
||||||
fout << endl;
|
|
||||||
fout << "DATA ";
|
|
||||||
switch (fFourier.fUnits) {
|
|
||||||
case FOURIER_UNIT_FIELD:
|
|
||||||
str = TString("field");
|
|
||||||
break;
|
|
||||||
case FOURIER_UNIT_FREQ:
|
|
||||||
str = TString("freq");
|
|
||||||
break;
|
|
||||||
case FOURIER_UNIT_CYCLES:
|
|
||||||
str = TString("cycles");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
str = TString("????");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
fout << str.Data() << " ";
|
|
||||||
for (unsigned int j=0; j<fData.size(); j++) {
|
|
||||||
fout << "dataFourierRe" << j << " " << "theoFourierRe" << j << " ";
|
|
||||||
}
|
|
||||||
fout << endl;
|
|
||||||
fout << "\\-e" << endl;
|
|
||||||
|
|
||||||
// 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);
|
|
||||||
// get data
|
|
||||||
for (int i=1; i<fData[0].dataFourierRe->GetNbinsX()-1; i++) {
|
|
||||||
xval = fData[0].dataFourierRe->GetBinCenter(i); // get x-val
|
|
||||||
if ((xval < xmin) || (xval > xmax))
|
|
||||||
continue;
|
|
||||||
fout << xval << ",,, ";
|
|
||||||
for (unsigned int j=0; j<fData.size()-1; j++) {
|
|
||||||
fout << fData[j].dataFourierRe->GetBinContent(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; j<fData.size(); j++) {
|
|
||||||
fout << " DataFourierIm" << j << endl;
|
|
||||||
fout << " TheoFourierIm" << j << endl;
|
|
||||||
}
|
|
||||||
fout << endl;
|
|
||||||
fout << "DATA ";
|
|
||||||
switch (fFourier.fUnits) {
|
|
||||||
case FOURIER_UNIT_FIELD:
|
|
||||||
str = TString("field");
|
|
||||||
break;
|
|
||||||
case FOURIER_UNIT_FREQ:
|
|
||||||
str = TString("freq");
|
|
||||||
break;
|
|
||||||
case FOURIER_UNIT_CYCLES:
|
|
||||||
str = TString("cycles");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
str = TString("????");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
fout << str.Data() << " ";
|
|
||||||
for (unsigned int j=0; j<fData.size(); j++) {
|
|
||||||
fout << "dataFourierIm" << j << " " << "theoFourierIm" << j << " ";
|
|
||||||
}
|
|
||||||
fout << endl;
|
|
||||||
fout << "\\-e" << endl;
|
|
||||||
|
|
||||||
// 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);
|
|
||||||
// get data
|
|
||||||
for (int i=1; i<fData[0].dataFourierIm->GetNbinsX()-1; i++) {
|
|
||||||
xval = fData[0].dataFourierIm->GetBinCenter(i); // get x-val
|
|
||||||
if ((xval < xmin) || (xval > xmax))
|
|
||||||
continue;
|
|
||||||
fout << xval << ",,, ";
|
|
||||||
for (unsigned int j=0; j<fData.size()-1; j++) {
|
|
||||||
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].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; j<fData.size(); j++) {
|
|
||||||
fout << " DataFourierRe" << j << endl;
|
|
||||||
fout << " TheoFourierRe" << j << endl;
|
|
||||||
fout << " DataFourierIm" << j << endl;
|
|
||||||
fout << " TheoFourierIm" << j << endl;
|
|
||||||
}
|
|
||||||
fout << endl;
|
|
||||||
fout << "DATA ";
|
|
||||||
switch (fFourier.fUnits) {
|
|
||||||
case FOURIER_UNIT_FIELD:
|
|
||||||
str = TString("field");
|
|
||||||
break;
|
|
||||||
case FOURIER_UNIT_FREQ:
|
|
||||||
str = TString("freq");
|
|
||||||
break;
|
|
||||||
case FOURIER_UNIT_CYCLES:
|
|
||||||
str = TString("cycles");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
str = TString(" ????");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
fout << str.Data() << " ";
|
|
||||||
for (unsigned int j=0; j<fData.size(); j++) {
|
|
||||||
fout << "dataFourierRe" << j << " " << "theoFourierRe" << j << " " << "dataFourierIm" << j << " " << "theoFourierIm" << j << " ";
|
|
||||||
}
|
|
||||||
fout << endl;
|
|
||||||
fout << "\\-e" << endl;
|
|
||||||
|
|
||||||
// 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);
|
|
||||||
// get data
|
|
||||||
for (int i=1; i<fData[0].dataFourierRe->GetNbinsX()-1; i++) {
|
|
||||||
xval = fData[0].dataFourierRe->GetBinCenter(i); // get x-val
|
|
||||||
if ((xval < xmin) || (xval > xmax))
|
|
||||||
continue;
|
|
||||||
fout << xval << ",,, ";
|
|
||||||
for (unsigned int j=0; j<fData.size()-1; j++) {
|
|
||||||
fout << fData[j].dataFourierRe->GetBinContent(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; j<fData.size(); j++) {
|
|
||||||
fout << " DataFourierPwr" << j << endl;
|
|
||||||
fout << " TheoFourierPwr" << j << endl;
|
|
||||||
}
|
|
||||||
fout << endl;
|
|
||||||
fout << "DATA ";
|
|
||||||
switch (fFourier.fUnits) {
|
|
||||||
case FOURIER_UNIT_FIELD:
|
|
||||||
str = TString("field");
|
|
||||||
break;
|
|
||||||
case FOURIER_UNIT_FREQ:
|
|
||||||
str = TString("freq");
|
|
||||||
break;
|
|
||||||
case FOURIER_UNIT_CYCLES:
|
|
||||||
str = TString("cycles");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
str = TString("????");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
fout << str.Data() << " ";
|
|
||||||
for (unsigned int j=0; j<fData.size(); j++) {
|
|
||||||
fout << "dataFourierPwr" << j << " " << "theoFourierPwr" << j << " ";
|
|
||||||
}
|
|
||||||
fout << endl;
|
|
||||||
fout << "\\-e" << endl;
|
|
||||||
|
|
||||||
// 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);
|
|
||||||
// get data
|
|
||||||
for (int i=1; i<fData[0].dataFourierPwr->GetNbinsX()-1; i++) {
|
|
||||||
xval = fData[0].dataFourierPwr->GetBinCenter(i); // get x-val
|
|
||||||
if ((xval < xmin) || (xval > xmax))
|
|
||||||
continue;
|
|
||||||
fout << xval << ",,, ";
|
|
||||||
for (unsigned int j=0; j<fData.size()-1; j++) {
|
|
||||||
fout << fData[j].dataFourierPwr->GetBinContent(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; j<fData.size(); j++) {
|
|
||||||
fout << " DataFourierPhase" << j << endl;
|
|
||||||
fout << " TheoFourierPhase" << j << endl;
|
|
||||||
}
|
|
||||||
fout << endl;
|
|
||||||
fout << "DATA ";
|
|
||||||
switch (fFourier.fUnits) {
|
|
||||||
case FOURIER_UNIT_FIELD:
|
|
||||||
str = TString("field");
|
|
||||||
break;
|
|
||||||
case FOURIER_UNIT_FREQ:
|
|
||||||
str = TString("freq");
|
|
||||||
break;
|
|
||||||
case FOURIER_UNIT_CYCLES:
|
|
||||||
str = TString("cycles");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
str = TString("????");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
fout << str.Data() << " ";
|
|
||||||
for (unsigned int j=0; j<fData.size(); j++) {
|
|
||||||
fout << "dataFourierPhase" << j << " " << "theoFourierPhase" << j << " ";
|
|
||||||
}
|
|
||||||
fout << endl;
|
|
||||||
fout << "\\-e" << endl;
|
|
||||||
|
|
||||||
// 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);
|
|
||||||
// get data
|
|
||||||
for (int i=1; i<fData[0].dataFourierPhase->GetNbinsX()-1; i++) {
|
|
||||||
xval = fData[0].dataFourierPhase->GetBinCenter(i); // get x-val
|
|
||||||
if ((xval < xmin) || (xval > xmax))
|
|
||||||
continue;
|
|
||||||
fout << xval << ",,, ";
|
|
||||||
for (unsigned int j=0; j<fData.size()-1; j++) {
|
|
||||||
fout << fData[j].dataFourierPhase->GetBinContent(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; j<fNonMusrData.size(); j++) {
|
|
||||||
fout << " Diff" << j << endl;
|
|
||||||
}
|
|
||||||
fout << endl;
|
|
||||||
fout << "DATA t ";
|
|
||||||
for (unsigned int j=0; j<fNonMusrData.size(); j++) {
|
|
||||||
fout << "diff" << j << " ";
|
|
||||||
}
|
|
||||||
fout << endl;
|
|
||||||
fout << "\\-e" << endl;
|
|
||||||
|
|
||||||
// write data
|
|
||||||
// get current x-range
|
|
||||||
xminBin = fNonMusrData[0].diff->GetXaxis()->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; i<fNonMusrData[0].diff->GetN(); i++) {
|
|
||||||
fNonMusrData[0].diff->GetPoint(i,xval,yval); // get values
|
|
||||||
if ((xval < xmin) || (xval > xmax))
|
|
||||||
continue;
|
|
||||||
fout << xval << ",,, ";
|
|
||||||
for (unsigned int j=0; j<fNonMusrData.size()-1; j++) {
|
|
||||||
fNonMusrData[j].diff->GetPoint(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; j<fNonMusrData.size(); j++) {
|
|
||||||
fout << " Data" << j << endl;
|
|
||||||
fout << " Theo" << j << endl;
|
|
||||||
}
|
|
||||||
fout << endl;
|
|
||||||
fout << "DATA t ";
|
|
||||||
for (unsigned int j=0; j<fNonMusrData.size(); j++) {
|
|
||||||
fout << "diff" << j << " " << "theo" << j << " ";
|
|
||||||
}
|
|
||||||
fout << endl;
|
|
||||||
fout << "\\-e" << endl;
|
|
||||||
|
|
||||||
// write data
|
|
||||||
// get current x-range
|
|
||||||
xminBin = fNonMusrData[0].data->GetXaxis()->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; i<fNonMusrData[0].data->GetN(); i++) {
|
|
||||||
fNonMusrData[0].data->GetPoint(i,xval,yval); // get values
|
|
||||||
if ((xval < xmin) || (xval > xmax))
|
|
||||||
continue;
|
|
||||||
fout << xval << ",,, ";
|
|
||||||
for (unsigned int j=0; j<fNonMusrData.size()-1; j++) {
|
|
||||||
fNonMusrData[j].data->GetPoint(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;
|
|
||||||
}
|
|
||||||
|
@ -81,7 +81,6 @@
|
|||||||
#define P_MENU_ID_FOURIER_PHASE_MINUS 106
|
#define P_MENU_ID_FOURIER_PHASE_MINUS 106
|
||||||
|
|
||||||
#define P_MENU_ID_SAVE_ASCII 200
|
#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 DecrementFourierPhase();
|
||||||
|
|
||||||
virtual void SaveDataAscii();
|
virtual void SaveDataAscii();
|
||||||
virtual void SaveDataDb();
|
|
||||||
|
|
||||||
ClassDef(PMusrCanvas, 1)
|
ClassDef(PMusrCanvas, 1)
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user