From e66fc4c2c964e81521eb6273ee97c8011c0fcb39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20G=C3=A4=C3=9Fler?= <Johannes Gäßler> Date: Tue, 7 Mar 2023 17:01:09 +0100 Subject: [PATCH] Steering file strings to control warmup --- v2.5/toolkit/fastnlotoolkit/fastNLOCreate.cc | 48 ++++++++++++++++---- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/v2.5/toolkit/fastnlotoolkit/fastNLOCreate.cc b/v2.5/toolkit/fastnlotoolkit/fastNLOCreate.cc index 5fc33787..e2673e7f 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; -- GitLab