LArSoft  v07_13_02
Liquid Argon Software toolkit - http://larsoft.org/
lar_content::EnergyKickFeatureTool Class Referenceabstract

EnergyKickFeatureTool class. More...

#include "EnergyKickFeatureTool.h"

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

Public Types

typedef std::vector< MvaFeatureTool< Ts... > * > FeatureToolVector
 

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...
 
virtual void Run (MvaTypes::MvaFeatureVector &featureVector, Ts...args)=0
 Run the algorithm tool. More...
 

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...
 

Detailed Description

EnergyKickFeatureTool class.

Definition at line 19 of file EnergyKickFeatureTool.h.

Member Typedef Documentation

template<typename... Ts>
typedef std::vector<MvaFeatureTool<Ts...> *> lar_content::MvaFeatureTool< Ts >::FeatureToolVector
inherited

Definition at line 30 of file LArMvaHelper.h.

Constructor & Destructor Documentation

lar_content::EnergyKickFeatureTool::EnergyKickFeatureTool ( )

Default constructor.

Definition at line 20 of file EnergyKickFeatureTool.cc.

20  :
21  m_rOffset(10.f),
22  m_xOffset(0.06f)
23 {
24 }
float m_xOffset
The x offset parameter in the energy score.
float m_rOffset
The r offset parameter in the energy score.
TFile f
Definition: plotHisto.C:6

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 51 of file EnergyKickFeatureTool.cc.

References f, and IncrementEnergyKickParameters().

Referenced by Run().

53 {
54  unsigned int totHits(0);
55  bool useEnergy(true);
56  float totEnergy(0.f), totEnergyKick(0.f), totHitKick(0.f);
57 
58  for (const VertexSelectionBaseAlgorithm::SlidingFitData &slidingFitData : slidingFitDataList)
59  {
60  const Cluster *const pCluster(slidingFitData.GetCluster());
61 
62  if (pCluster->GetElectromagneticEnergy() < std::numeric_limits<float>::epsilon())
63  useEnergy = false;
64 
65  const CartesianVector vertexToMinLayer(slidingFitData.GetMinLayerPosition() - vertexPosition2D);
66  const CartesianVector vertexToMaxLayer(slidingFitData.GetMaxLayerPosition() - vertexPosition2D);
67 
68  const bool minLayerClosest(vertexToMinLayer.GetMagnitudeSquared() < vertexToMaxLayer.GetMagnitudeSquared());
69  const CartesianVector &clusterDisplacement((minLayerClosest) ? vertexToMinLayer : vertexToMaxLayer);
70  const CartesianVector &clusterDirection((minLayerClosest) ? slidingFitData.GetMinLayerDirection() : slidingFitData.GetMaxLayerDirection());
71 
72  this->IncrementEnergyKickParameters(pCluster, clusterDisplacement, clusterDirection, totEnergyKick, totEnergy, totHitKick, totHits);
73  }
74 
75  float energyKick(0.f);
76  if (useEnergy && totEnergy > std::numeric_limits<float>::epsilon())
77  energyKick = totEnergyKick / totEnergy;
78 
79  else if (!useEnergy && totHits > 0)
80  energyKick = totHitKick / static_cast<float>(totHits);
81 
82  return energyKick;
83 }
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.
TFile f
Definition: plotHisto.C:6
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 87 of file EnergyKickFeatureTool.cc.

References m_rOffset, and m_xOffset.

Referenced by GetEnergyKickForView().

89 {
90  const float impactParameter(clusterDisplacement.GetCrossProduct(clusterDirection).GetMagnitude());
91  const float displacement(clusterDisplacement.GetMagnitude());
92 
93  totEnergyKick += pCluster->GetElectromagneticEnergy() * (impactParameter + m_xOffset) / (displacement + m_rOffset);
94  totEnergy += pCluster->GetElectromagneticEnergy();
95 
96  totHitKick += static_cast<float>(pCluster->GetNCaloHits()) * (impactParameter + m_xOffset) / (displacement + m_rOffset);
97  totHits += pCluster->GetNCaloHits();
98 }
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 102 of file EnergyKickFeatureTool.cc.

References m_rOffset, and m_xOffset.

103 {
104  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle,
105  "ROffset", m_rOffset));
106 
107  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle,
108  "XOffset", m_xOffset));
109 
110  return STATUS_CODE_SUCCESS;
111 }
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 28 of file EnergyKickFeatureTool.cc.

References f, GetEnergyKickForView(), and lar_content::LArGeometryHelper::ProjectPosition().

31 {
32  if (PandoraContentApi::GetSettings(*pAlgorithm)->ShouldDisplayAlgorithmInfo())
33  std::cout << "----> Running Algorithm Tool: " << this->GetInstanceName() << ", " << this->GetType() << std::endl;
34 
35  float energyKick(0.f);
36 
37  energyKick += this->GetEnergyKickForView(LArGeometryHelper::ProjectPosition(this->GetPandora(), pVertex->GetPosition(), TPC_VIEW_U),
38  slidingFitDataListMap.at(TPC_VIEW_U));
39 
40  energyKick += this->GetEnergyKickForView(LArGeometryHelper::ProjectPosition(this->GetPandora(), pVertex->GetPosition(), TPC_VIEW_V),
41  slidingFitDataListMap.at(TPC_VIEW_V));
42 
43  energyKick += this->GetEnergyKickForView(LArGeometryHelper::ProjectPosition(this->GetPandora(), pVertex->GetPosition(), TPC_VIEW_W),
44  slidingFitDataListMap.at(TPC_VIEW_W));
45 
46  featureVector.push_back(energyKick);
47 }
static pandora::CartesianVector ProjectPosition(const pandora::Pandora &pandora, const pandora::CartesianVector &position3D, const pandora::HitType view)
Project 3D position into a given 2D view.
TFile f
Definition: plotHisto.C:6
float GetEnergyKickForView(const pandora::CartesianVector &vertexPosition2D, const VertexSelectionBaseAlgorithm::SlidingFitDataList &slidingFitDataList) const
Get the energy kick feature for a given view.
template<typename... Ts>
virtual void lar_content::MvaFeatureTool< Ts >::Run ( MvaTypes::MvaFeatureVector featureVector,
Ts...  args 
)
pure virtualinherited

Run the algorithm tool.

Parameters
featureVectorthe vector of features to append
argsarguments to pass to the tool

Member Data Documentation

float lar_content::EnergyKickFeatureTool::m_rOffset
private

The r offset parameter in the energy score.

Definition at line 67 of file EnergyKickFeatureTool.h.

Referenced by IncrementEnergyKickParameters(), and ReadSettings().

float lar_content::EnergyKickFeatureTool::m_xOffset
private

The x offset parameter in the energy score.

Definition at line 68 of file EnergyKickFeatureTool.h.

Referenced by IncrementEnergyKickParameters(), and ReadSettings().


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