Skip to content

Commit ba5224a

Browse files
committed
Updating correlation matrix plotting script (again)
1 parent 7c7c8d9 commit ba5224a

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

Configurations/Template/scripts/correlationMatrix.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#Script to make correlation matrix of fixed size, showing correlations between signal strengths and nuisances with highest correlations
2-
#Argument: multidimfit*.root produced when running MultiDimFit in combine and using --saveFitResult
2+
#Argument: multidimfit*.root produced when running MultiDimFit in combine and using --saveFitResult, or fitDiagnostics*.root produced when running FitDiagnostics
33

44
from ROOT import TCanvas, TH2F, gStyle, gPad, TFile, TLatex, gROOT
55
from itertools import combinations
@@ -36,15 +36,17 @@
3636
filename = sys.argv[1]
3737
f0 = TFile(filename)
3838

39-
fit_mdf = f0.Get("fit_mdf")
40-
if fit_mdf == None:
41-
print 'Input file must be a multidimfit*.root file containing a fit_mdf object. File can be produced by using --saveFitResult when running MultiDimFit in combine'
39+
fit_result = f0.Get("fit_mdf")
40+
if fit_result == None:
41+
fit_result = f0.Get("fit_s")
42+
if fit_result == None:
43+
print 'Input file must be a multidimfit*.root file containing a fit_mdf object (produced by using --saveFitResult when running MultiDimFit in combine) or a fitDiagnostics*.root file containing a fit_s object (produced by running FitDiagnostics in combine)'
4244
exit()
4345

44-
arglist = fit_mdf.floatParsFinal()
46+
arglist = fit_result.floatParsFinal()
4547
args = [arglist.at(i).GetName() for i in xrange(0,len(arglist))]
46-
sigstrength = [s for s in args if s.startswith('r_')]
47-
nuisances = [n for n in args if not n.startswith('r_')]
48+
sigstrength = [s for s in args if (s.startswith('r_') or s == 'r')]
49+
nuisances = [n for n in args if not (n.startswith('r_') or n == 'r')]
4850

4951
def maxcorr(nuis):
5052
maxcorr = 0.0
@@ -53,7 +55,7 @@ def maxcorr(nuis):
5355
n_split = re.split('(bin\d+_)',n)
5456
nuis_split = re.split('(bin\d+_)',nuis)
5557
if len(n_split) == len(nuis_split) == 3 and n_split[0] == nuis_split[0] and n_split[1] == nuis_split[1] : continue
56-
if abs(fit_mdf.correlation(nuis,n)) > maxcorr : maxcorr = abs(fit_mdf.correlation(nuis,n))
58+
if abs(fit_result.correlation(nuis,n)) > maxcorr : maxcorr = abs(fit_result.correlation(nuis,n))
5759
return maxcorr
5860

5961
sorted_nuisances = sorted(nuisances,key = lambda nuis : maxcorr(nuis), reverse = True)
@@ -66,7 +68,7 @@ def maxcorr(nuis):
6668
for i, inuis in enumerate(allpars):
6769
for j, jnuis in enumerate(allpars):
6870
if i != j:
69-
corMatrix.SetBinContent(i+1, j+1, fit_mdf.correlation(inuis,jnuis))
71+
corMatrix.SetBinContent(i+1, j+1, fit_result.correlation(inuis,jnuis))
7072

7173
corMatrix.SetStats(0)
7274
corMatrix.SetTitle("")
@@ -95,6 +97,7 @@ def maxcorr(nuis):
9597
ylabels.DrawLatex(x,y,nuis)
9698

9799
filename = filename.replace('multidimfit','correlation_matrix')
100+
filename = filename.replace('fitDiagnostics','correlation_matrix')
98101
filename = filename.replace('root','pdf')
99102
canvas.SaveAs(filename)
100103

0 commit comments

Comments
 (0)