LArSoft  v06_85_00
Liquid Argon Software toolkit - http://larsoft.org/
ThreeDLongitudinalTracksAlgorithm.h
Go to the documentation of this file.
1 
8 #ifndef LAR_THREE_D_LONGITUDINAL_TRACKS_ALGORITHM_H
9 #define LAR_THREE_D_LONGITUDINAL_TRACKS_ALGORITHM_H 1
10 
11 #include "Pandora/Algorithm.h"
12 #include "Pandora/AlgorithmTool.h"
13 
15 
17 
18 namespace lar_content
19 {
20 
21 class LongitudinalTensorTool;
22 
23 //------------------------------------------------------------------------------------------------------------------------------------------
24 
28 class ThreeDLongitudinalTracksAlgorithm : public ThreeDTracksBaseAlgorithm<LongitudinalOverlapResult>
29 {
30 public:
35 
36 private:
37  void CalculateOverlapResult(const pandora::Cluster *const pClusterU, const pandora::Cluster *const pClusterV, const pandora::Cluster *const pClusterW);
38 
47  void CalculateOverlapResult(const pandora::Cluster *const pClusterU, const pandora::Cluster *const pClusterV, const pandora::Cluster *const pClusterW,
48  LongitudinalOverlapResult &overlapResult);
49 
60  void CalculateOverlapResult(const TwoDSlidingFitResult &slidingFitResultU, const TwoDSlidingFitResult &slidingFitResultV,
61  const TwoDSlidingFitResult &slidingFitResultW, const pandora::CartesianVector &vtxMerged3D, const pandora::CartesianVector &endMerged3D,
62  TrackOverlapResult &overlapResult) const;
63 
64  void ExamineTensor();
65 
66  pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
67 
68  typedef std::vector<LongitudinalTensorTool*> TensorToolVector;
69  TensorToolVector m_algorithmToolVector;
70 
71  unsigned int m_nMaxTensorToolRepeats;
75 };
76 
77 //------------------------------------------------------------------------------------------------------------------------------------------
78 
82 class LongitudinalTensorTool : public pandora::AlgorithmTool
83 {
84 public:
86  typedef std::vector<TensorType::ElementList::const_iterator> IteratorList;
87 
96  virtual bool Run(ThreeDLongitudinalTracksAlgorithm *const pAlgorithm, TensorType &overlapTensor) = 0;
97 };
98 
99 } // namespace lar_content
100 
101 #endif // #ifndef LAR_THREE_D_LONGITUDINAL_TRACKS_ALGORITHM_H
LongitudinalOverlapResult class.
ThreeDLongitudinalTracksAlgorithm::TensorType TensorType
std::vector< TensorType::ElementList::const_iterator > IteratorList
std::vector< LongitudinalTensorTool * > TensorToolVector
void CalculateOverlapResult(const pandora::Cluster *const pClusterU, const pandora::Cluster *const pClusterV, const pandora::Cluster *const pClusterW)
Calculate cluster overlap result and store in tensor.
TensorToolVector m_algorithmToolVector
The algorithm tool vector.
ThreeDTransverseTracksAlgorithm class.
float m_samplingPitch
Pitch used to generate sampling points along tracks.
float m_reducedChi2Cut
The maximum allowed chi2 for associating hit positions from three views.
TrackOverlapResult class.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
unsigned int m_nMaxTensorToolRepeats
The maximum number of repeat loops over tensor tools.
Header file for the lar track overlap result class.
float m_vertexChi2Cut
The maximum allowed chi2 for associating end points from three views.
Header file for the three dimensional tracks algorithm base class.
void ExamineTensor()
Examine contents of tensor, collect together best-matching 2D particles and modify clusters as requir...