UndershootTracksTool.h
Go to the documentation of this file.
1 /**
2  * @file larpandoracontent/LArThreeDReco/LArTransverseTrackMatching/UndershootTracksTool.h
3  *
4  * @brief Header file for the undershoot tracks tool class.
5  *
6  * $Log: $
7  */
8 #ifndef UNDERSHOOT_TRACKS_TOOL_H
9 #define UNDERSHOOT_TRACKS_TOOL_H 1
10 
12 
13 namespace lar_content
14 {
15 
16 /**
17  * @brief UndershootTracksTool class
18  */
20 {
21 public:
22  /**
23  * @brief Default constructor
24  */
26 
27 private:
28  /**
29  * @brief Particle class
30  */
31  class Particle
32  {
33  public:
34  /**
35  * @brief Constructor
36  *
37  * @param elementA the tensor element A
38  * @param elementB the tensor element B
39  */
40  Particle(const TensorType::Element &elementA, const TensorType::Element &elementB);
41 
42  const pandora::Cluster *m_pClusterA; ///< Address of non-shared cluster in element A
43  const pandora::Cluster *m_pClusterB; ///< Address of non-shared cluster in element B
44  const pandora::Cluster *m_pCommonCluster1; ///< Address of the common cluster in view 1
45  const pandora::Cluster *m_pCommonCluster2; ///< Address of the common cluster in view 2
46  };
47 
49  ThreeViewTransverseTracksAlgorithm *const pAlgorithm, const IteratorList &iteratorList, ModificationList &modificationList) const;
50  pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
51 
52  /**
53  * @brief Whether the provided particle is consistent with being a kink, when examined in three dimensions at the provided split position
54  *
55  * @param pAlgorithm the calling algorithm
56  * @param particle the particle
57  * @param splitPosition the candidate split position
58  * @param isALowestInX whether cluster associated with tensor element a extends to lowest x positions
59  *
60  * @return boolean
61  */
62  bool IsThreeDKink(ThreeViewTransverseTracksAlgorithm *const pAlgorithm, const Particle &particle,
63  const pandora::CartesianVector &splitPosition, const bool isALowestInX) const;
64 
65  bool m_splitMode; ///< Whether to run in cluster splitting mode, as opposed to cluster merging mode
66  float m_maxTransverseImpactParameter; ///< The maximum transverse impact parameter for connecting broken clusters
67  float m_minImpactParameterCosTheta; ///< The minimum cos theta (angle between vertex directions) for connecting broken clusters
68  float m_cosThetaCutForKinkSearch; ///< The cos theta cut used for the kink search in three dimensions
69 };
70 
71 } // namespace lar_content
72 
73 #endif // #ifndef UNDERSHOOT_TRACKS_TOOL_H
std::vector< Modification > ModificationList
const pandora::Cluster * m_pClusterA
Address of non-shared cluster in element A.
std::vector< TensorType::ElementList::const_iterator > IteratorList
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Header file for the three d kink base tool.
float m_cosThetaCutForKinkSearch
The cos theta cut used for the kink search in three dimensions.
float m_minImpactParameterCosTheta
The minimum cos theta (angle between vertex directions) for connecting broken clusters.
UndershootTracksTool()
Default constructor.
const pandora::Cluster * m_pCommonCluster1
Address of the common cluster in view 1.
const pandora::Cluster * m_pClusterB
Address of non-shared cluster in element B.
bool m_splitMode
Whether to run in cluster splitting mode, as opposed to cluster merging mode.
bool IsThreeDKink(ThreeViewTransverseTracksAlgorithm *const pAlgorithm, const Particle &particle, const pandora::CartesianVector &splitPosition, const bool isALowestInX) const
Whether the provided particle is consistent with being a kink, when examined in three dimensions at t...
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...
ThreeDKinkBaseTool class.
const pandora::Cluster * m_pCommonCluster2
Address of the common cluster in view 2.
float m_maxTransverseImpactParameter
The maximum transverse impact parameter for connecting broken clusters.
Particle(const TensorType::Element &elementA, const TensorType::Element &elementB)
Constructor.
UndershootTracksTool class.