15 """! Schedule algorithms in appropriate order.
17 @author James Robinson <james.robinson@cern.ch>
21 powheg_LHE_output =
"pwgevents.lhe"
24 ordered_preprocessors = [
"directory cleaner",
"reweighter"]
27 ordered_event_generators = [
"singlecore",
"multicore",
"merge output",
"output validation"]
30 ordered_postprocessors = [
33 "reweighter",
"NNLO reweighter",
34 "LHE ubexcess_correct weight updater",
35 "LHE file nominal weight updater",
43 "integration grid tester",
44 "cross section calculator",
46 "output file renamer",
47 "output tarball preparer",
48 "integration gridpack creator",
53 preprocessor_fn_dict = {
54 "directory cleaner": preprocessors.directory_cleaner,
55 "reweighter": preprocessors.reweighter
60 "merge output": partial(generators.merge_output, powheg_LHE_output=powheg_LHE_output),
61 "multicore": generators.multicore,
62 "output validator": partial(generators.output_validator, powheg_LHE_output=powheg_LHE_output),
63 "singlecore": generators.singlecore
67 postprocessor_fn_dict = {
68 "cross section calculator": partial(postprocessors.cross_section_calculator, powheg_LHE_output=powheg_LHE_output),
69 "directory cleaner": postprocessors.directory_cleaner,
70 "integration gridpack creator": postprocessors.integration_gridpack_creator,
71 "integration grid tester": postprocessors.integration_grid_tester,
72 "MadSpin": partial(postprocessors.MadSpin, powheg_LHE_output=powheg_LHE_output),
73 "NNLO reweighter": partial(postprocessors.NNLO_reweighter, powheg_LHE_output=powheg_LHE_output),
74 "output file renamer": partial(postprocessors.output_file_renamer, powheg_LHE_output=powheg_LHE_output),
75 "output tarball preparer": postprocessors.output_tarball_preparer,
76 "PHOTOS": partial(postprocessors.PHOTOS, powheg_LHE_output=powheg_LHE_output),
77 "reweighter": partial(postprocessors.reweighter, powheg_LHE_output=powheg_LHE_output),
78 "quark colour fixer": partial(postprocessors.quark_colour_fixer, powheg_LHE_output=powheg_LHE_output),
79 "mu2tau": partial(postprocessors.mu2tau, powheg_LHE_output=powheg_LHE_output),
80 "mu2e": partial(postprocessors.mu2e, powheg_LHE_output=powheg_LHE_output),
81 "e2tau": partial(postprocessors.e2tau, powheg_LHE_output=powheg_LHE_output),
82 "e2mu": partial(postprocessors.e2mu, powheg_LHE_output=powheg_LHE_output),
83 "gg4l_emu2all": partial(postprocessors.gg4l_emu2all, powheg_LHE_output=powheg_LHE_output),
84 "gg4l_munue2all": partial(postprocessors.gg4l_munue2all, powheg_LHE_output=powheg_LHE_output),
85 "LHE file cleaner": partial(postprocessors.lhe_cleaner, powheg_LHE_output=powheg_LHE_output),
86 "LHE file nominal weight updater": partial(postprocessors.lhe_nominal_weight_updater, powheg_LHE_output=powheg_LHE_output),
87 "LHE ubexcess_correct weight updater": partial(postprocessors.lhe_ubexcess_correct_reweighter, powheg_LHE_output=powheg_LHE_output),
93 self.
sequence = {
"preprocessors": {},
"generators": {},
"postprocessors": {}}
96 self.
add(
"output validator")
97 self.
add(
"integration grid tester")
98 self.
add(
"LHE file cleaner")
100 def add(self, name, *args):
101 """! Add a component to the sequence.
103 @param name name of component to add.
104 @param args arguments to pass to this component when it runs.
107 if name
not in self.
sequence[
"preprocessors"].keys():
108 self.
sequence[
"preprocessors"][name] = args
111 if name
not in self.
sequence[
"generators"].keys():
112 self.
sequence[
"generators"][name] = args
115 if name
not in self.
sequence[
"postprocessors"].keys():
116 self.
sequence[
"postprocessors"][name] = args
119 """! Print the sequence to the logger."""
120 logger.info(
"Scheduling the following PowhegControl sequence:")
121 logger.info(
"|---+ Preprocessing:")
123 logger.info(
" |--- {}".format(name))
124 logger.info(
"|---+ Event generation:")
126 logger.info(
" |--- {}".format(name))
127 logger.info(
"|---+ Postprocessing:")
129 logger.info(
" |--- {}".format(name))
132 """! Run all preprocessors in order."""
137 """! Run all event generators in order."""
142 """! Run all postprocessors in order."""