From 224c54d68f3892d29639fe375a5cb1058368f2a6 Mon Sep 17 00:00:00 2001 From: Stefan Richter <stefan.richter@cern.ch> Date: Tue, 26 Mar 2019 16:02:46 +0100 Subject: [PATCH] Add (optional) top decays to PowhegControl for process ttbb The number of process parameters after this commit is quite low, there is likely to be interest to add more configurable parameters in the future (e.g. hdamp). This is to be followed up with the analysers interested in this process. --- .../python/processes/powheg/ttbb.py | 101 +----------------- 1 file changed, 3 insertions(+), 98 deletions(-) diff --git a/Generators/PowhegControl/python/processes/powheg/ttbb.py b/Generators/PowhegControl/python/processes/powheg/ttbb.py index 02f52b0a19a..4e23ecd02e6 100644 --- a/Generators/PowhegControl/python/processes/powheg/ttbb.py +++ b/Generators/PowhegControl/python/processes/powheg/ttbb.py @@ -2,14 +2,15 @@ from AthenaCommon import Logging from ..powheg_RES import PowhegRES -from ..external import ExternalMadSpin ## Get handle to Athena logging logger = Logging.logging.getLogger("PowhegControl") class ttbb(PowhegRES): - """! Default Powheg configuration for top-antitop-bottom-antibottom production. + """ + Powheg interface for top-antitop-bottom-antibottom production. + The top quarks may be left undecayed, or their decays (including spin correlations) can be generated by Powheg. Create a configurable object with all applicable Powheg options. @@ -24,9 +25,6 @@ class ttbb(PowhegRES): """ super(ttbb, self).__init__(base_directory, "ttbb", **kwargs) - # Add algorithms to the sequence - #self.add_algorithm(ExternalMadSpin(process="generate p p > t t~ b b~ [QCD]")) - # Add parameter validation functions self.validation_functions.append("validate_decays") @@ -35,98 +33,35 @@ class ttbb(PowhegRES): # Add all keywords for this process, overriding defaults if required self.add_keyword("alphas_from_lhapdf", 1) - # self.add_keyword("bornktmin") - # self.add_keyword("bornonly") - # self.add_keyword("bornsuppfact") - # self.add_keyword("bornzerodamp") - # self.add_keyword("bottomthr") - # self.add_keyword("bottomthrpdf") - # self.add_keyword("btildeborn") - # self.add_keyword("btildecoll") - # self.add_keyword("btildereal") - # self.add_keyword("btildevirt") self.add_keyword("btlscalect", 1) self.add_keyword("btlscalereal", 1) - # self.add_keyword("charmthr") - # self.add_keyword("charmthrpdf") - # self.add_keyword("check_bad_st2") self.add_keyword("clobberlhe") - # self.add_keyword("colltest") self.add_keyword("compress_lhe", 1) self.add_keyword("compress_upb", 1) - # self.add_keyword("compute_rwgt") - # self.add_keyword("doublefsr") - # self.add_keyword("evenmaxrat") self.add_keyword("facscfact", self.default_scales[0]) self.add_keyword("fastbtlbound", 1) - # self.add_keyword("fixedgrid") - # self.add_keyword("fixedscale") - # self.add_keyword("flg_debug") self.add_keyword("foldcsi", 5) self.add_keyword("foldphi", 1) self.add_keyword("foldy", 5) self.add_keyword("for_reweighting", 1) self.add_keyword("fullrwgt") self.add_keyword("fullrwgtmode") - # self.add_keyword("hdamp") - # self.add_keyword("hfact") self.add_keyword("icsimax", 1) self.add_keyword("ih1") self.add_keyword("ih2") self.add_keyword("itmx1", 2) - # self.add_keyword("itmx1btl") - # self.add_keyword("itmx1btlbrn") - # self.add_keyword("itmx1rm") self.add_keyword("itmx2", 3) - # self.add_keyword("itmx2btl") - # self.add_keyword("itmx2btlbrn") - # self.add_keyword("itmx2rm") - # self.add_keyword("iupperfsr") - # self.add_keyword("iupperisr") self.add_keyword("iymax", 1) self.add_keyword("lhans1", self.default_PDFs) self.add_keyword("lhans2", self.default_PDFs) - # self.add_keyword("lhrwgt_descr") - # self.add_keyword("lhrwgt_group_combine") - # self.add_keyword("lhrwgt_group_name") - # self.add_keyword("lhrwgt_id") - # self.add_keyword("LOevents") self.add_keyword("manyseeds", 1) - # self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds", 1000) - # self.add_keyword("minlo") - # self.add_keyword("mint_density_map") - # self.add_keyword("mintupbratlim") - # # self.add_keyword("MSbarscheme") self.add_keyword("ncall1", 40000) - # self.add_keyword("ncall1btl") - # self.add_keyword("ncall1btlbrn") - # self.add_keyword("ncall1rm") self.add_keyword("ncall2", 40000) - # self.add_keyword("ncall2btl") - # self.add_keyword("ncall2btlbrn") self.add_keyword("ncall2rm", 80000) - # self.add_keyword("ncallfrominput") - # self.add_keyword("noevents") - # self.add_keyword("nores") - # self.add_keyword("novirtual") self.add_keyword("nubound", 10000) - # self.add_keyword("olpreset") self.add_keyword("olverbose", 0) - # self.add_keyword("openloops-stability") - # self.add_keyword("openloopsreal") - # self.add_keyword("openloopsvirtual") - # # self.add_keyword("par_2gsupp") - # # self.add_keyword("par_diexp") - # # self.add_keyword("par_dijexp") self.add_keyword("parallelstage") - # self.add_keyword("pdfreweight") - # # self.add_keyword("ptsqmin") - # # self.add_keyword("ptsupp") - # # self.add_keyword("radregion") - # self.add_keyword("rand1") - # self.add_keyword("rand2") - # self.add_keyword("regridfix") self.add_keyword("renscfact", self.default_scales[1]) self.add_keyword("runningscales", 2) self.add_keyword("rwl_add") @@ -134,12 +69,6 @@ class ttbb(PowhegRES): self.add_keyword("rwl_format_rwgt") self.add_keyword("rwl_group_events") self.add_keyword("semileptonic", hidden=True) - # self.add_keyword("smartsig") - # self.add_keyword("softmismch") - # self.add_keyword("softonly") - # self.add_keyword("softtest") - # self.add_keyword("stage2init") - # self.add_keyword("storeinfo_rwgt") self.add_keyword("storemintupb", 1) self.add_keyword("tdec/bmass") self.add_keyword("tdec/cmass") @@ -155,37 +84,16 @@ class ttbb(PowhegRES): self.add_keyword("tdec/umass") self.add_keyword("tdec/wmass") self.add_keyword("tdec/wwidth") - # # self.add_keyword("testplots") - # # self.add_keyword("testsuda") - # self.add_keyword("tmass_phsp") - # self.add_keyword("tmass") self.add_keyword("topdecaymode", "t t~ > all", name="decay_mode") - # self.add_keyword("twidth") - # self.add_keyword("ubexcess_correct") - # self.add_keyword("ubsigmadetails", 0) # having this set to the global default '1' causes a crash during parallelstage 2! self.add_keyword("use-old-grid", 1) self.add_keyword("use-old-ubound", 1) - # self.add_keyword("user_reshists_sep") - # self.add_keyword("verytinypars") - # self.add_keyword("virtonly") - # self.add_keyword("whichpwhgevent") - # self.add_keyword("withbtilde") self.add_keyword("withdamp", 1) - # self.add_keyword("withnegweights") - # self.add_keyword("withremnants") - # self.add_keyword("withsubtr") - # self.add_keyword("wmass") - # self.add_keyword("wwidth") self.add_keyword("xgriditeration") self.add_keyword("xupbound", 2) - # self.add_keyword("zerowidth") - # self.add_keyword("zmass") - # self.add_keyword("zwidth") def validate_decays(self): """ Validate semileptonic and topdecaymode keywords and translate them from ATLAS input to Powheg input - Also inform MadSpin whether Powheg will perform the top decays or not """ self.expose() # convenience call to simplify syntax if self.decay_mode not in self.allowed_decay_modes: @@ -205,7 +113,4 @@ class ttbb(PowhegRES): if "semileptonic" in self.decay_mode: # Parameter semileptonic must be set to 1 to actually get semileptonic decays, because the topdecaymode=11111 also allows fully hadronic decays (with one up and one charm quark) self.parameters_by_keyword("semileptonic")[0].value = 1 - # Let MadSpin know whether tops have been decayed - if "undecayed" in self.decay_mode: - self.externals["MadSpin"].parameters_by_keyword("powheg_top_decays_enabled")[0].value = False -- GitLab