From 3462d46a3ece4f40a3572133e12e007239555ca4 Mon Sep 17 00:00:00 2001
From: Klaus Rabbertz <klaus.rabbertz@cern.ch>
Date: Wed, 2 Oct 2024 19:14:03 +0200
Subject: [PATCH] Table version 2.6 now; additional InfoBlock contains
 reference x sections; fillable via fnlo-tk-modify; readable via
 fnlo-tk-yodaout

---
 doc/tableformat/fastNLOTableFormatv26.ods     | Bin 0 -> 29697 bytes
 v2.5/toolkit/configure.ac                     |   2 +-
 .../fastnlotoolkit/fastNLOCoeffAddBase.cc     |  72 ++++----------
 v2.5/toolkit/fastnlotoolkit/fastNLOReader.cc  |  88 ++++++++++--------
 v2.5/toolkit/fastnlotoolkit/fastNLOTools.cc   |  20 ++--
 .../include/fastnlotk/fastNLOConstants.h.in   |   4 +-
 .../include/fastnlotk/fastNLOTools.h          |   6 +-
 v2.5/toolkit/src/fnlo-tk-modify.cc            |  83 ++++++-----------
 v2.5/toolkit/src/fnlo-tk-rootout.cc           |   4 +-
 v2.5/toolkit/src/fnlo-tk-yodaout.cc           |   8 +-
 10 files changed, 120 insertions(+), 167 deletions(-)
 create mode 100644 doc/tableformat/fastNLOTableFormatv26.ods

diff --git a/doc/tableformat/fastNLOTableFormatv26.ods b/doc/tableformat/fastNLOTableFormatv26.ods
new file mode 100644
index 0000000000000000000000000000000000000000..952fd1dc6a1c61300cebc9d697e8cdfcb6f374bd
GIT binary patch
literal 29697
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
JwEN@g{{Wj|asmJV

literal 0
HcmV?d00001

diff --git a/v2.5/toolkit/configure.ac b/v2.5/toolkit/configure.ac
index 70994eba..82493541 100644
--- a/v2.5/toolkit/configure.ac
+++ b/v2.5/toolkit/configure.ac
@@ -10,7 +10,7 @@
 # Require minimal autoconf version, 2.71 is from 2021
 AC_PREREQ([2.71])
 # Define subproject fastNLO_toolkit
-AC_INIT([fastNLO_toolkit],[2.5.1],[Daniel.Britzger@desy.de, Klaus.Rabbertz@kit.edu, Georg Sieber, Fred Stober, wobisch@latech.edu])
+AC_INIT([fastNLO_toolkit],[2.6.0],[Daniel.Britzger@desy.de, Klaus.Rabbertz@kit.edu, Georg Sieber, Fred Stober, wobisch@latech.edu])
 #Suppress verbose output when compiling (use make V=99 for verbose output)
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
 # Properly include subprojects
diff --git a/v2.5/toolkit/fastnlotoolkit/fastNLOCoeffAddBase.cc b/v2.5/toolkit/fastnlotoolkit/fastNLOCoeffAddBase.cc
index e5830e1a..dfa4f3f1 100644
--- a/v2.5/toolkit/fastnlotoolkit/fastNLOCoeffAddBase.cc
+++ b/v2.5/toolkit/fastnlotoolkit/fastNLOCoeffAddBase.cc
@@ -70,41 +70,23 @@ void fastNLOCoeffAddBase::ReadCoeffAddBase(istream& table, int ITabVersionRead){
    debug["ReadCoeffAddBase::ReadCoeffAddBase"]<<"Start reading coefficients for table version "<<ITabVersionRead<<endl;
    CheckCoeffConstants(this);
    char buffer[5257];
-   //   string stest;
-   // if ( fVersionRead>=24000 ) table >> stest; //"fastNLO_CoeffAddBase"
-   // if ( fVersionRead>=24000 ) fastNLOTools::ReadUnused(table);
    table >> IRef;
    table >> IScaleDep;
-   // if ( fVersionRead >= 24000 ) {
-   //    table >> Nevt;
-   //    table >> fWgt.WgtNevt;
-   //    table >> fWgt.NumTable;
-   //    table >> fWgt.WgtNumEv;
-   //    table >> fWgt.WgtSumW2;
-   //    table >> fWgt.SigSumW2;
-   //    table >> fWgt.SigSum;
-   //    fastNLOTools::ReadFlexibleVector ( fWgt.WgtObsSumW2, table );
-   //    fastNLOTools::ReadFlexibleVector ( fWgt.SigObsSumW2, table );
-   //    fastNLOTools::ReadFlexibleVector ( fWgt.SigObsSum, table );
-   //    fastNLOTools::ReadFlexibleVector ( fWgt.WgtObsNumEv, table );
-   // }
-   // else {
+   table >> Nevt;
+   double readNevt = Nevt;
+   if ( Nevt <= 0 ) { // v2300
       table >> Nevt;
-      double readNevt = Nevt;
-      if ( Nevt <= 0 ) { // v2300
-         table >> Nevt;
-         table >> fWgt.WgtNevt;
-         if ( readNevt<=-2 ) table >> fWgt.NumTable;
-         table >> fWgt.WgtNumEv;
-         table >> fWgt.WgtSumW2;
-         table >> fWgt.SigSumW2;
-         table >> fWgt.SigSum;
-         fastNLOTools::ReadFlexibleVector ( fWgt.WgtObsSumW2, table );
-         fastNLOTools::ReadFlexibleVector ( fWgt.SigObsSumW2, table );
-         fastNLOTools::ReadFlexibleVector ( fWgt.SigObsSum, table );
-         fastNLOTools::ReadFlexibleVector ( fWgt.WgtObsNumEv, table );
-      }
-   // }
+      table >> fWgt.WgtNevt;
+      if ( readNevt<=-2 ) table >> fWgt.NumTable;
+      table >> fWgt.WgtNumEv;
+      table >> fWgt.WgtSumW2;
+      table >> fWgt.SigSumW2;
+      table >> fWgt.SigSum;
+      fastNLOTools::ReadFlexibleVector ( fWgt.WgtObsSumW2, table );
+      fastNLOTools::ReadFlexibleVector ( fWgt.SigObsSumW2, table );
+      fastNLOTools::ReadFlexibleVector ( fWgt.SigObsSum, table );
+      fastNLOTools::ReadFlexibleVector ( fWgt.WgtObsNumEv, table );
+   }
    table >> Npow;
    int NPDF;
    table >> NPDF;
@@ -229,9 +211,6 @@ void fastNLOCoeffAddBase::ReadCoeffAddBase(istream& table, int ITabVersionRead){
       //            StripWhitespace(ScaleDescript[i][j]);
       }
    }
-
-   // if ( fVersionRead>=24000 ) fastNLOTools::ReadUnused(table);
-   // if ( fVersionRead>=24000 ) fastNLOTools::ReadUnused(table);
 }
 
 
@@ -240,11 +219,9 @@ void fastNLOCoeffAddBase::Write(ostream& table, int itabversion) {
    debug["Write"]<<"Calling fastNLOCoeffBase::Write()"<<endl;
    fastNLOCoeffBase::Write(table,itabversion);
    CheckCoeffConstants(this);
-   // if ( itabversion >= 24000 ) table << "fastNLO_CoeffAddBase" << sep;
-   // if ( itabversion >= 24000 ) table << 0 << sep; // v2.4, but yet unused
    table << IRef << sep;
    table << IScaleDep << sep;
-   if ( itabversion==23000 || itabversion==23500 || itabversion==23600 || itabversion==25000 ) { // detailed storage of weights
+   if ( itabversion==23000 || itabversion==23500 || itabversion==23600 || itabversion==25000 || itabversion==26000) { // detailed storage of weights
       if ( itabversion==23000 || itabversion==23500 ) table << -1 << sep; // -1: read the values below
       else table << -2 << sep; // -1: read the values below
       table << Nevt << sep;
@@ -258,21 +235,7 @@ void fastNLOCoeffAddBase::Write(ostream& table, int itabversion) {
       fastNLOTools::WriteFlexibleVector ( fWgt.SigObsSumW2, table );
       fastNLOTools::WriteFlexibleVector ( fWgt.SigObsSum, table );
       fastNLOTools::WriteFlexibleVector ( fWgt.WgtObsNumEv, table );
-   }
-   // else if ( itabversion>=24000 ) { // detailed storage of weights
-   //    table << Nevt << sep;
-   //    table << fWgt.WgtNevt << sep;
-   //    table << fWgt.NumTable << sep;
-   //    table << fWgt.WgtNumEv << sep;
-   //    table << fWgt.WgtSumW2 << sep;
-   //    table << fWgt.SigSumW2 << sep;
-   //    table << fWgt.SigSum << sep;
-   //    fastNLOTools::WriteFlexibleVector ( fWgt.WgtObsSumW2, table );
-   //    fastNLOTools::WriteFlexibleVector ( fWgt.SigObsSumW2, table );
-   //    fastNLOTools::WriteFlexibleVector ( fWgt.SigObsSum, table );
-   //    fastNLOTools::WriteFlexibleVector ( fWgt.WgtObsNumEv, table );
-   // }
-   else {
+   } else {
       table << Nevt << sep;
    }
    table << Npow << sep;
@@ -360,9 +323,6 @@ void fastNLOCoeffAddBase::Write(ostream& table, int itabversion) {
          table << ScaleDescript[i][j] << sep;
       }
    }
-   // if ( itabversion>=24000 ) table << 0 << sep; // v2.4, but yet unused
-   // if ( itabversion>=24000 ) table << 0 << sep; // v2.4, but yet unused
-
 }
 
 
diff --git a/v2.5/toolkit/fastnlotoolkit/fastNLOReader.cc b/v2.5/toolkit/fastnlotoolkit/fastNLOReader.cc
index 0adbe39b..d80cbc9d 100644
--- a/v2.5/toolkit/fastnlotoolkit/fastNLOReader.cc
+++ b/v2.5/toolkit/fastnlotoolkit/fastNLOReader.cc
@@ -434,7 +434,7 @@
 #include "fastnlotk/fastNLOTools.h"
 #include "fastnlotk/fastNLOCoeffAddFix.h"
 #include "fastnlotk/fastNLOCoeffAddFlex.h"
-//#include "fastnlotk/fastNLOLHAPDF.h"
+#include "fastnlotk/fastNLOLHAPDF.h"
 #ifdef WITH_HOPPET
 #include "fastnlotk/HoppetInterface.h"
 #endif
@@ -1248,18 +1248,12 @@ void fastNLOReader::CalcReferenceCrossSection() {
 void fastNLOReader::CalcRefCrossSection() {
    //!
    //!  Initialize the internal arrays for the reference cross
-   //!  sections from the InfoBlocks of the fastNLO file (v2.7 upwards)
+   //!  sections from the InfoBlocks of the fastNLO file (v2.6 upwards)
    //!
    logger.debug["CalcRefCrossSection"]<<"Starting CalcRefCrossSection ..."<<endl;
 
    XSectionRef.clear();
    XSectionRef.resize(NObsBin);
-   XSectionRefMixed.clear();
-   XSectionRef_s1.clear();
-   XSectionRef_s2.clear();
-   XSectionRefMixed.resize(NObsBin);
-   XSectionRef_s1.resize(NObsBin);
-   XSectionRef_s2.resize(NObsBin);
 
    if (!GetIsFlexibleScaleTable()) {
       fastNLOCoeffAddBase* Coeff_LO_Ref = GetReferenceTable(kLeading);
@@ -3624,36 +3618,57 @@ XsUncertainty fastNLOReader::GetXsUncertainty(const ENumUncertaintyStyle eNumUnc
    //
    XsUncertainty XsUnc;
    vector < double > MyXSection;
+   vector < double > MyRefXSection;
    vector < double > MydXSection;
    unsigned int NObsBin = GetNObsBin();
 
-   //! For approximation bias get reference PDF & member and cross section
-   std::vector < std::string > dCIBDescr;
-   std::vector < double > dCIBCont;
-   std::string PDFset;
-   std::string PDFmember;
+   //! For interpolation bias get reference PDF & member and values
    if (eNumUnc == kApproxBias) {
+      std::vector < std::string > dCIBDescr;
+      std::string PDFset;
+      std::string PDFmem;
+      std::vector < double > dCIBCont;
+      //! Loop over contributions and evaluate InfoBlocks with reference values
       for (unsigned int i=0; i<fCoeff.size() ; i++) {
          fastNLOCoeffBase* c = GetCoeffTable(i);
-         if ( ! c->HasCoeffInfoBlock(1) ) {
-            logger.error["GetNumUncertainty"]<<"ERROR! No InfoBlock found for reference cross sections, exiting."<<endl;
-            exit(35);
-         }
-         cout << "EEEEE i = " << i << ", Has 0, 1 (0,1), (1,0) = " << c->HasCoeffInfoBlock(0) << c->HasCoeffInfoBlock(1) << c->HasCoeffInfoBlock(0,1) << c->HasCoeffInfoBlock(1,0) << endl;
-         int iCIBIndex = c->GetCoeffInfoBlockIndex(1);
-         logger.debug["GetNumUncertainty"]<<"Found CoeffInfoBlock "<<iCIBIndex<<" with reference cross sections."<<endl;
-         dCIBDescr = c->GetCoeffInfoBlockDescription(iCIBIndex);
-         dCIBCont  = c->GetCoeffInfoBlockContent(iCIBIndex);
-      }
-      if ( dCIBDescr.size() < 3 ) {
-         logger.error["GetNumUncertainty"]<<"ERROR! InfoBlock description too short for reference cross sections, exiting."<<endl;
-         logger.error["GetNumUncertainty"]<<"       Line two and three should contain the used PDF set and member."<<endl;
-         exit(36);
-      } else {
-         PDFset = dCIBDescr[1];
-         PDFmember = dCIBDescr[2];
+         logger.debug["GetNumUncertainty"]<<"Check whether contribution " << i << " is enabled, " << c->IsEnabled() << ", and additive (0), " << c->GetIAddMultFlag() << endl;
+         if ( c->IsEnabled() && c->GetIAddMultFlag() == 0 ) {
+            logger.info["GetNumUncertainty"]<<"Checking contribution " << i << " for reference values in InfoBlock." << endl;
+            if ( ! c->HasCoeffInfoBlock(1) ) {
+               logger.error["GetNumUncertainty"]<<"ERROR! No InfoBlock found for reference values, exiting."<<endl;
+               exit(35);
+            }
+            int iCIBIndex = c->GetCoeffInfoBlockIndex(1);
+            logger.debug["GetNumUncertainty"]<<"Found CoeffInfoBlock "<<iCIBIndex<<" with reference cross sections."<<endl;
+            dCIBDescr = c->GetCoeffInfoBlockDescription(iCIBIndex);
+            dCIBCont  = c->GetCoeffInfoBlockContent(iCIBIndex);
+            if ( dCIBDescr.size() < 3 ) {
+               logger.error["GetNumUncertainty"]<<"ERROR! InfoBlock description too short for reference cross sections, exiting."<<endl;
+               logger.error["GetNumUncertainty"]<<"       Line two and three should contain the used PDF set and member."<<endl;
+               exit(36);
+            } else {
+               PDFset = dCIBDescr[1];
+               PDFmem = dCIBDescr[2];
+            }
+            if ( MyRefXSection.size() == 0 ) {
+               MyRefXSection = dCIBCont;
+            } else {
+               if ( MyRefXSection.size() != dCIBCont.size() ) {
+                  logger.error["GetNumUncertainty"]<<"ERROR! Unequal number of reference values in contributions, exiting."<<endl;
+                  exit(39);
+               }
+               for (unsigned int j=0; j<MyRefXSection.size(); j++ ) {
+                  MyRefXSection[j] += dCIBCont[j];
+               }
+            }
+         }
+      }
+      if ( PDFset.empty() || PDFmem.empty() ) { // Corresponds to values from last active contribution
+         logger.error["GetNumUncertainty"]<<"ERROR! PDF set and/or PDF member used for reference values not found, aborted!" << endl;
+         exit(37);
       }
-      cout << "PDF set: " << PDFset << ", PDF member = " << PDFmember << endl;
+      logger.warn["GetNumUncertainty"]<<"The reference calculation used member " << PDFmem << " from PDF set " << PDFset << "." << endl;
+      logger.warn["GetNumUncertainty"]<<"To test the interpolation quality exactly the same PDF set and member must be used!" << endl;
    }
 
    //! Cross section and absolute uncertainties
@@ -3680,9 +3695,8 @@ XsUncertainty fastNLOReader::GetXsUncertainty(const ENumUncertaintyStyle eNumUnc
       logger.info["GetNumUncertainty"]<<"Interpolation bias selected."<<endl;
       for (unsigned int iobs = 0; iobs < NObsBin; iobs++) {
          XsUnc.xs.push_back(MyXSection[iobs]);
-         XsUnc.dxsu.push_back(dCIBCont[iobs]);
-         XsUnc.dxsl.push_back(MyXSection[iobs]-dCIBCont[iobs]);
-         cout << "XXX XS = " << MyXSection[iobs] << ", XSREF = " << dCIBCont[iobs] << ", delta = " << MyXSection[iobs]-dCIBCont[iobs] << endl;
+         XsUnc.dxsu.push_back(MyXSection[iobs]-MyRefXSection[iobs]);
+         XsUnc.dxsl.push_back(MyRefXSection[iobs]);
       }
    } else {
       logger.error["GetNumUncertainty"]<<"ERROR! No valid numerical uncertainty style selected, exiting."<<endl;
@@ -3693,10 +3707,10 @@ XsUncertainty fastNLOReader::GetXsUncertainty(const ENumUncertaintyStyle eNumUnc
    //! Divide by cross section != 0 to give relative uncertainties
    for (unsigned int iobs = 0; iobs < NObsBin; iobs++) {
       if (eNumUnc == kApproxBias) {
-         if (fabs(dCIBCont[iobs]) > DBL_MIN) {
-            XsUnc.dxsl[iobs] = XsUnc.dxsl[iobs] / fabs(dCIBCont[iobs]);
+         if (fabs(MyRefXSection[iobs]) > DBL_MIN) {
+            XsUnc.dxsu[iobs] = XsUnc.dxsu[iobs] / fabs(MyRefXSection[iobs]);
          } else {
-            XsUnc.dxsl[iobs] = 0.;
+            XsUnc.dxsu[iobs] = 0.;
          }
       } else {
          if (fabs(XsUnc.xs[iobs]) > DBL_MIN) {
diff --git a/v2.5/toolkit/fastnlotoolkit/fastNLOTools.cc b/v2.5/toolkit/fastnlotoolkit/fastNLOTools.cc
index 07a7f16d..418b4488 100644
--- a/v2.5/toolkit/fastnlotoolkit/fastNLOTools.cc
+++ b/v2.5/toolkit/fastnlotoolkit/fastNLOTools.cc
@@ -621,21 +621,21 @@ namespace fastNLOTools {
 
 
    //______________________________________________________________________________
-   void PrintXSUncertainty(XsUncertainty XsUnc, string UncName) {
+   void PrintXSUncertainty(XsUncertainty XsUnc, string UncName, string HeadLine) {
       //
       //  Print evaluated cross section and relative uncertainty stored in
       //  struct XsUncertainty of fastNLOReader.h
       //
 
       if ( XsUnc.xs.size() ) {
-         cout << _CSEPSC << endl;
+         cout << _CSEPSC  << endl;
          cout << " # fastNLOReader: Evaluating uncertainties" << endl;
-         cout << _CSEPSC << endl;
-         cout << _DSEPSC << endl;
-         cout << UncName << endl;
-         cout << _SSEPSC << endl;
-         cout << " # bin      cross_section           lower_uncertainty       upper_uncertainty" << endl;
-         cout << _TSEPSC << endl;
+         cout << _CSEPSC  << endl;
+         cout << _DSEPSC  << endl;
+         cout << UncName  << endl;
+         cout << _SSEPSC  << endl;
+         cout << HeadLine << endl;
+         cout << _TSEPSC  << endl;
          for ( unsigned int iobs=0;iobs<XsUnc.xs.size();iobs++ ) {
             printf("%5.i      %#18.11E      %#18.11E      %#18.11E\n",iobs+1,XsUnc.xs[iobs],XsUnc.dxsl[iobs],XsUnc.dxsu[iobs]);
          }
@@ -645,7 +645,7 @@ namespace fastNLOTools {
 
 
    //______________________________________________________________________________
-   void PrintXSUncertaintyVec(std::vector< std::vector<double> > xsUncVec, string UncName) {
+   void PrintXSUncertaintyVec(std::vector< std::vector<double> > xsUncVec, string UncName, string HeadLine) {
       //
       //  Print evaluated cross section and relative uncertainty stored in
       //  Tri-vector XsUncertaintyVec of fastNLOReader.h
@@ -654,7 +654,7 @@ namespace fastNLOTools {
       xsUnc.xs   = xsUncVec[0];
       xsUnc.dxsu = xsUncVec[1];
       xsUnc.dxsl = xsUncVec[2];
-      PrintXSUncertainty(xsUnc, UncName);
+      PrintXSUncertainty(xsUnc, UncName, HeadLine);
    }
 
 } // end namespace fastNLO
diff --git a/v2.5/toolkit/fastnlotoolkit/include/fastnlotk/fastNLOConstants.h.in b/v2.5/toolkit/fastnlotoolkit/include/fastnlotk/fastNLOConstants.h.in
index 4a3496a2..5a1a9bea 100644
--- a/v2.5/toolkit/fastnlotoolkit/include/fastnlotk/fastNLOConstants.h.in
+++ b/v2.5/toolkit/fastnlotoolkit/include/fastnlotk/fastNLOConstants.h.in
@@ -52,8 +52,8 @@ namespace fastNLO {
    typedef std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > > > > v7d;
 
    // ---- constants ---- //
-   static const std::set<int> CompatibleVersions{20000,21000,22000,23000,23500,23600,25000};
-   const int tabversion   = 23600;
+   static const std::set<int> CompatibleVersions{20000,21000,22000,23000,23500,23600,25000,26000};
+   const int tabversion   = 26000;
    const int tablemagicno = 1234567890;
    // separating character between entries in table
    const char sep[] = "\n";
diff --git a/v2.5/toolkit/fastnlotoolkit/include/fastnlotk/fastNLOTools.h b/v2.5/toolkit/fastnlotoolkit/include/fastnlotk/fastNLOTools.h
index be0fc137..b66340e4 100644
--- a/v2.5/toolkit/fastnlotoolkit/include/fastnlotk/fastNLOTools.h
+++ b/v2.5/toolkit/fastnlotoolkit/include/fastnlotk/fastNLOTools.h
@@ -74,8 +74,10 @@ namespace fastNLOTools {
    template<typename T> void PrintVector( const std::vector<T>& v, std::string name, std::string prefix="");
 
    //! - Printout of x section with uncertainty
-   void PrintXSUncertainty(XsUncertainty XsUnc, std::string UncName);
-   void PrintXSUncertaintyVec(std::vector< std::vector<double> > XsUncVec, std::string UncName);
+   void PrintXSUncertainty(XsUncertainty XsUnc, std::string UncName,
+                           std::string HeadLine = " # bin      cross_section           lower_uncertainty       upper_uncertainty");
+   void PrintXSUncertaintyVec(std::vector< std::vector<double> > XsUncVec, std::string UncName,
+                              std::string HeadLine = " # bin      cross_section           lower_uncertainty       upper_uncertainty");
 
    //! - useful i/o
    void PrintFastnloVersion(); //!< Print out fastNLO version
diff --git a/v2.5/toolkit/src/fnlo-tk-modify.cc b/v2.5/toolkit/src/fnlo-tk-modify.cc
index e20c56a4..ee6fff1c 100644
--- a/v2.5/toolkit/src/fnlo-tk-modify.cc
+++ b/v2.5/toolkit/src/fnlo-tk-modify.cc
@@ -205,14 +205,14 @@ int main(int argc, char** argv) {
       table.SetIpublunits(INT(Ipublunits));
    }
 
-   if ( !STRING_ARR(ScDescript).empty() ){
+   if ( EXIST(ScDescript) && !STRING_ARR(ScDescript).empty() ){
       vector <string> ScDescr = table.GetScDescr();
       size_t NScSize = ScDescr.size();
       info["fnlo-tk-modify"]<<"Modifying existing scenario description:" << endl;
       for ( size_t i = 0; i < NScSize; i++ ) {
          shout << "Line no. " << i << ": " << ScDescr[i] << endl;
       }
-      if ( BOOL(AttachScDescription) ){
+      if ( EXIST(AttachScDescription) && BOOL(AttachScDescription) ){
          info["fnlo-tk-modify"]<<"Attaching to scenario description:" << endl;
          size_t NewNScSize = NScSize + STRING_ARR(ScDescript).size();
          ScDescr.resize(NewNScSize);
@@ -242,7 +242,7 @@ int main(int argc, char** argv) {
       table.SetLoOrder(INT(ILOord));
    }
 
-   if ( !STRING_ARR(DimLabels).empty() ){
+   if ( EXIST(DimLabels) && !STRING_ARR(DimLabels).empty() ){
       unsigned int ndim = table.GetNumDiffBin();
       if ( ndim != STRING_ARR(DimLabels).size() ) {
          error["fnlo-tk-modify"]<<"You need the same number of dimension labels than bin dimensions in the table, ndim = " << ndim << ". Aborted!" << endl;
@@ -347,8 +347,7 @@ int main(int argc, char** argv) {
       }
    }
 
-   //! Add InfoBlocks with additional information from steering file
-   cout << "AAAAAAAAAA" << endl;
+   //! Add InfoBlocks
    //! Default description line
    std::string Default = "Please provide description!";
    //! Default key
@@ -368,54 +367,31 @@ int main(int argc, char** argv) {
       std::string KeyFiles      = Key + "Files";
       std::string KeyColumns    = Key + "Columns";
       std::string KeyFacs       = Key + "Facs";
-      cout << "AAAAAAAAAA: Key = " << Key << endl;
       if ( !read_steer::getexist(KeyFlag1) || !read_steer::getexist(KeyFlag2) ){
          info["fnlo-tk-modify"]<<"No InfoBlock information found for key " << Key << " Skipped."<<endl;
          continue;
       }
-      //      For adding a single value, array or table, the shorthand notations are respectively:
-      //         ADD(K,Y);
-      //         ADDARRAY(K,Y);
-      //         ADDTABLE(K,H,Y);
-      //      For instance to add a value "76" for the key "age"
-      //         ADD("age",76);
-      //      The full notation woule be:
-      //         read_steer::Steering()->AddLabel("age",76);
-      //     To access the arrays use e.g.:
-      //         static vector<string> musicians = read_steer::getstringarray("FamousMusicians");
-      //         static vector<double> nums      = read_steer::getdoublearray("Array1");
-      //         static vector<int>    ints      = read_steer::getintarray("Array1");
-      //     or equivalently
-      //         static vector<string> musicians = STRING_ARR(FamousMusicians);
-      //         static vector<double> nums      = DOUBLE_ARR(Array1);
-      //         static vector<int>    ints      = INT_ARR(Array1);
-      //
-      // read_steer::addvalue(KeyFlag1,7);
-      // read_steer::addvalue(KeyFlag2,13);
-      // read_steer::printall();
-      // if ( read_steer::getexist(KeyFlag1) ) {
-      //    int ikey = read_steer::getint(KeyFlag1);
-      //    cout << "AAAAAAAAAA1: exists = " << ikey << endl;
-      // } else {
-      //    cout << "Aetsch1" << endl;
-      // }
-      // if ( read_steer::getexist(KeyFlag2) ) {
-      //    int ikey = read_steer::getint(KeyFlag2);
-      //    cout << "AAAAAAAAAA2: exists = " << ikey << endl;
-      // } else {
-      //    cout << "Aetsch2" << endl;
-      // }
-      // //
-
+      //! Add InfoBlocks with additional information from steering file
       if ( read_steer::getexist(KeyValuesLO) ) {
-         cout << "BBBBBBBBBB" << endl;
          if ( !INT_ARR(RemoveBins).empty() ) {
             info["fnlo-tk-modify"]<<"Do NOT erase bins while adding InfoBlocks or vice versa! Aborted."<<endl;
             exit(25);
          } else {
             info["fnlo-tk-modify"]<<"Adding InfoBlocks to contributions."<<endl;
          }
-         unsigned int NDescr = read_steer::getstringarray(KeyDescr).size();
+         unsigned int NDescr    = read_steer::getstringarray(KeyDescr).size();
+         unsigned int NValsLO   = read_steer::getdoublearray(KeyValuesLO).size();
+         unsigned int NValsNLO  = read_steer::getdoublearray(KeyValuesNLO).size();
+         unsigned int NValsNNLO = read_steer::getdoublearray(KeyValuesNNLO).size();
+         unsigned int NFacs     = read_steer::getdoublearray(KeyFacs).size();
+         double relfac = 1.;
+         if ( NFacs == 0 ) {
+         } else if ( NFacs == 1 ) {
+            relfac = read_steer::getdoublearray(KeyFacs)[0];
+         } else {
+            error["fnlo-tk-modify"]<<"Only one multiplicative factor allowed, but found more. Aborted! NFacs = " << NFacs <<endl;
+            exit(39);
+         }
          std::vector<std::string> Description;
          if ( NDescr > 0 ) {
             for ( unsigned int j = 0; j < NDescr; j++ ) {
@@ -424,9 +400,12 @@ int main(int argc, char** argv) {
          } else {
             Description.push_back(Default);
          }
-         static vector<double> cont_LO   = read_steer::getdoublecolumn(KeyValuesLO,"A");
-         static vector<double> cont_NLO  = read_steer::getdoublecolumn(KeyValuesNLO,"A");
-         static vector<double> cont_NNLO = read_steer::getdoublecolumn(KeyValuesNNLO,"A");
+         vector<double> cont_LO   = read_steer::getdoublearray(KeyValuesLO);
+         vector<double> cont_NLO  = read_steer::getdoublearray(KeyValuesNLO);
+         vector<double> cont_NNLO = read_steer::getdoublearray(KeyValuesNNLO);
+         for ( unsigned int i = 0; i < NValsLO; i++ ) cont_LO[i] = relfac*cont_LO[i];
+         for ( unsigned int i = 0; i < NValsNLO; i++ ) cont_NLO[i] = relfac*cont_NLO[i];
+         for ( unsigned int i = 0; i < NValsNNLO; i++ ) cont_NNLO[i] = relfac*cont_NNLO[i];
          int Ncontrib = table.GetNcontrib();
          int ic = 0;
          for ( int i = 0; i < Ncontrib; i++ ) {
@@ -434,7 +413,7 @@ int main(int argc, char** argv) {
             if ( fastNLOCoeffAddBase::CheckCoeffConstants(c,true) ) {
                int iFlag1 = read_steer::getint(KeyFlag1);
                int iFlag2 = read_steer::getint(KeyFlag2);
-               if ( c->IsLO() ) {
+               if ( c->IsLO() && NValsLO > 0 ) {
                   info["fnlo-tk-modify"]<<"Found LO contribution " << i << endl;
                   if ( cont_LO.size() == 0 ) {
                      warn["fnlo-tk-modify"]<<"Found LO contribution, but no additional values! Nothing added." << endl;
@@ -446,9 +425,8 @@ int main(int argc, char** argv) {
                      c->AddCoeffInfoBlock(iFlag1,iFlag2,Description,cont_LO);
                   }
                   ic += 1;
-               } else if ( c->IsNLO() ) {
+               } else if ( c->IsNLO() && NValsNLO > 0) {
                   info["fnlo-tk-modify"]<<"Found NLO contribution " << i << endl;
-                  std::vector <std:: string> Description;
                   if ( cont_NLO.size() == 0 ) {
                      warn["fnlo-tk-modify"]<<"Found NLO contribution, but no additional values! Nothing added." << endl;
                   } else if ( cont_NLO.size() != nobs ) {
@@ -459,9 +437,8 @@ int main(int argc, char** argv) {
                      c->AddCoeffInfoBlock(iFlag1,iFlag2,Description,cont_NLO);
                   }
                   ic += 1;
-               } else if ( c->IsNNLO() ) {
+               } else if ( c->IsNNLO() && NValsNNLO > 0) {
                   info["fnlo-tk-modify"]<<"Found NNLO contribution " << i << endl;
-                  std::vector <std:: string> Description;
                   if ( cont_NNLO.size() == 0 ) {
                      warn["fnlo-tk-modify"]<<"Found NNLO contribution, but no additional values! Nothing added." << endl;
                   } else if ( cont_NNLO.size() != nobs ) {
@@ -480,7 +457,7 @@ int main(int argc, char** argv) {
          }
       }
 
-      //! Add InfoBlocks with statistical uncertainty from file (NNLOJET .dat, fnlo-tk-statunc .log, or .txt)
+      //! Add InfoBlocks with additonal information from file (NNLOJET .dat, fnlo-tk-statunc .log, or .txt)
       else if ( !read_steer::getstringarray(KeyFiles).empty() &&
                 !read_steer::getstringarray(KeyOrders).empty() ) {
          if ( !INT_ARR(RemoveBins).empty() ) {
@@ -489,12 +466,11 @@ int main(int argc, char** argv) {
          } else {
             info["fnlo-tk-modify"]<<"Adding InfoBlocks to contributions."<<endl;
          }
-         cout << "CCCCCCCCCC" << endl;
          unsigned int NDescr  = read_steer::getstringarray(KeyDescr).size();
          unsigned int NOrders = read_steer::getstringarray(KeyOrders).size();
          unsigned int NFiles  = read_steer::getstringarray(KeyFiles).size();
          unsigned int NCols   = read_steer::getintarray(KeyColumns).size();
-         unsigned int NFacs   = read_steer::getintarray(KeyFacs).size();
+         unsigned int NFacs   = read_steer::getdoublearray(KeyFacs).size();
          if ( NFiles != NOrders ) {
             error["fnlo-tk-modify"]<<"Need one order specification per file, aborted! Found NFiles = " << NFiles << ", and NOrders = " << NOrders <<endl;
             exit(37);
@@ -511,7 +487,6 @@ int main(int argc, char** argv) {
             error["fnlo-tk-modify"]<<"Up to two column numbers allowed, but found more. Aborted! NCols = " << NCols <<endl;
             exit(38);
          }
-         cout << "ZZZZZZZZZZZ icola, icolb = " << icola << ", " << icolb << endl;
          double relfac = 1.;
          if ( NFacs == 0 ) {
          } else if ( NFacs == 1 ) {
diff --git a/v2.5/toolkit/src/fnlo-tk-rootout.cc b/v2.5/toolkit/src/fnlo-tk-rootout.cc
index fd19705b..17b2388b 100644
--- a/v2.5/toolkit/src/fnlo-tk-rootout.cc
+++ b/v2.5/toolkit/src/fnlo-tk-rootout.cc
@@ -108,7 +108,7 @@ int main(int argc, char** argv) {
          infosep << _SSEPSC << endl;
          infosep << " #" << endl;
          info["fnlo-tk-rootout"] << "This program evaluates a fastNLO table and" << endl;
-         info["fnlo-tk-rootout"] << "prints out cross sections with statistical (if available), " << endl;
+         info["fnlo-tk-rootout"] << "prints out cross sections with numerical (if available), " << endl;
          info["fnlo-tk-rootout"] << "scale, or PDF uncertainties in ROOT format." << endl;
          info["fnlo-tk-rootout"] << "" << endl;
          info["fnlo-tk-rootout"] << "TODO: Provide more info on ROOT histogram numbering/labelling ..." << endl;
@@ -360,7 +360,7 @@ int main(int argc, char** argv) {
       if ( fnlo->IsNorm() ) {
          lNorm = true;
       } else {
-         error["fnlo-read"] << "Normalization requested but not defined for this table, aborted!" << endl;
+         error["fnlo-tk-rootout"] << "Normalization requested but not defined for this table, aborted!" << endl;
          exit(1);
       }
    }
diff --git a/v2.5/toolkit/src/fnlo-tk-yodaout.cc b/v2.5/toolkit/src/fnlo-tk-yodaout.cc
index cf0340c0..23b6d571 100644
--- a/v2.5/toolkit/src/fnlo-tk-yodaout.cc
+++ b/v2.5/toolkit/src/fnlo-tk-yodaout.cc
@@ -100,7 +100,7 @@ int main(int argc, char** argv) {
          infosep << _SSEPSC << endl;
          infosep << " #" << endl;
          info["fnlo-tk-yodaout"] << "This program evaluates a fastNLO table and" << endl;
-         info["fnlo-tk-yodaout"] << "prints out cross sections with statistical (if available), " << endl;
+         info["fnlo-tk-yodaout"] << "prints out cross sections with numerical (if available), " << endl;
          info["fnlo-tk-yodaout"] << "scale, or PDF uncertainties in YODA format for use with Rivet." << endl;
          info["fnlo-tk-yodaout"] << "For this to work, the scenario description must contain" << endl;
          info["fnlo-tk-yodaout"] << "the Rivet ID in the form 'RIVET_ID=EXP_YYYY_INSPIREID/Dii-xjj-ykk'," << endl;
@@ -503,6 +503,7 @@ int main(int argc, char** argv) {
    XsUncertainty XsUnc;
    string LineName;
    string UncName;
+   string HeadLine = " # bin      cross_section           lower_uncertainty       upper_uncertainty";
    if ( chunc == "2P" || chunc == "6P" || chunc == "30") {
       XsUnc = fnlo->GetXsUncertainty(eScaleUnc, lNorm, sclfac);
       UncName = " # Relative scale uncertainties";
@@ -517,8 +518,9 @@ int main(int argc, char** argv) {
       LineName += "_dxst";
    } else if ( chunc == "AB" ) {
       XsUnc = fnlo->GetXsUncertainty(eNumUnc, lNorm);
-      UncName = " # Relative approximation bias";
+      UncName = " # Relative interpolation bias";
       LineName += "_dxab";
+      HeadLine = " # bin      cross_section           reference_value         relative_deviation";
    } else if ( chunc != "none" ) {
       XsUnc = fnlo->GetXsUncertainty(ePDFUnc, lNorm);
       UncName = " # Relative PDF uncertainties";
@@ -529,7 +531,7 @@ int main(int argc, char** argv) {
       LineName += "_dxnone";
    }
    UncName = UncName + " (" + chunc + " " + PDFFile + " " + sOrder + ")";
-   fastNLOTools::PrintXSUncertainty(XsUnc, UncName);
+   fastNLOTools::PrintXSUncertainty(XsUnc, UncName, HeadLine);
 
    //! --- Get RivetID
    //!     For 2+-dimensions determine running number in Rivet plot name by spotting the capital letter in "RIVET_ID=" in the fnlo table
-- 
GitLab