9 #include "Pandora/AlgorithmHeaders.h" 26 PcaShowerParticleBuildingAlgorithm::PcaShowerParticleBuildingAlgorithm() :
27 m_layerFitHalfWindow(20)
62 pfoParameters.m_charge = PdgTable::GetParticleCharge(pfoParameters.m_particleId.Get());
63 pfoParameters.m_mass = PdgTable::GetParticleMass(pfoParameters.m_particleId.Get());
64 pfoParameters.m_energy = 0.f;
65 pfoParameters.m_momentum = pInputPfo->GetMomentum();
66 pfoParameters.m_propertiesToAdd = pInputPfo->GetPropertiesMap();
77 PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::ParticleFlowObject::Create(*
this, pfoParameters, pOutputPfo, pfoFactory));
82 throw StatusCodeException(STATUS_CODE_FAILURE);
85 const Vertex *pOutputVertex =
nullptr;
87 PandoraContentApi::Vertex::Parameters vtxParameters;
88 vtxParameters.m_position = pInputVertex->GetPosition();
89 vtxParameters.m_vertexLabel = pInputVertex->GetVertexLabel();
90 vtxParameters.m_vertexType = pInputVertex->GetVertexType();
92 PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::Vertex::Create(*
this, vtxParameters, pOutputVertex));
93 PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::AddToPfo<Vertex>(*
this, pOutputPfo, pOutputVertex));
95 catch (StatusCodeException &statusCodeException)
97 if (STATUS_CODE_FAILURE == statusCodeException.GetStatusCode())
98 throw statusCodeException;
106 PANDORA_RETURN_RESULT_IF_AND_IF(
107 STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle,
"LayerFitHalfWindow",
m_layerFitHalfWindow));
virtual pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
static LArShowerPCA GetPrincipalComponents(const pandora::CartesianPointVector &pointVector, const pandora::CartesianVector &vertexPosition)
Perform PCA analysis on a set of 3D points and return results.
Header file for the pfo helper class.
pandora::InputFloat m_showerOpeningAngle
Shower opening angle.
const pandora::CartesianVector & GetCentroid() const
Return centroid.
pandora::InputCartesianVector m_showerCentroid
Shower centroid from 3d shower fit.
pandora::InputCartesianVector m_showerTertiaryVector
Shower teriary eigen vector.
float GetPrimaryLength() const
Return primary length.
static const pandora::Vertex * GetVertex(const pandora::ParticleFlowObject *const pPfo)
Get the pfo vertex.
Header file for the principal curve analysis helper class.
pandora::InputCartesianVector m_showerVertex
Shower starting point.
Header file for the geometry helper class.
pandora::InputCartesianVector m_showerDirection
Shower direction, also the primary eigen vector.
static bool IsShower(const pandora::ParticleFlowObject *const pPfo)
Return shower flag based on Pfo Particle ID.
lar pfo object factory responsible for pfo creation
const pandora::CartesianVector & GetEigenValues() const
Return vector of eigenvalues.
Header file for the cluster helper class.
pandora::InputCartesianVector m_showerEigenValues
Shower eigenvalues from 3d PCA.
Header file for the lar pfo class.
const pandora::CartesianVector & GetAxisLengths() const
Return vector of lengths.
static bool IsNeutrino(const pandora::ParticleFlowObject *const pPfo)
Whether a pfo is a neutrino or (antineutrino)
Header file for the lar three dimensional sliding fit result class.
pandora::InputCartesianVector m_showerLength
Shower length and widths from 3d shower fit.
static bool IsFinalState(const pandora::ParticleFlowObject *const pPfo)
Whether a pfo is a primary parent particle.
unsigned int m_layerFitHalfWindow
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
pandora::InputCartesianVector m_showerSecondaryVector
Shower secondary eigen vector.
static bool IsNeutrinoFinalState(const pandora::ParticleFlowObject *const pPfo)
Whether a pfo is a final-state particle from a neutrino (or antineutrino) interaction.
const pandora::CartesianVector & GetSecondaryAxis() const
Return secondary axis.
boost::graph_traits< ModuleGraph >::vertex_descriptor Vertex
const pandora::CartesianVector & GetTertiaryAxis() const
Return tertiary axis.
float GetSecondaryLength() const
Return secondary length.
void CreatePfo(const pandora::ParticleFlowObject *const pInputPfo, const pandora::ParticleFlowObject *&pOutputPfo) const
Create specialised Pfo from an generic input Pfo.
Header file for the neutrino event creation algorithm class.
const pandora::CartesianVector & GetPrimaryAxis() const
Return primary axis.