diff --git a/src/classes/PFitter.cpp b/src/classes/PFitter.cpp index b0ad8f73..b6edd5c1 100644 --- a/src/classes/PFitter.cpp +++ b/src/classes/PFitter.cpp @@ -2624,14 +2624,23 @@ void PFitter::PrepareSector(PDoubleVector ¶m, PDoubleVector &error) secFitRange[0].second = fSector[k].GetTimeRangeLast(); fRunListCollection->SetFitRange(secFitRange); // calculate chisq - val = (*fFitterFcn)(param); + if (fDKSReady) + val = (*fFitterFcnDKS)(param); + else + val = (*fFitterFcn)(param); fSector[k].SetChisq(val); // calculate NDF - ndf = static_cast(fFitterFcn->GetTotalNoOfFittedBins()) - usedParams; + if (fDKSReady) + ndf = fFitterFcnDKS->GetTotalNoOfFittedBins() - static_cast(usedParams); + else + ndf = fFitterFcn->GetTotalNoOfFittedBins() - static_cast(usedParams); fSector[k].SetNDF(ndf); // calculate expected chisq totalExpectedChisq = 0.0; - fFitterFcn->CalcExpectedChiSquare(param, totalExpectedChisq, expectedChisqPerRun); + if (fDKSReady) + fFitterFcnDKS->CalcExpectedChiSquare(param, totalExpectedChisq, expectedChisqPerRun); + else + fFitterFcn->CalcExpectedChiSquare(param, totalExpectedChisq, expectedChisqPerRun); fSector[k].SetExpectedChisq(totalExpectedChisq); // calculate chisq per run for (UInt_t i=0; iGetMsrRunList()->size(); i++) { @@ -2643,7 +2652,10 @@ void PFitter::PrepareSector(PDoubleVector ¶m, PDoubleVector &error) if (totalExpectedChisq != 0.0) { UInt_t ndf_run = 0; for (UInt_t i=0; iGetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i); + if (fDKSReady) + ndf_run = fFitterFcnDKS->GetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i); + else + ndf_run = fFitterFcn->GetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i); if (ndf_run > 0) { fSector[k].SetNDF(ndf_run, i); } @@ -2651,7 +2663,10 @@ void PFitter::PrepareSector(PDoubleVector ¶m, PDoubleVector &error) } else if (chisqPerRun.size() > 0) { // in case expected chisq is not applicable like for asymmetry fits UInt_t ndf_run = 0; for (UInt_t i=0; iGetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i); + if (fDKSReady) + ndf_run = fFitterFcnDKS->GetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i); + else + ndf_run = fFitterFcn->GetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i); if (ndf_run > 0) { fSector[k].SetNDF(ndf_run, i); } @@ -2671,14 +2686,23 @@ void PFitter::PrepareSector(PDoubleVector ¶m, PDoubleVector &error) secFitRange[0].second = fSector[k].GetTimeRangeLast(); fRunListCollection->SetFitRange(secFitRange); // calculate maxLH - val = (*fFitterFcn)(param); + if (fDKSReady) + val = (*fFitterFcnDKS)(param); + else + val = (*fFitterFcn)(param); fSector[k].SetChisq(val); // calculate NDF - ndf = static_cast(fFitterFcn->GetTotalNoOfFittedBins()) - usedParams; + if (fDKSReady) + ndf = fFitterFcnDKS->GetTotalNoOfFittedBins() - static_cast(usedParams); + else + ndf = fFitterFcn->GetTotalNoOfFittedBins() - static_cast(usedParams); fSector[k].SetNDF(ndf); // calculate expected maxLH totalExpectedMaxLH = 0.0; - fFitterFcn->CalcExpectedChiSquare(param, totalExpectedMaxLH, expectedMaxLHPerRun); + if (fDKSReady) + fFitterFcnDKS->CalcExpectedChiSquare(param, totalExpectedMaxLH, expectedMaxLHPerRun); + else + fFitterFcn->CalcExpectedChiSquare(param, totalExpectedMaxLH, expectedMaxLHPerRun); fSector[k].SetExpectedChisq(totalExpectedMaxLH); // calculate maxLH per run for (UInt_t i=0; iGetMsrRunList()->size(); i++) { @@ -2690,7 +2714,10 @@ void PFitter::PrepareSector(PDoubleVector ¶m, PDoubleVector &error) if (totalExpectedMaxLH != 0.0) { UInt_t ndf_run = 0; for (UInt_t i=0; iGetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i); + if (fDKSReady) + ndf_run = fFitterFcnDKS->GetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i); + else + ndf_run = fFitterFcn->GetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i); if (ndf_run > 0) { fSector[k].SetNDF(ndf_run, i); }