diff --git a/v2.5/toolkit/fastnlotoolkit/fastNLOCreate.cc b/v2.5/toolkit/fastnlotoolkit/fastNLOCreate.cc index 5fc33787a0e0f9a650a9774633a3fad0565d4459..e2673e7f5e0f6838086780992ffcd118bdda9683 100644 --- a/v2.5/toolkit/fastnlotoolkit/fastNLOCreate.cc +++ b/v2.5/toolkit/fastnlotoolkit/fastNLOCreate.cc @@ -692,11 +692,11 @@ void fastNLOCreate::SetScenConstsDefaults() { fScenConsts.Mu1_Kernel = "Lagrange"; fScenConsts.Mu1_DistanceMeasure = "loglog025"; fScenConsts.Mu1_NNodes = 6; - fScenConsts.Mu1_NNodeCounting = "NodesPerWarmupRange"; + fScenConsts.Mu1_NNodeCounting = "NodesPerBin"; fScenConsts.Mu2_Kernel = "Lagrange"; fScenConsts.Mu2_DistanceMeasure = "loglog025"; fScenConsts.Mu2_NNodes = 6; - fScenConsts.Mu2_NNodeCounting = "NodesPerWarmupRange"; + fScenConsts.Mu2_NNodeCounting = "NodesPerBin"; } @@ -4498,12 +4498,16 @@ void fastNLOCreate::InitInterpolationKernels() { vector<double> wrmMu1Up, wrmMu1Dn; vector<double> wrmMu2Up, wrmMu2Dn; if (GetTheCoeffTable()->GetIRef() == 0) { - if (!WarmupNeeded()) { + if (fScenConsts.Mu1_NNodeCounting == "NodesPerDim1") { + wrmMu1Dn = GetObsBinsLoBounds(0); + wrmMu1Up = GetObsBinsUpBounds(0); + } else if (fScenConsts.Mu1_NNodeCounting == "NodesPerDim2") { wrmMu1Dn = GetObsBinsLoBounds(1); wrmMu1Up = GetObsBinsUpBounds(1); - wrmMu2Dn = GetObsBinsLoBounds(1); - wrmMu2Up = GetObsBinsUpBounds(1); - } else { + } else if (fScenConsts.Mu1_NNodeCounting == "NodesPerDim3") { + wrmMu1Dn = GetObsBinsLoBounds(2); + wrmMu1Up = GetObsBinsUpBounds(2); + } else if (fScenConsts.Mu1_NNodeCounting == "NodesPerBin") { wrmX = GetColumnFromTable(fWarmupConsts.Values, 1) ;// DOUBLE_COL_NS(Warmup.Values,x_min,fSteerfile); wrmMu1Dn = GetColumnFromTable(fWarmupConsts.Values, 3) ;//read_steer::getdoublecolumn("Warmup.Values",GetWarmupHeader(0,"min"),fSteerfile); wrmMu1Up = GetColumnFromTable(fWarmupConsts.Values, 4) ;//read_steer::getdoublecolumn("Warmup.Values",GetWarmupHeader(0,"max"),fSteerfile); @@ -4511,13 +4515,34 @@ void fastNLOCreate::InitInterpolationKernels() { logger.error["InitInterpolationKernels"]<<"Insufficient no. of rows for warmup values of Mu1. Exiting."<<endl; exit(1); } - if (fIsFlexibleScale) { + } else { + logger.error["InitInterpolationKernels"] << "Unknown value for Mu1_NNodeCounting: " << fScenConsts.Mu1_NNodeCounting << endl; + logger.error["InitInterpolationKernels"] << "Supported values: NodesPerBin, NodesPerDim1, NodesPerDim2, NodesPerDim3" << endl; + logger.error["InitInterpolationKernels"] << "Exiting." << endl; + exit(1); + } + if (fIsFlexibleScale) { + if (fScenConsts.Mu2_NNodeCounting == "NodesPerDim1") { + wrmMu2Dn = GetObsBinsLoBounds(0); + wrmMu2Up = GetObsBinsUpBounds(0); + } else if (fScenConsts.Mu2_NNodeCounting == "NodesPerDim2") { + wrmMu2Dn = GetObsBinsLoBounds(1); + wrmMu2Up = GetObsBinsUpBounds(1); + } else if (fScenConsts.Mu2_NNodeCounting == "NodesPerDim3") { + wrmMu2Dn = GetObsBinsLoBounds(2); + wrmMu2Up = GetObsBinsUpBounds(2); + } else if (fScenConsts.Mu2_NNodeCounting == "NodesPerBin") { wrmMu2Dn = GetColumnFromTable(fWarmupConsts.Values, 5) ;//read_steer::getdoublecolumn("Warmup.Values",GetWarmupHeader(1,"min"),fSteerfile); wrmMu2Up = GetColumnFromTable(fWarmupConsts.Values, 6) ;//read_steer::getdoublecolumn("Warmup.Values",GetWarmupHeader(1,"max"),fSteerfile); if (wrmMu2Dn.size()!=GetNObsBin() || wrmMu2Up.size()!= GetNObsBin()) { logger.error["InitInterpolationKernels"]<<"Insufficient no. of rows for warmup values for Mu2. Exiting."<<endl; exit(1); } + } else { + logger.error["InitInterpolationKernels"] << "Unknown value for Mu2_NNodeCounting: " << fScenConsts.Mu2_NNodeCounting << endl; + logger.error["InitInterpolationKernels"] << "Supported values: NodesPerBin, NodesPerDim1, NodesPerDim2, NodesPerDim3" << endl; + logger.error["InitInterpolationKernels"] << "Exiting." << endl; + exit(1); } } } else { @@ -4768,9 +4793,9 @@ fastNLOReader* fastNLOCreate::SetIsReferenceTable(fastNLOReader* fnloread) { //fScenConsts.X_NoOfNodesPerMagnitude = false; fScenConsts.X_NNodeCounting = "NodesPerBin"; fScenConsts.Mu1_NNodes = 1; - fScenConsts.Mu1_NNodeCounting = "NodesPerWarmupRange"; + fScenConsts.Mu1_NNodeCounting = "NodesPerBin"; fScenConsts.Mu2_NNodes = 1; - fScenConsts.Mu2_NNodeCounting = "NodesPerWarmupRange"; + fScenConsts.Mu2_NNodeCounting = "NodesPerBin"; fScenConsts.X_Kernel = "OneNode"; fScenConsts.Mu1_Kernel = "OneNode"; fScenConsts.Mu2_Kernel = "OneNode"; @@ -4996,7 +5021,10 @@ bool fastNLOCreate::WarmupNeeded() const { if (fScenConsts.X_NNodeCounting != "NodeDensity") { return true; } - if (fScenConsts.Mu1_NNodeCounting == "NodesPerWarmupRange") { + if (fScenConsts.Mu1_NNodeCounting == "NodesPerBin") { + return true; + } + if (fIsFlexibleScale && fScenConsts.Mu2_NNodeCounting == "NodesPerBin") { return true; } return false;