30 const EventContext& context)
const
40 double energyEta = 0.;
41 double energyPhi = 0.;
44 double energyNegPhi = 0.;
45 double energyNegPhiConv = 0.;
46 double energyPosPhi = 0.;
57 double seedEnergy = 0.;
58 double seedPhi = 999.;
59 double seedEta = 999.;
64 float etaL1 = rtrigEmCluster.
eta();
65 float phiL1 = rtrigEmCluster.
phi();
68 const LArCell* seedCell =
nullptr;
69 const LArCell* hotCell =
nullptr;
71 if (larcell->energy() > seedEnergy) {
72 float deta = std::abs(etaL1 - larcell->eta());
74 float dphi = std::abs(phiL1 - larcell->phi());
75 dphi = std::abs(
M_PI - dphi);
76 dphi = std::abs(
M_PI - dphi);
78 seedEnergy = larcell->energy();
85 if (seedCell !=
nullptr) {
86 seedEta = seedCell->
eta();
87 seedPhi = seedCell->
phi();
89 caloDDE = (seedCell->
caloDDE());
91 hotEta = hotCell->
eta();
92 hotPhi = hotCell->
phi();
95 return StatusCode::SUCCESS;
98 std::map<const LArCell*, float>
windows;
100 float deta = std::abs(seedEta - larcell->eta());
101 if (deta < 0.025 + 0.002) {
103 float dphi = std::abs(seedPhi - larcell->phi());
104 dphi = std::abs(
M_PI - dphi);
105 dphi = std::abs(
M_PI - dphi);
106 if (dphi < 0.025 + 0.002) {
114 double etaCell = larcell->eta();
115 double phiCell = larcell->phi();
116 double energyCell = larcell->et();
119 float deta = std::abs(etaCell - seedEta);
120 if (deta > 0.05 + 0.002)
continue;
121 for (
auto& [cell, energy] :
windows) {
122 float deta1 = std::abs(etaCell - cell->eta());
123 float dphi = std::abs(phiCell - cell->phi());
124 if (dphi >
M_PI) dphi = 2. *
M_PI - dphi;
145 if (deta1 <= 0.5 *
double(nCellsEta - 1) * cellSizeEta + 0.01 &&
146 dphi <= 0.5 *
double(nCellsPhi - 1) * cellSizePhi + 0.01) {
147 energy += energyCell;
153 for (
auto const& [cell, energy] :
windows) {
160 if (seedCell !=
nullptr) {
161 seedEta = seedCell->
eta();
162 seedPhi = seedCell->
phi();
164 caloDDE = (seedCell->
caloDDE());
167 return StatusCode::SUCCESS;
170 bool cluster_in_barrel =
true;
175 double energy37Lay2 = 0.;
176 double energy37Lay2NegPhi = 0.;
177 double energy37Lay2PosPhi = 0.;
178 double energy77Lay2 = 0.;
179 double energy35Lay2 = 0.;
180 double energy33Lay2 = 0.;
181 double weightEta = 0.;
182 double weightEta2 = 0.;
183 double clusterWidth35 = 0.;
189 double totalEnergy = 0;
193 double etaCell = larcell->eta();
194 double phiCell = larcell->phi();
195 double energyCell = larcell->energy();
198 deta = std::abs(etaCell - seedEta);
199 dphi = std::abs(phiCell - seedPhi);
200 if (dphi >
M_PI) dphi = 2. *
M_PI - dphi;
202 double detaH = std::abs(etaCell - hotEta);
203 double dphiH = std::abs(phiCell - hotPhi);
204 if (dphiH >
M_PI) dphiH = 2. *
M_PI - dphiH;
226 if (detaH <= 0.5 *
double(nCellsEta - 1) * cellSizeEta + 0.01 &&
227 dphiH <= 0.5 *
double(nCellsPhi - 1) * cellSizePhi + 0.01) {
231 if (detaH <= 0.5 *
double(nCellsEta - 1) * cellSizeEta + 0.01 &&
232 dphiH <= 0.5 *
double(nCellsPhi - 1) * cellSizePhi + 0.01) {
233 energy37Lay2 += energyCell;
235 energy77Lay2 += energyCell;
241 if (deta <= 0.5 *
double(nCellsEta - 1) * cellSizeEta + 0.005 &&
242 dphi <= 0.5 *
double(nCellsPhi - 1) * cellSizePhi + 0.005) {
246 if (deta <= 0.5 *
double(nCellsEta - 1) * cellSizeEta + 0.002 &&
247 dphi <= 0.5 *
double(nCellsPhi - 1) * cellSizePhi + 0.002) {
248 energyEta += energyCell * etaCell;
254 energyPosPhi += double(energyCell) * phiCell;
255 energy37Lay2PosPhi += energyCell;
258 energyNegPhi += double(energyCell) * phiCell;
259 energyNegPhiConv += double(energyCell) * (phiCell + 2.0 *
M_PI);
260 energy37Lay2NegPhi += energyCell;
265 if (deta <= 0.5 *
double(nCellsEta - 1) * cellSizeEta + 0.01 &&
266 dphi <= 0.5 *
double(nCellsPhi - 1) * cellSizePhi + 0.01) {
267 weightEta += energyCell * etaCell;
268 weightEta2 += energyCell * etaCell * etaCell;
269 energy35Lay2 += energyCell;
273 if (deta <= 0.5 *
double(nCellsEta - 1) * cellSizeEta + 0.01 &&
274 dphi <= 0.5 *
double(nCellsPhi - 1) * cellSizePhi + 0.01) {
275 energy33Lay2 += energyCell;
288 if ((energy37Lay2PosPhi + energy37Lay2NegPhi) > 0.) {
290 double AvgNegPhi = 0.;
291 double AvgPosPhi = 0.;
293 energyEta /= (energy37Lay2PosPhi + energy37Lay2NegPhi);
295 if (energy37Lay2NegPhi > 0.) {
296 AvgNegPhi = energyNegPhi / energy37Lay2NegPhi;
302 if (energy37Lay2PosPhi > 0.) {
303 AvgPosPhi = energyPosPhi / energy37Lay2PosPhi;
309 if (AvgPosPhi == -999.0) {
310 if (AvgNegPhi != -999.0) {
311 energyPhi = AvgNegPhi;
315 if (AvgNegPhi == -999.0) {
316 if (AvgPosPhi != -999.0) {
317 energyPhi = AvgPosPhi;
321 if (AvgNegPhi != -999.0 && AvgPosPhi != -999.0) {
322 if ((AvgNegPhi > (-
M_PI / 2.0)) && (AvgPosPhi < (
M_PI / 2.0))) {
323 energyPhi = (energyNegPhi + energyPosPhi) / (energy37Lay2NegPhi + energy37Lay2PosPhi);
326 if ((AvgNegPhi < (-
M_PI / 2.0)) && (AvgPosPhi > (
M_PI / 2.0))) {
327 energyPhi = (energyNegPhiConv + energyPosPhi) / (energy37Lay2NegPhi + energy37Lay2PosPhi);
328 if (energyPhi >
M_PI) {
329 energyPhi = energyPhi - 2 *
M_PI;
341 double etaCell = larcell->eta();
342 double phiCell = larcell->phi();
343 double energyCell = larcell->energy();
346 deta = std::abs(etaCell - energyEta);
347 dphi = std::abs(phiCell - energyPhi);
348 if (dphi >
M_PI) dphi = 2. *
M_PI - dphi;
363 if ((deta <= 0.5 *
double(nCellsEta - 1) * cellSizeEta + 0.01) &&
364 (dphi <= 0.5 *
double(nCellsPhi - 1) * cellSizePhi + 0.01)) {
366 if (cluster_in_barrel) {
367 totalEnergy += energyCell;
369 samp = larcell->caloDDE()->getSampling();
370 rtrigEmCluster.
setEnergy(samp, rtrigEmCluster.
energy(samp) + energyCell);
377 if ((!cluster_in_barrel) && (deta <= 0.5 *
double(nCellsEta - 1) * cellSizeEta + 0.01) &&
378 (dphi <= 0.5 *
double(nCellsPhi - 1) * cellSizePhi + 0.01)) {
379 totalEnergy += energyCell;
381 samp = larcell->caloDDE()->getSampling();
382 rtrigEmCluster.
setEnergy(samp, rtrigEmCluster.
energy(samp) + energyCell);
390 if (energy35Lay2 > 0.) {
391 const double inv_energy35Lay2 = 1. / energy35Lay2;
392 clusterWidth35 = (weightEta2 * inv_energy35Lay2) -
393 (weightEta * inv_energy35Lay2) * (weightEta * inv_energy35Lay2);
394 clusterWidth35 > 0. ? clusterWidth35 = sqrt(clusterWidth35) : clusterWidth35 = 99.;
397 clusterWidth35 = 99.;
403 rtrigEmCluster.
setE233(energy33Lay2);
404 rtrigEmCluster.
setE237(energy37Lay2);
405 rtrigEmCluster.
setE277(energy77Lay2);
406 rtrigEmCluster.
setWeta2(clusterWidth35);
408 rtrigEmCluster.
setEta(energyEta);
409 rtrigEmCluster.
setPhi(energyPhi);
414 return StatusCode::SUCCESS;