From ac0fe26844856536405ea5b690b3e26046a1f2e1 Mon Sep 17 00:00:00 2001 From: nemu Date: Wed, 1 Apr 2009 06:07:51 +0000 Subject: [PATCH] added missing t0 handling --- src/classes/PMsrHandler.cpp | 27 +++++++++++++++++++++++++++ src/classes/PMusrT0.cpp | 19 +++++++++++++++++++ src/classes/PRunAsymmetry.cpp | 24 +++++++++++------------- src/include/PMsrHandler.h | 1 + 4 files changed, 58 insertions(+), 13 deletions(-) diff --git a/src/classes/PMsrHandler.cpp b/src/classes/PMsrHandler.cpp index 2efaf110..8ff0a6c8 100644 --- a/src/classes/PMsrHandler.cpp +++ b/src/classes/PMsrHandler.cpp @@ -950,6 +950,33 @@ bool PMsrHandler::SetMsrParamPosError(unsigned int i, double value) return true; } +//-------------------------------------------------------------------------- +// SetMsrT0Entry (public) +//-------------------------------------------------------------------------- +/** + *

+ * + * \param runNo + * \param idx + * \param bin + */ +void PMsrHandler::SetMsrT0Entry(unsigned int runNo, unsigned int idx, int bin) +{ + if ((runNo < 0) || (runNo > fRuns.size())) { // error + cout << endl << "**ERROR** in PMsrHandler::SetMsrT0Entry: runNo = " << runNo << ", is out of valid range 0.." << fRuns.size(); + cout << endl; + return; + } + + if ((idx < 0) || (idx > fRuns[runNo].fT0.size())) { // error + cout << endl << "**ERROR** in PMsrHandler::SetMsrT0Entry: idx = " << idx << ", is out of valid range 0.." << fRuns[runNo].fT0.size(); + cout << endl; + return; + } + + fRuns[runNo].fT0[idx] = bin; +} + //-------------------------------------------------------------------------- // SetMsrDataRangeEntry (public) //-------------------------------------------------------------------------- diff --git a/src/classes/PMusrT0.cpp b/src/classes/PMusrT0.cpp index 69ff411c..451df77e 100644 --- a/src/classes/PMusrT0.cpp +++ b/src/classes/PMusrT0.cpp @@ -394,6 +394,25 @@ void PMusrT0::SetT0Channel() Int_t binx = fHisto->GetXaxis()->FindFixBin(x); // set t0 bin in msr-Handler + unsigned int idx = 0; + switch(fDetectorTag) { + case DETECTOR_TAG_FORWARD: + idx = fAddRunNo * fAddRunOffset / 2; + break; + case DETECTOR_TAG_BACKWARD: + idx = 1 + fAddRunNo * fAddRunOffset / 2; + break; + case DETECTOR_TAG_LEFT: + idx = 2 + fAddRunNo * fAddRunOffset / 2; + break; + case DETECTOR_TAG_RIGHT: + idx = 3 + fAddRunNo * fAddRunOffset / 2; + break; + default: + break; + } + fMsrHandler->SetMsrT0Entry(fRunNo, idx, binx); + // shift line to the proper position fT0Line->SetX1(x); diff --git a/src/classes/PRunAsymmetry.cpp b/src/classes/PRunAsymmetry.cpp index 68b7d7fd..0b39f60a 100644 --- a/src/classes/PRunAsymmetry.cpp +++ b/src/classes/PRunAsymmetry.cpp @@ -687,12 +687,11 @@ bool PRunAsymmetry::PrepareFitData(PRawRunData* runData, unsigned int histoNo[2] } } - // check if packed forward and backward hist have the same size, otherwise something is wrong + // check if packed forward and backward hist have the same size, otherwise take the minimum size + unsigned int noOfBins = forwardPacked.fValue.size(); if (forwardPacked.fValue.size() != backwardPacked.fValue.size()) { - cout << endl << "PRunAsymmetry::PrepareFitData(): **PANIC ERROR**:"; - cout << endl << " packed forward and backward histo should have the same number of bins!"; - cout << endl << " however found (f/b) : " << forwardPacked.fValue.size() << "/" << backwardPacked.fValue.size(); - return false; + if (forwardPacked.fValue.size() > backwardPacked.fValue.size()) + noOfBins = backwardPacked.fValue.size(); } // form asymmetry including error propagation @@ -702,7 +701,7 @@ bool PRunAsymmetry::PrepareFitData(PRawRunData* runData, unsigned int histoNo[2] // data start at data_start-t0 fData.fDataTimeStart = fTimeResolution*(((double)start[0]-t0[0])+(double)fRunInfo->fPacking/2.0); fData.fDataTimeStep = fTimeResolution*(double)fRunInfo->fPacking; - for (unsigned int i=0; i backwardPacked.fValue.size()) + noOfBins = backwardPacked.fValue.size(); } // form asymmetry including error propagation double asym; - double f, b, ef, eb, alpha, beta; + double f, b, ef, eb, alpha = 1.0, beta = 1.0; // fill data time start, and step // data start at data_start-t0 fData.fDataTimeStart = fTimeResolution*(((double)start[0]-t0[0])+(double)fRunInfo->fPacking/2.0); @@ -879,7 +877,7 @@ bool PRunAsymmetry::PrepareViewData(PRawRunData* runData, unsigned int histoNo[2 } //cout << endl << ">> alpha = " << alpha << ", beta = " << beta; - for (unsigned int i=0; i