21 #ifndef ProjectionMatchingAlg_h 22 #define ProjectionMatchingAlg_h 39 class DetectorPropertiesData;
46 class DataProviderAlg;
49 class ChannelStatusProvider;
59 class ProjectionMatchingAlg;
69 Name(
"OptimizationEps"),
70 Comment(
"relative change of the obj.fn which stops optimization after adding a node")};
73 Name(
"FineTuningEps"),
74 Comment(
"relative change of the obj.fn which stops fine-tuning of optimized track")};
77 Name(
"TrkValidationDist2D"),
78 Comment(
"max. distance [cm] used in the track validation in the third plane")};
81 Name(
"HitTestingDist2D"),
82 Comment(
"max. distance [cm] used in testing compatibility of hits with the track")};
85 Name(
"MinTwoViewFraction"),
86 Comment(
"min. fraction of track length covered with hits from many 2D views intertwinted " 91 Comment(
"margin in [cm] around TPC for allowed track node positions")};
110 const lariov::ChannelStatusProvider& channelStatus,
121 const lariov::ChannelStatusProvider& channelStatus,
126 TH1F* histoRejected)
const;
133 const lariov::ChannelStatusProvider& channelStatus,
142 const lariov::ChannelStatusProvider& channelStatus,
146 unsigned int testView,
148 unsigned int cryo)
const;
160 double eps = 1.0)
const 162 return trk.
TestHits(detProp,
hits, eps * fHitTestingDist2D);
215 const TVector3& point)
const;
223 const TVector2& vtx2d)
const;
231 bool add_nodes)
const;
245 std::vector<pma::Hit3D*> trimTrackToVolume(
pma::Track3D& trk, TVector3 p0, TVector3 p1)
const;
267 unsigned int n = 0)
const 276 unsigned int* nused = 0)
const;
292 std::pair<int, int>
const* wires,
295 unsigned int cryo)
const;
301 std::vector<size_t>& used,
304 bool Has_(
const std::vector<size_t>& v,
size_t idx)
const;
315 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
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 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.
pma::Hit3D const * back() const
second_as<> second
Type of time stored in seconds, in double precision.
Namespace collecting geometry-related classes utilities.
map< int, array< map< int, double >, 2 >> Table