20 #include <boost/program_options.hpp>
23 using boost::program_options::bool_switch;
26 auto opt = desc.add_options();
27 opt(
"gen-nhard", value<size_t>()->default_value(1
u),
28 "Number of hard interactions, zero to disable");
29 opt(
"gen-npileup", value<double>()->default_value(200.0),
30 "Mean number of pile-up interactions, zero to disable");
31 opt(
"gen-vertex-xy-std-mm", value<double>()->default_value(0.0125),
32 "Transverse vertex standard deviation in mm");
33 opt(
"gen-vertex-z-std-mm", value<double>()->default_value(55.5),
34 "Longitudinal vertex standard deviation in mm");
35 opt(
"gen-vertex-t-std-ns", value<double>()->default_value(5.0),
36 "Temporal vertex standard deviation in ns");
37 opt(
"gen-cms-energy-gev", value<double>()->default_value(14000.0),
38 "Center-of-mass energy collision in GeV");
41 "PDG number of the first beam particle");
44 "PDG number of the second beam particle");
45 opt(
"gen-hard-process",
46 value<std::vector<std::string>>()->default_value({
"HardQCD:all = on"},
48 "Pythia8 process string for the hard interactions. Can be given multiple "
50 opt(
"gen-pileup-process",
51 value<std::vector<std::string>>()->default_value({
"SoftQCD:all = on"},
53 "Pythi8 process string for the pile-up interactions. Can be given "
59 using namespace Acts::UnitLiterals;
61 const auto nhard = vars[
"gen-nhard"].as<
size_t>();
62 const auto npileup = vars[
"gen-npileup"].as<
double>();
64 vars[
"gen-pdg-beam0"].template as<int32_t>());
66 vars[
"gen-pdg-beam1"].template as<int32_t>());
67 const auto cmsEnergy = vars[
"gen-cms-energy-gev"].as<
double>() * 1_GeV;
69 auto vertexGen = std::make_shared<GaussianVertexGenerator>();
71 vars[
"gen-vertex-xy-std-mm"].as<
double>() * 1_mm;
73 vars[
"gen-vertex-xy-std-mm"].as<
double>() * 1_mm;
75 vars[
"gen-vertex-z-std-mm"].as<
double>() * 1_mm;
77 vars[
"gen-vertex-t-std-ns"].as<
double>() * 1_ns;
85 hard.
settings = vars[
"gen-hard-process"].as<std::vector<std::string>>();
87 cfg.generators.push_back(
88 {std::make_shared<FixedMultiplicityGenerator>(nhard), vertexGen,
89 std::make_shared<Pythia8Generator>(hard, lvl)});
96 pileup.
settings = vars[
"gen-pileup-process"].as<std::vector<std::string>>();
98 cfg.generators.push_back(
99 {std::make_shared<PoissonMultiplicityGenerator>(
npileup), vertexGen,
100 std::make_shared<Pythia8Generator>(pileup, lvl)});