46 :
IShowerTool(pset.get<fhicl::ParameterSet>(
"BaseTools"))
47 , fVerbose(pset.get<int>(
"Verbose"))
48 , fUsePandoraVertex(pset.get<bool>(
"UsePandoraVertex"))
49 , fUsePositonInfo(pset.get<bool>(
"UsePositonInfo"))
50 , fTrajPoint(pset.get<int>(
"TrajPoint"))
51 , fInitialTrackInputLabel(pset.get<std::string>(
"InitialTrackInputLabel"))
52 , fShowerStartPositionInputLabel(pset.get<std::string>(
"ShowerStartPositionInputLabel"))
53 , fShowerDirectionOutputLabel(pset.get<std::string>(
"ShowerDirectionOutputLabel"))
57 const art::Ptr<recob::PFParticle>& pfparticle,
65 mf::LogError(
"ShowerTrackTrajPointDirection") <<
"Initial track not set" << std::endl;
68 recob::Track InitialTrack;
71 if ((
int)InitialTrack.NumberTrajectoryPoints() - 1 <
fTrajPoint) {
73 mf::LogError(
"ShowerTrackTrajPointDirection")
74 <<
"Less that fTrajPoint trajectory points, bailing." << std::endl;
75 fTrajPoint = InitialTrack.NumberTrajectoryPoints() - 1;
79 auto flags = InitialTrack.FlagsAtPoint(
fTrajPoint);
80 if (flags.isSet(recob::TrajectoryPointFlagTraits::NoPoint)) {
82 mf::LogError(
"ShowerTrackTrajPointDirection")
83 <<
"Bogus trajectory point bailing." << std::endl;
87 geo::Vector_t Direction;
91 geo::Point_t StartPosition;
96 mf::LogError(
"ShowerTrackTrajPointDirection")
97 <<
"Shower start position not set" << std::endl;
103 StartPosition = InitialTrack.Start();
106 geo::Point_t TrajPosition = InitialTrack.LocationAtPoint(
fTrajPoint);
107 Direction = (TrajPosition - StartPosition).Unit();
111 Direction = InitialTrack.DirectionAtPoint(
fTrajPoint);
114 geo::Vector_t DirectionErr = {-999, -999, -999};