Dear experts,
I was modeling my background shape pdf called HighMassFit2018_m1:
RooRealVar m1_high_mass("m1_high_mass", "m_{#mu#mu_{1}}", m_SR3_min, m_SR3_max, "GeV");
RooGenericPdf HighMassFit2018_m1("HighMassFit2018_m1", "2018 m1 estimated BKG shape at SR3", "Limit_cfg::My_BKGShapem1(m1_high_mass)", RooArgSet(m1_high_mass) );
The “Limit_cfg::My_BKGShapem1(m1_high_mass)” is a single-valued function/formula that uses simple interpolation between many mass points. The interpolation is coded this way:
double MCBinCenterMass[14] = {12.75, 16.25, 19.75, 23.25, 26.75, 30.25, 33.75, 37.25, 40.75, 44.25, 47.75, 51.25, 54.75, 58.25};
double MCBinContentm1[14] = {0.0260007, 0.070103, 0.457687, 0.161783, 0.157428, 0.62272, 0.599198, 0.887516, 1.56432, 2.07059, 0.707749, 1.12067, 2.29358, 0.954618};
namespace Limit_cfg {
double My_BKGShapem1(double m1) {
double mybkg = 0.0;
if ( m1 >= 11.000 && m1 < MCBinCenterMass[0] ) mybkg = MCBinContentm1[0];//use flat profile of bin content for the first half bin
if ( m1 >= MCBinCenterMass[0] && m1 < MCBinCenterMass[1] ) mybkg = MCBinContentm1[0] + ( m1 - MCBinCenterMass[0] )*( MCBinContentm1[1] - MCBinContentm1[0] )/( MCBinCenterMass[1] - MCBinCenterMass[0] );
if ( m1 >= MCBinCenterMass[1] && m1 < MCBinCenterMass[2] ) mybkg = MCBinContentm1[1] + ( m1 - MCBinCenterMass[1] )*( MCBinContentm1[2] - MCBinContentm1[1] )/( MCBinCenterMass[2] - MCBinCenterMass[1] );
if ( m1 >= MCBinCenterMass[2] && m1 < MCBinCenterMass[3] ) mybkg = MCBinContentm1[2] + ( m1 - MCBinCenterMass[2] )*( MCBinContentm1[3] - MCBinContentm1[2] )/( MCBinCenterMass[3] - MCBinCenterMass[2] );
if ( m1 >= MCBinCenterMass[3] && m1 < MCBinCenterMass[4] ) mybkg = MCBinContentm1[3] + ( m1 - MCBinCenterMass[3] )*( MCBinContentm1[4] - MCBinContentm1[3] )/( MCBinCenterMass[4] - MCBinCenterMass[3] );
if ( m1 >= MCBinCenterMass[4] && m1 < MCBinCenterMass[5] ) mybkg = MCBinContentm1[4] + ( m1 - MCBinCenterMass[4] )*( MCBinContentm1[5] - MCBinContentm1[4] )/( MCBinCenterMass[5] - MCBinCenterMass[4] );
if ( m1 >= MCBinCenterMass[5] && m1 < MCBinCenterMass[6] ) mybkg = MCBinContentm1[5] + ( m1 - MCBinCenterMass[5] )*( MCBinContentm1[6] - MCBinContentm1[5] )/( MCBinCenterMass[6] - MCBinCenterMass[5] );
if ( m1 >= MCBinCenterMass[6] && m1 < MCBinCenterMass[7] ) mybkg = MCBinContentm1[6] + ( m1 - MCBinCenterMass[6] )*( MCBinContentm1[7] - MCBinContentm1[6] )/( MCBinCenterMass[7] - MCBinCenterMass[6] );
if ( m1 >= MCBinCenterMass[7] && m1 < MCBinCenterMass[8] ) mybkg = MCBinContentm1[7] + ( m1 - MCBinCenterMass[7] )*( MCBinContentm1[8] - MCBinContentm1[7] )/( MCBinCenterMass[8] - MCBinCenterMass[7] );
if ( m1 >= MCBinCenterMass[8] && m1 < MCBinCenterMass[9] ) mybkg = MCBinContentm1[8] + ( m1 - MCBinCenterMass[8] )*( MCBinContentm1[9] - MCBinContentm1[8] )/( MCBinCenterMass[9] - MCBinCenterMass[8] );
if ( m1 >= MCBinCenterMass[9] && m1 < MCBinCenterMass[10] ) mybkg = MCBinContentm1[9] + ( m1 - MCBinCenterMass[9] )*( MCBinContentm1[10] - MCBinContentm1[9] )/( MCBinCenterMass[10] - MCBinCenterMass[9] );
if ( m1 >= MCBinCenterMass[10] && m1 < MCBinCenterMass[11] ) mybkg = MCBinContentm1[10] + ( m1 - MCBinCenterMass[10] )*( MCBinContentm1[11] - MCBinContentm1[10] )/( MCBinCenterMass[11] - MCBinCenterMass[10] );
if ( m1 >= MCBinCenterMass[11] && m1 < MCBinCenterMass[12] ) mybkg = MCBinContentm1[11] + ( m1 - MCBinCenterMass[11] )*( MCBinContentm1[12] - MCBinContentm1[11] )/( MCBinCenterMass[12] - MCBinCenterMass[11] );
if ( m1 >= MCBinCenterMass[12] && m1 < MCBinCenterMass[13] ) mybkg = MCBinContentm1[12] + ( m1 - MCBinCenterMass[12] )*( MCBinContentm1[13] - MCBinContentm1[12] )/( MCBinCenterMass[13] - MCBinCenterMass[12] );
if ( m1 >= MCBinCenterMass[13] && m1 <= 60.000 ) mybkg = MCBinContentm1[13];//use flat profile of bin content for the last half bin
return mybkg;}
}
However, ROOT seems to be reporting error for this formula:
Error in <RooFormula::Compile>: Bad numerical expression : "Limit_cfg::My_BKGShapem1(m1_high_mass)"
I used similar interpolation functions in other places, those don’t seem to cause any issue. Could you help me indentify what happens here? I can provide whole script if you want.
Cheers,
Wei
_ROOT Version: 6.12/07
_Platform: CentOS Linux release 7.8.2003 (Core)
_Compiler: gcc version 7.3.1 20180127 (GCC)