ATLAS Offline Software
Loading...
Searching...
No Matches
Herwig7ConfigLHEF.py
Go to the documentation of this file.
1# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
2
3
6
7import os
8
9from . import Herwig7Config as hw7Config
10from . import Herwig7Control as hw7Control
11from . import Herwig7Utils as hw7Utils
12
13
14
58class Hw7ConfigLHEF(hw7Config.Hw7Config):
59
60
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
74
75
77
78 return """
79## ============================================
80## Local Pre-Commands from Herwig7ConfigLHEF.py
81## ============================================
82
83# > no local pre-commands at the moment
84"""
85
86
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
99
104 def run(self):
105
106
107
108 self.default_commands += self.beam_commands()
109 self.default_commands += self.random_seed_commands()
110
112 self.default_commands += self.printout_commands()
114 self.default_commands += self.physics_parameter_commands()
116 self.default_commands += self.technical_parameter_commands()
117
118
119
121 raise RuntimeError(hw7Utils.ansi_format_error("Please do not use both 'lhef_mg5amc_commands()' and 'lhef_powhegbox_commands()' at the same time!"))
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
130
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
216
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
256
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
296
297 self.__lhef_commands(lhe_filename, me_pdf_order, usespin, usepwhglhereader, pwg_reader, pwg_reader_lib)
Configuration class for showering LHE files from MG5_aMC@NLO or PowhegBox.
run(self)
High-level function for triggering the process setup and the event generation.
__init__(self, genSeq, runArgs, run_name="Herwig", beams="pp")
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.
str beams
provide variables initialized by the parent class
bool set_lhef_powhegbox_commands
check for configuration errors
__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.
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.