8#ifndef LAR_CHEATING_NEUTRINO_CREATION_ALGORITHM_H
9#define LAR_CHEATING_NEUTRINO_CREATION_ALGORITHM_H 1
15#include <unordered_map>
57 typedef std::unordered_map<const pandora::MCParticle *, const pandora::ParticleFlowObject *>
MCParticleToPfoMap;
Header file for the algorithm class.
Header file for the lar monte carlo particle helper helper class.
CheatingNeutrinoCreationAlgorithm::Algorithm class.
pandora::StringVector m_daughterPfoListNames
The list of daughter pfo list names.
std::string m_mcParticleListName
The name of the three d mc particle list name.
void GetMCParticleToDaughterPfoMap(MCParticleToPfoMap &mcParticleToPfoMap) const
Extract candidate daughter pfos from external lists and populate a map from main mc particle (or prim...
void CreatePfoHierarchy(const pandora::MCParticle *const pParentMCParticle, const pandora::ParticleFlowObject *const pParentPfo, const MCParticleToPfoMap &mcParticleToPfoMap) const
Use information from mc particles and the mc particle to pfo map to fully-reconstruct the daughter pf...
void AddNeutrinoVertex(const pandora::MCParticle *const pMCNeutrino, const pandora::ParticleFlowObject *const pNeutrinoPfo) const
Extract reconstructed vertex from external list, check its position agrees with mc neutrino,...
void GetMCNeutrinoVector(pandora::MCParticleVector &mcNeutrinoVector) const
Get the mc neutrino vector.
std::string m_vertexListName
The name of the neutrino vertex list.
pandora::StatusCode Run()
Run the algorithm.
std::string m_neutrinoPfoListName
The name of the neutrino pfo list.
bool m_collapseToPrimaryMCParticles
Whether to collapse mc particle hierarchies to primary particles.
CheatingNeutrinoCreationAlgorithm()
Default constructor.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
void CreateAndSaveNeutrinoPfo(const pandora::MCParticle *const pMCNeutrino, const pandora::ParticleFlowObject *&pNeutrinoPfo) const
Create and save a neutrino pfo with properties dictated by the mc neutrino.
float m_vertexTolerance
Tolerance, 3d displacement, allowed between reco neutrino vertex and mc neutrino endpoint.
std::unordered_map< const pandora::MCParticle *, const pandora::ParticleFlowObject * > MCParticleToPfoMap
Algorithm class. Algorithm addresses are held only by the algorithm manager. They have a fully define...
ParticleFlowObject class.
std::vector< std::string > StringVector
std::vector< const MCParticle * > MCParticleVector
StatusCode
The StatusCode enum.