LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
OvershootTracksTool.h
Go to the documentation of this file.
1 
8 #ifndef OVERSHOOT_TRACKS_TOOL_H
9 #define OVERSHOOT_TRACKS_TOOL_H 1
10 
12 
13 namespace lar_content
14 {
15 
20 {
21 public:
26 
27 private:
31  class Particle
32  {
33  public:
40  Particle(const TensorType::Element &elementA, const TensorType::Element &elementB);
41 
42  const pandora::Cluster *m_pCommonCluster;
43  const pandora::Cluster *m_pClusterA1;
44  const pandora::Cluster *m_pClusterA2;
45  const pandora::Cluster *m_pClusterB1;
46  const pandora::Cluster *m_pClusterB2;
47  pandora::CartesianVector m_splitPosition;
48  pandora::CartesianVector m_splitPosition1;
49  pandora::CartesianVector m_splitPosition2;
50  };
51 
53  ThreeViewTransverseTracksAlgorithm *const pAlgorithm, const IteratorList &iteratorList, ModificationList &modificationList) const;
54  pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
55 
62  bool PassesVertexCuts(const LArPointingCluster::Vertex &vertexA, const LArPointingCluster::Vertex &vertexB) const;
63 
73  void SetSplitPosition(const LArPointingCluster::Vertex &vertexA1, const LArPointingCluster::Vertex &vertexA2,
74  const LArPointingCluster::Vertex &vertexB1, const LArPointingCluster::Vertex &vertexB2, Particle &particle) const;
75 
86  bool IsThreeDKink(ThreeViewTransverseTracksAlgorithm *const pAlgorithm, const Particle &particle, const bool isA1LowestInX,
87  const bool isA2LowestInX) const;
88 
89  bool m_splitMode;
92 };
93 
94 } // namespace lar_content
95 
96 #endif // #ifndef OVERSHOOT_TRACKS_TOOL_H
std::vector< Modification > ModificationList
pandora::CartesianVector m_splitPosition2
The candidate split position in view 2.
bool IsThreeDKink(ThreeViewTransverseTracksAlgorithm *const pAlgorithm, const Particle &particle, const bool isA1LowestInX, const bool isA2LowestInX) const
Whether the provided particle is consistent with being a kink, when examined in three dimensions at t...
std::vector< TensorType::ElementList::const_iterator > IteratorList
void GetIteratorListModifications(ThreeViewTransverseTracksAlgorithm *const pAlgorithm, const IteratorList &iteratorList, ModificationList &modificationList) const
Get modification objects for a specific elements of the tensor, identifying required splits and merge...
bool m_splitMode
Whether to run in cluster splitting mode, as opposed to cluster merging mode.
const pandora::Cluster * m_pCommonCluster
Address of the common cluster.
void SetSplitPosition(const LArPointingCluster::Vertex &vertexA1, const LArPointingCluster::Vertex &vertexA2, const LArPointingCluster::Vertex &vertexB1, const LArPointingCluster::Vertex &vertexB2, Particle &particle) const
Set split position for a provided particle.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
OvershootTracksTool class.
const pandora::Cluster * m_pClusterA1
Address of cluster in element A, view 1.
Header file for the three d kink base tool.
float m_maxVertexXSeparation
The max separation between accompanying clusters vertex x positions to make split.
const pandora::Cluster * m_pClusterB2
Address of cluster in element B, view 2.
float m_cosThetaCutForKinkSearch
The cos theta cut used for the kink search in three dimensions.
pandora::CartesianVector m_splitPosition
The candidate split position for the common cluster.
Particle(const TensorType::Element &elementA, const TensorType::Element &elementB)
Constructor.
bool PassesVertexCuts(const LArPointingCluster::Vertex &vertexA, const LArPointingCluster::Vertex &vertexB) const
Whether a pair of vertices pass longitudinal projection cuts.
pandora::CartesianVector m_splitPosition1
The candidate split position in view 1.
ThreeDKinkBaseTool class.
const pandora::Cluster * m_pClusterA2
Address of cluster in element A, view 2.
const pandora::Cluster * m_pClusterB1
Address of cluster in element B, view 1.
OvershootTracksTool()
Default constructor.