9 #include "Pandora/AlgorithmHeaders.h" 22 CheatingCosmicRayIdentificationAlg::CheatingCosmicRayIdentificationAlg() : m_maxNeutrinoFraction(0.5
f)
30 const PfoList *pPfoList(
nullptr);
31 PANDORA_RETURN_RESULT_IF_AND_IF(
32 STATUS_CODE_SUCCESS, STATUS_CODE_NOT_INITIALIZED, !=, PandoraContentApi::GetList(*
this,
m_inputPfoListName, pPfoList));
36 if (PandoraContentApi::GetSettings(*this)->ShouldDisplayAlgorithmInfo())
39 return STATUS_CODE_SUCCESS;
42 PfoList outputPfoList, outputDaughterPfoList;
44 for (
const ParticleFlowObject *
const pPfo : *pPfoList)
46 if (!pPfo->GetParentPfoList().empty())
49 PfoList downstreamPfos;
52 float thisNeutrinoWeight(0.
f), thisTotalWeight(0.
f);
55 if ((thisTotalWeight < std::numeric_limits<float>::epsilon()) || ((thisNeutrinoWeight / thisTotalWeight) <
m_maxNeutrinoFraction))
56 outputPfoList.push_back(pPfo);
59 if (!outputPfoList.empty())
63 if (!outputDaughterPfoList.empty())
64 PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=,
68 return STATUS_CODE_SUCCESS;
75 PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, XmlHelper::ReadValue(xmlHandle,
"InputPfoListName",
m_inputPfoListName));
77 PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, XmlHelper::ReadValue(xmlHandle,
"OutputPfoListName",
m_outputPfoListName));
80 PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=,
84 PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=,
87 PANDORA_RETURN_RESULT_IF_AND_IF(
88 STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle,
"MaxNeutrinoFraction",
m_maxNeutrinoFraction));
90 return STATUS_CODE_SUCCESS;
Header file for the pfo helper class.
Header file for the cosmic ray identification cheater class.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
std::string m_inputPfoListName
The input pfo list name.
std::string m_inputDaughterPfoListName
The input daughter pfo list name (if not specified, will assume same as main input list) ...
std::string m_outputDaughterPfoListName
The output daughter pfo list name (if not specified, will assume same as main output list) ...
float m_maxNeutrinoFraction
The maximum true neutrino fraction in a particle to be labelled as a cosmic ray.
Header file for the lar monte carlo particle helper helper class.
pandora::StatusCode Run()
std::string m_outputPfoListName
The output pfo list name.
static void GetTargetParticleWeight(const pandora::PfoList *const pPfoList, float &targetParticleWeight, float &totalWeight, std::function< bool(const pandora::MCParticle *const)> fCriteria)
Get the target particle weight in a list of pfos.
static void GetAllDownstreamPfos(const pandora::PfoList &inputPfoList, pandora::PfoList &outputPfoList)
Get a flat list of all pfos, recursively, of all daughters associated with those pfos in an input lis...
static bool IsNeutrino(const pandora::MCParticle *const pMCParticle)
Whether a mc particle is a neutrino or antineutrino.
QTextStream & endl(QTextStream &s)