![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
Go to the documentation of this file.
6 from .
import Herwig7Utils
as hw7Utils
9 from AthenaCommon
import Logging
10 athMsgLog = Logging.logging.getLogger(
'Herwig7Config')
16 def __init__(self, genSeq, runArgs, run_name="Herwig"):
35 self.
commands = hw7Utils.ConfigurationCommands()
41 ## =========================================
42 ## Global Pre-Commands from Herwig7Config.py
43 ## =========================================
45 ## ensure JetFinder uses AntiKt with R=0.4
46 set /Herwig/Cuts/JetFinder:Variant AntiKt
47 set /Herwig/Cuts/JetFinder:ConeRadius 0.4
61 ## Random number generator seed
62 set /Herwig/Random:Seed {}
70 ## Commands for lepton-lepton collisions
71 read snippets/EECollider.in
72 set /Herwig/Shower/PartnerFinder:QEDPartner IIandFF
73 set /Herwig/Shower/ShowerHandler:MPIHandler NULL
74 set /Herwig/DipoleShower/DipoleShowerHandler:MPIHandler NULL
75 set /Herwig/Shower/PowhegShowerHandler:MPIHandler NULL
77 elif self.
beams ==
"EP":
79 ## Commands for proton-lepton collisions
80 read snippets/EPCollider.in
81 do /Herwig/Shower/SplittingGenerator:DeleteFinalSplitting e-->e-,gamma; /Herwig/Shower/LtoLGammaSudakov
82 do /Herwig/Shower/SplittingGenerator:DeleteFinalSplitting mu-->mu-,gamma; /Herwig/Shower/LtoLGammaSudakov
83 do /Herwig/Shower/SplittingGenerator:DeleteFinalSplitting tau-->tau-,gamma; /Herwig/Shower/LtoLGammaSudakov
84 set /Herwig/Shower/KinematicsReconstructor:ReconstructionOption Colour
88 ## Commands for proton-proton collisions
89 read snippets/PPCollider.in
106 ## Center-of-mass energy
107 set /Herwig/Generators/EventGenerator:EventHandler:LuminosityFunction:Energy {}
118 ## Verbosity and printout settings
119 set /Herwig/Generators/EventGenerator:DebugLevel 1
120 set /Herwig/Generators/EventGenerator:PrintEvent 2
121 set /Herwig/Generators/EventGenerator:UseStdout Yes
122 set /Herwig/Generators/EventGenerator:NumberOfEvents 1000000000
123 set /Herwig/Generators/EventGenerator:MaxErrors 500
125 ## Make sampler print out cross sections for each subprocess
126 set /Herwig/Samplers/Sampler:Verbose Yes
139 paramlist.append(
"## Masses and widths: PDG 2019 values")
142 from EvgenProdTools.offline_dict
import parameters
143 for k,v
in parameters.items():
145 for key,value
in v.items():
147 paramlist.append(
"set /Herwig/Particles/"+value[
'name']+
"+:NominalMass "+value[
'mass'])
148 paramlist.append(
"set /Herwig/Particles/"+value[
'name']+
"+:Width "+value[
'width'])
149 paramlist.append(
"set /Herwig/Particles/"+value[
'name']+
"-:NominalMass "+value[
'mass'])
150 paramlist.append(
"set /Herwig/Particles/"+value[
'name']+
"-:Width "+value[
'width'])
152 paramlist.append(
"set /Herwig/Particles/"+value[
'name']+
"0:NominalMass "+value[
'mass'])
153 paramlist.append(
"set /Herwig/Particles/"+value[
'name']+
"0:Width "+value[
'width'])
155 paramlist.append(
"set /Herwig/Particles/"+value[
'name']+
"bar:NominalMass "+value[
'mass'])
156 paramlist.append(
"set /Herwig/Particles/"+value[
'name']+
"bar:Width "+value[
'width'])
157 paramlist.append(
"set /Herwig/Particles/"+value[
'name']+
":NominalMass "+value[
'mass'])
158 paramlist.append(
"set /Herwig/Particles/"+value[
'name']+
":Width "+value[
'width'])
161 if k ==
'EW_parameters':
162 for key,value
in v.items():
163 if key[2] ==
"Sin2ThetaW":
164 paramlist.append(
"set /Herwig/Model:EW/"+
str(key[2])+
" "+
str(value))
165 paramstring =
'\n'.
join(paramlist)
172 ## Masses and widths: PDG 2010 values (except TOP mass; kept at PDG2007)
173 set /Herwig/Particles/t:NominalMass 172.5*GeV
174 set /Herwig/Particles/tbar:NominalMass 172.5*GeV
175 set /Herwig/Particles/W+:NominalMass 80.399*GeV
176 set /Herwig/Particles/W-:NominalMass 80.399*GeV
177 set /Herwig/Particles/Z0:NominalMass 91.1876*GeV
178 set /Herwig/Particles/W+:Width 2.085*GeV
179 set /Herwig/Particles/W-:Width 2.085*GeV
180 set /Herwig/Particles/Z0:Width 2.4952*GeV
183 set /Herwig/Model:EW/Sin2ThetaW 0.23113
191 ## Disable default attempts to use Pomeron PDF data files, until we're worked how to do that on the Grid!
192 set /Herwig/Particles/pomeron:PDF /Herwig/Partons/NoPDF
194 ## Set long-lived particles stable
195 set /Herwig/Decays/DecayHandler:MaxLifeTime 10*mm
211 if order
not in [
"LO",
"NLO"]:
212 raise RuntimeError(hw7Utils.ansi_format_error(
"Parameter 'order' must either be 'LO' or 'NLO'!"))
215 ## Configure {0} AlphaS for the hard process
216 ## (LO: 1-loop-running / NLO: 2-loop running)
217 set /Herwig/Couplings/{0}AlphaS:input_scale {1}
218 set /Herwig/Couplings/{0}AlphaS:input_alpha_s {2}
219 set /Herwig/Model:QCD/RunningAlphaS /Herwig/Couplings/{0}AlphaS
220 """.
format(order, scale, value)
231 if order
not in [
"LO",
"NLO"]:
232 raise RuntimeError(hw7Utils.ansi_format_error(
"Parameter 'order' must either be 'LO' or 'NLO'!"))
237 ## Configure {0} PDF set for the hard process
238 set /Herwig/Partons/Hard{0}PDF:PDFName {1}
239 set /Herwig/Partons/Hard{0}PDF:Member {2}
240 set /Herwig/Partons/Hard{0}PDF:MaxFlav {3}
241 set /Herwig/Partons/Hard{0}PDF:RemnantHandler /Herwig/Partons/HadronRemnants
242 set /Herwig/Particles/p+:PDF /Herwig/Partons/Hard{0}PDF
243 set /Herwig/Particles/pbar-:PDF /Herwig/Partons/Hard{0}PDF
244 set /Herwig/Partons/PPExtractor:FirstPDF /Herwig/Partons/Hard{0}PDF
245 set /Herwig/Partons/PPExtractor:SecondPDF /Herwig/Partons/Hard{0}PDF
246 """.
format(order, name, member, max_flav)
257 if order
not in [
"LO",
"NLO"]:
258 raise RuntimeError(hw7Utils.ansi_format_error(
"Parameter 'order' must either be 'LO' or 'NLO'!"))
264 ## Configure {0} PDF set for the parton shower
265 set /Herwig/Partons/Shower{0}PDF:PDFName {1}
266 set /Herwig/Partons/Shower{0}PDF:Member {2}
267 set /Herwig/Partons/Shower{0}PDF:MaxFlav {3}
268 set /Herwig/Shower/ShowerHandler:PDFA /Herwig/Partons/Shower{0}PDF
269 set /Herwig/Shower/ShowerHandler:PDFB /Herwig/Partons/Shower{0}PDF
270 set /Herwig/Shower/PowhegShowerHandler:PDFA /Herwig/Partons/Shower{0}PDF
271 set /Herwig/Shower/PowhegShowerHandler:PDFB /Herwig/Partons/Shower{0}PDF
272 set /Herwig/DipoleShower/DipoleShowerHandler:PDFA /Herwig/Partons/Shower{0}PDF
273 set /Herwig/DipoleShower/DipoleShowerHandler:PDFB /Herwig/Partons/Shower{0}PDF
274 """.
format(order, name, member, max_flav)
288 set /Herwig/Partons/MPIPDF:PDFName {}
289 set /Herwig/Partons/MPIPDF:Member {}
290 set /Herwig/Partons/MPIPDF:MaxFlav {}
291 """.
format(name, member, max_flav)
302 ## Configure Remnant PDF
303 set /Herwig/Partons/RemnantPDF:PDFName {}
304 set /Herwig/Partons/RemnantPDF:Member {}
305 set /Herwig/Partons/RemnantPDF:MaxFlav {}
306 """.
format(name, member, max_flav)
315 def tune_commands(self, ps_tune_name = "H7-PS-MMHT2014LO", ue_tune_name = "H7.2-Default"):
334 ## Parton shower / hadronization tune settings
337 if tune_name ==
"H7-PS-MMHT2014LO":
339 # > The parton shower / hadronization tune "H7-MMHT2014LO" is already
340 # > configured in Herwig7 via the default settings.
345 raise Exception(
"Parton shower tune name '{}' unknown".
format(tune_name))
364 ## Underlying event tune settings
367 if tune_name ==
"H7.2-Default":
369 # > The underlying event tune "H7.2-Default" is already
370 # > configured in Herwig7 via the default settings.
375 raise Exception(
"Underlying event tune name '{}' unknown".
format(tune_name))
389 cmt_path = os.environ.get(
"CMAKE_PREFIX_PATH")
390 cmt_dir = os.environ.get(
"BINARY_TAG")
392 cmtPaths = cmt_path.split(
':')
394 for path
in cmtPaths:
395 pathNow = path +
"/InstallArea/" + cmt_dir +
"/share/"
397 fileList = os.listdir(pathNow)
400 if "HerwigDefaults.rpo" in fileList:
401 simSharePath = pathNow
403 dpdf_path = os.path.dirname(os.path.normpath(os.path.join(simSharePath, os.readlink(simSharePath +
'HerwigDefaults.rpo')))) +
"/PDF/diffraction/"
414 cmds +=
"set /Herwig/Partons/PomeronPDF:RootName %s\n" % dpdf_path
415 cmds +=
"set /Herwig/Partons/PomeronFlux:PDFFit %s\n" % flux
416 cmds +=
"set /Herwig/Partons/PomeronPDF:PDFFit %s\n" % pdf
419 set /Herwig/Particles/pomeron:PDF /Herwig/Partons/PomeronPDF
421 # Technical parameters for this run
422 set /Herwig/Generators/EventGenerator:EventHandler:Sampler:Ntry 100000
423 set /Herwig/Generators/EventGenerator:MaxErrors 500
426 # TODO: Is this a problem?
427 set /Herwig/Generators/EventGenerator:EventHandler:CascadeHandler:MPIHandler NULL
429 # Choice of phase-space generation for PDFs
430 set /Herwig/Partons/PPExtractor:FlatSHatY 0
442 # Technical parameters for this run
443 set /Herwig/Generators/EventGenerator:EventHandler:Sampler:Ntry 100000
445 # Choice of phase-space generation for PDFs
446 set /Herwig/Partons/PPExtractor:FlatSHatY 0
448 # Change the proton PDFs to those for photon radiation
449 set /Herwig/Particles/p+:PDF /Herwig/Partons/BudnevPDF
450 set /Herwig/Particles/pbar-:PDF /Herwig/Partons/BudnevPDF
453 # TODO: Is this a problem?
454 set /Herwig/Generators/EventGenerator:EventHandler:CascadeHandler:MPIHandler NULL
460 tune_schemes = [
"DotProduct-Veto",
"DotProduct",
"pT",
"Q2"]
461 if tune_scheme
not in tune_schemes:
462 athMsgLog.warn(
"Please choose one of the supported tune-schemes! (DotProduct-Veto,DotProduct,pT,Q2)")
464 athMsgLog.info(
"{tune_scheme:s} was used for the tune scheme.".
format(tune_scheme=tune_scheme))
471 # Tune-{tune_scheme:s}
472 read snippets/EvolutionScheme-{tune_scheme:s}.in
473 read snippets/Tune-{tune_scheme:s}.in
474 """.
format(tune_scheme=tune_scheme)
480 \n## -----------------------
481 ## Shower scale variation
482 ## -----------------------
484 do ShowerHandler:AddVariation MUR2_MUF2_SHOWER_HARD 2 2 Hard
485 do ShowerHandler:AddVariation MUR2_MUF1_SHOWER_HARD 2 1 Hard
486 do ShowerHandler:AddVariation MUR1_MUF2_SHOWER_HARD 1 2 Hard
487 do ShowerHandler:AddVariation MUR1_MUF0.5_SHOWER_HARD 1 0.5 Hard
488 do ShowerHandler:AddVariation MUR0.5_MUF1_SHOWER_HARD 0.5 1 Hard
489 do ShowerHandler:AddVariation MUR0.5_MUF0.5_SHOWER_HARD 0.5 0.5 Hard
490 do ShowerHandler:AddVariation MUR2_MUF2_SHOWER_SEC 2 2 Secondary
491 do ShowerHandler:AddVariation MUR2_MUF1_SHOWER_SEC 2 1 Secondary
492 do ShowerHandler:AddVariation MUR1_MUF2_SHOWER_SEC 1 2 Secondary
493 do ShowerHandler:AddVariation MUR1_MUF0.5_SHOWER_SEC 1 0.5 Secondary
494 do ShowerHandler:AddVariation MUR0.5_MUF1_SHOWER_SEC 0.5 1 Secondary
495 do ShowerHandler:AddVariation MUR0.5_MUF0.5_SHOWER_SEC 0.5 0.5 Secondary
496 set SplittingGenerator:Detuning 2.0
def technical_parameter_commands(self)
def load_PS_tune(self, tune_name)
def me_pdf_commands(self, order="NLO", name="MMHT2014nlo68cl", member=0, max_flav=5)
Commands for setting the PDF in the hard process.
set_physics_parameter_commands
def load_ue_tune(self, tune_name)
def __init__(self, genSeq, runArgs, run_name="Herwig")
Constructor.
Configuration base class for Herwig7.
def pdf_gammagamma_cmds(self)
Initialize Budnev Photon flux for two-photon exclusive exchange.
def tune_commands(self, ps_tune_name="H7-PS-MMHT2014LO", ue_tune_name="H7.2-Default")
Commands for setting PS/hadronization and UE/MPI tune simultaneously.
def ue_tune_commands(self, tune_name="H7.2-Default")
Commands for only setting the UE/MPI tune.
def global_pre_commands(self)
Commands applied to all configuration classes before commands from the JobOptions.
def shower_pdf_commands(self, order="LO", name="MMHT2014lo68cl", member=0, max_flav=5)
Commands for setting the PDF in the parton showers.
def mpi_pdf_commands(self, name="MMHT2014lo68cl", member=0, max_flav=5)
Commands for setting the PDF in the underlying event (UE)
def remnant_pdf_commands(self, name="MMHT2014lo68cl", member=0, max_flav=5)
Commands for setting the remnant PDF.
def pdf_pomeron_cmds(self, flux, pdf)
Set pomeron structure function.
physics_parameter_commands
Load the dictionary and extract the values of the variables that were defined here before (top quark,...
def me_alphas_commands(self, order="NLO", scale=91.1876, value=0.118)
Commands for setting the strong coupling in the hard process.
def beam_commands(self)
Commands specific to certain beam / collision types.
def energy_commands(self)
Sets center-of-mass energy sqrts(s) in GeV.
std::string join(const std::vector< std::string > &v, const char c=',')
def ps_tune_commands(self, tune_name="H7-PS-MMHT2014LO")
Commands for only setting the PS/hadronization tune.
def printout_commands(self)
Sets printout verbosity and error tolerance.
def set_tune_scheme(self, tune_scheme="DotProduct")
set_technical_parameter_commands
def random_seed_commands(self)
Sets the seed for the random number generator.
def enable_angularShowerScaleVariations(self, do_variations=False)
def add_commands(self, commands)
Add direct Herwig7 repository commands as they wo.