9 #include "Pandora/AlgorithmHeaders.h"    11 #include "Managers/GeometryManager.h"    25 TrackParticleBuildingAlgorithm::TrackParticleBuildingAlgorithm() : m_slidingFitHalfWindow(20)
    55         const float layerPitch(pFirstLArTPC->GetWirePitchW());
    61         if (trackStateVector.empty())
    67         pfoParameters.m_particleId = (
LArPfoHelper::IsTrack(pInputPfo) ? pInputPfo->GetParticleId() : MU_MINUS);
    68         pfoParameters.m_charge = PdgTable::GetParticleCharge(pfoParameters.m_particleId.Get());
    69         pfoParameters.m_mass = PdgTable::GetParticleMass(pfoParameters.m_particleId.Get());
    70         pfoParameters.m_energy = 0.f;
    71         pfoParameters.m_momentum = pInputPfo->GetMomentum();
    72         pfoParameters.m_propertiesToAdd = pInputPfo->GetPropertiesMap();
    75         PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::ParticleFlowObject::Create(*
this, pfoParameters, pOutputPfo, trackFactory));
    79             throw StatusCodeException(STATUS_CODE_FAILURE);
    82         PandoraContentApi::ParticleFlowObject::Metadata pfodata;
    84         PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::ParticleFlowObject::AlterMetadata(*
this, pOutputPfo, pfodata));
    86         const Vertex *pOutputVertex(NULL);
    88         PandoraContentApi::Vertex::Parameters vtxParameters;
    90         vtxParameters.m_vertexLabel = pInputVertex->GetVertexLabel();
    91         vtxParameters.m_vertexType = pInputVertex->GetVertexType();
    93         PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::Vertex::Create(*
this, vtxParameters, pOutputVertex));
    94         PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::AddToPfo(*
this, pOutputPfo, pOutputVertex));
    96     catch (StatusCodeException &statusCodeException)
    98         if (STATUS_CODE_FAILURE == statusCodeException.GetStatusCode())
    99             throw statusCodeException;
   107     PANDORA_RETURN_RESULT_IF_AND_IF(
   108         STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, 
"SlidingFitHalfWindow", 
m_slidingFitHalfWindow));
 virtual pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
 
Header file for the pfo helper class. 
 
unsigned int m_slidingFitHalfWindow
 
Header file for the lar pfo class. 
 
static const pandora::Vertex * GetVertex(const pandora::ParticleFlowObject *const pPfo)
Get the pfo vertex. 
 
static void GetSlidingFitTrajectory(const pandora::CartesianPointVector &pointVector, const pandora::CartesianVector &vertexPosition, const unsigned int layerWindow, const float layerPitch, LArTrackStateVector &trackStateVector, pandora::IntVector *const pIndexVector=nullptr)
Apply 3D sliding fit to a set of 3D points and return track trajectory. 
 
const pandora::CartesianVector & GetVertexDirection() const 
Get vertex direction. 
 
static bool IsTrack(const pandora::ParticleFlowObject *const pPfo)
Return track flag based on Pfo Particle ID. 
 
Header file for the 3D track building algorithm class. 
 
LArTrackStateVector m_trackStateVector
 
Header file for the cluster helper class. 
 
static bool IsNeutrino(const pandora::ParticleFlowObject *const pPfo)
Whether a pfo is a neutrino or (antineutrino) 
 
void CreatePfo(const pandora::ParticleFlowObject *const pInputPfo, const pandora::ParticleFlowObject *&pOutputPfo) const 
Create specialised Pfo from an generic input Pfo. 
 
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
 
static bool IsFinalState(const pandora::ParticleFlowObject *const pPfo)
Whether a pfo is a primary parent particle. 
 
lar pfo object factory responsible for pfo creation 
 
static bool IsNeutrinoFinalState(const pandora::ParticleFlowObject *const pPfo)
Whether a pfo is a final-state particle from a neutrino (or antineutrino) interaction. 
 
boost::graph_traits< ModuleGraph >::vertex_descriptor Vertex
 
decltype(auto) constexpr begin(T &&obj)
ADL-aware version of std::begin. 
 
std::vector< LArTrackState > LArTrackStateVector
 
second_as<> second
Type of time stored in seconds, in double precision. 
 
const pandora::CartesianVector & GetVertexPosition() const 
Get vertex position. 
 
GeomAnalyzerI * GetGeometry(void)