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.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
212
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
252
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
292
293 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.
__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.
Definition run.py:1