diff --git a/src/classes/PMusrCanvas.cpp b/src/classes/PMusrCanvas.cpp index 1982aa4b..2ce52c81 100644 --- a/src/classes/PMusrCanvas.cpp +++ b/src/classes/PMusrCanvas.cpp @@ -420,25 +420,27 @@ void PMusrCanvas::SetMsrHandler(PMsrHandler *msrHandler) fRRFText = new TString("RRF: "); rrfUnitTag = fMsrHandler->GetMsrPlotList()->at(0).fRRFUnit; rrfFreq = fMsrHandler->GetMsrPlotList()->at(0).fRRFFreq; + TString rrfFreqStr(""); + rrfFreqStr.Form("%.5g", rrfFreq); if (rrfUnitTag == RRF_UNIT_kHz) { *fRRFText += TString("#nu_{RRF} = "); *fRRFText += rrfFreq; *fRRFText += TString(" (kHz)"); } else if (rrfUnitTag == RRF_UNIT_MHz) { *fRRFText += TString("#nu_{RRF} = "); - *fRRFText += rrfFreq; + *fRRFText += rrfFreqStr; *fRRFText += TString(" (MHz)"); } else if (rrfUnitTag == RRF_UNIT_Mcs) { *fRRFText += TString("#omega_{RRF} = "); - *fRRFText += rrfFreq; + *fRRFText += rrfFreqStr; *fRRFText += TString(" (Mc/s)"); } else if (rrfUnitTag == RRF_UNIT_G) { *fRRFText += TString("B_{RRF} = "); - *fRRFText += rrfFreq; + *fRRFText += rrfFreqStr; *fRRFText += TString(" (G)"); } else if (rrfUnitTag == RRF_UNIT_T) { *fRRFText += TString("B_{RRF} = "); - *fRRFText += rrfFreq; + *fRRFText += rrfFreqStr; *fRRFText += TString(" (T)"); } *fRRFText += TString(", RRF packing = "); @@ -447,25 +449,27 @@ void PMusrCanvas::SetMsrHandler(PMsrHandler *msrHandler) fRRFText = new TString("RRF: "); rrfUnitTag = fMsrHandler->GetMsrGlobal()->GetRRFUnitTag(); rrfFreq = fMsrHandler->GetMsrGlobal()->GetRRFFreq(fMsrHandler->GetMsrGlobal()->GetRRFUnit().Data()); + TString rrfFreqStr(""); + rrfFreqStr.Form("%.5g", rrfFreq); if (rrfUnitTag == RRF_UNIT_kHz) { *fRRFText += TString("#nu_{RRF} = "); - *fRRFText += rrfFreq; + *fRRFText += rrfFreqStr; *fRRFText += TString(" (kHz)"); } else if (rrfUnitTag == RRF_UNIT_MHz) { *fRRFText += TString("#nu_{RRF} = "); - *fRRFText += rrfFreq; + *fRRFText += rrfFreqStr; *fRRFText += TString(" (MHz)"); } else if (rrfUnitTag == RRF_UNIT_Mcs) { *fRRFText += TString("#omega_{RRF} = "); - *fRRFText += rrfFreq; + *fRRFText += rrfFreqStr; *fRRFText += TString(" (Mc/s)"); } else if (rrfUnitTag == RRF_UNIT_G) { *fRRFText += TString("B_{RRF} = "); - *fRRFText += rrfFreq; + *fRRFText += rrfFreqStr; *fRRFText += TString(" (G)"); } else if (rrfUnitTag == RRF_UNIT_T) { *fRRFText += TString("B_{RRF} = "); - *fRRFText += rrfFreq; + *fRRFText += rrfFreqStr; *fRRFText += TString(" (T)"); } *fRRFText += TString(", RRF packing = "); @@ -6156,6 +6160,11 @@ void PMusrCanvas::PlotAverage(Bool_t unzoom) break; } + // check if RRF and if yes show a label + if ((fRRFText != 0) && (fRRFLatexText != 0)) { + fRRFLatexText->DrawLatex(0.1, 0.92, fRRFText->Data()); + } + fDataTheoryPad->Update(); fMainCanvas->cd(); diff --git a/src/classes/PRunSingleHistoRRF.cpp b/src/classes/PRunSingleHistoRRF.cpp index e1c4baba..76fef6b4 100644 --- a/src/classes/PRunSingleHistoRRF.cpp +++ b/src/classes/PRunSingleHistoRRF.cpp @@ -580,6 +580,12 @@ Bool_t PRunSingleHistoRRF::PrepareFitData(PRawRunData* runData, const UInt_t his Double_t freqMax = GetMainFrequency(rawNt); cout << "info> freqMax=" << freqMax << " (MHz)" << endl; + // "optimal packing" + Double_t optNoPoints = 8; + if (freqMax < 271.0) // < 271 MHz, i.e ~ 2T + optNoPoints = 5; + cout << "info> optimal packing: " << (Int_t)(1.0 / (fTimeResolution*(freqMax - fMsrInfo->GetMsrGlobal()->GetRRFFreq("MHz"))) / optNoPoints); + // initially fForward is the "raw data set" (i.e. grouped histo and raw runs already added) to be fitted. This means fForward = N(t) at this point. // 1) check how the background shall be handled @@ -1108,8 +1114,8 @@ Double_t PRunSingleHistoRRF::GetMainFrequency(PDoubleVector &data) Double_t PRunSingleHistoRRF::EstimateN0(Double_t &errN0, Double_t freqMax) { // endBin is estimated such that the number of full cycles (according to the maximum frequency of the data) - // is approximately the time N0EstimateEndTime. - Int_t endBin = (Int_t)round(N0EstimateEndTime / fTimeResolution * ceil(freqMax)/freqMax); + // is approximately the time fN0EstimateEndTime. + Int_t endBin = (Int_t)round(fN0EstimateEndTime / fTimeResolution * ceil(freqMax)/freqMax); Double_t n0 = 0.0; Double_t wN = 0.0; diff --git a/src/include/PRunSingleHistoRRF.h b/src/include/PRunSingleHistoRRF.h index fd484bc8..63b063eb 100644 --- a/src/include/PRunSingleHistoRRF.h +++ b/src/include/PRunSingleHistoRRF.h @@ -58,7 +58,7 @@ class PRunSingleHistoRRF : public PRunBase virtual Bool_t PrepareViewData(PRawRunData* runData, const UInt_t histoNo); private: - static const Double_t N0EstimateEndTime = 1.0; ///< end time in (us) over which N0 is estimated. Should eventually be estimated automatically ... + static const Double_t fN0EstimateEndTime = 1.0; ///< end time in (us) over which N0 is estimated. Should eventually be estimated automatically ... UInt_t fNoOfFitBins; ///< number of bins to be fitted Double_t fBackground; ///< needed if background range is given (units: 1/bin)