21 #ifndef ProjectionMatchingAlg_h 22 #define ProjectionMatchingAlg_h 38 class DetectorPropertiesData;
41 class DataProviderAlg;
44 class ChannelStatusProvider;
54 class ProjectionMatchingAlg;
64 Name(
"OptimizationEps"),
65 Comment(
"relative change of the obj.fn which stops optimization after adding a node")};
68 Name(
"FineTuningEps"),
69 Comment(
"relative change of the obj.fn which stops fine-tuning of optimized track")};
72 Name(
"TrkValidationDist2D"),
73 Comment(
"max. distance [cm] used in the track validation in the third plane")};
76 Name(
"HitTestingDist2D"),
77 Comment(
"max. distance [cm] used in testing compatibility of hits with the track")};
80 Name(
"MinTwoViewFraction"),
81 Comment(
"min. fraction of track length covered with hits from many 2D views intertwinted " 86 Comment(
"margin in [cm] around TPC for allowed track node positions")};
105 const lariov::ChannelStatusProvider& channelStatus,
116 const lariov::ChannelStatusProvider& channelStatus,
121 TH1F* histoRejected)
const;
128 const lariov::ChannelStatusProvider& channelStatus,
137 const lariov::ChannelStatusProvider& channelStatus,
141 unsigned int testView,
143 unsigned int cryo)
const;
155 double eps = 1.0)
const 157 return trk.
TestHits(detProp,
hits, eps * fHitTestingDist2D);
210 const TVector3& point)
const;
218 const TVector2& vtx2d)
const;
226 bool add_nodes)
const;
240 std::vector<pma::Hit3D*> trimTrackToVolume(
pma::Track3D& trk, TVector3 p0, TVector3 p1)
const;
262 unsigned int n = 0)
const 271 unsigned int* nused = 0)
const;
287 std::pair<int, int>
const* wires,
290 unsigned int cryo)
const;
296 std::vector<size_t>& used,
299 bool Has_(
const std::vector<size_t>& v,
size_t idx)
const;
310 static size_t getSegCount_(
size_t trk_size);
void AutoFlip(pma::Track3D::EDirection dir, double thr=0.0, unsigned int n=0)
Implementation of the Projection Matching Algorithm.
ProjectionMatchingAlg(const fhicl::ParameterSet &pset)
double const fMinTwoViewFraction
geo::GeometryCore const * fGeom
Declaration of signal hit object.
pma::Hit3D const * front() const
unsigned int TestHits(detinfo::DetectorPropertiesData const &detProp, const std::vector< art::Ptr< recob::Hit >> &hits, double dist=0.4) const
Count close 2D hits.
Geometry information for a single TPC.
TVector3 const & Point3D() const
Planes which measure Z direction.
recob::tracking::Vector_t Vector3D
double const fFineTuningEps
auto vector(Vector const &v)
Returns a manipulator which will print the specified array.
pma::Node3D * FirstElement() const
unsigned int testHits(detinfo::DetectorPropertiesData const &detProp, const pma::Track3D &trk, const std::vector< art::Ptr< recob::Hit >> &hits, double eps=1.0) const
Count the number of hits that are closer than eps * fHitTestingDist2D to the track 2D projection...
pma::Node3D * LastElement() const
bool isContained(const pma::Track3D &trk, float margin=0.0F) const
double const fTrkValidationDist2D
Interface for a class providing readout channel mapping to geometry.
void autoFlip(pma::Track3D &trk, pma::Track3D::EDirection dir=Track3D::kForward, double thr=0.0, unsigned int n=0) const
double const fHitTestingDist2D
double const fOptimizationEps
bool SameTPC(const TVector3 &p3d, float margin=0.0F) const
Check if p3d is in the same TPC as the node.
General LArSoft Utilities.
Description of the physical geometry of one entire detector.
Definition of data types for geometry description.
Filters for channels, events, etc.
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space.
Implementation of the Projection Matching Algorithm.
geo::WireReadoutGeom const * fWireReadoutGeom
pma::Hit3D const * back() const
second_as<> second
Type of time stored in seconds, in double precision.
map< int, array< map< int, double >, 2 >> Table