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

◆ 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 235 of file Herwig7ConfigLHEF.py.

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

◆ 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 290 of file Herwig7ConfigLHEF.py.

290 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"):
291
292 if me_pdf_order not in ["LO", "NLO"]:
293 raise RuntimeError(hw7Utils.ansi_format_error("Herwig7ConfigLHEF.py:lhef_powhegbox_commands: Parameter 'me_pdf_order' must either be 'LO' or 'NLO'!"))
294
295 self.set_lhef_powhegbox_commands = True
296
297 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
int run(int argc, char *argv[])

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: