42 if (!event.
exists(quad_coll_name_, in_proc_)) {
51 const std::vector<ldmx::CaloTrigPrim> one_ended_quads =
56 std::map<int, ldmx::CaloTrigPrim> two_ended_quad_map;
57 for (
const auto& one_ended_quad : one_ended_quads) {
61 auto ptr = two_ended_quad_map.find(combo_id.
raw());
62 if (ptr == two_ended_quad_map.end()) {
63 two_ended_quad_map[combo_id.
raw()] = one_ended_quad;
65 ptr->second.setPrimitive(ptr->second.getPrimitive() +
66 one_ended_quad.getPrimitive());
69 ldmx::CaloTrigPrimCollection two_ended_quads;
70 for (
auto p : two_ended_quad_map) two_ended_quads.push_back(p.second);
71 event.add(combined_quad_coll_name_, two_ended_quads);
75 const unsigned int layer_max = 50;
76 const unsigned int side_layer_max = 16;
77 trigger::TrigEnergySumCollection back_layer_sums;
78 trigger::TrigEnergySumCollection side_layer_sums;
79 back_layer_sums.resize(layer_max);
80 for (
int i = 0; i < layer_max; i++) back_layer_sums[i].setLayer(i);
81 side_layer_sums.resize(side_layer_max);
82 for (
int i = 0; i < side_layer_max; i++) side_layer_sums[i].setLayer(i);
85 std::map<int, int> section_sum;
86 for (
auto p : two_ended_quad_map) {
88 int adc = tp.getPrimitive();
91 int ilayer = combo_id.
layer();
92 if (ilayer >= back_layer_sums.size()) {
93 std::cout <<
"[TrigHcalEnergySum.cxx] Warning(!), layer " << ilayer
94 <<
" is out-of-bounds.\n";
97 int isec = combo_id.section();
100 back_layer_sums[ilayer].setHwEnergy(adc +
101 back_layer_sums[ilayer].hwEnergy());
103 side_layer_sums[ilayer].setHwEnergy(adc +
104 side_layer_sums[ilayer].hwEnergy());
106 auto ptr = section_sum.find(isec);
107 if (ptr == section_sum.end()) {
108 section_sum[isec] = adc;
110 section_sum[isec] += adc;
113 event.add(combined_quad_coll_name_ +
"BackLayerSums", back_layer_sums);
114 event.add(combined_quad_coll_name_ +
"SideLayerSums", side_layer_sums);
116 trigger::TrigEnergySumCollection section_sums;
117 for (
auto p : section_sum) {
118 section_sums.emplace_back(-1, p.first, p.second);
120 event.add(combined_quad_coll_name_ +
"SectionSums", section_sums);
124 total_sum.setLayer(-1);
125 total_sum.setHwEnergy(total_adc);
126 event.add(combined_quad_coll_name_ +
"Sum", total_sum);
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.