44 if (!event.
exists(quad_coll_name_, in_proc_)) {
53 const std::vector<ldmx::CaloTrigPrim> one_ended_quads =
58 std::map<int, ldmx::CaloTrigPrim> two_ended_quad_map;
59 for (
const auto& one_ended_quad : one_ended_quads) {
63 auto ptr = two_ended_quad_map.find(combo_id.
raw());
64 if (ptr == two_ended_quad_map.end()) {
65 two_ended_quad_map[combo_id.
raw()] = one_ended_quad;
67 ptr->second.setPrimitive(ptr->second.getPrimitive() +
68 one_ended_quad.getPrimitive());
71 ldmx::CaloTrigPrimCollection two_ended_quads;
72 for (
auto p : two_ended_quad_map) two_ended_quads.push_back(p.second);
73 event.add(combined_quad_coll_name_, two_ended_quads);
77 const unsigned int layer_max = 50;
78 const unsigned int side_layer_max = 16;
79 trigger::TrigEnergySumCollection back_layer_sums;
80 trigger::TrigEnergySumCollection side_layer_sums;
81 back_layer_sums.resize(layer_max);
82 for (
int i = 0; i < layer_max; i++) back_layer_sums[i].setLayer(i);
83 side_layer_sums.resize(side_layer_max);
84 for (
int i = 0; i < side_layer_max; i++) side_layer_sums[i].setLayer(i);
87 std::map<int, int> section_sum;
88 for (
auto p : two_ended_quad_map) {
90 int adc = tp.getPrimitive();
93 int ilayer = combo_id.
layer();
94 if (ilayer >= back_layer_sums.size()) {
95 std::cout <<
"[TrigHcalEnergySum.cxx] Warning(!), layer " << ilayer
96 <<
" is out-of-bounds.\n";
99 int isec = combo_id.section();
102 back_layer_sums[ilayer].setHwEnergy(adc +
103 back_layer_sums[ilayer].hwEnergy());
105 side_layer_sums[ilayer].setHwEnergy(adc +
106 side_layer_sums[ilayer].hwEnergy());
108 auto ptr = section_sum.find(isec);
109 if (ptr == section_sum.end()) {
110 section_sum[isec] = adc;
112 section_sum[isec] += adc;
115 event.add(combined_quad_coll_name_ +
"BackLayerSums", back_layer_sums);
116 event.add(combined_quad_coll_name_ +
"SideLayerSums", side_layer_sums);
118 trigger::TrigEnergySumCollection section_sums;
119 for (
auto p : section_sum) {
120 section_sums.emplace_back(-1, p.first, p.second);
122 event.add(combined_quad_coll_name_ +
"SectionSums", section_sums);
126 total_sum.setLayer(-1);
127 total_sum.setHwEnergy(total_adc);
128 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.