Possible fix for alpha problem for beta-NMR asymmetry calculation. To be tested.

This commit is contained in:
salman 2018-08-24 13:03:28 +02:00
parent b8dc67fa1a
commit dfea8334b7
3 changed files with 20 additions and 20 deletions

View File

@ -718,6 +718,18 @@ void PMusrCanvas::UpdateDataTheoryPad()
// handle data // handle data
HandleDataSet(i, runNo, data); HandleDataSet(i, runNo, data);
break; break;
case MSR_FITTYPE_BNMR:
data = fRunList->GetAsymmetryBNMR(runNo, PRunListCollection::kRunNo);
if (!data) { // something wrong
fValid = false;
// error message
cerr << endl << ">> PMusrCanvas::UpdateDataTheoryPad(): **ERROR** couldn't obtain run no " << runNo << " for a beta-NMR asymmetry plot";
cerr << endl;
return;
}
// handle data
HandleDataSet(i, runNo, data);
break;
case MSR_FITTYPE_ASYM_RRF: case MSR_FITTYPE_ASYM_RRF:
data = fRunList->GetAsymmetryRRF(runNo, PRunListCollection::kRunNo); data = fRunList->GetAsymmetryRRF(runNo, PRunListCollection::kRunNo);
if (!data) { // something wrong if (!data) { // something wrong
@ -742,18 +754,6 @@ void PMusrCanvas::UpdateDataTheoryPad()
// handle data // handle data
HandleDataSet(i, runNo, data); HandleDataSet(i, runNo, data);
break; break;
case MSR_FITTYPE_BNMR:
data = fRunList->GetAsymmetryBNMR(runNo, PRunListCollection::kRunNo);
if (!data) { // something wrong
fValid = false;
// error message
cerr << endl << ">> PMusrCanvas::UpdateDataTheoryPad(): **ERROR** couldn't obtain run no " << runNo << " for a beta-NMR asymmetry plot";
cerr << endl;
return;
}
// handle data
HandleDataSet(i, runNo, data);
break;
case MSR_FITTYPE_NON_MUSR: case MSR_FITTYPE_NON_MUSR:
data = fRunList->GetNonMusr(runNo, PRunListCollection::kRunNo); data = fRunList->GetNonMusr(runNo, PRunListCollection::kRunNo);
if (!data) { // something wrong if (!data) { // something wrong

View File

@ -222,19 +222,19 @@ Double_t PRunAsymmetryBNMR::CalcChiSquare(const std::vector<Double_t>& par)
break; break;
case 2: // alpha != 1, beta == 1 case 2: // alpha != 1, beta == 1
a = par[fRunInfo->GetAlphaParamNo()-1]; a = par[fRunInfo->GetAlphaParamNo()-1];
f = fTheory->Func(time, par, fFuncValues); f = fTheory->Func(time, par, fFuncValues)/2;
asymFcnValue = (f*(a+1.0)-(a-1.0))/((a+1.0)-f*(a-1.0)); asymFcnValue = (f*(a+1.0)-(a-1.0))/((a+1.0)-f*(a-1.0)) - (-f*(a+1.0)-(a-1.0))/((a+1.0)+f*(a-1.0));
break; break;
case 3: // alpha == 1, beta != 1 case 3: // alpha == 1, beta != 1
b = par[fRunInfo->GetBetaParamNo()-1]; b = par[fRunInfo->GetBetaParamNo()-1];
f = fTheory->Func(time, par, fFuncValues); f = fTheory->Func(time, par, fFuncValues)/2;
asymFcnValue = f*(b+1.0)/(2.0-f*(b-1.0)); asymFcnValue = f*(b+1.0)/(2.0-f*(b-1.0))-f*(b+1.0)/(2.0+f*(b-1.0));
break; break;
case 4: // alpha != 1, beta != 1 case 4: // alpha != 1, beta != 1
a = par[fRunInfo->GetAlphaParamNo()-1]; a = par[fRunInfo->GetAlphaParamNo()-1];
b = par[fRunInfo->GetBetaParamNo()-1]; b = par[fRunInfo->GetBetaParamNo()-1];
f = fTheory->Func(time, par, fFuncValues); f = fTheory->Func(time, par, fFuncValues)/2;
asymFcnValue = (f*(a*b+1.0)-(a-1.0))/((a+1.0)-f*(a*b-1.0)); asymFcnValue = (f*(a*b+1.0)-(a-1.0))/((a+1.0)-f*(a*b-1.0))-(-f*(a*b+1.0)-(a-1.0))/((a+1.0)+f*(a*b-1.0));
break; break;
default: default:
asymFcnValue = 0.0; asymFcnValue = 0.0;

View File

@ -972,7 +972,7 @@ PRunData* PRunListCollection::GetAsymmetry(UInt_t index, EDataSwitch tag)
// GetAsymmetryBNMR (public) // GetAsymmetryBNMR (public)
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
/** /**
* <p>Get a processed asymmetry data set. * <p>Get a processed asymmetry from beta-NMR data set.
* *
* <b>return:</b> * <b>return:</b>
* - pointer to the run data set (processed data) if data set is found * - pointer to the run data set (processed data) if data set is found