6#include <Math/Vector4D.h>
7#include <edm4hep/MCParticleCollection.h>
8#include <edm4eic/ReconstructedParticleCollection.h>
10#include <fmt/format.h>
16using ROOT::Math::PxPyPzEVector;
22 c.setSubsetCollection();
23 const auto it = std::find_if(parts->begin(), parts->end(),
24 [&pdg](
const auto& p) { return pdg.count(p.getPDG()) > 0; });
25 if (it != parts->end()) {
33 const std::set<int32_t>& pdg) {
35 c.setSubsetCollection();
36 const auto it = std::find_if(parts->begin(), parts->end(), [&status, &pdg](
const auto& p) {
37 return status.count(p.getGeneratorStatus()) > 0 && pdg.count(p.getPDG()) > 0;
39 if (it != parts->end()) {
67template <
typename Vector3>
69 const std::vector<float>& pz_set,
70 const float crossing_angle = 0.0) {
73 float best_err = 0.1F;
74 bool found_match =
false;
75 for (
const auto& pz : pz_set) {
76 const float err = std::abs(p_in.z / pz - 1);
84 throw std::runtime_error(
85 fmt::format(
"round_beam_four_momentum: no match for beam momentum {:.3f} GeV within 10% "
86 "of any of the allowed values",
91 p_out.SetPx(p_out.Pz() * sin(crossing_angle));
92 p_out.SetPz(p_out.Pz() * cos(crossing_angle));
93 p_out.SetE(std::hypot(p_out.Px(), p_out.Pz(), mass));
-client
Definition CalorimeterClusterRecoCoG.cc:37
const std::vector< float > hadron_beam_pz_set
Definition Beam.h:65
PxPyPzEVector round_beam_four_momentum(const Vector3 &p_in, const float mass, const std::vector< float > &pz_set, const float crossing_angle=0.0)
Definition Beam.h:68
auto find_first_with_status_pdg(const T *parts, const std::set< int32_t > &status, const std::set< int32_t > &pdg)
Definition Beam.h:32
auto find_first_scattered_electron(const edm4hep::MCParticleCollection *mcparts)
Definition Beam.h:53
auto find_first_beam_electron(const edm4hep::MCParticleCollection *mcparts)
Definition Beam.h:45
auto find_first_with_pdg(const T *parts, const std::set< int32_t > &pdg)
Definition Beam.h:20
auto find_first_beam_hadron(const edm4hep::MCParticleCollection *mcparts)
Definition Beam.h:49
const std::vector< float > electron_beam_pz_set
Definition Beam.h:63