13 bool EcalBaseData::Fill(EcalShowerR *showerPtr) {
15 TotalHits = AMSEventR::Head()->nEcalHit();
16 ShowerHits = showerPtr->Nhits;
23 auto ecalKRec = EcalKXRec::GetHead();
24 EcalKXRec::ProcessAMSEvent(AMSEventR::Head());
27 BDT[
BDTType::v7std] = showerPtr->GetEcalBDT(AMSEventR::Head(), 7, 0, 1);
28 BDT[
BDTType::v7ada] = showerPtr->GetEcalBDT(AMSEventR::Head(), 7, 1, 1);
29 BDT[
BDTType::v5std] = showerPtr->GetEcalBDT(AMSEventR::Head(), 5, 0, 1);
30 BDT[
BDTType::v5ada] = showerPtr->GetEcalBDT(AMSEventR::Head(), 5, 1, 1);
32 m_pointAndDir.emplace_back(showerPtr->CofG[0], showerPtr->CofG[1], showerPtr->CofG[2]);
33 m_pointAndDir.emplace_back(showerPtr->Dir[0], showerPtr->Dir[1], showerPtr->Dir[2]);
40 bool EcalPlusData::Fill(EcalShowerR *showerPtr) {
42 auto ecalKRec = EcalKXRec::GetHead();
43 ecalKRec->GetHadronFlag(EcalKHadronicFlag);
44 ecalKRec->GetNumberOfShowers(EcalKNShowers);
47 std::array<float, 18> energy_total_planes{0};
48 std::array<float, 18> energy_max_planes{0};
50 auto event = AMSEventR::Head();
51 for (
int ihit = 0; ihit <
event->nEcalHit(); ihit++) {
52 energy_total_planes[
event->pEcalHit(ihit)->Plane] +=
event->pEcalHit(ihit)->Edep;
53 energy_max_planes[
event->pEcalHit(ihit)->Plane] =
54 std::max(energy_max_planes[event->pEcalHit(ihit)->Plane], event->pEcalHit(ihit)->Edep);
57 for (
int ipl = 0; ipl < 18; ipl++) {
58 if (energy_total_planes[ipl] > 0)
59 MaxEnergyFraction[ipl] = energy_max_planes[ipl] / energy_total_planes[ipl];