56 double z_offset = 0.0) {
57 std::vector<MCParticle> particles;
58 particles.reserve(event.size());
61 std::vector<int> out_index(
static_cast<std::size_t
>(event.size()), -1);
63 for (
int i = 0; i <
event.size(); ++i) {
64 auto const& p =
event[i];
65 if (!p.isFinal())
continue;
67 out_index[
static_cast<std::size_t
>(i)] =
static_cast<int>(particles.size());
71 mc.vertex = {p.xProd(), p.yProd(), p.zProd() + z_offset};
72 mc.momentum = {p.px(), p.py(), p.pz()};
74 mc.time = p.tProd() / 299.792458;
75 mc.motherId = p.mother1();
76 mc.status = p.statusHepMC();
77 particles.push_back(mc);
80 for (
auto& mc : particles) {
82 mc.motherId = (m >= 0 && m < static_cast<int>(out_index.size()))
83 ? out_index[
static_cast<std::size_t
>(m)]
void configure_beams(Pythia &pythia, int idA, int idB, double beam_energy)
Definition pythia_common.hpp:25