All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Member Functions | Private Attributes | List of all members
lar_content::EnergyKickFeatureTool Class Reference

EnergyKickFeatureTool class. More...

#include <EnergyKickFeatureTool.h>

Inheritance diagram for lar_content::EnergyKickFeatureTool:
lar_content::MvaFeatureTool< Ts >

Public Member Functions

 EnergyKickFeatureTool ()
 Default constructor. More...
 
void Run (LArMvaHelper::MvaFeatureVector &featureVector, const VertexSelectionBaseAlgorithm *const pAlgorithm, const pandora::Vertex *const pVertex, const VertexSelectionBaseAlgorithm::SlidingFitDataListMap &slidingFitDataListMap, const VertexSelectionBaseAlgorithm::ClusterListMap &, const VertexSelectionBaseAlgorithm::KDTreeMap &, const VertexSelectionBaseAlgorithm::ShowerClusterListMap &, const float, float &)
 Run the tool. More...
 
- Public Member Functions inherited from lar_content::MvaFeatureTool< Ts >
 MvaFeatureTool ()=default
 Default constructor. More...
 
virtual void Run (MvaTypes::MvaFeatureVector &featureVector, Ts...args)=0
 Run the algorithm tool. More...
 
virtual void Run (MvaTypes::MvaFeatureMap &featureMap, pandora::StringVector &featureOrder, const std::string &featureToolName, Ts...args)
 

Private Member Functions

pandora::StatusCode ReadSettings (const pandora::TiXmlHandle xmlHandle)
 
float GetEnergyKickForView (const pandora::CartesianVector &vertexPosition2D, const VertexSelectionBaseAlgorithm::SlidingFitDataList &slidingFitDataList) const
 Get the energy kick feature for a given view. More...
 
void IncrementEnergyKickParameters (const pandora::Cluster *const pCluster, const pandora::CartesianVector &clusterDisplacement, const pandora::CartesianVector &clusterDirection, float &totEnergyKick, float &totEnergy, float &totHitKick, unsigned int &totHits) const
 Increment the energy kick parameters for a given cluster. More...
 

Private Attributes

float m_rOffset
 The r offset parameter in the energy score. More...
 
float m_xOffset
 The x offset parameter in the energy score. More...
 

Additional Inherited Members

- Public Types inherited from lar_content::MvaFeatureTool< Ts >
typedef std::vector
< MvaFeatureTool< Ts...> * > 
FeatureToolVector
 
typedef std::map< std::string,
MvaFeatureTool< Ts...> * > 
FeatureToolMap
 

Detailed Description

EnergyKickFeatureTool class.

Definition at line 19 of file EnergyKickFeatureTool.h.

Constructor & Destructor Documentation

lar_content::EnergyKickFeatureTool::EnergyKickFeatureTool ( )

Default constructor.

Definition at line 20 of file EnergyKickFeatureTool.cc.

20  : m_rOffset(10.f), m_xOffset(0.06f)
21 {
22 }
float m_xOffset
The x offset parameter in the energy score.
float m_rOffset
The r offset parameter in the energy score.

Member Function Documentation

float lar_content::EnergyKickFeatureTool::GetEnergyKickForView ( const pandora::CartesianVector &  vertexPosition2D,
const VertexSelectionBaseAlgorithm::SlidingFitDataList slidingFitDataList 
) const
private

Get the energy kick feature for a given view.

Parameters
vertexPosition2Dthe projection of the vertex position in this view
slidingFitDataListthe list of sliding fit data objects in this view
Returns
the energy kick feature

Definition at line 50 of file EnergyKickFeatureTool.cc.

52 {
53  unsigned int totHits(0);
54  bool useEnergy(true);
55  float totEnergy(0.f), totEnergyKick(0.f), totHitKick(0.f);
56 
57  for (const VertexSelectionBaseAlgorithm::SlidingFitData &slidingFitData : slidingFitDataList)
58  {
59  const Cluster *const pCluster(slidingFitData.GetCluster());
60 
61  if (pCluster->GetElectromagneticEnergy() < std::numeric_limits<float>::epsilon())
62  useEnergy = false;
63 
64  const CartesianVector vertexToMinLayer(slidingFitData.GetMinLayerPosition() - vertexPosition2D);
65  const CartesianVector vertexToMaxLayer(slidingFitData.GetMaxLayerPosition() - vertexPosition2D);
66 
67  const bool minLayerClosest(vertexToMinLayer.GetMagnitudeSquared() < vertexToMaxLayer.GetMagnitudeSquared());
68  const CartesianVector &clusterDisplacement((minLayerClosest) ? vertexToMinLayer : vertexToMaxLayer);
69  const CartesianVector &clusterDirection((minLayerClosest) ? slidingFitData.GetMinLayerDirection() : slidingFitData.GetMaxLayerDirection());
70 
71  this->IncrementEnergyKickParameters(pCluster, clusterDisplacement, clusterDirection, totEnergyKick, totEnergy, totHitKick, totHits);
72  }
73 
74  float energyKick(0.f);
75  if (useEnergy && totEnergy > std::numeric_limits<float>::epsilon())
76  energyKick = totEnergyKick / totEnergy;
77 
78  else if (!useEnergy && totHits > 0)
79  energyKick = totHitKick / static_cast<float>(totHits);
80 
81  return energyKick;
82 }
void IncrementEnergyKickParameters(const pandora::Cluster *const pCluster, const pandora::CartesianVector &clusterDisplacement, const pandora::CartesianVector &clusterDirection, float &totEnergyKick, float &totEnergy, float &totHitKick, unsigned int &totHits) const
Increment the energy kick parameters for a given cluster.
void lar_content::EnergyKickFeatureTool::IncrementEnergyKickParameters ( const pandora::Cluster *const  pCluster,
const pandora::CartesianVector &  clusterDisplacement,
const pandora::CartesianVector &  clusterDirection,
float &  totEnergyKick,
float &  totEnergy,
float &  totHitKick,
unsigned int &  totHits 
) const
private

Increment the energy kick parameters for a given cluster.

Parameters
pClusteraddress of the cluster
clusterDisplacementthe cluster displacement
clusterDirectionthe cluster direction
totEnergyKickthe total energy kick
totEnergythe total energy
totHitKickthe total hit kick
totHitsthe total number of hits

Definition at line 86 of file EnergyKickFeatureTool.cc.

88 {
89  const float impactParameter(clusterDisplacement.GetCrossProduct(clusterDirection).GetMagnitude());
90  const float displacement(clusterDisplacement.GetMagnitude());
91 
92  totEnergyKick += pCluster->GetElectromagneticEnergy() * (impactParameter + m_xOffset) / (displacement + m_rOffset);
93  totEnergy += pCluster->GetElectromagneticEnergy();
94 
95  totHitKick += static_cast<float>(pCluster->GetNCaloHits()) * (impactParameter + m_xOffset) / (displacement + m_rOffset);
96  totHits += pCluster->GetNCaloHits();
97 }
float m_xOffset
The x offset parameter in the energy score.
float m_rOffset
The r offset parameter in the energy score.
StatusCode lar_content::EnergyKickFeatureTool::ReadSettings ( const pandora::TiXmlHandle  xmlHandle)
private

Definition at line 101 of file EnergyKickFeatureTool.cc.

102 {
103  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "ROffset", m_rOffset));
104 
105  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "XOffset", m_xOffset));
106 
107  return STATUS_CODE_SUCCESS;
108 }
float m_xOffset
The x offset parameter in the energy score.
float m_rOffset
The r offset parameter in the energy score.
void lar_content::EnergyKickFeatureTool::Run ( LArMvaHelper::MvaFeatureVector featureVector,
const VertexSelectionBaseAlgorithm *const  pAlgorithm,
const pandora::Vertex *const  pVertex,
const VertexSelectionBaseAlgorithm::SlidingFitDataListMap slidingFitDataListMap,
const VertexSelectionBaseAlgorithm::ClusterListMap ,
const VertexSelectionBaseAlgorithm::KDTreeMap ,
const VertexSelectionBaseAlgorithm::ShowerClusterListMap ,
const float  ,
float &   
)

Run the tool.

Parameters
pAlgorithmaddress of the calling algorithm
pVertexaddress of the vertex
slidingFitDataListMapmap of the sliding fit data lists
Returns
the energy kick feature

Definition at line 26 of file EnergyKickFeatureTool.cc.

30 {
31  if (PandoraContentApi::GetSettings(*pAlgorithm)->ShouldDisplayAlgorithmInfo())
32  std::cout << "----> Running Algorithm Tool: " << this->GetInstanceName() << ", " << this->GetType() << std::endl;
33 
34  float energyKick(0.f);
35 
36  energyKick += this->GetEnergyKickForView(
37  LArGeometryHelper::ProjectPosition(this->GetPandora(), pVertex->GetPosition(), TPC_VIEW_U), slidingFitDataListMap.at(TPC_VIEW_U));
38 
39  energyKick += this->GetEnergyKickForView(
40  LArGeometryHelper::ProjectPosition(this->GetPandora(), pVertex->GetPosition(), TPC_VIEW_V), slidingFitDataListMap.at(TPC_VIEW_V));
41 
42  energyKick += this->GetEnergyKickForView(
43  LArGeometryHelper::ProjectPosition(this->GetPandora(), pVertex->GetPosition(), TPC_VIEW_W), slidingFitDataListMap.at(TPC_VIEW_W));
44 
45  featureVector.push_back(energyKick);
46 }
static pandora::CartesianVector ProjectPosition(const pandora::Pandora &pandora, const pandora::CartesianVector &position3D, const pandora::HitType view)
Project 3D position into a given 2D view.
float GetEnergyKickForView(const pandora::CartesianVector &vertexPosition2D, const VertexSelectionBaseAlgorithm::SlidingFitDataList &slidingFitDataList) const
Get the energy kick feature for a given view.
BEGIN_PROLOG could also be cout

Member Data Documentation

float lar_content::EnergyKickFeatureTool::m_rOffset
private

The r offset parameter in the energy score.

Definition at line 68 of file EnergyKickFeatureTool.h.

float lar_content::EnergyKickFeatureTool::m_xOffset
private

The x offset parameter in the energy score.

Definition at line 69 of file EnergyKickFeatureTool.h.


The documentation for this class was generated from the following files: