From 434b93b2bbbd8294aae9dbb5deb1f7c4357d6d77 Mon Sep 17 00:00:00 2001
From: Nils Krumnack <nils.erik.krumnack@cern.ch>
Date: Mon, 6 May 2024 15:50:10 -0500
Subject: [PATCH] add an option to add the NOSYS suffix to branches without
 systematics

This makes the n-tuple branches more consistent, and makes it very easy
to determine the list of branches for nominal.

It also means that if we add (or drop) systematics from a branch, the
names of the branches in nominal will not change.  That doesn't happen
all that often, but could still be helpful.

Leaving this disabled by default because it (obviously) changes the
n-tuple content.  Also we haven't yet decided whether this is even a
good idea, but it ought to be a good enough idea to allow users to at
least play with it.
---
 .../AsgAnalysisAlgorithms/python/OutputAnalysisConfig.py     | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/OutputAnalysisConfig.py b/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/OutputAnalysisConfig.py
index b9561e276c2c..e4b27ef88890 100644
--- a/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/OutputAnalysisConfig.py
+++ b/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/OutputAnalysisConfig.py
@@ -47,6 +47,9 @@ class OutputAnalysisConfig (ConfigBlock):
             "prefaced by the keywords enable or disable) to turn on/off the "
             "writing of branches to the output ntuple. The default is None "
             "(no modification to the scheduled output branches).")
+        self.addOption ('alwaysAddNosys', False, type=bool,
+            info="If set to True, all branches will be given a systematics suffix, "
+            "even if they have no systematics (beyond the nominal).")
 
 
     def makeAlgs (self, config) :
@@ -114,6 +117,8 @@ class OutputAnalysisConfig (ConfigBlock):
                 if outputConfig.noSys :
                     outputConfig.outputContainerName = outputConfig.outputContainerName.replace ('%SYS%', 'NOSYS')
                     outputConfig.variableName = outputConfig.variableName.replace ('%SYS%', 'NOSYS')
+                    if self.alwaysAddNosys :
+                        outputName += "_NOSYS"
                 else :
                     outputName += '_%SYS%'
                 myVars += [outputConfig.outputContainerName + '.' + outputConfig.variableName + ' -> ' + outputName]
-- 
GitLab