LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
PeakDirectionFinderTool.h
Go to the documentation of this file.
1 
8 #ifndef LAR_PEAK_DIRECTION_FINDER_TOOL_H
9 #define LAR_PEAK_DIRECTION_FINDER_TOOL_H 1
10 
11 #include "Pandora/AlgorithmHeaders.h"
12 #include "Pandora/AlgorithmTool.h"
13 
14 namespace lar_content
15 {
16 
17 class PeakDirectionFinderTool : public pandora::AlgorithmTool
18 {
19 public:
24 
25  pandora::StatusCode Run(const pandora::ParticleFlowObject *const pShowerPfo, const pandora::CartesianVector &nuVertex3D,
26  const pandora::CaloHitList *const pViewHitList, const pandora::HitType hitType, pandora::CartesianPointVector &peakDirectionVector);
27 
28 private:
29  typedef std::map<int, float> AngularDecompositionMap;
30 
31  pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
32 
42  void CollectHitsWithinROI(const pandora::CaloHitList &showerHitList, const pandora::CaloHitList *const pViewHitList,
43  const pandora::CartesianVector &nuVertex2D, pandora::CaloHitList &viewROIHits) const;
44 
53  void GetAngularExtrema(const pandora::CaloHitList &showerHitList, const pandora::CartesianVector &nuVertex2D, float &lowestTheta,
54  float &highestTheta) const;
55 
65  void CollectHitsWithinExtrema(const pandora::CaloHitList *const pViewHitList, const pandora::CartesianVector &nuVertex2D,
66  const float lowestTheta, const float highestTheta, pandora::CaloHitList &viewROIHits) const;
67 
75  void FillAngularDecompositionMap(const pandora::CaloHitList &viewShowerHitList, const pandora::CartesianVector &nuVertex2D,
76  AngularDecompositionMap &angularDecompositionMap) const;
77 
83  void SmoothAngularDecompositionMap(AngularDecompositionMap &angularDecompositionMap) const;
84 
91  void RetrievePeakDirections(const AngularDecompositionMap &angularDecompositionMap, pandora::CartesianPointVector &peakDirectionVector) const;
92 
97 };
98 
99 //------------------------------------------------------------------------------------------------------------------------------------------
100 } // namespace lar_content
101 
102 #endif // #ifndef LAR_PEAK_DIRECTION_FINDER_TOOL_H
float m_theta0XZBinSize
The angular distribution bin size.
void FillAngularDecompositionMap(const pandora::CaloHitList &viewShowerHitList, const pandora::CartesianVector &nuVertex2D, AngularDecompositionMap &angularDecompositionMap) const
Determine the angular distribution of the ROI hits.
void CollectHitsWithinROI(const pandora::CaloHitList &showerHitList, const pandora::CaloHitList *const pViewHitList, const pandora::CartesianVector &nuVertex2D, pandora::CaloHitList &viewROIHits) const
Collect the 2D hits within a region of interest (m_ambiguousParticleMode ? hits not in the shower : h...
pandora::StatusCode Run(const pandora::ParticleFlowObject *const pShowerPfo, const pandora::CartesianVector &nuVertex3D, const pandora::CaloHitList *const pViewHitList, const pandora::HitType hitType, pandora::CartesianPointVector &peakDirectionVector)
void CollectHitsWithinExtrema(const pandora::CaloHitList *const pViewHitList, const pandora::CartesianVector &nuVertex2D, const float lowestTheta, const float highestTheta, pandora::CaloHitList &viewROIHits) const
Collect the hits that lie within the initial shower cone (originating from the nu vertex) ...
int m_smoothingWindow
On each side, the number of neighbouring bins with which each bin is averaged.
float m_pathwaySearchRegion
The initial shower cone distance.
void SmoothAngularDecompositionMap(AngularDecompositionMap &angularDecompositionMap) const
Smooth the ROI angular angular distribution.
void RetrievePeakDirections(const AngularDecompositionMap &angularDecompositionMap, pandora::CartesianPointVector &peakDirectionVector) const
Obtain a vector of directions from the angular distribution peaks.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
HitType
Definition: HitType.h:12
void GetAngularExtrema(const pandora::CaloHitList &showerHitList, const pandora::CartesianVector &nuVertex2D, float &lowestTheta, float &highestTheta) const
Determine the angle (from the +ve drift-axis) of the shower cone boundaries (originating from the nu ...
bool m_ambiguousParticleMode
Whether to find the initial pathway direction of the shower or of the other event particles...