75 if (hitsVec.empty() || !hitAssnVec)
return;
78 art::ServiceHandle<evd::ColorDrawingOptions const> cst;
80 using HitPosition = std::array<double,6>;
81 std::map<int,std::vector<HitPosition>> colorToHitMap;
83 float minHitCharge(std::numeric_limits<float>::max());
84 float maxHitCharge(std::numeric_limits<float>::lowest());
94 for(
const auto& spacePoint : hitsVec)
97 float hitCharge = spacePoint->ErrXYZ()[1];
99 minHitCharge = std::min(minHitCharge, hitCharge);
100 maxHitCharge = std::max(maxHitCharge, hitCharge);
105 if (maxHitCharge > minHitCharge)
109 for(
const auto& spacePoint : hitsVec)
115 float chgFactor = cst->fRecoQLow[
geo::kCollection] + hitChiSqScale * hitCharge;
117 const double* pos = spacePoint->XYZ();
118 const double*
err = spacePoint->ErrXYZ();
120 colorToHitMap[chargeColorIdx].push_back(HitPosition()={{pos[0],pos[1],pos[2],err[3],err[3],err[5]}});
124 for(
auto& hitPair : colorToHitMap)
126 TPolyMarker3D& pm = view->AddPolyMarker3D(hitPair.second.size(), hitPair.first, kFullDotLarge, 0.25);
127 for (
const auto&
hit : hitPair.second) pm.SetNextPoint(
hit[0],
hit[1],
hit[2]);
EResult err(const char *call)
Signal from collection planes.