Process the event and put new data products into it.
16 {
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 if (!event.
exists(quad_coll_name_, in_proc_)) {
45
46
47
48 return;
49 }
50
51
52
53 const std::vector<ldmx::CaloTrigPrim> one_ended_quads =
55
56
57
58 std::map<int, ldmx::CaloTrigPrim> two_ended_quad_map;
59 for (const auto& one_ended_quad : one_ended_quads) {
62 end_id.superstrip(), 2);
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;
66 } else {
67 ptr->second.setPrimitive(ptr->second.getPrimitive() +
68 one_ended_quad.getPrimitive());
69 }
70 }
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);
74
75
76
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);
85
86 int total_adc = 0;
87 std::map<int, int> section_sum;
88 for (auto p : two_ended_quad_map) {
89 auto tp = p.second;
90 int adc = tp.getPrimitive();
91 total_adc += adc;
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";
97 continue;
98 }
99 int isec = combo_id.section();
100
101 if (isec == 0)
102 back_layer_sums[ilayer].setHwEnergy(adc +
103 back_layer_sums[ilayer].hwEnergy());
104 else
105 side_layer_sums[ilayer].setHwEnergy(adc +
106 side_layer_sums[ilayer].hwEnergy());
107
108 auto ptr = section_sum.find(isec);
109 if (ptr == section_sum.end()) {
110 section_sum[isec] = adc;
111 } else {
112 section_sum[isec] += adc;
113 }
114 }
115 event.add(combined_quad_coll_name_ + "BackLayerSums", back_layer_sums);
116 event.add(combined_quad_coll_name_ + "SideLayerSums", side_layer_sums);
117
118 trigger::TrigEnergySumCollection section_sums;
119 for (auto p : section_sum) {
120 section_sums.emplace_back(-1, p.first, p.second);
121 }
122 event.add(combined_quad_coll_name_ + "SectionSums", section_sums);
123
124
126 total_sum.setLayer(-1);
127 total_sum.setHwEnergy(total_adc);
128 event.add(combined_quad_coll_name_ + "Sum", total_sum);
129}
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.
Contains the trigger output for generic calo objects.
Extension of DetectorID providing access to HCal trigger cell.
Contains the trigger output for generic calo objects.