ATLAS Offline Software
Public Member Functions | Public Attributes | Private Member Functions | List of all members
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

def __init__ (self, genSeq, runArgs, run_name="Herwig", beams="pp")
 
def local_pre_commands (self)
 
def local_post_commands (self)
 
def run (self)
 High-level function for triggering the process setup and the event generation. More...
 
def 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. More...
 
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")
 Commands specific to showering of events produced with PowhegBox. More...
 

Public Attributes

 beams
 provide variables initialized by the parent class More...
 
 set_lhef_mg5amc_commands
 
 set_lhef_powhegbox_commands
 

Private Member Functions

def __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. More...
 

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__()

def 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()

def 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
170 library LesHouches.so
171 create ThePEG::LesHouchesEventHandler /Herwig/EventHandlers/LHEHandler
172 {PwgReaderLib}
173 create ThePEG::{PwgReader}LesHouchesFileReader /Herwig/EventHandlers/LHEReader
174 
175 ## Set LHE filename
176 set /Herwig/EventHandlers/LHEReader:FileName {FileName}
177 
178 ## Setup LHE event handler and LHE reader
179 set /Herwig/Generators/EventGenerator:EventHandler /Herwig/EventHandlers/LHEHandler
180 insert /Herwig/EventHandlers/LHEHandler:LesHouchesReaders 0 /Herwig/EventHandlers/LHEReader
181 set /Herwig/EventHandlers/LHEHandler:PartonExtractor /Herwig/Partons/{Beams}Extractor
182 set /Herwig/EventHandlers/LHEHandler:CascadeHandler /Herwig/Shower/ShowerHandler
183 set /Herwig/EventHandlers/LHEHandler:HadronizationHandler /Herwig/Hadronization/ClusterHadHandler
184 set /Herwig/EventHandlers/LHEHandler:DecayHandler /Herwig/Decays/DecayHandler
185 set /Herwig/EventHandlers/LHEHandler:WeightNormalization CrossSection
186 set /Herwig/EventHandlers/LHEHandler:WeightOption VarNegWeight
187 set /Herwig/EventHandlers/LHEReader:IncludeSpin {IncludeSpin}
188 set /Herwig/EventHandlers/LHEReader:MomentumTreatment {MomentumTreatment}
189 set /Herwig/EventHandlers/LHEReader:AllowedToReOpen No
190 
191 ## Parton shower settings
192 set /Herwig/Shower/ShowerHandler:MaxPtIsMuF Yes
193 set /Herwig/Shower/ShowerHandler:RestrictPhasespace Yes
194 # treatment of wide angle radiation
195 set /Herwig/Shower/PartnerFinder:PartnerMethod Random
196 set /Herwig/Shower/PartnerFinder:ScaleChoice Partner
197 
198 ## Don't use any cuts on LHE files
199 create ThePEG::Cuts /Herwig/Cuts/NoCuts
200 set /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()

def 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
242 set /Herwig/Shower/KinematicsReconstructor:ReconstructionOption General
243 set /Herwig/Shower/KinematicsReconstructor:InitialInitialBoostOption LongTransBoost
244 set /Herwig/Shower/KinematicsReconstructor:InitialStateReconOption Rapidity
245 set /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()

def 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()

def 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 
94 saverun {} /Herwig/Generators/EventGenerator
95 """.format(self.run_name)
96 
97 
98 

◆ local_pre_commands()

def 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()

def 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 

Member Data Documentation

◆ beams

Herwig7ConfigLHEF.Hw7ConfigLHEF.beams

provide variables initialized by the parent class

Definition at line 70 of file Herwig7ConfigLHEF.py.

◆ set_lhef_mg5amc_commands

Herwig7ConfigLHEF.Hw7ConfigLHEF.set_lhef_mg5amc_commands

Definition at line 72 of file Herwig7ConfigLHEF.py.

◆ set_lhef_powhegbox_commands

Herwig7ConfigLHEF.Hw7ConfigLHEF.set_lhef_powhegbox_commands

Definition at line 73 of file Herwig7ConfigLHEF.py.


The documentation for this class was generated from the following file:
vtune_athena.format
format
Definition: vtune_athena.py:14
run
int run(int argc, char *argv[])
Definition: ttree2hdf5.cxx:28
python.processes.powheg.ZZ.ZZ.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZ.py:18