Les Houches
2023 Session
-
- Use of wiki pages and slack. Wifi access/set-up.
- Important info about bus, lodging, facilities.
- Bulletins.
Wikis of Previous sessions
Les Houches Themes
(Lyrics and Music)
(Lyrics and Music)
This is an old revision of the document!
People: S. Sekmen, H. Prosper, G. Unel, B. Fuks, J. Tattersall, D. Schmeier, C. Pollard, S. Kraml, S. Kulkarni, D. Morse, D. Majumder, N. Desai, D. Sengupta. N. De Filippis, J. Sonneveld … etc. (add your name if interested)
Goal: Prepare an SLHA-like easy to read and write accord for describing the flow of an LHC analysis.
First proposal made for a generic structure. CM and MA authors will try to implement a single lepton stop search.
Proposal by Daniel Schmeier & Jamie Tattersall
# These are the input objects for the analysis code.
# Syntax:
# name type (see below)
# A well formulated comment behind each object should unambiguously state what this object is
# such that a _human_ knows what this object corresponds in his/her code
BLOCK ANALYSISINPUT
jets l<jet> # pt>20.anti-kt, R=0.4. Contains information about btags with effs (60%,70%,80%),
elecs l<el> # Contains information about isolation to easily evaluate it later
muons l<mu> # see elecs
etmiss v # https://twiki.cern.ch/twiki/bin/view/XXPublic/LHA/Definitions/ETMiss
# All functions that have to be used later must be defined here
# Syntax: Function_name input_type_1 input_type_2 input_type_3 ... output_type
# Rules:
# - input_types and output_type can be
# - 's' for scalars/numbers,
# - 'v' for LorentzVectors,
# - 'b' for booleans
# - 'c' for characters/strings
# - any of the objects defined in the 'object' block
# - l<type> to denote a list of objects of common type <type>.
# - People are strongly encouraged to comment with a link to a resource where the exact definition
# of that function can be found, in text definiton and maybe a working example in a programming language of choice
# - 2 functions can have the same name if they have different input types
BLOCK ANALYSISFUNCTIONS
mT v v s # https://twiki.cern.ch/twiki/bin/view/XXPublic/LHA/Definitions/m_T
amT2 v v s # https://twiki.cern.ch/twiki/bin/view/XXPublic/LHA/Definitions/am_T2
mT2tau v v s # https://twiki.cern.ch/twiki/bin/view/XXPublic/LHA/Definitions/m_T2_tau
mHadTop ? ? ? # https://twiki.cern.ch/twiki/bin/view/XXPublic/LHA/Definitions/m_had_top
HTMissSig ? ? ? # https://twiki.cern.ch/twiki/bin/view/XXPublic/LHA/Definitions/HTmisssig
# s denotes the working point efficiency
filter_no_bjets l<jet> s l<jet> # https://twiki.cern.ch/twiki/bin/view/XXPublic/BJetDefinitionSource
filter_bjets l<jet> s l<jet> # https://twiki.cern.ch/twiki/bin/view/XXPublic/BJetDefinitionSource
filter_taujets l<jet> s l<jet> # https://twiki.cern.ch/twiki/bin/view/XXPublic/TauJetDefinitionSource
filter_medium_elec l<elec> l<elec> # https://twiki.cern.ch/twiki/bin/view/XXPublic/ElectronIDSource
filter_tight_elec l<elec> l<elec> # https://twiki.cern.ch/twiki/bin/view/XXPublic/ElectronIDSource
# input whichsource dr cut_pt maxval output
filter_iso_abs l<el> s s s s l<el> # https://twiki.cern.ch/twiki/bin/view/XXPublic/Definitions/Isolation
filter_iso_rel l<el> s s s s l<el> # https://twiki.cern.ch/twiki/bin/view/XXPublic/Definitions/Isolation
filter_iso_abs l<mu> s s s s l<mu> # https://twiki.cern.ch/twiki/bin/view/XXPublic/Definitions/Isolation
filter_iso_rel l<mu> s s s s l<mu> # https://twiki.cern.ch/twiki/bin/view/XXPublic/Definitions/Isolation
trigger l<el> l<mu> l<jet> v # https://twiki.cern.ch/twiki/bin/view/XXPublic/Definitions/SingleLepTrigger + EtMissTrigger
dataquality l<jet> v # Tuned to a constant efficiency of 99.7%, see here: https://twiki.cern.ch/twiki/bin/view/XXPublic/EventCleaning/
# These functions are like normal functions, but as these are always needed one might find a
# way to globally use them without continuously redefining them
sum s s s
diff s s s
prod s s s
quot s s s
pow s s s
random s
overlap_removal l<v> l<v> s v
delta_phi v v s
delta_r v v s
cut_pt l<v> s l<v>
cut_eta l<v> s s l<v>
combine l<v> l<v> l<v>
take_leading_n l<v> s l<v>
# The Preselection block only trims existing objects or define new objects by applying functions on existing ones.
# Syntax: new_object function parameter1 parameter2 ...
# Rules:
# - each function must be defined in the function block
# - parameters must match the parameter type definition in the function block
# - parameters must be numbers, strings, objects that have been defined in previous lines or in the 'object' block
# - Every TLorentzVector function "Double_t Fun() const" can be accessed by v.fun (eg. v.m, v.pt, v.px, v.costheta
#
# - With vectors one can do
# vectors.n returns size
# vectors.3 returns the third(!) object in the list
# vectors.8 returns a zero object if vectors contains less than 8 entries
# - Cut-Logic should make sure that the last rule does not produce rubbish (see mT example)
# - objects and functions can have the same name as the syntax does clearly distinguish between the two
BLOCK ANALYSISPRESELECTION
# Kinematic Cuts on the loose baseline and the signal objects
jets cut_pt jets 20
jets cut_eta jets -2.5 2.5
elecs_l cut_pt elecs 7
elecs_l cut_eta elecs_l -2.47 2.47
elecs_m filter_elecs_m elecs_l
elecs_m cut_pt elecs_m 10
muons_l cut_pt muons 6
muons_l cut_eta muons -2.4 2.4
muons_m cut_pt muons 10
# overlap removals between bjets, nonbjets and leptons
nob_jets filter_no_bjets jets 70
b_jets filter_bjets jets 70
no_bjets overlap_removal no_bjets elecs_m 0.2
elecs_m overlap_removal elecs_m no_bjets 0.4
elecs_m overlap_removal elecs_m bjets 0.2
muons_m overlap_removal muons_m jets 0.4
tau_jets_l filter_taujets "loose" jets
tau_jets filter_taujets "tight" jets
tau_jets overlap_removal elec_loose 0.2
# choose signal leptons which have to pass isolation conditions
elecs_t cut_pt elecs_m 25
elecs_t filter_tight_elec elecs_t
elecs_t filter_iso_rel "tracks" 0.2 0.5 0.1
mus_mm filter_iso_abs "tracks" 0.2 0.5 1.8
# combine electrons and muons to leptons
leptons_l combine muons_l muons_l
leptons_l cut_pt leptons_l 10
leptons combine elecs_t muons_m
leptons cut_pt leptons 25
# find the leading 4 jets
leading_jets take_leading_n jets 4
leading_bjets filter_bjets leading_jets 70
# Calculate some advanced kinematical quantities
HT sum jets.1.pt jets.2.pt
HT sum HT jets.3.pt
HT sum HT jets.4.pt
sqrtHT sqrt HT
EtoverHT quot etmiss.pt sqrtHT
dPhi_j1_miss dPhi jets.1 etmiss
dPhi_j2_miss dPhi jets.2 etmiss
mT mT etmiss leptons.1
amT2 amT2 ? ?
mHadTop mHadTop ? ?
mT2Tau mT2Tau ? ?
HTMissSig HTMissSig ? ?
# Find overall efficiency for event
trigeff trigger elecs_l muons_l jets etmiss
cleaningeff dataquality elecs_l muons_l jets etmiss
eventeff prod trigeff cleaningeff
trigrand random
....
# CUT blocks contain combinations of boolean statements
# Syntax:
# Variable operator Value
# Rules:
# - operator: <, <=, =, >, >=, !=
# - allowed Variables are:
# - input objects
# - everything defined in the preselection block
# - a preceeding CUT can be condidered as a Boolean
# - functions cannot be used here. If the result of a function is needed, it must be evaluated in the preselection block
# - there can be more than one condition in one CUT. Obviously this means that all conditions have to be fulfilled
CUT common
leptons.n = 1
leptons_l.n = 1
jets.n >= 4
etmiss.pt > 100
CUT leadjets_60to25
jets.1.pt > 60
jets.2.pt > 60
jets.3.pt > 40
jets.4.pt > 25
CUT leadjets_80to25
jets.1.pt > 80
jets.2.pt > 60
jets.3.pt > 40
jets.4.pt > 25
CUT leadjets_100to25
jets.1.pt > 100
jets.2.pt > 80
jets.3.pt > 40
jets.4.pt > 25
CUT large-R-jet
fat_jets.n >= 1
fat_jets.1.m > 75
CUT dPhi12
fat_jets.n >= 2
dPhi_j1_miss > 0.8
dPhi_j2_miss > 0.8
CUT tN_diag
common = True
leadjets_60to25 = True
leading_bjets.n >= 1
mT > 100
mHadTop > 130
mHadTop < 205
taujets.n = 0
dRbl < 2.5
EtoverHT > 5
dPhi12 = True
CUT tN_med
common = True
leadjets_80to25 = True
leading_bjets.n >= 1
etmiss.pt > 200
mT > 140
amT2 > 170
mHadTop > 130
mHadTop < 195
HTMissSig > 12.5
dPhi12 = True
CUT tN_high
common = True
leadjets_80to25 = True
leading_bjets.n >= 1
etmiss.pt > 320
mT > 200
amT2 > 170
mT2tau > 120
mHadTop > 130
mHadTop < 250
dRbl < 3.0
HtMissSig > 12.5
# Cuts are interpreted as "remove event if it fails this". However, some conditions might just
# apply a weight to the event. These can be stated in the following block
# Syntax:
# Cut weight
# Rules:
# - Cut must correspond to a CUT block
# - weight must be a scalar, can be a variable though
BLOCK WEIGHTS
common eventeff
# BINNING blocks simplify exclusive bin-cuts and easily identify orthogonal regios
# Syntax:
# BINNING (somename)
# Cut (name of cut after which binning is applied)
# Parameter (parameter to bin)
# New-Cutname1 bin1_min bin1_max
# New-Cutname2 bin2_min bin2_max
# ...
# Rules:
# - Cut and Parameter must be valid, see above
# - New-Cutname1 is a new Cut just like it was defined via a "CUT " block
# - -inf and inf for "everything less/more than"
# - Bins don't have to be orthogonal. Still it is easy to automatically check orthogonality a posteriori
BINNING tN_diag_mT
Cut tN_diag
Parameter mT
tN_diag_g100 100 125
tN_diag_g120 125 150
tN_diag_g150 150 inf
BINNING tN_diag_Etmiss1
Cut tN_diag_g100
Parameter mT
tN_diag_g100_g60 60 90
tN_diag_g100_g90 90 120
tN_diag_g100_g120 120 150
tN_diag_g100_g140 150 inf
BINNING tN_diag_Etmiss2
Cut tN_diag_g125
Parameter mT
tN_diag_g125_g60 60 90
tN_diag_g125_g90 90 120
tN_diag_g125_g120 120 150
tN_diag_g125_g140 150 inf
BINNING tN_diag_Etmiss3
Cut tN_diag_g150
Parameter mT
tN_diag_g150_g60 60 90
tN_diag_g150_g90 90 120
tN_diag_g150_g120 120 150
tN_diag_g150_g140 150 inf
# Experimental Results are written in the following block
# Syntax:
# SRname Obs Bkg Bkgerr1 Bkgerr2 Bkgerr3 ...
# Rules:
# Each SRname must correspond to a cut from above
BLOCK ExpResults:
tN_diag_g100_g60 3452 3452 59
tN_diag_g100_g90 1712 1720 161
tN_diag_g100_g120 313 295 50
tN_diag_g100_g140 201 235 34
tN_diag_g125_g60 2018 2018 45
tN_diag_g125_g90 768 767 80
tN_diag_g125_g120 117 136 22
tN_diag_g125_g140 163 152 30
tN_diag_g150_g60 2543 2543 50
tN_diag_g150_g90 647 684 79
tN_diag_g150_g120 98 13 101
tN_diag_g150_g140 217 236 29
tN_med 12 13.0 2.2
tN_high 5 5.0 1.0
# Cutflows show events after consecutive evaluation of conditions
# Syntax:
# Parameter Operator Value EventsAfterCut1 Uncertainty "Description in LateX Format"
# Rules:
# - Parameter operator Value combinations: See above
# - Cuts are applied one after another
# -
CUT mHadTopRange
mHadTop > 130
mHadTop < 205
CUTFLOW tN_diag_echannel
# Simplified Model, X -> Y Z
# m_X = ...
# m_Y = ...
# m_Z = ...
# HepData entry: http://hep.data/link/123
True = True 200000 0 "Initial Events"
trigrand < trigeff 113762 ? "Trigger"
leptons_l.n = 1 28785 ? "Lepton (exactly 1 baseline)"
leptons.n = 1 19875 ? "Lepton (exactly 1 signal)"
jets.n >= 3 17959 ? "At least 3 jets $\geq$ 25 GeV"
jets.n >= 4 13682 ? "At least 4 jets $\geq$ 25 GeV"
jets.1.pt >= 60 12804 ? "jet1pt $\geq$ 60"
jets.2.pt >= 60 9489 ? "jet2pt $\geq$ 60"
jets.3.pt >= 40 8556 ? "jet3pt $\geq$ 40"
leading_bjets.n >= 1 7192 ? "btag(70) >= 1"
dPhi_j1_miss >= 0.8 6611 ? "dPhi(jet1, etmiss) >= 0.8"
dPhi_j1_miss >= 0.8 5147 ? "dPhi(jet2, etmiss) >= 0.8"
etmiss.pt >= 150 1314 ? "Etmiss >= 150"
EtoverHT >= 5 1314 ? "Etmiss/sqrtHT >= 5"
mT >= 140 446 ? "mT >= 140 GeV"
mHadTopRange = True 283 ? "mHadTop in 130, 205"
taujets_l.n = 0 257 ? "veto on loose Taus"