From 1bdccae1d61e9f7d42e1f4b4b1016441d3ea08a5 Mon Sep 17 00:00:00 2001 From: Andreas Suter Date: Mon, 7 Jun 2021 18:34:36 +0200 Subject: [PATCH] improve the readability of the time with packing in the code. --- src/classes/PRunAsymmetry.cpp | 26 ++++++++++++++++++++------ src/classes/PRunMuMinus.cpp | 9 ++++----- src/classes/PRunSingleHisto.cpp | 16 ++++++++-------- 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/src/classes/PRunAsymmetry.cpp b/src/classes/PRunAsymmetry.cpp index 71e3caad..357672ae 100644 --- a/src/classes/PRunAsymmetry.cpp +++ b/src/classes/PRunAsymmetry.cpp @@ -781,7 +781,21 @@ Bool_t PRunAsymmetry::PrepareData() */ Bool_t PRunAsymmetry::SubtractFixBkg() { + if (fRunInfo->GetBkgFix(0) == PMUSR_UNDEFINED) { + std::cerr << "PRunAsymmetry::SubtractFixBkg(): **ERROR** no fixed bkg for forward set. Will do nothing here." << std::endl; + return false; + } + if (fRunInfo->GetBkgFix(1) == PMUSR_UNDEFINED) { + std::cerr << "PRunAsymmetry::SubtractFixBkg(): **ERROR** no fixed bkg for backward set. Will do nothing here." << std::endl; + std::cerr << " you need an entry like:" << std::endl; + std::cerr << " backgr.fix 2 3" << std::endl; + std::cerr << " i.e. two entries for forward and backward." << std::endl; + return false; + } + + Double_t dval; + for (UInt_t i=0; i(fGoodBins[0])-fT0s[0]+static_cast(fPacking-1)/2.0)); + // data start time = (binStart - 0.5) + pack/2 - t0, with pack and binStart used as double + fData.SetDataTimeStart(fTimeResolution*((static_cast(fGoodBins[0])-0.5) + static_cast(fPacking)/2.0 - static_cast(fT0s[0]))); fData.SetDataTimeStep(fTimeResolution*static_cast(fPacking)); for (UInt_t i=0; i(start[0])-t0[0]+static_cast(packing-1)/2.0)); + // data start time = (binStart - 0.5) + pack/2 - t0, with pack and binStart used as double + fData.SetDataTimeStart(fTimeResolution*((static_cast(start[0])-0.5) + static_cast(packing)/2.0 - static_cast(t0[0]))); fData.SetDataTimeStep(fTimeResolution*static_cast(packing)); // get the proper alpha and beta @@ -1586,8 +1600,8 @@ Bool_t PRunAsymmetry::PrepareRRFViewData(PRawRunData* runData, UInt_t histoNo[2] } // set data time start, and step - // data start at data_start-t0 - fData.SetDataTimeStart(fTimeResolution*(start[0]-t0[0]+static_cast(packing-1)/2.0)); + // data start time = (binStart - 0.5) + pack/2 - t0, with pack and binStart used as double + fData.SetDataTimeStart(fTimeResolution*((static_cast(start[0])-0.5) + static_cast(packing)/2.0 - static_cast(t0[0]))); fData.SetDataTimeStep(fTimeResolution*static_cast(packing)); // ------------------------------------------------------------ diff --git a/src/classes/PRunMuMinus.cpp b/src/classes/PRunMuMinus.cpp index a43bb811..420143f3 100644 --- a/src/classes/PRunMuMinus.cpp +++ b/src/classes/PRunMuMinus.cpp @@ -604,8 +604,8 @@ Bool_t PRunMuMinus::PrepareFitData(PRawRunData* runData, const UInt_t histoNo) Int_t t0 = static_cast(fT0s[0]); Double_t value = 0.0; // data start at data_start-t0 - // time shifted so that packing is included correctly, i.e. t0 == t0 after packing - fData.SetDataTimeStart(fTimeResolution*(static_cast(fGoodBins[0])-static_cast(t0)+static_cast(fPacking-1)/2.0)); + // data start time = (binStart - 0.5) + pack/2 - t0, with pack and binStart used as double + fData.SetDataTimeStart(fTimeResolution*((static_cast(fGoodBins[0])-0.5) + static_cast(fPacking)/2.0 - static_cast(t0))); fData.SetDataTimeStep(fTimeResolution*fPacking); for (Int_t i=fGoodBins[0]; i(fT0s[0]); Double_t value = 0.0; - // data start at data_start-t0 - // time shifted so that packing is included correctly, i.e. t0 == t0 after packing - fData.SetDataTimeStart(fTimeResolution*(static_cast(start)-static_cast(t0)+static_cast(packing-1)/2.0)); + // data start time = (binStart - 0.5) + pack/2 - t0, with pack and binStart used as double + fData.SetDataTimeStart(fTimeResolution*((static_cast(start)-0.5) + static_cast(packing)/2.0 - static_cast(t0))); fData.SetDataTimeStep(fTimeResolution*packing); for (Int_t i=start; ins // data start at data_start-t0 // time shifted so that packing is included correctly, i.e. t0 == t0 after packing - fData.SetDataTimeStart(fTimeResolution*(static_cast(fGoodBins[0])-static_cast(t0)+static_cast(fPacking-1)/2.0)); + fData.SetDataTimeStart(fTimeResolution*((static_cast(fGoodBins[0])-0.5) + static_cast(fPacking)/2.0 - static_cast(t0))); fData.SetDataTimeStep(fTimeResolution*fPacking); for (Int_t i=fGoodBins[0]; i(fT0s[0]); Double_t value = 0.0; - // data start at data_start-t0 - // time shifted so that packing is included correctly, i.e. t0 == t0 after packing - fData.SetDataTimeStart(fTimeResolution*(static_cast(start)-static_cast(t0)+static_cast(packing-1)/2.0)); + // data start time = (binStart - 0.5) + pack/2 - t0, with pack and binStart used as double + fData.SetDataTimeStart(fTimeResolution*((static_cast(start)-0.5) + static_cast(packing)/2.0 - static_cast(t0))); fData.SetDataTimeStep(fTimeResolution*packing); for (Int_t i=start; i(start)-static_cast(t0)+static_cast(packing-1)/2.0)); + // data start time = (binStart - 0.5) + pack/2 - t0, with pack and binStart used as double + fData.SetDataTimeStart(fTimeResolution*((static_cast(start)-0.5) + static_cast(packing)/2.0 - static_cast(t0))); fData.SetDataTimeStep(fTimeResolution*packing); // data is always normalized to (per nsec!!) @@ -1257,7 +1256,8 @@ Bool_t PRunSingleHisto::PrepareViewData(PRawRunData* runData, const UInt_t histo for (Int_t i=start; i(i)-static_cast(packing-1)/2.0)-t0)*fTimeResolution; + // since the packing counter is already at the end of the bin, the time needs be shifted back by pack*time_resolution + time = (((static_cast(i)-0.5) + static_cast(packing)/2.0 - static_cast(t0)))*fTimeResolution - static_cast(packing)*fTimeResolution; expval = TMath::Exp(+time/tau)/N0; fData.AppendValue(-1.0+expval*(value-bkg)); fData.AppendErrorValue(expval*TMath::Sqrt(value*dataNorm)); @@ -1316,7 +1316,7 @@ Bool_t PRunSingleHisto::PrepareViewData(PRawRunData* runData, const UInt_t histo // calculate theory Double_t theoryValue; UInt_t size = fForward.size()/packing; - Int_t factor = 8; // 8 times more points for the theory (if fTheoAsData == false) + const Int_t factor = 8; // 8 times more points for the theory (if fTheoAsData == false) UInt_t rebinRRF = 0; if (wRRF == 0) { // no RRF