ZPrime Combine Manual

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 13

DownloadZPrime Combine Manual
Open PDF In BrowserView PDF
ZPrimeCombine
Interface to the Higgs Combine Tool for the
Z 0 → `` search

User Manual

Jan-Frederik Schulte

Version 2.0.0, 2018/17/07

Contents

Contents

Contents
1 Introduction

3

2 Setup

3

3 Usage
3.1 Input creation . . . . . . . . . . . . . . . . . . .
3.2 Running statistical procedures . . . . . . . . . . .
3.2.1 Binned limits . . . . . . . . . . . . . . .
3.2.2 Single mass/Λ points . . . . . . . . . . .
3.2.3 Spin-2 limits . . . . . . . . . . . . . . . .
3.2.4 Signal injection and Look Elsewhere Effect
3.2.5 Contact Interaction limits . . . . . . . . .
3.2.6 Job submission . . . . . . . . . . . . . .
3.3 Output processing . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

3
4
10
10
11
11
11
11
12
12

2

Contents

1 Introduction

1 Introduction
The ZPrimeCombine package, to be found on Gitlab, provides an interface between the experimental results of the Z 0 → `` analysis, as well as the non-resonant interpretation in Contact
Interactions, and the Higgs Combine Tool. This tool, referred to simply as “combine” going
further, is in turn an interface to the underlying statistical tools provided by RooStats. This
document aims to summarize the functionality of the the tool and give instructions how to use
it to derive limits and significances for the analysis.

2 Setup
The current implementation in the package is based on version v7.0.10 of combine. CMSSW_8_1_0
is used to set the environment, but this is only to ensure a consistent version of ROOT, Combine does not rely on CMSSW itself. Combine is installed using the following commands
export SCRAM_ARCH=slc6_amd64_gcc530
cmsrel CMSSW_8_1_0
cd CMSSW_8_1_0/src
cmsenv
git clone https://github.com/cms-analysis/HiggsAnalysis-CombinedLimit.git HiggsAnalysis/CombinedLimit
cd HiggsAnalysis/CombinedLimit
cd $CMSSW_BASE/src/HiggsAnalysis/CombinedLimit
git fetch origin
git checkout v7.0.10
scramv1 b clean; scramv1 b # always make a clean build

Detailed documentation of combine can be found on this Twiki page.
To finish the setup, just clone the ZPrimeCombine repository from the link given above. Note
that this is only possible for CMS members subscribed to the Z 0 e-group. This documentation
refers to version 1.0 of the framework, which can be checked out using git checkout v1.0.
At the moment of writing this, all developments are merged into the master branch. This
might change in the future, so be aware that you might have to check out a different branch
to find the functionality you need.

3 Usage
The central entry point to the framework is the script runInterpretation.py. It steers both
the creation of the inputs given to combine as well as the execution of it, either locally or via
batch/grid jobs. Let’s have a look at its functionality:
Steering tool for Zprime -> ll analysis interpretation in combine
optional arguments:
-h, --help
-r, --redo

show this help message and exit
recreate datacards and workspaces for this

3

Contents

3 Usage

configuration
-w, --write
create datacards and workspaces for this configuration
-b, --binned
use binned dataset
-s, --submit
submit jobs to cluster
--signif
run significance instead of limits
--LEE
run significance on BG only toys to estimate LEE
--frequentist
use frequentist CLs limits
--hybrid
use frequenstist-bayesian hybrid methods
--plc
use PLC for signifcance calculation
-e, --expected
expected limits
-i, --inject
inject signal
--recreateToys
recreate the toy dataset for this configuration
--crab
submit to crab
-c CONFIG, --config CONFIG
name of the congiguration to use
-t TAG, --tag TAG
tag to label output
--workDir WORKDIR
tells batch jobs where to put the datacards. Not for
human use!
-n NTOYSEXP, --nToysExp NTOYSEXP
number of expected limits to be calculated in one job,
overwrites then expToys option from the config file.
Used for CONDOR jobs at LPC so far
-m MASS, --mass MASS mass point
-L LAMBDA, --Lambda LAMBDA
Lambda values
--CI
calculate CI limits
--usePhysicsModel
use PhysicsModel to set limtsi of Lamda
--singlebin
use single bin counting for CI. The mass parameter now
designates the lower mass threshold
--Lower
calculate lower limits
--spin2
calculate limits for spin2 resonances
--bias
perform bias study

In the following the use of these options for different purposes is described. The most important
parameter is -c, which tells the framework, which configuration file to use for steering. It is the
only argument which is mandatory to give, and the name of the configuration will be used to
tag all inputs and results. The configuration files themselves are discussed in the next section.
Another universal option is the -t option which can used to tag the in- and output of the tool.

3.1 Input creation
The first task of the framework is to create the datacards and workspaces used as inputs for
combine. To provide the framework with the necessary information, the user has to provide
two different types of inputs. All experimental information is located in the input/ directory.
Here, for each channel of the analysis, there is one channelConfig_channelName.py file. For
example, for the barrel-barrel category in the dimuon channel for the 2016 result (EXO-16-047),

4

Contents

3 Usage

it looks like the example shown below. Important things are commented throughout.

5

Contents

3 Usage

i m p o r t ROOT , sys
ROOT . gROOT . SetBatch ( True )
ROOT . g E r r o r I g n o r e L e v e l = 1
from ROOT i m p o r t ∗
from muonR esolutio n i m p o r t getResolution as getRes #e x t e r n a l s o u r c e f o r ←p a r a m e t r i z a t i o n o f dimuon r e s o l u t i o n
nBkg = −1
dataFile = " i n p u t / dimuon_Mordion2017_BB . t x t "
d e f a d d B k g U n c e r t P r i o r ( ws , label , channel , uncert ) :
beta_bkg = RooRealVar ( ' beta_%s_%s ' %(label , channel ) , ' beta_%s_%s ' %(label , ←channel ) , 0 , − 5 , 5 )
g e t a t t r ( ws , ' i m p o r t ' ) ( beta_bkg , ROOT . RooCmdArg ( ) )
uncert = 1 . + uncert
bkg_kappa = RooRealVar ( '%s_%s_kappa ' %(label , channel ) , '%s_%s_kappa ' %(label ←, channel ) , uncert )
bkg_kappa . setConstant ( )
g e t a t t r ( ws , ' i m p o r t ' ) ( bkg_kappa , ROOT . RooCmdArg ( ) )
ws . factory ( " PowFunc : : % s_%s _ n u i s (%s_%s_kappa , beta_%s_%s ) "%(label , channel , ←label , channel , label , channel ) )
ws . factory ( " p r o d : : % s_%s _ f o r U s e (%s_%s , %s_%s _ n u i s ) "%(label , channel , label , ←channel , label , channel ) )
#f u n c t i o n a l i t y t o add a u n c e r t a i n t y t o a b a c k g r o u n d f i t p a r a m e t e r
d e f p r o v i d e S i g n a l S c a l i n g ( mass , spin2=False ) :
nz
= 53134
#From A l e x a n d e r ( 8 0X Moriond ReReco )
nsig_scale = 1 3 7 6 . 0 2 0 8 3 6 7 5 1 4 3 5 8
# p r e s c a l e / e f f _ z ( 1 6 7 . 7 3 6 9 4 / 0 . 1 2 1 9 ) ←−−> d e r i v e s t h e l u m i
eff = signalEff ( mass , spin2 )
result = ( nsig_scale ∗ nz ∗ eff )
r e t u r n result
#p r o v i d e s t h e s c a l i n g o f t h e s i g n a l c r o s s s e c t i o n t o t h e Z p e a k s o t h a t we can ←s e t l i m i t s on t h e c r o s s s e c t i o n r a t i o
d e f signalEff ( mass , spin2=False ) :
i f spin2 :
eff_a = 1 . 0 2 0 3 8 2
eff_b = −1166.881533
eff_c = 1 4 6 8 . 9 8 9 4 9 6
eff_d = 0 . 0 0 0 0 4 4
r e t u r n eff_a + eff_b / ( mass + eff_c ) − mass ∗ eff_d
else :
i f mass <= 6 0 0 :
a = 2.129
b = 0.1268
c = 119.2
d = 22.35
e = −2.386
f = −0.03619
from math i m p o r t exp
r e t u r n a − b ∗ exp ( −(mass − c ) / d ) + e ∗ mass ∗∗ f
else :
eff_a
eff_b
eff_c
eff_d
#mass d e p e n d i n g s i g n a l

=
=
=
=

2.891
−2.291 e+04
8294.
0.0001247

return
eff_a + eff_b / ( mass + eff_c ) − mass ∗ eff_d
e f f i c i e n c y f o r the resonant search

d e f s ig na lE f fU nc er t ( mass ) :

6

Contents

3 Usage
i f mass <= 6 0 0 :
a = 2.129
b = 0.1268
c = 119.2
d = 22.38
e = −2.386
f = −0.03623
from math i m p o r t exp
eff_default = a − b ∗ exp ( −(mass − c ) / d ) + e ∗ mass ∗∗ f
else :
eff_a
=
2.891
eff_b
= −2.291 e+04
eff_c
= 8294.
eff_d
= 0.0001247
eff_default = eff_a + eff_b / ( mass + eff_c ) − mass ∗ eff_d
i f mass <= 6 0 0 :
a = 2.13
b = 0.1269
c = 119.2
d = 22.42
e = −2.384
f = −0.03596
from math i m p o r t exp
eff_syst = a − b ∗ exp ( −(mass − c ) / d ) + e ∗ mass ∗∗ f
else :
eff_a
= 2.849
eff_b
= −2.221 e+04
eff_c
= 8166.
eff_d
= 0.0001258
eff_syst = eff_a + eff_b / ( mass + eff_c ) − mass ∗ eff_d
effDown = eff_default / eff_syst

r e t u r n [ 1 . / effDown , 1 . 0 ]
#one−s i d e d s i g n a l e f f i c i e n c y u n c e r t a i n t y from h i g h momentum e f f i c i e n c y

loss

d e f p r o v i d e U n c e r t a i n t i e s ( mass ) :
result = {}
result [ " s i g E f f " ] = s ig na lE f fU nc er t ( mass )
result [ " m a s s S c a l e " ] = 0 . 0 1
result [ " b k g U n c e r t " ] = 1 . 4
result [ " r e s " ] = 0 . 1 5
result [ " bkgParams " ] = { " bkg_a " : 0 . 0 0 0 8 8 7 0 4 9 0 8 3 3 8 2 6 1 3 7 , " bkg_b "←: 0 . 0 7 3 5 0 8 0 0 5 8 2 2 4 1 6 3 , " bkg_c " : 0 . 0 2 0 8 6 5 2 6 5 7 6 0 1 9 7 7 7 4 , " bkg_d "←: 0 . 1 3 5 4 6 6 2 2 9 1 4 9 5 7 6 1 5 , " bkg_e " : 0 . 0 0 1 1 1 4 8 2 7 2 0 1 7 8 3 7 2 3 5 , " bkg_a2 "←: 0 . 0 0 2 8 5 8 7 7 6 4 4 3 6 8 2 1 0 4 4 , " bkg_b2 " : 0 . 0 0 8 5 0 6 1 1 3 7 6 9 2 7 1 6 6 5 , " bkg_c2 "←: 0 . 0 1 9 4 1 8 9 8 5 2 7 0 0 4 9 0 9 7 , " bkg_e2 " : 0 . 0 0 1 5 6 1 6 8 6 6 2 1 5 5 1 2 7 5 4 }
r e t u r n result
# provide s a l l the systematic u n c e r t a i n t i e s f o r the resonant a n a l y s i s
d e f p r o v i d e U n c e r t a i n t i e s C I ( mass ) :
result = {}
result [ " t r i g " ] = 1 . 0 0 3
result [ " zPeak " ] = 1 . 0 5
result [ " x S e c O t h e r " ] = 1 . 0 7
result [ " j e t s " ] = 1 . 5
result [ " l u m i " ] = 1 . 0 2 5
result [ " s t a t s " ] = 0 . 0 ##dummy v a l u e s
result [ " m a s s S c a l e " ] = 0 . 0 ##dummy v a l u e s
result [ " r e s " ] = 0 . 0 ## dummy v a l u e s
result [ " p d f " ] = 0 . 0 ## dummy v a l u e s
result [ " ID " ] = 0 . 0 ## dummy v a l u e s

7

Contents

3 Usage
result [ "PU" ] = 0 . 0 ## dummy v a l u e s

r e t u r n result
# s i m i l a r t o above , b u t t h i s t i m e f o r t h e non−r e s o n a n t a n a l y s i s . A v a l u e o f 0 ←i n d i c a t e s t h a t t h e s e u n c e r t a i n t i e s a r e mass−d e p e n d e n t and w i l l be p r o v i d e d a s ←external histograms
d e f getResolution ( mass ) :
result = {}
params = getRes ( mass )
result [ ' a l p h a L ' ] = params [ ' a l p h a L ' ] [ 'BB ' ]
result [ ' a l p h a R ' ] = params [ ' a l p h a R ' ] [ 'BB ' ]
result [ ' r e s ' ] = params [ ' s i g m a ' ] [ 'BB ' ]
result [ ' s c a l e ' ] = params [ ' s c a l e ' ] [ 'BB ' ]
r e t u r n result
# r e p a c k a g e s t h e mass d e p e n d e n t r e s o l u t i o n i n t o t h e f o r m a t u s e d i n t h e l i m i t

tool

d e f l o a d B a c k g r o u n d S h a p e ( ws , useSh apeUncer t=False ) :
bkg_a = RooRealVar ( ' bkg_a_dimuon_Moriond2017_BB ' , ' ←bkg_a_dimuon_Moriond2017_BB ' , 3 3 . 8 2 )
bkg_b = RooRealVar ( ' bkg_b_dimuon_Moriond2017_BB ' , ' ←bkg_b_dimuon_Moriond2017_BB ' , − 0 . 0 0 0 1 3 7 4 )
bkg_c = RooRealVar ( ' bkg_c_dimuon_Moriond2017_BB ' , ' ←bkg_c_dimuon_Moriond2017_BB ' , −1.618 e −07)
bkg_d = RooRealVar ( ' bkg_d_dimuon_Moriond2017_BB ' , ' ←bkg_d_dimuon_Moriond2017_BB ' , 3 . 6 5 7 E −12)
bkg_e = RooRealVar ( ' bkg_e_dimuon_Moriond2017_BB ' , ' ←bkg_e_dimuon_Moriond2017_BB ' , − 4 . 4 8 5 )
bkg_a2 = RooRealVar ( ' bkg_a2_dimuon_Moriond2017_BB ' , ' ←bkg_a2_dimuon_Moriond2017_BB ' , 1 7 . 4 9 )
bkg_b2 = RooRealVar ( ' bkg_b2_dimuon_Moriond2017_BB ' , ' ←bkg_b2_dimuon_Moriond2017_BB ' , − 0 . 0 1 8 8 1 )
bkg_c2 = RooRealVar ( ' bkg_c2_dimuon_Moriond2017_BB ' , ' ←bkg_c2_dimuon_Moriond2017_BB ' , 1 . 2 2 2 e −05)
bkg_e2 = RooRealVar ( ' bkg_e2_dimuon_Moriond2017_BB ' , ' ←bkg_e2_dimuon_Moriond2017_BB ' , − 0 . 8 4 8 6 )
bkg_a . setConstant ( )
bkg_b . setConstant ( )
bkg_c . setConstant ( )
bkg_d . setConstant ( )
bkg_e . setConstant ( )
bkg_a2 . setConstant ( )
bkg_b2 . setConstant ( )
bkg_c2 . setConstant ( )
bkg_e2 . setConstant ( )
g e t a t t r ( ws , ' i m p o r t ' ) ( bkg_a , ROOT . RooCmdArg ( ) )
g e t a t t r ( ws , ' i m p o r t ' ) ( bkg_b , ROOT . RooCmdArg ( ) )
g e t a t t r ( ws , ' i m p o r t ' ) ( bkg_c , ROOT . RooCmdArg ( ) )
g e t a t t r ( ws , ' i m p o r t ' ) ( bkg_d , ROOT . RooCmdArg ( ) )
g e t a t t r ( ws , ' i m p o r t ' ) ( bkg_e , ROOT . RooCmdArg ( ) )
g e t a t t r ( ws , ' i m p o r t ' ) ( bkg_a2 , ROOT . RooCmdArg ( ) )
g e t a t t r ( ws , ' i m p o r t ' ) ( bkg_b2 , ROOT . RooCmdArg ( ) )
g e t a t t r ( ws , ' i m p o r t ' ) ( bkg_c2 , ROOT . RooCmdArg ( ) )
g e t a t t r ( ws , ' i m p o r t ' ) ( bkg_e2 , ROOT . RooCmdArg ( ) )
# background s y s t e m a t i c s
bkg_syst_a = RooRealVar ( ' b k g _ s y s t _ a ' , ' b k g _ s y s t _ a ' , 1 . 0 )
bkg_syst_b = RooRealVar ( ' b k g _ s y s t _ b ' , ' b k g _ s y s t _ b ' , 0 . 0 )
#b k g _ s y s t _ b = R o o R e a l V a r ( ' b k g _ s y s t _ b ' , ' b k g _ s y s t _ b ' , − 0 . 0 0 0 1 6 6 6 6 6 6 6 6 6 6 )
bkg_syst_a . setConstant ( )
bkg_syst_b . setConstant ( )
g e t a t t r ( ws , ' i m p o r t ' ) ( bkg_syst_a , ROOT . RooCmdArg ( ) )
g e t a t t r ( ws , ' i m p o r t ' ) ( bkg_syst_b , ROOT . RooCmdArg ( ) )
# background shape
i f useSh apeUncer t :
b kg Pa ra m sU nc er t = p r o v i d e U n c e r t a i n t i e s ( 1 0 0 0 ) [ " bkgParams " ]

8

Contents

3 Usage
f o r uncert i n b kg Pa ra m sU nc er t :
a d d B k g U n c e r t P r i o r ( ws , uncert , " dimuon_Moriond2017_BB " , ←b kg Pa ra ms U nc er t [ uncert ] )
ws . factory ( " ZPrimeMuonBkgPdf2 : : bkgpdf_dimuon_Moriond2017_BB ( ←mass_dimuon_Moriond2017_BB , ←bkg_a_dimuon_Moriond2017_BB_forUse , ←bkg_b_dimuon_Moriond2017_BB_forUse , ←bkg_c_dimuon_Moriond2017_BB_forUse , ←bkg_d_dimuon_Moriond2017_BB_forUse , ←bkg_e_dimuon_Moriond2017_BB_forUse , ←bkg_a2_dimuon_Moriond2017_BB_forUse , ←bkg_b2_dimuon_Moriond2017_BB_forUse , ←bkg_c2_dimuon_Moriond2017_BB_forUse , ←bkg_e2_dimuon_Moriond2017_BB_forUse , bkg_syst_a , b k g _ s y s t _ b ) " )
ws . factory ( " ZPrimeMuonBkgPdf2 : : b k g p d f _ f u l l R a n g e ( m a s s F u l l R a n g e , ←bkg_a_dimuon_Moriond2017_BB_forUse , ←bkg_b_dimuon_Moriond2017_BB_forUse , ←bkg_c_dimuon_Moriond2017_BB_forUse , ←bkg_d_dimuon_Moriond2017_BB_forUse , ←bkg_e_dimuon_Moriond2017_BB_forUse , ←bkg_a2_dimuon_Moriond2017_BB_forUse , ←bkg_b2_dimuon_Moriond2017_BB_forUse , ←bkg_c2_dimuon_Moriond2017_BB_forUse , ←bkg_e2_dimuon_Moriond2017_BB , bkg_syst_a , b k g _ s y s t _ b ) " )
else :

ws . factory ( " ZPrimeMuonBkgPdf2 : : bkgpdf_dimuon_Moriond2017_BB ( ←mass_dimuon_Moriond2017_BB , bkg_a_dimuon_Moriond2017_BB , ←bkg_b_dimuon_Moriond2017_BB , bkg_c_dimuon_Moriond2017_BB , ←bkg_d_dimuon_Moriond2017_BB , bkg_e_dimuon_Moriond2017_BB , ←bkg_a2_dimuon_Moriond2017_BB , bkg_b2_dimuon_Moriond2017_BB , ←bkg_c2_dimuon_Moriond2017_BB , bkg_e2_dimuon_Moriond2017_BB , ←bkg_syst_a , b k g _ s y s t _ b ) " )
ws . factory ( " ZPrimeMuonBkgPdf2 : : b k g p d f _ f u l l R a n g e ( m a s s F u l l R a n g e , ←bkg_a_dimuon_Moriond2017_BB , bkg_b_dimuon_Moriond2017_BB , ←bkg_c_dimuon_Moriond2017_BB , bkg_d_dimuon_Moriond2017_BB , ←bkg_e_dimuon_Moriond2017_BB , bkg_a2_dimuon_Moriond2017_BB , ←bkg_b2_dimuon_Moriond2017_BB , bkg_c2_dimuon_Moriond2017_BB , ←bkg_e2_dimuon_Moriond2017_BB , bkg_syst_a , b k g _ s y s t _ b ) " )
r e t u r n ws
# p r o v i d e s t o b a c k g r o u n d s h a p e s , one i n t h e mass window f o r t h e t e s t e d r e s o n a n c e ←mass , t h e o t h e r f o r t h e f u l l mass r a n g e . l o g −n o r m a l p r i o r s can be added t o ←the shape parameters i f d e s i r e d

For each channel of the analysis (i.e. for each subcategory of the dielectron and dimuon
channels), one such config has to be provided. The other input to the tool is located in the
cfgs/ directory. Here, the scanConguration_ConfigName.py files contain all information
needed to steer the actual interpretation, setting the channels to be considered, the mass range
to be scanned, and similar features. Given here is the example for the combination of all four
subcategories for the 2016 result.
leptons = " elmu " # d i l e p t o n c o m b i n a t i o n , can a l s o be e l e l o r mumu
systematics = [ " s i g E f f " , " b k g U n c e r t " , " m a s s S c a l e " , ' r e s ' , " bkgParams " ] # l i s t o f ←s y s t e m a t i c u n c e r t a i n t i e s t o be c o n s i d e r e d
correlate = False #s h o u l d u n c e r t a i n t i e s be t r e a t e d a s c o r r e l a t e d b e t w e e n c h a n n e l s ←?
masses = [ [ 5 , 2 0 0 , 1 0 0 0 ] , [ 1 0 , 1 0 0 0 , 2 0 0 0 ] , [ 2 0 , 2 0 0 0 , 5 5 0 0 ] ] #mass s c a n p a r a m e t e r s f o r ←o b s e r v e d l i m i t s /p−V a l u e s c a n s
massesExp = [ [ 1 0 0 , 2 0 0 , 6 0 0 , 5 0 0 , 4 , 5 0 0 0 0 0 ] , [ 1 0 0 , 6 0 0 , 1 0 0 0 , 2 5 0 , 8 , 5 0 0 0 0 0 ] , ←[ 2 5 0 , 1 0 0 0 , 2 0 0 0 , 1 0 0 , 2 0 , 5 0 0 0 0 ] , [ 2 5 0 , 2 0 0 0 , 5 6 0 0 , 1 0 0 , 2 0 , 5 0 0 0 0 0 ] ] #mass s c a n ←parameters for expected l i m i t s

9

Contents

3 Usage

libraries = [ " ZPrimeMuonBkgPdf2_cxx . s o " , " Z P r i m e E l e B k g P d f 3 _ c x x . s o " , " PowFunc_cxx . s o ←" , " R o o C r u i j f f _ c x x . s o " ] # l i b r a r i e s t o be added t o t h e combine c a l l
channels = [ " d i e l e c t r o n _ M o r i o n d 2 0 1 7 _ E B E B " , " d i e l e c t r o n _ M o r i o n d 2 0 1 7 _ E B E E " , "←dimuon_Moriond2017_BB " , " dimuon_Moriond2017_BE " ] # l i s t o f c h a n n e l s t o be ←considered
#Markov C h a i n p a r a m e t e r s
numInt = 500000
numToys = 6
exptToys = 1000
width = 0 . 0 0 6 #s i g n a l w i d t h ( h e r e 0.6%)
submitTo = "FNAL" #c o m p u t i n g r e s o u r c e s u s e d f o r b a t c h j o b s . R i g h t now Purdue and ←t h e LPC Condor c l u s t e r a r e s u p p o r t e d
LPCUsername = " j s c h u l t e " # u s e r n a m e a t LPC , n e c e s s a r y t o r u n CONDOR j o b s t h e r e
binWidth = 10 #b i n w i d t h f o r b i n n e d l i m i t s
CB = True # u s e non−G a u s s i a n s i g n a l r e s o l u t i o n s h a p e . Does n o t n e c e s s a r i l y h a v e ←t o CB anymore
s ig na lI n je ct io n = { " mass " : 7 5 0 , " w i d t h " : 0 . 1 0 0 0 , " n E v e n t s " : 0 , "CB" : True }#p a r a m e t e r s ←f o r t o y g e n e r a t i o n f o r MC s t u d i e s

Using this input, the framework will create first the datacards for the single channels and
afterwards combined datacards. For local running, this can be triggered by running with the
-w or -r options. In the first case, the datacards are produced and the program is exited
without performing any statistical procedures. In the latter case, the datacards are reproduced
on the fly before performing statistical interpretations. If a local batch system is used, the input
will be created inside the individual jobs to increase performance. When tasks are submitted
to CRAB, the input is created locally.

3.2 Running statistical procedures
If not called with the -w option (which will only write datacards, see above), the default
behaviour of runInterpretation.py is to calculate observed limits using the Bayesian approach. For this, the mass binning and the configuration of the algorithm given in the scan
configuration is given. There are numerous command line options to modify the statistical
methods used
• -e switches the limit calculation to expected limits
• --signif switches to calculation of p-Values using an approximate formula. For full
calculation with the ProfileLikelihoodCalculator, use this option in conjuction with --plc
• --frequentist uses frequentist calculations for limits or p-Values
• --hybrid uses Frequentist-Bayesian Hybrid method for the p-Values
Apart from these fundamental options, there are several further modifications that can be
made

3.2.1 Binned limits
The --binned option triggers the use of binned instead of unbinned datasets. For this purpose, binned templates are generated from the background and signal PDFs. The binning is

10

Contents

3 Usage

hardcoded within the createInputs.py script. The advantage of this approach is a large
improvement in speed, the disadvantage is a very long time needed to generate the templates
in the first place.

3.2.2 Single mass/Λ points
To run a single mass (or Λ in case of CI) point instead of the full scan, the option -m mass
(-L Lambda) can be used.

3.2.3 Spin-2 limits
If run with the --spin2 option, the signal efficiency for spin-2 resonances will be used

3.2.4 Bias study
If run with the --bias option, a bias study will be performed. Two sets of toy datasets are
generated based on the datacards, with signal strength µ = 0 and µ = 1. These datasets are
then fit with the background + signal model and the fitted µ̂ is recorded. These fit results
can then be used to determine if there are biases in the modelling, as we expected the average
< µ̂ > to be 0 and 1, respectively.

3.2.5 Signal injection and Look Elsewhere Effect
For performance studies, pseudo-data can be generated in which the statistical interpretation
is then performed. When run with the --inject option, pseudo background and signal events
are generated according to the respective PDFs. The background is normalized to the yield
observed in data in each channel, but can be scaled to a desired luminosity. The signal
parameters used for the injection are taken from the scan configuration. The signal events
are distributed between the sub-channels according to the signal efficiencies. The default
behaviour is that a toy dataset for a given configuration is not over-written if the program is
rerun, so that the same toy dataset can be processed with the same configuration. The option
--recreateToys can be used to force the dataset to be overwritten.
To account for the look elsewhere effect, the --LEE option can be used. Many background only
datasets will be generated and p-Value scans will be performed. The tool readPValueToys.py
can be used to harvest the large number of resulting result cards.

3.2.6 Contact Interaction limits
So far most options discussed were mostly focused on the statistical analysis for the resonant
analysis. To switch the program to perform the analysis for the CI signal, the option --CI can
be used. This will by default run the multibin shape analysis for constructive interference. With

11

Contents

3 Usage

the option --singlebin, it can be switched to single bin counting about a certain threshold.
The threshold has to be chosen with the -m option.
Setting limits not on the signal cross section but on the CI scale Λ will be possible with the
--usePhysicsModel option, combined with the --Lower option to convert the limits from
upper into lower limits (not supported in combine for MarkovChainMC calculation). This is
still under development at this stage.

3.2.7 Job submission
As the calculations used for the statistical interpretations, parallelization is unavoidable. The
framework supports two options for it, submission to local batch systems and CRAB. The
-s option triggers submission to batch system. At the moment, only the Purdue system is
supported. However, the job configurations can be easily used for any qsub system and should
be adaptable to others system as well.
Less specific and giving access to much more computing resources is submission via crab.
At the moment, only expected and observed Bayesian limits are supported. On the upside,
submission is very easy, just run the tool with the --crab option. A valid GRID certificate is
required.

3.3 Output processing
The output of the combine tool are root files which contain the resulting limit or p-Value
as entries in a ROOT tree. The script createLimitCard.py is available to convert these
files into simple ascii files. This tool takes a variety of arguments, very similar to the main
runInterpretation.py script:
optional arguments:
-h, --help
show this help message and exit
-c CONFIG, --config CONFIG
configuration name (default: )
--input INPUT
folder with input root files (default: )
-t TAG, --tag TAG
tag (default: )
--exp
write expected limits (default: False)
--signif
write pValues (default: False)
--injected
injected (default: False)
--binned
binned (default: False)
--frequentist
use results from frequentist limits (default: False)
--hybrid
use results from hybrid significance calculations
(default: False)
--merge
merge expected limits first (default: False)
--CI
is CI (default: False)

12

Contents

3 Usage

Basically you have to match up the configuration to the one used to create the output. Then
you have the choice of either providing the location of the output to be processed with the
--input option or leave the tool to figure it out for itself. In the latter case, if will take the
newest result produced on a local batch system matching the configuration.
Results produced via CRAB have to be downloaded from the respective resource, with the
script harvestCRABResults.py, which will download and properly rename/merge the files so
they can be used with the createLimitCard.py script

optional arguments:
-h, --help
show this help message and exit
-c CONFIG, --config CONFIG
configuration name (default: )
-t TAG, --tag TAG
tag (default: )
-u USER, --user USER name of the user running the script (default: )
--obs
renamae obeserved limits (default: False)
--merge
merge expected limits (default: False)

The plot scripst makeLimitPlot.py, makeLimitPlotWidths.py, makeLimitPlotCI.py,
makeRLimitPlotCI.py, and makePValuePlot.py can be used to create plots from the ascii
files previously created.

13



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.5
Linearized                      : No
Page Count                      : 13
Page Mode                       : UseOutlines
Author                          : 
Title                           : 
Subject                         : 
Creator                         : LaTeX with hyperref package
Producer                        : pdfTeX-1.40.14
Create Date                     : 2018:07:20 11:06:44-04:00
Modify Date                     : 2018:07:20 11:06:44-04:00
Trapped                         : False
PTEX Fullbanner                 : This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013/Debian) kpathsea version 6.1.1
EXIF Metadata provided by EXIF.tools

Navigation menu