53 :
IShowerTool(pset.get<fhicl::ParameterSet>(
"BaseTools"))
54 , fMaxProjectionDist(pset.get<float>(
"MaxProjectionDist"))
55 , fMaxPerpendicularDist(pset.get<float>(
"MaxPerpendicularDist"))
56 , fForwardHitsOnly(pset.get<bool>(
"ForwardHitsOnly"))
57 , fPFParticleLabel(pset.get<
art::InputTag>(
"PFParticleLabel"))
58 , fVerbose(pset.get<int>(
"Verbose"))
59 , fShowerStartPositionInputLabel(pset.get<std::string>(
"ShowerStartPositionInputLabel"))
60 , fInitialTrackHitsOutputLabel(pset.get<std::string>(
"InitialTrackHitsOutputLabel"))
61 , fInitialTrackSpacePointsOutputLabel(
62 pset.get<std::string>(
"InitialTrackSpacePointsOutputLabel"))
63 , fShowerDirectionInputLabel(pset.get<std::string>(
"ShowerDirectionInputLabel"))
67 const art::Ptr<recob::PFParticle>& pfparticle,
75 mf::LogError(
"Shower3DCylinderTrackHitFinder")
76 <<
"Start position not set, returning " << std::endl;
81 mf::LogError(
"Shower3DCylinderTrackHitFinder")
82 <<
"Direction not set, returning " << std::endl;
86 geo::Point_t ShowerStartPosition = {-999, -999, -999};
89 geo::Vector_t ShowerDirection = {-999, -999, -999};
93 auto const pfpHandle = Event.getValidHandle<std::vector<recob::PFParticle>>(
fPFParticleLabel);
96 const art::FindManyP<recob::SpacePoint>& fmspp =
100 auto const spHandle = Event.getValidHandle<std::vector<recob::SpacePoint>>(
fPFParticleLabel);
103 const art::FindManyP<recob::Hit>& fmhsp =
107 std::vector<art::Ptr<recob::SpacePoint>> spacePoints = fmspp.at(pfparticle.key());
110 if (spacePoints.empty()) {
112 mf::LogError(
"Shower3DCylinderTrackHitFinder")
113 <<
"No space points, returning " << std::endl;
119 spacePoints, ShowerStartPosition, ShowerDirection);
122 auto trackSpacePoints =
FindTrackSpacePoints(spacePoints, ShowerStartPosition, ShowerDirection);
125 std::vector<art::Ptr<recob::Hit>> trackHits;
126 for (
auto const& spacePoint : trackSpacePoints) {
127 const art::Ptr<recob::Hit> hit = fmhsp.at(spacePoint.key()).front();
129 trackHits.push_back(hit);
139 std::vector<art::Ptr<recob::SpacePoint>>& spacePoints,
140 geo::Point_t
const& showerStartPosition,
141 geo::Vector_t
const& showerDirection)
const
145 std::vector<art::Ptr<recob::SpacePoint>> trackSpacePoints;
147 for (
const auto& spacePoint : spacePoints) {
151 spacePoint, showerStartPosition, showerDirection);
153 spacePoint, showerStartPosition, showerDirection, proj);
158 trackSpacePoints.push_back(spacePoint);
160 return trackSpacePoints;