This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
2015:groups:tools:lhaad:proposal [2015/06/23 12:30] daniel.schmeier |
2015:groups:tools:lhaad:proposal [2015/07/06 12:27] (current) daniel.schmeier |
||
|---|---|---|---|
| Line 2: | Line 2: | ||
| ====== Open Questions/Comments ====== | ====== Open Questions/Comments ====== | ||
| - | - D: Maybe the overall description comment should start with '###' as in Python to distinguish from normal '#' comments which the parser should just ignore | + | - D: Maybe the overall description comment should start with '###' as in Python to distinguish from normal '#' comments which the parser should just ignore |
| + | * S: The proposal concerning '#' is a really tricky thing. How about including three single quotes like in python docstrings? or /* description*/ like in c++ | ||
| - D: See 'detectorobj' description: A 'take external' selection could clearly point out those objects which have to be defined on a fundamental level in whatever program one uses | - D: See 'detectorobj' description: A 'take external' selection could clearly point out those objects which have to be defined on a fundamental level in whatever program one uses | ||
| - D: What is the difference between 'doc' and 'code'? Can't the 'doc' contain everything, including the code? | - D: What is the difference between 'doc' and 'code'? Can't the 'doc' contain everything, including the code? | ||
| + | * N: 'doc' is a link to a human-readable document. 'code' is the name of the function/link to the function (for when they make a library of functions). | ||
| - D: What is the purpose of 'eff' in the cuts and what distinguishes a 'trigger' selection from a normal 'select'? | - D: What is the purpose of 'eff' in the cuts and what distinguishes a 'trigger' selection from a normal 'select'? | ||
| + | * N: There is no difference between 'trigger' and 'cut'. In the original version, one could have aribitrary xml tags, so I thought it'd be nice to have explicit names. Now, everything should be a 'cut'. | ||
| + | * N: The eff is an estimated efficiency for things like the trigger/b-tagging etc. provided by the experiments. We should in principle also allow inclusion of efficiency tables instead of a single number. | ||
| - D: In cuts, I again would rather use 'take' instead of 'contains': if 'B' uses the events from A, then 'A takes the events from B' (but 'B contains the events from A, as A applies more cuts') | - D: In cuts, I again would rather use 'take' instead of 'contains': if 'B' uses the events from A, then 'A takes the events from B' (but 'B contains the events from A, as A applies more cuts') | ||
| - | - D: Is it possible to use '|' instead of .OR.? the dot to me always refers to a member of a class | + | * N: Maybe 'include' instead of 'take'? The idea behind 'contains' was a generic inheritance (not just for cuts) where any block can inherit from any other. |
| - | - | + | - D: Is it possible to use '|' instead of .OR.? the dot to me always refers to a member of a class. |
| + | * N: I don't see why not (or even a c-like || which is easier for a human to read than a single |). | ||
| Line 48: | Line 53: | ||
| info analysis | info analysis | ||
| # Details about experiment | # Details about experiment | ||
| - | id ATLAS-2014-XXX | + | id SUSY-2013-15 |
| publication JHEP11(2014)118 | publication JHEP11(2014)118 | ||
| sqrtS 8.0 | sqrtS 8.0 | ||
| lumi 20.0 | lumi 20.0 | ||
| + | arXiv 1407.0583 | ||
| + | hepdata https://atlas.web.cern.ch/Atlas/GROUPS/PHYSICS/PAPERS/SUSY-2013-15/ | ||
| </code> | </code> | ||
| <code autoconf> | <code autoconf> | ||
| Line 178: | Line 185: | ||
| ==== results ===== | ==== results ===== | ||
| ==== cutflow ===== | ==== cutflow ===== | ||
| + | <code autoconf> | ||
| + | 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_ | ||
| + | </code> | ||
| ==== table ===== | ==== table ===== | ||
| - | + | <code autoconf> | |
| + | table massinfo | ||
| + | cut pdgid mass | ||
| + | tN_diag 1000022 1 | ||
| + | 1000006 700 | ||
| + | </code> | ||
| ====== Examples ====== | ====== Examples ====== | ||
| ==== ATLAS, 1 Lepton Stop Search ==== | ==== ATLAS, 1 Lepton Stop Search ==== | ||
| [[http://arxiv.org/abs/1407.0583|Link]] | [[http://arxiv.org/abs/1407.0583|Link]] | ||
| + | Issues: | ||
| + | - pt-selection, identification, overlap removal, isolation are sometimes done in alternating order. This can lead to a plethora of detector-obj. | ||
| + | - cuts can be very hard to read and even hard to parse. Maybe one could improve on that | ||
| + | <code autoconf> | ||
| + | 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 | ||
| + | </code> | ||
| + | |||
| + | <code autoconf> | ||
| + | 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 | ||
| + | </code> | ||
| + | Now for the detector objects | ||
| + | <code autoconf> | ||
| + | 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 | ||
| + | </code> | ||
| + | |||
| + | <code autoconf> | ||
| + | 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 | ||
| + | |||
| + | |||
| + | 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 | ||
| + | </code> | ||