From 8cc07318ebe4794c03e7a59e4f2bc6201b359fe1 Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Thu, 26 Feb 2015 13:15:29 +0100 Subject: [PATCH] some more bug fixing for average per data set. --- src/classes/PFourierCanvas.cpp | 10 ++++--- src/classes/PRunDataHandler.cpp | 3 +- src/include/PRunDataHandler.h | 2 +- src/musrFT.cpp | 38 +++++++++++++++++++----- src/musredit/PGetMusrFTOptionsDialog.cpp | 1 + 5 files changed, 40 insertions(+), 14 deletions(-) diff --git a/src/classes/PFourierCanvas.cpp b/src/classes/PFourierCanvas.cpp index 38bb4a79..e163fe68 100644 --- a/src/classes/PFourierCanvas.cpp +++ b/src/classes/PFourierCanvas.cpp @@ -1170,6 +1170,8 @@ void PFourierCanvas::HandleAverage() currentTag = fDataSetTag[j]; } } + if (start == -1) + start = fDataSetTag.size()-1; if (end == -1) end = fDataSetTag.size()-1; @@ -1197,7 +1199,7 @@ void PFourierCanvas::HandleAverage() // real average for (Int_t j=0; jGetNbinsX(); j++) { dval = 0.0; - for (Int_t k=start; kGetNbinsX()) dval += GetInterpolatedValue(fFourierHistos[k].dataFourierRe, fFourierHistos[0].dataFourierRe->GetBinCenter(j)); } @@ -1212,7 +1214,7 @@ void PFourierCanvas::HandleAverage() // imaginary average for (Int_t j=0; jGetNbinsX(); j++) { dval = 0.0; - for (Int_t k=start; kGetNbinsX()) dval += GetInterpolatedValue(fFourierHistos[k].dataFourierIm, fFourierHistos[0].dataFourierIm->GetBinCenter(j)); } @@ -1227,7 +1229,7 @@ void PFourierCanvas::HandleAverage() // power average for (Int_t j=0; jGetNbinsX(); j++) { dval = 0.0; - for (Int_t k=start; kGetNbinsX()) dval += GetInterpolatedValue(fFourierHistos[k].dataFourierPwr, fFourierHistos[0].dataFourierPwr->GetBinCenter(j)); } @@ -1242,7 +1244,7 @@ void PFourierCanvas::HandleAverage() // phase average for (Int_t j=0; jGetNbinsX(); j++) { dval = 0.0; - for (Int_t k=start; kGetNbinsX()) dval += GetInterpolatedValue(fFourierHistos[k].dataFourierPhase, fFourierHistos[0].dataFourierPhase->GetBinCenter(j)); } diff --git a/src/classes/PRunDataHandler.cpp b/src/classes/PRunDataHandler.cpp index a6a8ed0d..9d5c40d2 100644 --- a/src/classes/PRunDataHandler.cpp +++ b/src/classes/PRunDataHandler.cpp @@ -280,7 +280,8 @@ void PRunDataHandler::ReadData() fAllDataAvailable = ReadRootFile(); } else if ((fFileFormat == "NeXus") || (fFileFormat == "nexus")) { fAllDataAvailable = ReadNexusFile(); - } else if ((fFileFormat == "PsiBin") || (fFileFormat == "psibin")) { + } else if ((fFileFormat == "PsiBin") || (fFileFormat == "psibin") || + (fFileFormat == "PsiMdu") || (fFileFormat == "psimdu")) { fAllDataAvailable = ReadPsiBinFile(); } else if ((fFileFormat == "Mud") || (fFileFormat == "mud")) { fAllDataAvailable = ReadMudFile(); diff --git a/src/include/PRunDataHandler.h b/src/include/PRunDataHandler.h index 68c27eab..2618b1ef 100644 --- a/src/include/PRunDataHandler.h +++ b/src/include/PRunDataHandler.h @@ -61,7 +61,7 @@ class PRunDataHandler virtual Bool_t IsAllDataAvailable() const { return fAllDataAvailable; } virtual PRawRunData* GetRunData(const TString &runName); virtual PRawRunData* GetRunData(const UInt_t idx=0); - virtual TString GetRunPathName() {return fRunPathName; } + virtual Int_t GetNoOfRunData() {return fData.size(); } private: PMsrHandler *fMsrInfo; ///< pointer to the msr-file handler diff --git a/src/musrFT.cpp b/src/musrFT.cpp index 5a76299c..37c931c3 100644 --- a/src/musrFT.cpp +++ b/src/musrFT.cpp @@ -1151,12 +1151,6 @@ Int_t main(Int_t argc, Char_t *argv[]) } // get meta info, time resolution, time range, raw data sets - // check if the data set path-name has changed - if (prevDataSetPathName.CompareTo(runDataHandler[i]->GetRunPathName())) { // i.e. data set path-name changed - rd.dataSetTag = dataSetTagCounter++; - prevDataSetPathName = runDataHandler[i]->GetRunPathName(); - } - if (i < msrHandler.size()) { // obtain info from msr-files // keep title if not overwritten by the command line if (startupParam.title.Length() == 0) @@ -1212,7 +1206,20 @@ Int_t main(Int_t argc, Char_t *argv[]) startupParam.fourierPower = fourierBlock->fFourierPower; } // get apodization tag - apodTag = fourierBlock->fApodization; + switch (fourierBlock->fApodization) { + case FOURIER_APOD_WEAK: + startupParam.apodization = "weak"; + break; + case FOURIER_APOD_MEDIUM: + startupParam.apodization = "medium"; + break; + case FOURIER_APOD_STRONG: + startupParam.apodization = "strong"; + break; + default: + startupParam.apodization = "none"; + break; + } // get range if ((startupParam.fourierRange[0] == -1) && (startupParam.fourierRange[1] == -1)) { // no Fourier range given from the command line startupParam.fourierRange[0] = fourierBlock->fPlotRange[0]; @@ -1231,6 +1238,13 @@ Int_t main(Int_t argc, Char_t *argv[]) // loop over all runs listed in the msr-file PLOT block for (UInt_t j=0; jat(runList[j]-1).GetRunName()); // get the name from the msr-file RUN block + if (prevDataSetPathName.CompareTo(str)) { // i.e. data set name changed + rd.dataSetTag = dataSetTagCounter++; + prevDataSetPathName = str; + } + // keep forward histo list PIntVector histoList; for (UInt_t k=0; kat(runList[j]-1).GetForwardHistoNoSize(); k++) { @@ -1238,7 +1252,7 @@ Int_t main(Int_t argc, Char_t *argv[]) } // handle meta information - fln = runDataHandler[i]->GetRunPathName(); + fln = *(runs->at(runList[j]-1).GetRunName()); // get the name from the msr-file RUN block musrFT_getMetaInfo(fln, rawRunData, str); TString hh(""); hh = TString::Format("h%d", histoList[0]); @@ -1294,6 +1308,14 @@ Int_t main(Int_t argc, Char_t *argv[]) data.SetBkgRange(startupParam.bkg_range); } } else { // obtain info from command line options for direct data-file read + // check if the data set name has changed + // since data-files are given, each PRunDataHandler object contains only a SINGLE data file. + str = *(runDataHandler[i]->GetRunData()->GetFileName()); // get the data set name + if (prevDataSetPathName.CompareTo(str)) { // i.e. data set name changed + rd.dataSetTag = dataSetTagCounter++; + prevDataSetPathName = str; + } + musrFT_getMetaInfo(startupParam.dataFln[i-msrHandler.size()], rawRunData, str); for (UInt_t j=0; jsetText(""); fFourierRangeEnd_lineEdit->setText(""); fAveragedView_checkBox->setCheckState(Qt::Unchecked); + fAveragePerDataSet_checkBox->setCheckState(Qt::Unchecked); fCreateMsrFile_checkBox->setCheckState(Qt::Unchecked); fFourierTitle_lineEdit->setText(""); }