From ce88c47df7b590ff4f8ebe9b3176d01b1839a3d8 Mon Sep 17 00:00:00 2001
From: Christian Weber <ChristianTMWeber@gmal.com>
Date: Tue, 19 Jul 2022 16:14:47 -0700
Subject: [PATCH] limitsetting - update mechanism to select signal physics
 process

Can now also use generic 'signal'
---
 limitSetting/limitSetting.py | 37 +++++++++++++++++++++++++++++++++---
 1 file changed, 34 insertions(+), 3 deletions(-)

diff --git a/limitSetting/limitSetting.py b/limitSetting/limitSetting.py
index f7e2d5e..4bb80a2 100644
--- a/limitSetting/limitSetting.py
+++ b/limitSetting/limitSetting.py
@@ -787,6 +787,33 @@ def setupHistofactoryData(TH1):
 
     return dataObj
 
+
+def selectSignal( signalTag , physicsProcessList):
+
+    def matchFunction(tag):
+
+        rePattern = re.compile(tag)
+
+        matchList = filter(rePattern.search, physicsProcessList) # Read Note below
+
+        if not isinstance(matchList, list): matchList = [item for item in matchList]
+
+        if len(matchList)>0: return matchList[0]
+        else: return None
+
+
+    signalSampleExact = matchFunction(signalTag)
+
+    if signalSampleExact is None: signalSampleExact = matchFunction("signal")
+
+    # selection via difflib
+    #signalSampleExact = difflib.get_close_matches( signalSample  , masterDict[region].keys())[0]
+
+
+
+    return signalSampleExact
+
+
 if __name__ == '__main__':
 
     parser = argparse.ArgumentParser()
@@ -918,9 +945,13 @@ if __name__ == '__main__':
             templatePaths = {}
 
             # Prep signal sample locations
-            signalSample = "ZZd %iGeV" %( massPoint )
-            signalSampleExact = difflib.get_close_matches( signalSample  , masterDict[region].keys())[0]
-            templatePaths["Signal"]  = getFullTDirPath(masterDict, region, signalSampleExact , "Nominal",  flavor) # region+"/ZZd, m_{Zd} = 35GeV/Nominal/"+flavor+"/ZXSR_ZZd, m_{Zd} = 35GeV_Nominal_All"
+            signalSampleTag = "ZZd\D+%iGeV" %( massPoint )
+
+            signalSample = selectSignal( signalSampleTag , masterDict[region].keys())
+
+
+
+            templatePaths["Signal"]  = getFullTDirPath(masterDict, region, signalSample , "Nominal",  flavor) # region+"/ZZd, m_{Zd} = 35GeV/Nominal/"+flavor+"/ZXSR_ZZd, m_{Zd} = 35GeV_Nominal_All"
 
             templatePaths["ZZ"]      = getFullTDirPath(masterDict, region, "ZZ" , "Nominal",  flavor)
             templatePaths["H4l"]     = getFullTDirPath(masterDict, region, "H4l" , "Nominal",  flavor)
-- 
GitLab