16 parameters.
get<std::string>(
"sim_coll_name",
"TaggerSimHits");
17 sim_pass_name_ = parameters.
get<std::string>(
"sim_pass_name",
"");
18 digi_coll_name_ = parameters.
get<std::string>(
"digi_coll_name",
"");
19 digi_pass_name_ = parameters.
get<std::string>(
"digi_pass_name",
"");
20 fitted_coll_name_ = parameters.
get<std::string>(
"fitted_coll_name",
21 "TaggerFittedSiStripHits");
22 fitted_pass_name_ = parameters.
get<std::string>(
"fitted_pass_name",
"");
23 cluster_coll_name_ = parameters.
get<std::string>(
"cluster_coll_name",
24 "TaggerClusterMeasurements");
25 cluster_pass_name_ = parameters.
get<std::string>(
"cluster_pass_name",
"");
26 n_sensors_ = parameters.
get<
int>(
"n_sensors", 14);
33 if (event.
exists(sim_coll_name_, sim_pass_name_)) {
35 sim_coll_name_, sim_pass_name_);
38 std::map<int, int> sim_count;
40 for (
const auto& hit : sim_hits) {
45 if (layer < 0 || layer >= n_sensors_)
continue;
47 const std::string s = std::to_string(layer);
52 for (
int i = 0; i < n_sensors_; ++i) {
54 static_cast<double>(sim_count[i]));
61 if (event.
exists(fitted_coll_name_, fitted_pass_name_)) {
63 fitted_coll_name_, fitted_pass_name_);
65 std::map<int, int> strip_count;
67 for (
const auto& hit : fitted_hits) {
72 if (layer < 0 || layer >= n_sensors_)
continue;
74 const std::string s = std::to_string(layer);
82 for (
int i = 0; i < n_sensors_; ++i) {
84 static_cast<double>(strip_count[i]));
92 std::map<int, std::map<int, float>> truth_u_by_layer;
93 if (!digi_coll_name_.empty() &&
94 event.
exists(digi_coll_name_, digi_pass_name_)) {
96 digi_coll_name_, digi_pass_name_);
97 for (
const auto& m : digi_meas) {
98 int layer = m.getLayer();
99 if (layer < 0 || layer >= n_sensors_)
continue;
100 if (std::isnan(m.getTruthU()))
continue;
102 m.getTrackIds().empty() ? -1 :
static_cast<int>(m.getTrackIds()[0]);
103 truth_u_by_layer[layer][tid] = m.getTruthU();
110 if (event.
exists(cluster_coll_name_, cluster_pass_name_)) {
112 cluster_coll_name_, cluster_pass_name_);
114 std::map<int, int> cluster_count;
116 for (
const auto& meas : cluster_meas) {
117 int layer = meas.getLayer();
118 if (layer < 0 || layer >= n_sensors_)
continue;
120 const std::string s = std::to_string(layer);
121 const float u = meas.getLocalPosition()[0];
125 if (meas.getNStrips() > 0)
127 cluster_count[layer]++;
130 int tid = meas.getTrackIds().empty()
132 :
static_cast<int>(meas.getTrackIds()[0]);
133 auto layer_it = truth_u_by_layer.find(layer);
134 if (layer_it != truth_u_by_layer.end()) {
135 auto tid_it = layer_it->second.find(tid);
136 if (tid_it != layer_it->second.end())
141 for (
int i = 0; i < n_sensors_; ++i) {
143 static_cast<double>(cluster_count[i]));
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.