8 #ifndef LAR_NEUTRINO_HIERARCHY_ALGORITHM_H 9 #define LAR_NEUTRINO_HIERARCHY_ALGORITHM_H 1 11 #include "Pandora/Algorithm.h" 15 #include <unordered_map> 20 class PfoRelationTool;
48 PfoInfo(
const pandora::ParticleFlowObject *
const pPfo,
const unsigned int halfWindowLayers,
const float layerPitch);
74 const pandora::ParticleFlowObject *
GetThisPfo()
const;
109 const pandora::ParticleFlowObject *
GetParentPfo()
const;
137 void SetParentPfo(
const pandora::ParticleFlowObject *
const pParentPfo);
149 void AddDaughterPfo(
const pandora::ParticleFlowObject *
const pDaughterPfo);
170 typedef std::unordered_map<const pandora::ParticleFlowObject*, PfoInfo*>
PfoInfoMap;
182 pandora::StatusCode
Run();
189 void GetNeutrinoPfo(
const pandora::ParticleFlowObject *&pNeutrinoPfo)
const;
213 void ProcessPfoInfoMap(
const pandora::ParticleFlowObject *
const pNeutrinoPfo,
const pandora::PfoList &candidateDaughterPfoList,
214 const PfoInfoMap &pfoInfoMap)
const;
222 void DisplayPfoInfoMap(
const pandora::ParticleFlowObject *
const pNeutrinoPfo,
const PfoInfoMap &pfoInfoMap)
const;
224 pandora::StatusCode
ReadSettings(
const pandora::TiXmlHandle xmlHandle);
305 #endif // #ifndef LAR_NEUTRINO_HIERARCHY_ALGORITHM_H void SetInnerLayerAssociation(const bool isInnerLayerAssociated)
Set the inner layer association flag.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
const pandora::ParticleFlowObject * GetThisPfo() const
Get the address of the pfo.
const pandora::Cluster * m_pCluster3D
The address of the three dimensional cluster.
NeutrinoHierarchyAlgorithm()
Default constructor.
PfoInfo & operator=(const PfoInfo &rhs)
Assignment operator.
const ThreeDSlidingFitResult * GetSlidingFitResult3D() const
Get the address of the three dimensional sliding fit result.
bool m_isNeutrinoVertexAssociated
Whether the pfo is associated with the neutrino vertex.
std::unordered_map< const pandora::ParticleFlowObject *, PfoInfo * > PfoInfoMap
const pandora::Cluster * GetCluster3D() const
Get the address of the three dimensional cluster.
PfoRelationToolVector m_algorithmToolVector
The algorithm tool vector.
std::vector< PfoRelationTool * > PfoRelationToolVector
const pandora::ParticleFlowObject * m_pThisPfo
The address of the pfo.
bool m_displayPfoInfoMap
Whether to display the pfo info map (if monitoring is enabled)
void ProcessPfoInfoMap(const pandora::ParticleFlowObject *const pNeutrinoPfo, const pandora::PfoList &candidateDaughterPfoList, const PfoInfoMap &pfoInfoMap) const
Process the information in a pfo info map, creating pfo parent/daughter links.
void DisplayPfoInfoMap(const pandora::ParticleFlowObject *const pNeutrinoPfo, const PfoInfoMap &pfoInfoMap) const
Display the information in a pfo info map, visualising pfo parent/daughter links. ...
void SeparatePfos(const NeutrinoHierarchyAlgorithm::PfoInfoMap &pfoInfoMap, pandora::PfoVector &assignedPfos, pandora::PfoVector &unassignedPfos) const
Query the pfo info map and separate/extract pfos currently either acting as parents or associated wit...
unsigned int m_halfWindowLayers
The number of layers to use for half-window of sliding fit.
bool m_isInnerLayerAssociated
If associated, whether association to parent (vtx or pfo) is at sliding fit inner layer...
bool IsInnerLayerAssociated() const
If associated, whether association to parent (vtx or pfo) is at sliding fit inner layer...
NeutrinoHierarchyAlgorithm class.
void RemoveDaughterPfo(const pandora::ParticleFlowObject *const pDaughterPfo)
Remove a daughter pfo.
const pandora::ParticleFlowObject * GetParentPfo() const
Get the address of the parent pfo.
ThreeDSlidingFitResult * m_pSlidingFitResult3D
The three dimensional sliding fit result.
pandora::StatusCode Run()
pandora::PfoList m_daughterPfoList
The daughter pfo list.
const pandora::PfoList & GetDaughterPfoList() const
Get the daughter pfo list.
bool IsNeutrinoVertexAssociated() const
Whether the pfo is associated with the neutrino vertex.
void SetParentPfo(const pandora::ParticleFlowObject *const pParentPfo)
Set the parent pfo.
void RemoveParentPfo()
Remove the parent pfo.
void GetNeutrinoPfo(const pandora::ParticleFlowObject *&pNeutrinoPfo) const
Get the address of the input neutrino pfo - enforces only one pfo present in input list; can return N...
PfoInfo(const pandora::ParticleFlowObject *const pPfo, const unsigned int halfWindowLayers, const float layerPitch)
Constructor.
Header file for the lar three dimensional sliding fit result class.
std::string m_neutrinoPfoListName
The neutrino pfo list name.
const pandora::Vertex * m_pVertex3D
The address of the three dimensional vertex.
pandora::StringVector m_daughterPfoListNames
The list of daughter pfo list names.
void SetNeutrinoVertexAssociation(const bool isNeutrinoVertexAssociated)
Set the neutrino vertex association flag.
ThreeDSlidingFitResult class.
void AddDaughterPfo(const pandora::ParticleFlowObject *const pDaughterPfo)
Add a daughter pfo.
const pandora::ParticleFlowObject * m_pParentPfo
The address of the parent pfo.
void GetCandidateDaughterPfoList(pandora::PfoList &candidateDaughterPfoList) const
Get the list of candidate daughter pfos.
void GetInitialPfoInfoMap(const pandora::PfoList &pfoList, PfoInfoMap &pfoInfoMap) const
Process a provided pfo list and populate an initial pfo info map.