ATLAS Offline Software
Loading...
Searching...
No Matches
Herwig7ConfigLHEF.Hw7ConfigLHEF Class Reference

Configuration class for showering LHE files from MG5_aMC@NLO or PowhegBox. More...

Inheritance diagram for Herwig7ConfigLHEF.Hw7ConfigLHEF:
Collaboration diagram for Herwig7ConfigLHEF.Hw7ConfigLHEF:

Public Member Functions

 __init__ (self, genSeq, runArgs, run_name="Herwig", beams="pp")
 local_pre_commands (self)
 local_post_commands (self)
 run (self)
 High-level function for triggering the process setup and the event generation.
 lhef_mg5amc_commands (self, lhe_filename="events.lhe", me_pdf_order="NLO", usespin=True)
 Commands specific to showering of events produced with MG5_aMC@NLO.
 lhef_powhegbox_commands (self, lhe_filename="events.lhe", me_pdf_order="NLO", usespin=True, usepwhglhereader=False, pwg_reader="powheg", pwg_reader_lib="libpowhegHerwig.so")
 Commands specific to showering of events produced with PowhegBox.

Public Attributes

str beams = beams
 provide variables initialized by the parent class
bool set_lhef_mg5amc_commands = False
bool set_lhef_powhegbox_commands = False
 check for configuration errors
 run_name
 set_printout_commands
 set_physics_parameter_commands
 set_technical_parameter_commands

Private Member Functions

 __lhef_commands (self, lhe_filename="events.lhe", me_pdf_order="NLO", usespin=True, usepwghlhereader=False, pwg_reader="powheg", pwg_reader_lib="libpowhegHerwig.so")
 Sets up reading of events from an LHE file.

Detailed Description

Configuration class for showering LHE files from MG5_aMC@NLO or PowhegBox.

Example JobOptions are available in examples/LHEF and tests/athenaLHEF/jobOptions.

Process Setup and Generator Configuration

The LHE files have to follow a specific naming scheme which is detailed here. The name of the LHE file is added as the command line parameter --inputGeneratorFile to the Generate_tf.py command and can be accessed using the variable runArgs.inputGeneratorFile in the JobOptions where they can be passed to the functions lhef_mg5amc_commands or lhef_powhegbox_commands in order to communicate the LHE file names to Herwig7, e.g.

generator.lhef_mg5amc_commands(lhe_filename=runArgs.inputGeneratorFile, me_pdf_order="NLO")

or

generator.lhef_powhegbox_commands(lhe_filename=runArgs.inputGeneratorFile, me_pdf_order="NLO")

Event Generation

To trigger the actual running of Herwig7 in Athena please end the JobOptions with

# run the generator
generator.run()

More specifically, the run() function triggers the creation of the Herwig7 input file and the preparation of the run (i.e. the Herwig read step). This means, that no Herwig7 settings should be modified after calling the run() function because the changed settings would not be applied during the event generation.

Definition at line 58 of file Herwig7ConfigLHEF.py.

Constructor & Destructor Documentation

◆ __init__()

Herwig7ConfigLHEF.Hw7ConfigLHEF.__init__ ( self,
genSeq,
runArgs,
run_name = "Herwig",
beams = "pp" )

Definition at line 61 of file Herwig7ConfigLHEF.py.

61 def __init__(self, genSeq, runArgs, run_name="Herwig", beams="pp"):
62
63 beams = beams.upper()
64 if beams not in ["EE", "EP" , "PP"]:
65 raise RuntimeError(hw7Utils.ansi_format_error("Parameter 'beams' must be one of the following: ['EE', 'EP' , 'PP']"))
66
67
68 super(Hw7ConfigLHEF, self).__init__(genSeq, runArgs, run_name)
69
70 self.beams = beams
71
72 self.set_lhef_mg5amc_commands = False
73 self.set_lhef_powhegbox_commands = False
74
75

Member Function Documentation

◆ __lhef_commands()

Herwig7ConfigLHEF.Hw7ConfigLHEF.__lhef_commands ( self,
lhe_filename = "events.lhe",
me_pdf_order = "NLO",
usespin = True,
usepwghlhereader = False,
pwg_reader = "powheg",
pwg_reader_lib = "libpowhegHerwig.so" )
private

Sets up reading of events from an LHE file.

Parameters
usespinUse the spin of tau leptons from the LHE file (spins of other particles are ignored anyways)
usepwghlhereaderUses a different LHE reader, which is able to propagte multiple event weights

Definition at line 134 of file Herwig7ConfigLHEF.py.

134 def __lhef_commands(self, lhe_filename="events.lhe", me_pdf_order="NLO", usespin=True, usepwghlhereader=False, pwg_reader = "powheg", pwg_reader_lib="libpowhegHerwig.so"):
135
136 if me_pdf_order not in ["LO", "NLO"]:
137 raise RuntimeError(hw7Utils.ansi_format_error("Herwig7ConfigLHEF.py:__lhef_commands: Parameter 'me_pdf_order' must either be 'LO' or 'NLO'!"))
138
139 if lhe_filename.endswith(".tar.gz"): # athena will decompress the LHE file for us
140 lhe_filename = lhe_filename.replace(".tar.gz", ".events")
141 if not os.path.isfile(lhe_filename):
142 raise RuntimeError(hw7Utils.ansi_format_error("Herwig7ConfigLHEF.py:__lhef_commands: Could not find decompressed LHE file '{}'!".format(lhe_filename)))
143
144 momentum_treatment = ""
145 beam_commands = ""
146 if self.beams == "EE":
147 momentum_treatment = "Accept"
148 elif self.beams == "EP":
149 momentum_treatment = "RescaleEnergy"
150 beam_commands = """
151## Set the PDF for the LHE reader
152# set /Herwig/EventHandlers/LHEReader:PDFA /Herwig/Partons/Hard{MEPDFOrder}PDF
153""".format(MEPDFOrder = me_pdf_order)
154 elif self.beams == "PP":
155 momentum_treatment = "RescaleEnergy"
156 beam_commands = """
157## Set the PDF for the LHE reader
158# set /Herwig/EventHandlers/LHEReader:PDFA /Herwig/Partons/Hard{MEPDFOrder}PDF
159# set /Herwig/EventHandlers/LHEReader:PDFB /Herwig/Partons/Hard{MEPDFOrder}PDF
160""".format(MEPDFOrder = me_pdf_order)
161
162 pwg_reader_lib = "library "+pwg_reader_lib
163
164 self.commands += """
165## ----------------------------
166## Read in Events from LHE File
167## ----------------------------
168
169## Create the Handler and Reader
170library LesHouches.so
171create ThePEG::LesHouchesEventHandler /Herwig/EventHandlers/LHEHandler
172{PwgReaderLib}
173create ThePEG::{PwgReader}LesHouchesFileReader /Herwig/EventHandlers/LHEReader
174
175## Set LHE filename
176set /Herwig/EventHandlers/LHEReader:FileName {FileName}
177
178## Setup LHE event handler and LHE reader
179set /Herwig/Generators/EventGenerator:EventHandler /Herwig/EventHandlers/LHEHandler
180insert /Herwig/EventHandlers/LHEHandler:LesHouchesReaders 0 /Herwig/EventHandlers/LHEReader
181set /Herwig/EventHandlers/LHEHandler:PartonExtractor /Herwig/Partons/{Beams}Extractor
182set /Herwig/EventHandlers/LHEHandler:CascadeHandler /Herwig/Shower/ShowerHandler
183set /Herwig/EventHandlers/LHEHandler:HadronizationHandler /Herwig/Hadronization/ClusterHadHandler
184set /Herwig/EventHandlers/LHEHandler:DecayHandler /Herwig/Decays/DecayHandler
185set /Herwig/EventHandlers/LHEHandler:WeightNormalization CrossSection
186set /Herwig/EventHandlers/LHEHandler:WeightOption VarNegWeight
187set /Herwig/EventHandlers/LHEReader:IncludeSpin {IncludeSpin}
188set /Herwig/EventHandlers/LHEReader:MomentumTreatment {MomentumTreatment}
189set /Herwig/EventHandlers/LHEReader:AllowedToReOpen No
190
191## Parton shower settings
192set /Herwig/Shower/ShowerHandler:MaxPtIsMuF Yes
193set /Herwig/Shower/ShowerHandler:RestrictPhasespace Yes
194# treatment of wide angle radiation
195set /Herwig/Shower/PartnerFinder:PartnerMethod Random
196set /Herwig/Shower/PartnerFinder:ScaleChoice Partner
197
198## Don't use any cuts on LHE files
199create ThePEG::Cuts /Herwig/Cuts/NoCuts
200set /Herwig/EventHandlers/LHEReader:Cuts /Herwig/Cuts/NoCuts
201
202{BeamCommands}
203""".format(FileName = lhe_filename,
204 PwgReaderLib = pwg_reader_lib if usepwghlhereader else "",
205 PwgReader = pwg_reader if usepwghlhereader else "",
206 Beams = self.beams,
207 IncludeSpin = "Yes" if usespin else "No",
208 MomentumTreatment = momentum_treatment,
209 BeamCommands = beam_commands)
210
211

◆ lhef_mg5amc_commands()

Herwig7ConfigLHEF.Hw7ConfigLHEF.lhef_mg5amc_commands ( self,
lhe_filename = "events.lhe",
me_pdf_order = "NLO",
usespin = True )

Commands specific to showering of events produced with MG5_aMC@NLO.

Parameters
[in]lhe_filenamename of the LHE file that is to be showered
[in]me_pdf_orderorder (either LO or NLO) of the matrix element PDF. This has to be consistent with the PDF used in the hard process generation and the PDF set with generator.me_pdf_commands.

The reason for these specific settings is that for MC@NLO-like matching schemes the subtraction of the parton shower contribution in the hard process and the parton shower settings have to be consistent in order to recover the correct terms at the NLO.

For showering of previously existing LHE files

generator.lhef_powhegbox_commands(lhe_filename=runArgs.inputGeneratorFile)

will work.

Definition at line 231 of file Herwig7ConfigLHEF.py.

231 def lhef_mg5amc_commands(self, lhe_filename="events.lhe", me_pdf_order="NLO", usespin=True):
232
233 if me_pdf_order not in ["LO", "NLO"]:
234 raise RuntimeError(hw7Utils.ansi_format_error("Herwig7ConfigLHEF.py:lhef_mg5amc_commands: Parameter 'me_pdf_order' must either be 'LO' or 'NLO'!"))
235
236 self.set_lhef_mg5amc_commands = True
237
238 self.__lhef_commands(lhe_filename, me_pdf_order, usespin)
239
240 self.commands += """
241## Commands specific to showering of events produced with MG5_aMC@NLO
242set /Herwig/Shower/KinematicsReconstructor:ReconstructionOption General
243set /Herwig/Shower/KinematicsReconstructor:InitialInitialBoostOption LongTransBoost
244set /Herwig/Shower/KinematicsReconstructor:InitialStateReconOption Rapidity
245set /Herwig/Shower/ShowerHandler:SpinCorrelations No
246"""
247
248 # this option is not available anymore in Herwig 7.2:
249 if os.environ['HERWIG7VER'].startswith('7.1'):
250 self.command += """set /Herwig/Shower/KinematicsReconstructor:FinalStateReconOption Default"""
251

◆ lhef_powhegbox_commands()

Herwig7ConfigLHEF.Hw7ConfigLHEF.lhef_powhegbox_commands ( self,
lhe_filename = "events.lhe",
me_pdf_order = "NLO",
usespin = True,
usepwhglhereader = False,
pwg_reader = "powheg",
pwg_reader_lib = "libpowhegHerwig.so" )

Commands specific to showering of events produced with PowhegBox.

Parameters
[in]lhe_filenamename of the LHE file that is to be showered
[in]me_pdf_orderorder (either LO or NLO) of the matrix element PDF. This has to be consistent with the PDF used in the hard process generation and the PDF set with generator.me_pdf_commands.
[in]usespin
[in]usepwghlhereader

Specifying the LHE file name with

generator.lhef_powhegbox_commands(lhe_filename=runArgs.inputGeneratorFile)

should work both for showering existing LHE files as well as for on-the-fly (OTF) running of PowhegBox and Herwig7.

Since for OTF running the LHE file generated by PowhegBox is usually called PowhegOTF._1.events using

generator.lhef_powhegbox_commands(lhe_filename="PowhegOTF._1.events")

will normally also work in this case. If a different name for the LHE file generated by PowhegBox is specified with the --outputTXTFile argument to Generate_tf.py then PowhegControl will update the value of runArgs.inputGeneratorFile accordingly and

generator.lhef_powhegbox_commands(lhe_filename=runArgs.inputGeneratorFile)

should still work.

If you want to use the pwglhereader, needed to propagte multiple event weights you need to use a gridpack that contains the powhegHerwig.so

Definition at line 286 of file Herwig7ConfigLHEF.py.

286 def lhef_powhegbox_commands(self, lhe_filename="events.lhe", me_pdf_order="NLO", usespin=True, usepwhglhereader=False, pwg_reader = "powheg", pwg_reader_lib="libpowhegHerwig.so"):
287
288 if me_pdf_order not in ["LO", "NLO"]:
289 raise RuntimeError(hw7Utils.ansi_format_error("Herwig7ConfigLHEF.py:lhef_powhegbox_commands: Parameter 'me_pdf_order' must either be 'LO' or 'NLO'!"))
290
291 self.set_lhef_powhegbox_commands = True
292
293 self.__lhef_commands(lhe_filename, me_pdf_order, usespin, usepwhglhereader, pwg_reader, pwg_reader_lib)

◆ local_post_commands()

Herwig7ConfigLHEF.Hw7ConfigLHEF.local_post_commands ( self)

Definition at line 87 of file Herwig7ConfigLHEF.py.

87 def local_post_commands(self):
88
89 return """
90## =============================================
91## Local Post-Commands from Herwig7ConfigLHEF.py
92## =============================================
93
94saverun {} /Herwig/Generators/EventGenerator
95""".format(self.run_name)
96
97
98

◆ local_pre_commands()

Herwig7ConfigLHEF.Hw7ConfigLHEF.local_pre_commands ( self)

Definition at line 76 of file Herwig7ConfigLHEF.py.

76 def local_pre_commands(self):
77
78 return """
79## ============================================
80## Local Pre-Commands from Herwig7ConfigLHEF.py
81## ============================================
82
83# > no local pre-commands at the moment
84"""
85
86

◆ run()

Herwig7ConfigLHEF.Hw7ConfigLHEF.run ( self)

High-level function for triggering the process setup and the event generation.

Warning
Please do not modify the generator configuration in the job options after calling the run() function as the modified settings would not be applied in the event generation

Definition at line 104 of file Herwig7ConfigLHEF.py.

104 def run(self):
105
106
107
108 self.default_commands += self.beam_commands()
109 self.default_commands += self.random_seed_commands()
110
111 if not self.set_printout_commands:
112 self.default_commands += self.printout_commands()
113 if not self.set_physics_parameter_commands:
114 self.default_commands += self.physics_parameter_commands()
115 if not self.set_technical_parameter_commands:
116 self.default_commands += self.technical_parameter_commands()
117
118
119
120 if self.set_lhef_mg5amc_commands and self.set_lhef_powhegbox_commands:
121 raise RuntimeError(hw7Utils.ansi_format_error("Please do not use both 'lhef_mg5amc_commands()' and 'lhef_powhegbox_commands()' at the same time!"))
122 if not self.set_lhef_mg5amc_commands and not self.set_lhef_powhegbox_commands:
123 raise RuntimeError(hw7Utils.ansi_format_error("Please use either 'lhef_mg5amc_commands()' or 'lhef_powhegbox_commands()' in the JobOptions!"))
124
125
126
127 hw7Control.run(self)
128
129
Definition run.py:1

Member Data Documentation

◆ beams

str Herwig7ConfigLHEF.Hw7ConfigLHEF.beams = beams

provide variables initialized by the parent class

Definition at line 70 of file Herwig7ConfigLHEF.py.

◆ run_name

Herwig7ConfigLHEF.Hw7ConfigLHEF.run_name

Definition at line 95 of file Herwig7ConfigLHEF.py.

◆ set_lhef_mg5amc_commands

bool Herwig7ConfigLHEF.Hw7ConfigLHEF.set_lhef_mg5amc_commands = False

Definition at line 72 of file Herwig7ConfigLHEF.py.

◆ set_lhef_powhegbox_commands

bool Herwig7ConfigLHEF.Hw7ConfigLHEF.set_lhef_powhegbox_commands = False

check for configuration errors

Definition at line 73 of file Herwig7ConfigLHEF.py.

◆ set_physics_parameter_commands

Herwig7ConfigLHEF.Hw7ConfigLHEF.set_physics_parameter_commands

Definition at line 113 of file Herwig7ConfigLHEF.py.

◆ set_printout_commands

Herwig7ConfigLHEF.Hw7ConfigLHEF.set_printout_commands

Definition at line 111 of file Herwig7ConfigLHEF.py.

◆ set_technical_parameter_commands

Herwig7ConfigLHEF.Hw7ConfigLHEF.set_technical_parameter_commands

Definition at line 115 of file Herwig7ConfigLHEF.py.


The documentation for this class was generated from the following file: