44 :
IShowerTool(pset.get<fhicl::ParameterSet>(
"BaseTools"))
45 , fMaxDist(pset.get<float>(
"MaxDist"))
46 , fPFParticleLabel(pset.get<
art::InputTag>(
"PFParticleLabel"))
47 , fVerbose(pset.get<int>(
"Verbose"))
48 , fInitialTrackSpacePointsOutputLabel(
49 pset.get<std::string>(
"InitialTrackSpacePointsOutputLabel"))
50 , fInitialTrackHitsOutputLabel(pset.get<std::string>(
"InitialTrackHitsOutputLabel"))
51 , fInitialTrackInputTag(pset.get<std::string>(
"InitialTrackInputTag"))
52 , fShowerStartPositionInputTag(pset.get<std::string>(
"ShowerStartPositionInputTag"))
53 , fInitialTrackSpacePointsInputTag(pset.get<std::string>(
"InitialTrackSpacePointsInputTag"))
57 const art::Ptr<recob::PFParticle>& pfparticle,
65 mf::LogError(
"ShowerTrackTrajToSpacePoint") <<
"Initial track not set" << std::endl;
72 mf::LogError(
"ShowerTrackTrajToSpacePoint")
73 <<
"Start position not set, returning " << std::endl;
80 mf::LogError(
"ShowerTrackTrajToSpacePoint")
81 <<
"Initial track spacepoints not set" << std::endl;
86 geo::Point_t ShowerStartPosition = {-999, -999, -999};
90 std::vector<art::Ptr<recob::SpacePoint>> intitaltrack_sp;
94 recob::Track InitialTrack;
97 std::vector<art::Ptr<recob::SpacePoint>> new_intitaltrack_sp;
99 for (
unsigned int traj = 0; traj < InitialTrack.NumberTrajectoryPoints(); ++traj) {
102 auto flags = InitialTrack.FlagsAtPoint(traj);
103 if (flags.isSet(recob::TrajectoryPointFlagTraits::NoPoint)) {
continue; }
105 geo::Point_t TrajPosition = InitialTrack.LocationAtPoint(traj);
106 geo::Point_t TrajPositionStart = InitialTrack.LocationAtPoint(0);
109 if ((TrajPosition - TrajPositionStart).R() == 0) {
continue; }
110 if ((TrajPosition - ShowerStartPosition).R() == 0) {
continue; }
112 float MinDist = 9999;
113 unsigned int index = 999;
114 for (
unsigned int sp = 0; sp < intitaltrack_sp.size(); ++sp) {
116 art::Ptr<recob::SpacePoint> spacepoint = intitaltrack_sp[sp];
117 auto const dist = (spacepoint->position() - TrajPosition).R();
118 if (dist < MinDist && dist <
fMaxDist) {
124 if (index == 999) {
continue; }
126 new_intitaltrack_sp.push_back(intitaltrack_sp[index]);
129 intitaltrack_sp.erase(intitaltrack_sp.begin() + index);
133 auto const spHandle = Event.getValidHandle<std::vector<recob::SpacePoint>>(
fPFParticleLabel);
136 const art::FindOneP<recob::Hit>& fohsp =
140 std::vector<art::Ptr<recob::Hit>> trackHits;
141 for (
auto const& spacePoint : new_intitaltrack_sp) {
143 const art::Ptr<recob::Hit> hit = fohsp.at(spacePoint.key());
144 trackHits.push_back(hit);