67 auto const vtxHandle = Event.getValidHandle<std::vector<recob::Vertex>>(
fPFParticleLabel);
68 std::vector<art::Ptr<recob::Vertex>> vertices;
69 art::fill_ptr_vector(vertices, vtxHandle);
72 bool shower_direction_set = ShowerEleHolder.
CheckElement(
"ShowerDirection");
74 geo::Vector_t ShowerDirection = {-999, -999, -999};
77 if (shower_direction_set) { ShowerEleHolder.
GetElement(
"ShowerDirection", ShowerDirection); }
80 recob::Vertex
const& proposed_vertex = *vertices[0];
81 auto pos = proposed_vertex.position();
83 if (ShowerDirection.X() < 0) { pos *= -1.; }
84 recob::Vertex new_vertex{pos, {}, util::kBogusD, util::kBogusI};
85 geo::Point_t recobshower_err = pos * 0.1;
87 ShowerEleHolder.
SetElement(pos, recobshower_err,
"ShowerStartPosition");
91 ShowerEleHolder.
SetElement(pos, recobshower_err,
"ShowerExampleTool_ShowerStartPosition");
94 ShowerEleHolder.
SetElement(new_vertex,
"myvertex");
97 std::vector<double> xyz_vec = {pos.X(), pos.Y(), pos.Z()};
101 ShowerEleHolder.
SetElement(xyz_vec,
"xyz",
true);
106 if (will_be_checked) { std::cout <<
"Element checked at save time" << std::endl; }
115 if (
fVerbose > 1) std::cout <<
"You on are shower: " << showernum << std::endl;
135 if (
fVerbose) mf::LogError(
"ShowerExampleTooAddAssn") <<
"vertex not set." << std::endl;
142 const art::Ptr<recob::Vertex> vertexptr =
143 GetProducedElementPtr<recob::Vertex>(
"myvertex", ShowerEleHolder, ptrsize);
144 const art::Ptr<recob::Shower> showerptr =
145 GetProducedElementPtr<recob::Shower>(
"shower", ShowerEleHolder);
146 AddSingle<art::Assns<recob::Shower, recob::Vertex>>(showerptr, vertexptr,
"myvertexassan");