9 #include "Pandora/AlgorithmHeaders.h" 22 CheatingCosmicRayIdentificationAlg::CheatingCosmicRayIdentificationAlg() :
23 m_maxNeutrinoFraction(0.5
f)
31 const PfoList *pPfoList(
nullptr);
32 PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_INITIALIZED, !=, PandoraContentApi::GetList(*
this,
m_inputPfoListName, pPfoList));
36 if (PandoraContentApi::GetSettings(*this)->ShouldDisplayAlgorithmInfo())
37 std::cout <<
"CheatingCosmicRayIdentificationAlg: pfo list " <<
m_inputPfoListName <<
" unavailable." << std::endl;
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())
67 return STATUS_CODE_SUCCESS;
74 PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, XmlHelper::ReadValue(xmlHandle,
77 PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, XmlHelper::ReadValue(xmlHandle,
81 PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle,
85 PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle,
88 PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle,
91 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.