29 #ifndef CONNECTORCLEANINGTOOL_H
30 #define CONNECTORCLEANINGTOOL_H
34 #include "Objects/CartesianVector.h"
36 namespace april_content
50 : m_distance(std::numeric_limits<float>::max()),
51 m_openingAngle(std::numeric_limits<float>::max()),
54 m_fromHitPos(0., 0., 0.),
55 m_orderParameter(std::numeric_limits<float>::max())
61 ConnectorOrderParameter(
float distance,
float openingAngle,
unsigned int nConnections,
unsigned int creationStage, pandora::CartesianVector formHitPos)
62 : m_distance(distance),
63 m_openingAngle(openingAngle),
64 m_nConnectons(nConnections),
65 m_creationStage(creationStage),
66 m_fromHitPos(formHitPos)
68 m_orderParameter = std::pow(m_openingAngle, m_orderParameterAnglePower) *
69 std::pow(m_distance, m_orderParameterDistancePower);
74 if( m_creationStage == a.m_creationStage &&
75 m_openingAngle == a.m_openingAngle &&
76 m_distance == a.m_distance &&
77 m_nConnectons == a.m_nConnectons &&
78 m_fromHitPos == a.m_fromHitPos )
92 if( m_creationStage != a.m_creationStage )
94 return m_creationStage < a.m_creationStage;
97 if(m_openingAngle < m_smallAngleRange && a.m_openingAngle < m_smallAngleRange && m_distance != a.m_distance)
100 return m_distance < a.m_distance;
103 if(m_openingAngle == a.m_openingAngle && m_distance == a.m_distance && m_nConnectons != a.m_nConnectons)
106 return m_nConnectons > a.m_nConnectons;
109 if(m_nConnectons == a.m_nConnectons && m_orderParameter == a.m_orderParameter)
112 if(!(m_fromHitPos == a.m_fromHitPos))
114 return ( m_fromHitPos.GetX() < a.m_fromHitPos.GetX() ||
115 m_fromHitPos.GetY() < a.m_fromHitPos.GetY() ||
116 m_fromHitPos.GetZ() < a.m_fromHitPos.GetZ() );
128 return m_orderParameter < a.m_orderParameter;
132 float m_openingAngle;
133 unsigned int m_nConnectons;
134 unsigned int m_creationStage;
135 pandora::CartesianVector m_fromHitPos;
136 float m_orderParameter;
138 static float m_smallAngleRange;
139 static float m_orderParameterAnglePower;
140 static float m_orderParameterDistancePower;
145 typedef std::map<const april_content::CaloHit*, pandora::CaloHitList> CaloHitCleaningMap;
151 class Factory :
public pandora::AlgorithmToolFactory
154 pandora::AlgorithmTool *CreateAlgorithmTool()
const;
168 pandora::StatusCode
Process(
const pandora::Algorithm &algorithm,
const pandora::CaloHitList *
const pCaloHitList =
nullptr);
175 pandora::StatusCode
ReadSettings(
const pandora::TiXmlHandle xmlHandle);
202 pandora::StatusCode
CleanCaloHits(
const pandora::CaloHitList *
const pCaloHitList)
const;
209 pandora::StatusCode
CleanCaloHits(
const pandora::OrderedCaloHitList &orderedCaloHitList)
const;
212 unsigned int m_strategy;
213 float m_backwardConnectorWeight;
214 float m_forwardConnectorWeight;
215 unsigned int m_backwardReferenceDirectionDepth;
216 unsigned int m_forwardReferenceDirectionDepth;
217 float m_orderParameterAnglePower;
218 float m_orderParameterDistancePower;
223 inline pandora::AlgorithmTool *ConnectorCleaningTool::Factory::CreateAlgorithmTool()
const
237 #endif // CONNECTORCLEANINGTOOL_H
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read settings from the xml handle.
Definition: ConnectorCleaningTool.cc:249
Factory class for instantiating algorithm tool.
Definition: ConnectorCleaningTool.h:151
CaloHit class.
Definition: CaloHit.h:52
Definition: ConnectorCleaningTool.h:143
ConnectorCleaningTool class.
Definition: ConnectorCleaningTool.h:46
pandora::StatusCode CleanCaloHits(const pandora::CaloHitList *const pCaloHitList) const
Clean the connectors of the calo hits, ending with a tree structure.
Definition: ConnectorCleaningTool.cc:124
pandora::CartesianVector GetReferenceVector(const april_content::CaloHit *const pCaloHit) const
Get the order parameter of the connector in the backward direction.
Definition: ConnectorCleaningTool.cc:73
pandora::StatusCode Process(const pandora::Algorithm &algorithm, const pandora::CaloHitList *const pCaloHitList=nullptr)
Clean the connectors of the calo hit list.
Definition: ConnectorCleaningTool.cc:48
~ConnectorCleaningTool()
Destructor.
Definition: ConnectorCleaningTool.h:230
ConnectorAlgorithmTool class.
Definition: ConnectorAlgorithmTool.h:41