Pandora
Pandora source code navigator
Loading...
Searching...
No Matches
LArGeometryHelper.h
Go to the documentation of this file.
1
8#ifndef LAR_GEOMETRY_HELPER_H
9#define LAR_GEOMETRY_HELPER_H 1
10
11#include "Objects/Cluster.h"
13#include "Pandora/StatusCodes.h"
14
15#include <unordered_map>
16
17namespace pandora
18{
19class CartesianVector;
20class Pandora;
21} // namespace pandora
22
23namespace lar_content
24{
25
26class TwoDSlidingFitResult;
27
28//------------------------------------------------------------------------------------------------------------------------------------------
29
34{
35public:
36 typedef std::set<unsigned int> UIntSet;
37
47 static float MergeTwoPositions(const pandora::Pandora &pandora, const pandora::HitType view1, const pandora::HitType view2,
48 const float position1, const float position2);
49
60 const pandora::HitType view2, const pandora::CartesianVector &direction1, const pandora::CartesianVector &direction2);
61
73 static void MergeTwoPositions(const pandora::Pandora &pandora, const pandora::HitType view1, const pandora::HitType view2,
74 const pandora::CartesianVector &position1, const pandora::CartesianVector &position2, pandora::CartesianVector &position3, float &chiSquared);
75
89 static void MergeTwoPositions(const pandora::Pandora &pandora, const pandora::HitType view1, const pandora::HitType view2,
90 const pandora::CartesianVector &position1, const pandora::CartesianVector &position2, pandora::CartesianVector &outputU,
91 pandora::CartesianVector &outputV, pandora::CartesianVector &outputW, float &chiSquared);
92
108 static void MergeThreePositions(const pandora::Pandora &pandora, const pandora::HitType view1, const pandora::HitType view2,
109 const pandora::HitType view3, const pandora::CartesianVector &position1, const pandora::CartesianVector &position2,
111 pandora::CartesianVector &outputW, float &chiSquared);
112
125 static void MergeThreePositions(const pandora::Pandora &pandora, const pandora::CartesianVector &positionU,
126 const pandora::CartesianVector &positionV, const pandora::CartesianVector &positionW, pandora::CartesianVector &outputU,
127 pandora::CartesianVector &outputV, pandora::CartesianVector &outputW, float &chiSquared);
128
140 static void MergeTwoPositions3D(const pandora::Pandora &pandora, const pandora::HitType view1, const pandora::HitType view2,
141 const pandora::CartesianVector &position1, const pandora::CartesianVector &position2, pandora::CartesianVector &position3D, float &chiSquared);
142
156 static void MergeThreePositions3D(const pandora::Pandora &pandora, const pandora::HitType view1, const pandora::HitType view2,
157 const pandora::HitType view3, const pandora::CartesianVector &position1, const pandora::CartesianVector &position2,
158 const pandora::CartesianVector &position3, pandora::CartesianVector &position3D, float &chiSquared);
159
168 const pandora::Pandora &pandora, const pandora::CartesianVector &position3D, const pandora::HitType view);
169
178 const pandora::Pandora &pandora, const pandora::CartesianVector &direction3D, const pandora::HitType view);
179
186 static float GetWireZPitch(const pandora::Pandora &pandora, const float maxWirePitchDiscrepancy = 0.01);
187
195 static float GetWirePitch(const pandora::Pandora &pandora, const pandora::HitType view, const float maxWirePitchDiscrepancy = 0.01);
196
204
215 static bool IsInGap(const pandora::Pandora &pandora, const pandora::CartesianVector &testPoint2D, const pandora::HitType hitType,
216 const float gapTolerance = 0.f);
217
228 static bool IsInGap3D(const pandora::Pandora &pandora, const pandora::CartesianVector &testPoint3D, const pandora::HitType hitType,
229 const float gapTolerance = 0.f);
230
241 static bool IsXSamplingPointInGap(
242 const pandora::Pandora &pandora, const float xSample, const TwoDSlidingFitResult &slidingFitResult, const float gapTolerance = 0.f);
243
252 static float CalculateGapDeltaZ(const pandora::Pandora &pandora, const float minZ, const float maxZ, const pandora::HitType hitType);
253
260 static float GetSigmaUVW(const pandora::Pandora &pandora, const float maxSigmaDiscrepancy = 0.01);
261
269 static void GetCommonDaughterVolumes(const pandora::Cluster *const pCluster1, const pandora::Cluster *const pCluster2, UIntSet &intersect);
270};
271//------------------------------------------------------------------------------------------------------------------------------------------
272
273inline float LArGeometryHelper::GetWireZPitch(const pandora::Pandora &pandora, const float maxWirePitchWDiscrepancy)
274{
275 return LArGeometryHelper::GetWirePitch(pandora, pandora::TPC_VIEW_W, maxWirePitchWDiscrepancy);
276}
277
278} // namespace lar_content
279
280#endif // #ifndef LAR_GEOMETRY_HELPER_H
Header file for the cluster class.
Header file for pandora enumerated types.
Header file defining status codes and relevant preprocessor macros.
LArGeometryHelper class.
static float GetSigmaUVW(const pandora::Pandora &pandora, const float maxSigmaDiscrepancy=0.01)
Find the sigmaUVW value for the detector geometry.
static float MergeTwoPositions(const pandora::Pandora &pandora, const pandora::HitType view1, const pandora::HitType view2, const float position1, const float position2)
Merge two views (U,V) to give a third view (Z).
static float GetWirePitch(const pandora::Pandora &pandora, const pandora::HitType view, const float maxWirePitchDiscrepancy=0.01)
Return the wire pitch.
static pandora::CartesianVector MergeTwoDirections(const pandora::Pandora &pandora, const pandora::HitType view1, const pandora::HitType view2, const pandora::CartesianVector &direction1, const pandora::CartesianVector &direction2)
Merge two views (U,V) to give a third view (Z).
std::set< unsigned int > UIntSet
static void GetCommonDaughterVolumes(const pandora::Cluster *const pCluster1, const pandora::Cluster *const pCluster2, UIntSet &intersect)
Return the set of common daughter volumes between two 2D clusters.
static float GetWireZPitch(const pandora::Pandora &pandora, const float maxWirePitchDiscrepancy=0.01)
Return the wire pitch.
static pandora::CartesianVector GetWireAxis(const pandora::Pandora &pandora, const pandora::HitType view)
Return the wire axis (vector perpendicular to the wire direction and drift direction)
static void MergeThreePositions(const pandora::Pandora &pandora, const pandora::HitType view1, const pandora::HitType view2, const pandora::HitType view3, const pandora::CartesianVector &position1, const pandora::CartesianVector &position2, const pandora::CartesianVector &position3, pandora::CartesianVector &outputU, pandora::CartesianVector &outputV, pandora::CartesianVector &outputW, float &chiSquared)
Merge 2D positions from three views to give unified 2D positions for each view.
static pandora::CartesianVector ProjectPosition(const pandora::Pandora &pandora, const pandora::CartesianVector &position3D, const pandora::HitType view)
Project 3D position into a given 2D view.
static bool IsInGap(const pandora::Pandora &pandora, const pandora::CartesianVector &testPoint2D, const pandora::HitType hitType, const float gapTolerance=0.f)
Whether a 2D test point lies in a registered gap with the associated hit type.
static void MergeTwoPositions3D(const pandora::Pandora &pandora, const pandora::HitType view1, const pandora::HitType view2, const pandora::CartesianVector &position1, const pandora::CartesianVector &position2, pandora::CartesianVector &position3D, float &chiSquared)
Merge 2D positions from two views to give unified 3D position.
static bool IsXSamplingPointInGap(const pandora::Pandora &pandora, const float xSample, const TwoDSlidingFitResult &slidingFitResult, const float gapTolerance=0.f)
Whether there is a gap in a cluster (described via its sliding fit result) at a specified x sampling ...
static pandora::CartesianVector ProjectDirection(const pandora::Pandora &pandora, const pandora::CartesianVector &direction3D, const pandora::HitType view)
Project 3D direction into a given 2D view.
static bool IsInGap3D(const pandora::Pandora &pandora, const pandora::CartesianVector &testPoint3D, const pandora::HitType hitType, const float gapTolerance=0.f)
Whether a 3D test point lies in a registered gap with the associated hit type.
static void MergeThreePositions3D(const pandora::Pandora &pandora, const pandora::HitType view1, const pandora::HitType view2, const pandora::HitType view3, const pandora::CartesianVector &position1, const pandora::CartesianVector &position2, const pandora::CartesianVector &position3, pandora::CartesianVector &position3D, float &chiSquared)
Merge 2D positions from three views to give unified 3D position.
static float CalculateGapDeltaZ(const pandora::Pandora &pandora, const float minZ, const float maxZ, const pandora::HitType hitType)
Calculate the total distance within a given 2D region that is composed of detector gaps.
CartesianVector class.
Cluster class.
Definition Cluster.h:31
Pandora class.
Definition Pandora.h:40
HitType
Calorimeter hit type enum.