1 #ifndef GEOMETRIC3DVERTEXFITTER_H
2 #define GEOMETRIC3DVERTEXFITTER_H
4 #include "art/Framework/Principal/Handle.h"
5 #include "canvas/Persistency/Common/FindManyP.h"
6 #include "canvas/Persistency/Common/Ptr.h"
7 #include "fhiclcpp/types/Atom.h"
8 #include "fhiclcpp/types/Comment.h"
9 #include "fhiclcpp/types/Name.h"
10 #include "fhiclcpp/types/Table.h"
19 class DetectorPropertiesData;
67 Comment(
"Debugging level: 0 for no printouts, 1 for minimal, 2 for full.")};
71 "Cut on maximum impact parameter significance to use the track in the vertex fit.")};
78 std::reference_wrapper<const recob::Track> b)
const
80 return ((a.get().Trajectory().Start() -
vtxPos_).Mag2() <
81 (b.get().Trajectory().Start() -
vtxPos_).Mag2());
103 const fhicl::Table<TrackStatePropagator::Config>&
p)
106 prop = std::make_unique<TrackStatePropagator>(
p);
111 const art::ValidHandle<std::vector<recob::PFParticle>>& inputPFParticle,
112 const std::unique_ptr<art::FindManyP<recob::Track>>& assocTracks)
const;
114 const std::vector<art::Ptr<recob::Track>>& arttracks)
const;
139 const std::vector<art::Ptr<recob::Track>>& arttracks);
178 std::unique_ptr<TrackStatePropagator>
prop;
189 std::pair<TrackState, double>
void addTrackToVertex(detinfo::DetectorPropertiesData const &detProp, VertexWrapper &vtx, const recob::Track &tk) const
std::pair< TrackState, double > weightedAverageState(ParsCovsOnPlane &pcop) const
double sip(detinfo::DetectorPropertiesData const &detProp, const VertexWrapper &vtx, const recob::Track &tk) const
const recob::tracking::Point_t & vtxPos_
TracksFromVertexSorter(const recob::tracking::Point_t &vtxPos)
ParsCovsOnPlane(const SVector2 &p1, const SVector2 &p2, const SMatrixSym22 &c1, const SMatrixSym22 &c2, const recob::tracking::Plane &p)
ClusterModuleLabel join with tracks
VertexWrapper closestPointAlongTrack(detinfo::DetectorPropertiesData const &detProp, const recob::Track &track, const recob::Track &other) const
VertexWrapper fitTracksWithVtx(detinfo::DetectorPropertiesData const &detProp, const std::vector< art::Ptr< recob::Track >> &tracks, const recob::tracking::Point_t &vtxPos) const
Wrapper class to facilitate vertex production.
recob::tracking::SVector2 SVector2
recob::tracking::SMatrixSym22 SMatrixSym22
ROOT::Math::SMatrix< Double32_t, 3, 3, ROOT::Math::MatRepSym< Double32_t, 3 > > SMatrixSym33
fhicl::Atom< double > sipCut
ROOT::Math::SVector< Double32_t, 3 > SVector3
process_name use argoneut_mc_hitfinder track
std::vector< recob::VertexAssnMeta > computeMeta(detinfo::DetectorPropertiesData const &detProp, const VertexWrapper &vtx)
double ip(detinfo::DetectorPropertiesData const &detProp, const VertexWrapper &vtx, const recob::Track &tk) const
double ipErr(detinfo::DetectorPropertiesData const &detProp, const VertexWrapper &vtx, const recob::Track &tk) const
VertexWrapper unbiasedVertex(detinfo::DetectorPropertiesData const &detProp, const VertexWrapper &vtx, const recob::Track &tk) const
recob::tracking::SVector3 SVector3
double sipUnbiased(detinfo::DetectorPropertiesData const &detProp, const VertexWrapper &vtx, const recob::Track &tk) const
fhicl::Atom< int > debugLevel
auto vector(Vector const &v)
Returns a manipulator which will print the specified array.
3D vertex fitter based on the geometric properties (start position, direction, covariance) of the tra...
VertexWrapper fitTwoTracks(detinfo::DetectorPropertiesData const &detProp, const recob::Track &tk1, const recob::Track &tk2) const
ROOT::Math::SVector< Double32_t, 2 > SVector2
std::unique_ptr< TrackStatePropagator > prop
double pDistUnbiased(detinfo::DetectorPropertiesData const &detProp, const VertexWrapper &vtx, const recob::Track &tk) const
BEGIN_PROLOG vertical distance to the surface Name
VertexWrapper fitTracks(detinfo::DetectorPropertiesData const &detProp, const std::vector< art::Ptr< recob::Track >> &arttracks) const
ParsCovsOnPlane getParsCovsOnPlane(detinfo::DetectorPropertiesData const &detProp, const trkf::VertexWrapper &vtx, const recob::Track &tk) const
Class defining a plane for tracking. It provides various functionalities to convert track parameters ...
bool operator()(std::reference_wrapper< const recob::Track > a, std::reference_wrapper< const recob::Track > b) const
VertexWrapper fitPFP(detinfo::DetectorPropertiesData const &detProp, size_t iPF, const art::ValidHandle< std::vector< recob::PFParticle >> &inputPFParticle, const std::unique_ptr< art::FindManyP< recob::Track >> &assocTracks) const
Geometric3DVertexFitter(const fhicl::Table< Config > &o, const fhicl::Table< TrackStatePropagator::Config > &p)
double pDist(const VertexWrapper &vtx, const recob::Track &tk) const
double chi2(detinfo::DetectorPropertiesData const &detProp, const VertexWrapper &vtx, const recob::Track &tk) const
double ipErrUnbiased(detinfo::DetectorPropertiesData const &detProp, const VertexWrapper &vtx, const recob::Track &tk) const
ROOT::Math::SMatrix< Double32_t, 2, 2, ROOT::Math::MatRepSym< Double32_t, 2 > > SMatrixSym22
recob::tracking::SMatrixSym33 SMatrixSym33
double ipUnbiased(detinfo::DetectorPropertiesData const &detProp, const VertexWrapper &vtx, const recob::Track &tk) const
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< Coord_t >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space. See recob::tracking::Coord_t for more detai...
recob::tracking::Plane plane
physics associatedGroupsWithLeft p1
Track from a non-cascading particle.A recob::Track consists of a recob::TrackTrajectory, plus additional members relevant for a "fitted" track:
double chi2Unbiased(detinfo::DetectorPropertiesData const &detProp, const VertexWrapper &vtx, const recob::Track &tk) const
std::vector< std::reference_wrapper< const recob::Track > > TrackRefVec