User Tools

Site Tools


Sidebar

2015:groups:tools:lhaad:proposalgrenoble

This is the proposal from the LHADA Meeting in Grenoble at the end of February 2016. It is based on the “latest” combined proposal.

Here are some things which were discussed during the meeting and which should be considered when updating the proposal

  1. Binning does not need to be a separate block but can be done at the end of a “cut” block
  2. “Select” and “Reject” from MadAnalysis5 syntax, as they have a working parser framework
  3. “weight” keyword necessary, which reweights an event which has to pass that certain histograms at the end of a cutblock, either in form NBins:Min:Max or Bin1;Bin2;Bin3;…;Bin
  4. function calls as in Python-kwargs: isolation(source=tracks,ptmin=10,dR=0.5) to make it easier to read
  5. analysis and results clearly separated, i.e. not put result numbers in cut blocks
  6. rename “detectorobj”
  7. detectobj needs a “change” keyword which can smear objects, not jet select/reject them.
  8. some functions need booleans to be deactivatable, because depending on being phenomenologist or experimentalist, or depending on if one uses Delphes, Rivet, FullSim,… functions might be necessary or not (e.g. smearing functions)

General Structure

The idea is to write a plain text file that can be read easily into xml if needed (and hence universally readable). The name of the block becomes the xml tag. Anything that follows is turned into attributes. e.g. “name ATLAS” inside the block becomes <experiment name=“ATLAS”>. Anything inside the block starting with “#” is added as a comment, i.e. the block

info analysis
  # Details about experiment 
  id ATLAS-2014-XXX
  publication JHEP11(2014)118
  sqrtS 8.0
  lumi 20.0

converts to

<info name="analysis" id="ATLAS-2014-XXX" publication="JHEP11(2014)118" sqrtS="8.0" lumi="20.0" description="Details about analysis">

There are five types of pre-defined blocks:

  1. objects (defines reconstructed objects)
  2. function (defines functions that act on these)
  3. cut (blocks of cuts)
  4. info (for meta information chosen by the implementer, e.g. information about publication, conf-notes, theory papers used for interpretation, benchmarks, etc.)

For presenting results, we need two more blocks, e.g.

  1. results (for expected, observed, S95, etc.)
  2. cutflow (for cutflows)
  3. table (for providing digitised histograms etc.)

For any block, a link to code or external documentation can be provided. We can also include a MCsamples block to document the programs used to generate signal and background samples.

info

info analysis
  # Details about experiment 
  id SUSY-2013-15
  publication JHEP11(2014)118
  sqrtS 8.0
  lumi 20.0
  arXiv 1407.0583
  hepdata https://atlas.web.cern.ch/Atlas/GROUPS/PHYSICS/PAPERS/SUSY-2013-15/
info units
  ### Details about units for dimensionful quantities
  energy GeV
  length mm
  xsec pb
  # If using function repository, need to clarify if phi is between 0-2pi or -pi to pi.

function

ALTERNATIVE 1
function function_name
  arg1 type-of-arg1:name-of-arg1
  arg2 type-of-arg2:name-of-arg2
  return type-of-returnvalue
  code link-to-actual-code
  doc link-to-documentation

ALTERNATIVE 2

function function_name
  arg1 name-of-arg1
  arg2 name-of-arg2
  code link-to-actual-code
  doc link-to-documentation

Rules:

  • allowed keywords: argX, code, doc
  • argX must count from arg1 upward
  • all values of the argX- commands must differ
  • it is recommended to follow with a comment about its meaning after each argument
  • If typed,allowed types: int, float, string, bool, detectorobj, tlorentzvector, X-list (X is any of the allowed types)
  • for type 'detectorobj' it should be clear from the documentation which information the detectorobj needs to have

Example:

ALTERNATIVE 1
function isolation
  ### Sums up activity in the vicinity of a given candidate
  arg1       detectorobj:candidate # a single electron, muon or photon
  arg2       string:isosource      # "calo", "tracks", "eflow"
  arg3       float:dR              # dR cone to be probed
  arg4       float:ptmin           # minpt of objects to be counted
  arg5       bool:relIso           # divide by candidate's pt?
  returnType float # sum of pT of the respective surrounding objects
  code http://google.de
  doc http://google.de
 
ALTERNATIVE 2
function isolation
  ### Sums up activity in the vicinity of a given candidate
  arg1 cand # a single electron, muon or photon
  arg2 src      # "calo", "tracks", "eflow"
  arg3 dR       # dR cone to be probed
  arg4 ptmin       # minpt of objects to be counted
  arg5 relIso        # divide by candidate's pt?
  code http://google.de
  doc http://google.de
 
function overlap
  ### Checks if the candidate overlaps with any object of the list provided
  arg1 detectorobj      # to be tested candidate
  arg2 detectorobj-list # to be tested potential neighbours
  arg3 float            # dR cone to be probed
  return bool           # true if any of the neighbours is closer than dR to the candidate
  code http://overlap.de
  doc http://overlap.de
 
function hasMediumTag
  ### Checks if the candidate overlaps with any object of the list provided
  arg1 detectorobj      # electron
  return bool           # true if it is tagged as medium
  code http://electrons.de/medium
  code http://electrons.de/medium

detectorobj

Rules:

  • Each detectorobj must start with the keyword “take X”. X can either be a detectorobj-list X defined before or 'external'. In that case, the list is a fundamental object to be defined globally.
  • select or reject keywords can filter out specific candidates out of the input list: They have to be followed by a Boolean expression, in which a single candidate of the given detectorobj list can be tested via name.? (see examples)
  • functions can access previously defined detectorobj-lists by their name, but not the current detectorobj-list itself
  • additional optional keywords can give more insightful information about commonly used parameters.

Example:

detectorobj muon_l
  ### Loose muons
  take external
  select isolation(cand=muon_l.?, src='tracks', dR=0.4, ptmin=0.5)<0.1
  code http://muons.mu
  doc http://checkmate.muons.mu
 
detectorobj elec_l
  ### loose electrons
  take external
  select isolation(cand=elec_l.?, src='tracks', dR=0.4, ptmin=0.5)<0.1
  reject overlap(cand=elec_l.?, neigb=muon_l, dR=0.4)
  code http://elecs.el
  doc http://checkmate.elecs.el
 
detectorobj elec_m 
  ### medium electrons
  take elec_l
  select hasMediumTag(cand=elec_m.?)
  code http://elecs.el/medium
  doc http://checkmate.elecs.el/medium
 
detectorobj lep 
  ### signal leptons
  # lep contains medium electrons and loose muons
  take elec_m 
  take muon_l
 
detectorobj jet
  ### clustered jets from the calorimeter cells
  take external
  algorithm anti-kt
  R 0.4
  ptmin 20
  etamax 2.5
  code http://jets.jet
  doc http://checkmate.jets.de

cut

Rules:

  • a cut block processes a list of conditions from top to bottom:
    • 'select <bool>' only lets events pass for which the boolean expression holds true
    • 'reject <bool>' only lets events pass for which the boolean expression holds false
  • eff?
  • trigger?
  • .OR.?
  • allowed brackets for functions?

Example:

cut preselect
  ### Pre-selection cuts
  eff 0.95
  trigger e_trigger.OR.mu_trigger.OR.met_trigger
  select lep.1.pt>25
  reject lep.size>1
  select jet.size>2
  select met>100

binning

results

cutflow

info MCsamples
  ### All information concerning signal and background generation goes here
  signal Sherpa1.4.1 stop-pair
  background POWHEG ttbar mtop = 172.5 NLO
  table maasinfo
  doc http://singalgenerator.generate
  doc _benchmark_SLHA_
  doc _MG5_model_files_
 

table

table massinfo
   cut     pdgid      mass
   tN_diag 1000022    1    
           1000006    700

Examples

Link Issues:

  1. pt-selection, identification, overlap removal, isolation are sometimes done in alternating order. This can lead to a plethora of detector-obj.
  2. cuts can be very hard to read and even hard to parse. Maybe one could improve on that
info analysis
  # Details about experiment 
  id SUSY-2013-15
  publication JHEP11(2014)118
  sqrtS 8.0
  lumi 20.0
  arXiv 1407.0583
  hepdata https://atlas.web.cern.ch/Atlas/GROUPS/PHYSICS/PAPERS/SUSY-2013-15/
 
info units
  energy GeV
  length mm
  xsec pb
function mT
  ### transverse mass
  arg1 tlorentzvector # visible particle
  arg2 tlorentzvector # missing energy vector
  arg3 float          # mass
  return float        # transverse mass
  code http://google.de
  doc http://google.de
 
function amT2  
  ### asymmetric stransverse mass
  arg1 tlorentzvector # visible particle
  arg2 tlorentzvector # missing energy vector
  arg3 float          # mass
  return float        # asymmetric stransverse mass
  code http://google.de
  doc http://google.de
 
function mT2tau
  ### Sums up activity in the vicinity of a given candidate
  arg1 detectorobj # a single electron, muon or photon
  arg2 string      # "calo", "tracks", "eflow"
  arg3 float       # dR cone to be probed
  arg4 ptmin       # minpt of objects to be counted
  arg5 bool        # divide by candidate's pt?
  return float # sum of pT of the respective surrounding objects
  code http://google.de
  doc http://google.de
 
function mHadTop
  ### Sums up activity in the vicinity of a given candidate
  arg1 detectorobj # a single electron, muon or photon
  arg2 string      # "calo", "tracks", "eflow"
  arg3 float       # dR cone to be probed
  arg4 ptmin       # minpt of objects to be counted
  arg5 bool        # divide by candidate's pt?
  return float # sum of pT of the respective surrounding objects
  code http://google.de
  doc http://google.de
 
function HTMissSig
  ### Sums up activity in the vicinity of a given candidate
  arg1 detectorobj # a single electron, muon or photon
  arg2 string      # "calo", "tracks", "eflow"
  arg3 float       # dR cone to be probed
  arg4 ptmin       # minpt of objects to be counted
  arg5 bool        # divide by candidate's pt?
  return float # sum of pT of the respective surrounding objects
  code http://google.de
  doc http://google.de
 
function HT
  ### Sums up the scalar pt of the leading n objects in the given list
  arg1 detectorobj-list  # a list of objects
  arg2 integer           # the leading n objects of the list should be counted
  return float           # scalarHT  
 
function isBJet
  ### Checks if a given jet is tagged w.r.t to the given working point efficiency
  arg1 detectorobj # a single jet which contains btag information
  arg2 float       # the working point signal efficiency within [0, 1]
  return bool      # 'true' if tagged, else false
  code 
  doc
 
function isTauJet
  ### Checks if a given jet is tagged w.r.t to the given working point efficiency
  arg1 detectorobj # a single jet which contains btag information
  arg2 string      # the working point, "loose", "medium", "tight"
  return bool      # 'true' if tagged, else false
  code 
  doc
 
function isIdentifiedElec
  ### Checks if a given electron is tagged w.r.t a given ID
  arg1 detectorobj # a single electron which contains rec+id information
  arg2 string      # the working point, "loose", "medium", "tight"
  return bool      # 'true' if tagged, else false
  code 
  doc
 
function isIdentifiedMu
  ### Checks if a given muon is tagged w.r.t a given ID
  arg1 detectorobj # a single muon which contains rec+id information
  arg2 string      # the working point, "combined"
  return bool      # 'true' if tagged, else false
  code 
  doc
 
function isIsolated
  ### Checks surroundings of an object 
  arg1 detectorobj # electron, muon, photon
  arg2 string      # isolation test, "tracks", "calo", "eflow"
  arg3 float       # dR to object to count for isolation
  arg4 float       # ptmin of object to count for isolation
  arg5 bool        # if true, sum(pt) is divided by pt(cand)
  arg6 float       # maximum allowed value of sum(pt) or sum(pt)/pt(cand)
  return bool      # 'true' if sum(pt) < maxval, else false
  code
  doc
 
function overlaps
  ### Checks if the candidate overlaps with any object of the list provided
  arg1 detectorobj      # to be tested candidate
  arg2 detectorobj-list # to be tested potential neighbours
  arg3 float            # dR cone to be probed
  return bool           # true if any of the neighbours is closer than dR to the candidate
  code http://overlap.de
  doc http://overlap.de

Now for the detector objects

detectorobj jets
  ### clustered jets from the calorimeter cells
  take external
  algorithm anti-kt
  R 0.4
  ptmin 20
  etamax 2.5
  code http://jets.jet
  doc http://checkmate.jets.de
 
detectorobj b_jets
  ### jets with btag
  take jets
  select isBJet(b_jets.?, 70)
 
detectorobj nob_jets
  ### jets without btag
  take jets
  reject isBJet(b_jets.?, 70)
 
detectorobj tau_jets_l
  ### jets with loose tau tag
  take jets
  reject isTauJet(tau_jets_l.?, "loose")
 
detectorobj tau_jets_t
  ### jets with tight tau tag
  take tau_jets_l
  reject isTauJet(tau_jets_t.?, "tight")
 
detectorobj elecs_rec
  ### reconstructed electrons
  take external
 
detectorobj elecs_l
  ### loosely reconstructed electrons
  take elecs_rec
  select elecs_l.?.pt>7
  select elecs_l.?.eta>-2.47
  select elecs_l.?.eta<2.47
 
detectorobj elecs_m 
  ### medium electrons
  take elecs_l
  select isIdentifiedEl(elecs_m.?, "medium")
  select elecs_m.?.pt>10
  code http://elecs.el/medium
  doc http://checkmate.elecs.el/medium
 
detectorobj muons_rec
  ### reconstructed muons
  take external
 
detectorobj muons_l
  take muons_rec
  select isIdentifiedMu(muons_l.?, "loose")
  select muons_l.?.pt>6
  select muons_l.?.eta>-2.4
  select muons_l.?.eta<2.4
 
detectorobj muons_m
  take muons_l
  select isIdentifiedMu(muons_m.?, "medium")
  select muons_m.?.pt>10
 
detectorobj nob_jets_iso
  ### isolated jets
  take nob_jets
  reject overlaps(nob_jets.?, elecs_m, 0.2)
 
detectorobj elecs_t_iso
  ### isolated electrons
  take elecs_m
  reject overlaps(elecs_m.?, nob_jets, 0.4)
  reject overlaps(elecs_m.?, b_jets, 0.2)
  reject overlaps(elecs_m.?, tau_jets_t, 0.2)
  select elecs_t_iso.?.pt>25
  select isIdentifiedEl(elecs_t_iso.?, "tight")  
  select isIsolated(elecs_t_iso.?, "tracks", 0.2, 0.5, true, 0.1)
 
detectorobj muons_t_iso
  ### isolated muons
  take muons_m
  reject overlaps(muons_m.?, jets, 0.4)
  select isIsolated(muons_m.?, "tracks", 0.2, 0.5, false, 1.8)
 
detectorobj leptons_l
  ### loose leptons
  take muons_l
  take elecs_l
  select leptons_l.?.pt>10
 
detectorobj leptons
  ### signal leptons
  take elecs_t_iso
  take muons_m_iso
  select leptons.?.pt>25
 
detectorobj etmiss
  ### missing et
  take external
cut  common
  select leptons.n=1
  select leptons_l.n=1
  select jets.n>=4
  select etmiss.pt>100
 
cut dPhi12
  select etmiss.dphi(jet.1)>0.8
  select etmiss.dphi(jet.2)>0.8
 
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 leading_bjet  
  select isBJet(jets.1, 70)||isBJet(jets.2, 70)||isBJet(jets.3, 70)||isBJet(jets.4, 70) 
 
cut tN_diag
  select common
  select leadjets_60to25
  select leading_bjet
  select mT(leptons.1,etmiss)>100
  select mHadTop(?,?)>130
  select mHadTop(?,?)<205
  select tau_jets_t.n=0
  select b_jets.1.dR<2.5 ????
  select etmiss.pt/HT(jets.1,jets.2,jets.3,jets.4)>5
  select dPhi12
  bin etmiss=100;125;150;inf
  bin mT=60;90;120;140;inf
 
 
results tN_diag_results:
  columns name                 obs    bkg    dbkg
  entry   tN_diag_g100_g60   3452   3452   59
  entry   tN_diag_g100_g90   1712   1720   161    
  entry   tN_diag_g100_g120  313    295    50
  entry   tN_diag_g100_g140  201    235    34
  entry   tN_diag_g125_g60   2018   2018   45 
  entry   tN_diag_g125_g90   768    767    80
  entry   tN_diag_g125_g120  117    136    22
  entry   tN_diag_g125_g140  163    152    30
  entry   tN_diag_g150_g60   2543   2543   50  
  entry   tN_diag_g150_g90   647    684    79
  entry   tN_diag_g150_g120  98     13     101
  entry   tN_diag_g150_g140  217    236    29
 
 
 
 
CUT tN_med
  select common
  select leadjets_80to25
  select leading_bjet
  select etmiss.pt>200
  select mT>140
  select amT2>170
  select mHadTop>130
  select mHadTop<195
  select HTMissSig>12.5
  select dPhi12
 
 
CUT tN_high
  select common
  select leadjets_80to25
  select leading_bjet
  select etmiss.pt>320
  select mT>200
  select amT2>170
  select mT2tau>120
  select mHadTop>130
  select mHadTop<250
  select dRbl<3.0
  select HtMissSig>12.5
 
 
results tN_med_high_results:
  columns  name    obs  bkg   bkgerr
  entry    tN_med  12   13.0  2.2
  entry    tN_high 5    5.0   1.0
 
2015/groups/tools/lhaad/proposalgrenoble.txt · Last modified: 2016/02/26 14:26 by daniel.schmeier