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 18:54] nishita.desai [Open Questions/Comments] |
2015:groups:tools:lhaad:proposal [2015/07/06 12:27] (current) daniel.schmeier |
||
---|---|---|---|
Line 3: | Line 3: | ||
====== 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. I am not sure we should do this. However, at the moment I don't have a better proposal. | + | * 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? | ||
- | * '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). | + | * 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'? | ||
- | * 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: 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'. |
- | * 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. | + | * 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') | ||
- | * 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. | + | * 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. | - D: Is it possible to use '|' instead of .OR.? the dot to me always refers to a member of a class. | ||
- | * I don't see why not (or even a c-like || which is easier for a human to read than a single |). | + | * N: I don't see why not (or even a c-like || which is easier for a human to read than a single |). |
Line 53: | 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 183: | 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> |