9 primary_coll_name_ = ps.
get<std::string>(
"output_primary_coll_name");
10 target_coll_name_ = ps.
get<std::string>(
"output_target_coll_name");
11 ecal_coll_name_ = ps.
get<std::string>(
"output_ecal_coll_name");
12 hcal_coll_name_ = ps.
get<std::string>(
"output_hcal_coll_name");
13 target_sp_passname_ = ps.
get<std::string>(
"target_sp_passname");
14 ecal_sp_passname_ = ps.
get<std::string>(
"ecal_sp_passname");
15 sim_particles_coll_name_ = ps.
get<std::string>(
"sim_particles_coll_name");
16 sim_particles_passname_ = ps.
get<std::string>(
"sim_particles_passname");
17 sim_particles_event_passname_ =
18 ps.
get<std::string>(
"sim_particles_event_passname");
19 ecal_sp_coll_name_ = ps.
get<std::string>(
"ecal_sp_hits_event_passname");
20 ecal_sp_hits_event_passname_ =
21 ps.
get<std::string>(
"ecal_sp_hits_event_passname");
22 target_sp_coll_name_ = ps.
get<std::string>(
"target_sp_coll_name");
23 target_sp_hits_event_passname_ =
24 ps.
get<std::string>(
"target_sp_hits_event_passname");
33 if (!event.
exists(target_sp_coll_name_, target_sp_hits_event_passname_))
35 if (!event.
exists(ecal_sp_coll_name_, ecal_sp_hits_event_passname_))
return;
36 if (!event.
exists(sim_particles_coll_name_, sim_particles_event_passname_))
39 target_sp_coll_name_, target_sp_passname_);
41 ecal_sp_coll_name_, ecal_sp_passname_);
43 sim_particles_coll_name_, sim_particles_passname_);
45 std::map<int, ldmx::SimParticle> primaries;
46 std::set<int> sim_i_ds;
47 std::vector<ldmx::SimTrackerHit> at_target;
48 std::vector<ldmx::SimTrackerHit> at_ecal;
49 std::vector<ldmx::SimTrackerHit> at_hcal;
50 for (
const auto &pm : particle_map) {
51 const auto &p = pm.second;
53 auto parents = p.getParents();
54 auto parent = parents.at(0);
57 primaries[pm.first] = p;
58 sim_i_ds.insert(pm.first);
61 for (
const auto &sp_hit : targ_sp_hits) {
62 if (sim_i_ds.count(sp_hit.getTrackID()) &&
63 fabs(0.18 - sp_hit.getPosition()[2]) < 0.1 &&
64 sp_hit.getMomentum()[2] > 0) {
65 at_target.push_back(sp_hit);
68 for (
const auto &sp_hit : ecal_sp_hits) {
69 if (sim_i_ds.count(sp_hit.getTrackID()) &&
70 fabs(240 - sp_hit.getPosition()[2]) < 0.1 &&
71 sp_hit.getMomentum()[2] > 0) {
72 at_ecal.push_back(sp_hit);
74 if (sim_i_ds.count(sp_hit.getTrackID()) &&
75 fabs(840 - sp_hit.getPosition()[2]) < 0.1 &&
76 sp_hit.getMomentum()[2] > 0) {
77 at_hcal.push_back(sp_hit);
84 event.add(primary_coll_name_, primaries);
85 event.add(target_coll_name_, at_target);
86 event.add(ecal_coll_name_, at_ecal);
87 event.add(hcal_coll_name_, at_hcal);
bool exists(const std::string &name, const std::string &passName, bool unique=true) const
Check for the existence of an object or collection with the given name and pass name in the event.
Class representing a simulated particle.