Skip to content

Commit 6c96515

Browse files
Merge pull request cms-analysis#14 from emanueledimarco/vbfac-dev
Developments to re-include all the STXS cats to the anomalous couplings fit
2 parents 594ca8d + bb11962 commit 6c96515

17 files changed

+179
-80
lines changed

Signal/RunPlotter.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,4 +167,5 @@ def get_options():
167167
outdir="%s/%s/Plots"%(opt.outdir,opt.ext)
168168
if not os.path.isdir(outdir): os.system("mkdir -p %s"%outdir)
169169
if os.path.exists("/afs/cern.ch"): os.system("cp /afs/cern.ch/user/g/gpetrucc/php/index.php "+outdir)
170+
elif os.path.exists("/cmshome/dimarcoe"): s.system("cp /cmshome/dimarcoe/php/index.php "+outdir)
170171
plotSignalModel(hists,opt,_outdir=outdir)

Signal/config_test_2016postVFP.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
signalScriptCfg = {
66
# Setup
7-
'inputWSDir':'cards/cards_current/signal_%s'%_year,
8-
'procs':'GG2H,VBF,VBF_ALT0L1,VBF_ALT0L1f05ph0,VBF_ALT0L1Zg,VBF_ALT0L1Zgf05ph0,VBF_ALT0M,VBF_ALT0Mf05ph0,VBF_ALT0PH,VBF_ALT0PHf05ph0,VBF_ALT0PM,WH_WM,WH_WP,WH_ALT0L1f05ph0,WH_ALT0PH,WH_ALT0PHf05ph0,WH_ALT0PM,ZH,ZH_ALT0L1,ZH_ALT0L1f05ph0,ZH_ALT0L1Zg,ZH_ALT0L1Zgf05ph0,ZH_ALT0M,ZH_ALT0Mf05ph0,ZH_ALT0PH,ZH_ALT0PHf05ph0,ZH_ALT0PM,TTH,TTH_ALT0M,TTH_ALT0Mf05ph0,TTH_ALT0PM', # if auto: inferred automatically from filenames
9-
'cats':'VBFTag_1,VBFTag_3,VBFTag_5,VBFTag_6,VBFTag_7', # if auto: inferred automatically from (0) workspace
10-
'ext':'2022-11-21_year%s'%_year,
7+
'inputWSDir':'cards/signal_%s'%_year,
8+
'procs':'auto',
9+
'cats':'auto',
10+
'ext':'2023-02-13_year%s'%_year,
1111
'analysis':'AC', # To specify which replacement dataset mapping (defined in ./python/replacementMap.py)
1212
'year':'%s'%_year, # Use 'combined' if merging all years: not recommended
1313
'massPoints':'120,125,130',
@@ -21,6 +21,6 @@
2121
'smears':'HighR9EBPhi,HighR9EBRho,HighR9EEPhi,HighR9EERho,LowR9EBPhi,LowR9EBRho,LowR9EEPhi,LowR9EERho', # separate nuisance per year
2222

2323
# Job submission options
24-
'batch':'condor', # ['condor','SGE','IC','local']
25-
'queue':'espresso'
24+
'batch':'Rome', # ['condor','SGE','IC','Rome','local']
25+
'queue':'cmsan'
2626
}

Signal/config_test_2016preVFP.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
signalScriptCfg = {
66
# Setup
7-
'inputWSDir':'cards/cards_current/signal_%s'%_year,
8-
'procs':'GG2H,VBF,VBF_ALT0L1,VBF_ALT0L1f05ph0,VBF_ALT0L1Zg,VBF_ALT0L1Zgf05ph0,VBF_ALT0M,VBF_ALT0Mf05ph0,VBF_ALT0PH,VBF_ALT0PHf05ph0,VBF_ALT0PM,WH_WM,WH_WP,WH_ALT0L1f05ph0,WH_ALT0PH,WH_ALT0PHf05ph0,WH_ALT0PM,ZH,ZH_ALT0L1,ZH_ALT0L1f05ph0,ZH_ALT0L1Zg,ZH_ALT0L1Zgf05ph0,ZH_ALT0M,ZH_ALT0Mf05ph0,ZH_ALT0PH,ZH_ALT0PHf05ph0,ZH_ALT0PM,TTH,TTH_ALT0M,TTH_ALT0Mf05ph0,TTH_ALT0PM', # if auto: inferred automatically from filenames
9-
'cats':'VBFTag_1,VBFTag_3,VBFTag_5,VBFTag_6,VBFTag_7', # if auto: inferred automatically from (0) workspace
10-
'ext':'2022-11-21_year%s'%_year,
7+
'inputWSDir':'cards/signal_%s'%_year,
8+
'procs':'auto',
9+
'cats':'auto',
10+
'ext':'2023-02-13_year%s'%_year,
1111
'analysis':'AC', # To specify which replacement dataset mapping (defined in ./python/replacementMap.py)
1212
'year':'%s'%_year, # Use 'combined' if merging all years: not recommended
1313
'massPoints':'120,125,130',
@@ -21,6 +21,6 @@
2121
'smears':'HighR9EBPhi,HighR9EBRho,HighR9EEPhi,HighR9EERho,LowR9EBPhi,LowR9EBRho,LowR9EEPhi,LowR9EERho', # separate nuisance per year
2222

2323
# Job submission options
24-
'batch':'condor', # ['condor','SGE','IC','local']
25-
'queue':'espresso'
24+
'batch':'Rome', # ['condor','SGE','IC','Rome','local']
25+
'queue':'cmsan'
2626
}

Signal/config_test_2017.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
signalScriptCfg = {
66
# Setup
7-
'inputWSDir':'cards/cards_current/signal_%s'%_year,
8-
'procs':'GG2H,VBF,VBF_ALT0L1,VBF_ALT0L1f05ph0,VBF_ALT0L1Zg,VBF_ALT0L1Zgf05ph0,VBF_ALT0M,VBF_ALT0Mf05ph0,VBF_ALT0PH,VBF_ALT0PHf05ph0,VBF_ALT0PM,WH_WM,WH_WP,WH_ALT0L1f05ph0,WH_ALT0PH,WH_ALT0PHf05ph0,WH_ALT0PM,ZH,ZH_ALT0L1,ZH_ALT0L1f05ph0,ZH_ALT0L1Zg,ZH_ALT0L1Zgf05ph0,ZH_ALT0M,ZH_ALT0Mf05ph0,ZH_ALT0PH,ZH_ALT0PHf05ph0,ZH_ALT0PM,TTH,TTH_ALT0M,TTH_ALT0Mf05ph0,TTH_ALT0PM', # if auto: inferred automatically from filenames
9-
'cats':'VBFTag_1,VBFTag_3,VBFTag_5,VBFTag_6,VBFTag_7', # if auto: inferred automatically from (0) workspace
10-
'ext':'2022-11-21_year%s'%_year,
7+
'inputWSDir':'cards/signal_%s'%_year,
8+
'procs':'auto',
9+
'cats':'auto',
10+
'ext':'2023-02-13_year%s'%_year,
1111
'analysis':'AC', # To specify which replacement dataset mapping (defined in ./python/replacementMap.py)
1212
'year':'%s'%_year, # Use 'combined' if merging all years: not recommended
1313
'massPoints':'120,125,130',
@@ -21,6 +21,6 @@
2121
'smears':'HighR9EBPhi,HighR9EBRho,HighR9EEPhi,HighR9EERho,LowR9EBPhi,LowR9EBRho,LowR9EEPhi,LowR9EERho', # separate nuisance per year
2222

2323
# Job submission options
24-
'batch':'condor', # ['condor','SGE','IC','local']
25-
'queue':'espresso'
24+
'batch':'Rome', # ['condor','SGE','IC','Rome','local']
25+
'queue':'cmsan'
2626
}

Signal/config_test_2018.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
signalScriptCfg = {
66
# Setup
7-
'inputWSDir':'cards/cards_current/signal_%s'%_year,
8-
'procs':'GG2H,VBF,VBF_ALT0L1,VBF_ALT0L1f05ph0,VBF_ALT0L1Zg,VBF_ALT0L1Zgf05ph0,VBF_ALT0M,VBF_ALT0Mf05ph0,VBF_ALT0PH,VBF_ALT0PHf05ph0,VBF_ALT0PM,WH_WM,WH_WP,WH_ALT0L1f05ph0,WH_ALT0PH,WH_ALT0PHf05ph0,WH_ALT0PM,ZH,ZH_ALT0L1,ZH_ALT0L1f05ph0,ZH_ALT0L1Zg,ZH_ALT0L1Zgf05ph0,ZH_ALT0M,ZH_ALT0Mf05ph0,ZH_ALT0PH,ZH_ALT0PHf05ph0,ZH_ALT0PM,TTH,TTH_ALT0M,TTH_ALT0Mf05ph0,TTH_ALT0PM', # if auto: inferred automatically from filenames
9-
'cats':'VBFTag_1,VBFTag_3,VBFTag_5,VBFTag_6,VBFTag_7', # if auto: inferred automatically from (0) workspace
10-
'ext':'2022-11-21_year%s'%_year,
7+
'inputWSDir':'cards/signal_%s'%_year,
8+
'procs':'auto',
9+
'cats':'auto',
10+
'ext':'2023-02-13_year%s'%_year,
1111
'analysis':'AC', # To specify which replacement dataset mapping (defined in ./python/replacementMap.py)
1212
'year':'%s'%_year, # Use 'combined' if merging all years: not recommended
1313
'massPoints':'120,125,130',
@@ -21,6 +21,6 @@
2121
'smears':'HighR9EBPhi,HighR9EBRho,HighR9EEPhi,HighR9EERho,LowR9EBPhi,LowR9EBRho,LowR9EEPhi,LowR9EERho', # separate nuisance per year
2222

2323
# Job submission options
24-
'batch':'condor', # ['condor','SGE','IC','local']
25-
'queue':'espresso'
24+
'batch':'Rome', # ['condor','SGE','IC','Rome','local']
25+
'queue':'cmsan'
2626
}

Signal/run_sequence.sh

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ shift
3434
done
3535

3636
echo "Requested to run the step ${STEP} for the year: ${YEAR}"
37-
if [[ $YEAR < 2016 || $YEAR>2018 ]]; then
37+
if [[ $YEAR != "all" && ($YEAR < 2016 || $YEAR>2018) ]]; then
3838
echo "Year $YEAR does not belong to Run2. Exiting."
3939
exit
4040
fi
@@ -44,29 +44,37 @@ if [[ $DR ]]; then
4444
DROPT=" --printOnly "
4545
fi
4646

47-
if [[ $STEP == "fTest" ]]; then
48-
python RunSignalScripts.py --inputConfig config_test_${YEAR}.py --mode fTest --modeOpts "--doPlots --outdir plots --nProcsToFTest -1" ${DROPT}
49-
elif [[ $STEP == "calcPhotonSyst" ]]; then
50-
python RunSignalScripts.py --inputConfig config_test_${YEAR}.py --mode calcPhotonSyst ${DROPT}
51-
elif [[ $STEP == 'signalFit' ]]; then
52-
python RunSignalScripts.py --inputConfig config_test_${YEAR}.py --mode signalFit --modeOpts="--doPlots --outdir plots" ${DROPT}
53-
elif [[ $STEP == 'packager' ]]; then
54-
python RunPackager.py --cats "VBFTag_1,VBFTag_3,VBFTag_5,VBFTag_6,VBFTag_7" --inputWSDir cards/cards_current/signal_${YEAR} --exts 2022-11-21_year2016preVFP,2022-11-21_year2016postVFP,2022-11-21_year2017,2022-11-21_year2018 --mergeYears ${DROPT}
55-
elif [[ $STEP == 'plotter' ]]; then
47+
years=("2016preVFP" "2016postVFP" "2017" "2018")
48+
49+
for year in ${years[*]}
50+
do
51+
echo "====> Running for year $year"
52+
if [[ $year == $YEAR ]] || [[ $YEAR == "all" ]]; then
53+
if [[ $STEP == "fTest" ]]; then
54+
python RunSignalScripts.py --inputConfig config_test_${year}.py --mode fTest --modeOpts "--doPlots --outdir plots --nProcsToFTest -1" ${DROPT}
55+
elif [[ $STEP == "calcPhotonSyst" ]]; then
56+
python RunSignalScripts.py --inputConfig config_test_${year}.py --mode calcPhotonSyst ${DROPT}
57+
elif [[ $STEP == 'signalFit' ]]; then
58+
python RunSignalScripts.py --inputConfig config_test_${year}.py --mode signalFit --modeOpts="--doPlots --outdir plots" ${DROPT}
59+
elif [[ $STEP == 'packager' ]]; then
60+
python RunPackager.py --cats "auto" --inputWSDir cards/signal_${year} --exts 2022-11-21_year2016preVFP,2022-11-21_year2016postVFP,2022-11-21_year2017,2022-11-21_year2018 --mergeYears ${DROPT}
61+
fi
62+
fi
63+
done
64+
65+
if [[ $STEP == 'plotter' ]]; then
5666
# just plot all the (SM) processes, all the categories, all the years together. Can be split with --year ${YEAR}. Do not include BSM to maintain the expected total yield for SM
5767
python RunPlotter.py --procs "GG2H,VBF,WH_WP,WH_WM,TTH" --cats "VBFTag_1,VBFTag_3,VBFTag_5,VBFTag_6,VBFTag_7" --year 2016preVFP,2016postVFP,2017,2018 --ext packaged --outdir plots
5868
# split by category, all processes together
5969
for i in 1 3 5 6 7
6070
do
61-
python RunPlotter.py --procs "GG2H,VBF,WH_WP,WH_WM,TTH" --cats "VBFTag_$i" --year 2016preVFP,2016postVFP,2017,2018 --ext packaged --outdir plots --translateCats ../Plots/cats.json
71+
python RunPlotter.py --procs "GG2H,VBF,WH_WP,WH_WM,TTH" --cats "VBFTag_$i" --year 2016preVFP,2016postVFP,2017,2018 --ext packaged --outdir plots --translateCats ../Plots/cats.json
6272
done
6373
# split by process, all the categories together
6474
for proc in "GG2H" "VBF" "VBF_ALT0M" "VBF_ALT0Mf05" "VBF_ALT0PH" "VBF_ALT0PHf05" "VBF_ALTL1" "VBF_ALTL1f05" "VBF_ALTL1Zg" "VBF_ALTL1Zgf05" "WH_WP" "WH_WM" "WH_ALT0L1f05ph0" "WH_ALT0PH" "WH_ALT0PHf05ph0" "WH_ALT0PM" "ZH_ALT0L1" "ZH_ALT0L1f05ph0" "ZH_ALT0L1Zg" "ZH_ALT0L1Zgf05ph0" "ZH_ALT0M" "ZH_ALT0Mf05ph0" "ZH_ALT0PH" "ZH_ALT0PHf05ph0" "ZH_ALT0PM" "ZH" "TTH" "TTH_ALT0M" "TTH_ALT0Mf05ph0" "TTH_ALT0PM"
6575
do
66-
python RunPlotter.py --procs $proc --cats "VBFTag_1,VBFTag_3,VBFTag_5,VBFTag_6,VBFTag_7" --year 2016preVFP,2016postVFP,2017,2018 --ext packaged --outdir plots --translateProcs ../Plots/jcp.json
76+
python RunPlotter.py --procs $proc --cats "VBFTag_1,VBFTag_3,VBFTag_5,VBFTag_6,VBFTag_7" --year 2016preVFP,2016postVFP,2017,2018 --ext packaged --outdir plots --translateProcs ../Plots/jcp.json
6777
done
68-
else
69-
echo "Step $STEP is not one among fTest, signalFit, packager, plotter. Exiting."
7078
fi
7179

7280

Signal/scripts/calcPhotonSyst.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ def getRateVar(_hists):
114114
for _proc in opt.procs.split(","):
115115
# Glob M125 filename
116116
_WSFileName = glob.glob("%s/output*M125*%s.root"%(opt.inputWSDir,_proc))[0]
117-
_nominalDataName = "%s_%s_%s"%(procToData(_proc),sqrts__,opt.cat)
117+
_nominalDataName = "%s_125_%s_%s"%(procToData(_proc),sqrts__,opt.cat)
118118
data = data.append({'proc':_proc,'cat':opt.cat,'inputWSFile':_WSFileName,'nominalDataName':_nominalDataName}, ignore_index=True, sort=False)
119119

120120
# Loop over rows in dataFrame and open ws

Signal/scripts/fTest.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ def get_options():
7373
WSFileName = glob.glob("%s/output*M%s*%s.root"%(opt.inputWSDir,opt.mass,proc))[0]
7474
f = ROOT.TFile(WSFileName,"read")
7575
inputWS = f.Get(inputWSName__)
76-
d = reduceDataset(inputWS.data("%s_%s_%s"%(procToData(proc),sqrts__,opt.cat)),aset)
76+
# print "===> In file ",WSFileName," look for roodataset = ","%s_%s_%s_%s"%(procToData(proc),opt.mass,sqrts__,opt.cat)
77+
d = reduceDataset(inputWS.data("%s_%s_%s_%s"%(procToData(proc),opt.mass,sqrts__,opt.cat)),aset)
7778
df.loc[len(df)] = [proc,d.sumEntries(),1,1]
7879
inputWS.Delete()
7980
f.Close()
@@ -90,7 +91,7 @@ def get_options():
9091
WSFileName = glob.glob("%s/output*M%s*%s.root"%(opt.inputWSDir,opt.mass,proc))[0]
9192
f = ROOT.TFile(WSFileName,"read")
9293
inputWS = f.Get(inputWSName__)
93-
d = reduceDataset(inputWS.data("%s_%s_%s"%(procToData(proc),sqrts__,opt.cat)),aset)
94+
d = reduceDataset(inputWS.data("%s_%s_%s_%s"%(procToData(proc),opt.mass,sqrts__,opt.cat)),aset)
9495
datasets_RV[opt.mass] = splitRVWV(d,aset,mode="RV")
9596
datasets_WV[opt.mass] = splitRVWV(d,aset,mode="WV")
9697

Signal/scripts/signalFit.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ def get_options():
108108
WSFileName = glob.glob("%s/output*%s*.root"%(opt.inputWSDir,MHNominal))[0]
109109
f = ROOT.TFile(WSFileName,"read")
110110
inputWS = f.Get(inputWSName__)
111-
d = reduceDataset(inputWS.data("%s_%s_%s"%(procToData(opt.proc),sqrts__,opt.cat)),aset)
111+
d = reduceDataset(inputWS.data("%s_%s_%s_%s"%(procToData(opt.proc),MHNominal,sqrts__,opt.cat)),aset)
112112
if( d.numEntries() == 0. )|( d.sumEntries <= 0. ):
113113
print " --> (%s,%s) has zero events. Will not construct signal model"%(opt.proc,opt.cat)
114114
exit()
@@ -156,7 +156,7 @@ def get_options():
156156
WSFileName = glob.glob("%s/output*%s*%s.root"%(opt.inputWSDir,mp,procRVFit))[0]
157157
f = ROOT.TFile(WSFileName,"read")
158158
inputWS = f.Get(inputWSName__)
159-
d = reduceDataset(inputWS.data("%s_%s_%s"%(procToData(procRVFit),sqrts__,catRVFit)),aset)
159+
d = reduceDataset(inputWS.data("%s_%s_%s_%s"%(procToData(procRVFit),mp,sqrts__,catRVFit)),aset)
160160
nominalDatasets[mp] = d.Clone()
161161
if opt.skipVertexScenarioSplit: datasetRVForFit[mp] = d
162162
else: datasetRVForFit[mp] = splitRVWV(d,aset,mode="RV")

Signal/tools/submissionTools.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ def writeSubFiles(_opts):
120120
_fsub.close()
121121

122122
# SGE...
123-
if (_opts['batch'] == "IC")|(_opts['batch'] == "SGE")|(_opts['batch'] == "local" ):
123+
if (_opts['batch'] == "IC")|(_opts['batch'] == "SGE")|(_opts['batch'] == "Rome")|(_opts['batch'] == "local" ):
124124
_executable = "sub_%s_%s"%(_opts['mode'],_opts['ext'])
125125

126126
# Write details depending on mode
@@ -205,8 +205,9 @@ def submitFiles(_opts):
205205
print " --> Finished submitting files"
206206

207207
# SGE
208-
elif _opts['batch'] in ['IC','SGE']:
208+
elif _opts['batch'] in ['IC','SGE','Rome']:
209209
_executable = "sub_%s_%s"%(_opts['mode'],_opts['ext'])
210+
_subcmd = 'bsub' if _opts['batch']=='Rome' else 'qsub'
210211

211212
# Extract job opts
212213
jobOptsStr = _opts['jobOpts']
@@ -217,19 +218,19 @@ def submitFiles(_opts):
217218
for cidx in range(_opts['nCats']):
218219
pcidx = pidx*_opts['nCats']+cidx
219220
_subfile = "%s/%s_%g"%(_jobdir,_executable,pcidx)
220-
cmdLine = "qsub -q hep.q %s -o %s.log -e %s.err %s.sh"%(jobOptsStr,_subfile,_subfile,_subfile)
221+
cmdLine = "%s -q %s %s -o %s.log -e %s.err %s.sh"%(_subcmd,_opts['queue'],jobOptsStr,_subfile,_subfile,_subfile)
221222
run(cmdLine)
222223
# Separate submission per category
223224
elif( _opts['mode'] == "packageSignal" )|( _opts['mode'] == "fTest" )|( _opts['mode'] == "calcPhotonSyst" )|(( _opts['mode'] == "signalFit" )&( _opts['groupSignalFitJobsByCat'] )):
224225
for cidx in range(_opts['nCats']):
225226
c = _opts['cats'].split(",")[cidx]
226227
_subfile = "%s/%s_%s"%(_jobdir,_executable,c)
227-
cmdLine = "qsub -q hep.q %s -o %s.log -e %s.err %s.sh"%(jobOptsStr,_subfile,_subfile,_subfile)
228+
cmdLine = "%s -q %s %s -o %s.log -e %s.err %s.sh"%(_subcmd,_opts['queue'],jobOptsStr,_subfile,_subfile,_subfile)
228229
run(cmdLine)
229230
# Single submission
230231
elif(_opts['mode'] == "getEffAcc")|(_opts['mode'] == "getDiagProc"):
231232
_subfile = "%s/%s"%(_jobdir,_executable)
232-
cmdLine = "qsub -q hep.q %s -o %s.log -e %s.err %s.sh"%(jobOptsStr,_subfile,_subfile,_subfile)
233+
cmdLine = "%s -q %s %s -o %s.log -e %s.err %s.sh"%(_subcmd,_opts['queue'],jobOptsStr,_subfile,_subfile,_subfile)
233234
run(cmdLine)
234235
print " --> Finished submitting files"
235236

0 commit comments

Comments
 (0)