9 #include "Pandora/AlgorithmHeaders.h" 24 DlHitValidationAlgorithm::DlHitValidationAlgorithm() : m_confusionU(), m_confusionV(), m_confusionW()
32 PANDORA_MONITORING_API(SetTreeVariable(this->GetPandora(),
"confusion_tree",
"u_true_shower",
m_confusionU[0][0]));
33 PANDORA_MONITORING_API(SetTreeVariable(this->GetPandora(),
"confusion_tree",
"u_false_shower",
m_confusionU[1][0]));
34 PANDORA_MONITORING_API(SetTreeVariable(this->GetPandora(),
"confusion_tree",
"u_false_track",
m_confusionU[0][1]));
35 PANDORA_MONITORING_API(SetTreeVariable(this->GetPandora(),
"confusion_tree",
"u_true_track",
m_confusionU[1][1]));
36 PANDORA_MONITORING_API(SetTreeVariable(this->GetPandora(),
"confusion_tree",
"v_true_shower",
m_confusionV[0][0]));
37 PANDORA_MONITORING_API(SetTreeVariable(this->GetPandora(),
"confusion_tree",
"v_false_shower",
m_confusionV[1][0]));
38 PANDORA_MONITORING_API(SetTreeVariable(this->GetPandora(),
"confusion_tree",
"v_false_track",
m_confusionV[0][1]));
39 PANDORA_MONITORING_API(SetTreeVariable(this->GetPandora(),
"confusion_tree",
"v_true_track",
m_confusionV[1][1]));
40 PANDORA_MONITORING_API(SetTreeVariable(this->GetPandora(),
"confusion_tree",
"w_true_shower",
m_confusionW[0][0]));
41 PANDORA_MONITORING_API(SetTreeVariable(this->GetPandora(),
"confusion_tree",
"w_false_shower",
m_confusionW[1][0]));
42 PANDORA_MONITORING_API(SetTreeVariable(this->GetPandora(),
"confusion_tree",
"w_false_track",
m_confusionW[0][1]));
43 PANDORA_MONITORING_API(SetTreeVariable(this->GetPandora(),
"confusion_tree",
"w_true_track",
m_confusionW[1][1]));
44 PANDORA_MONITORING_API(FillTree(this->GetPandora(),
"confusion_tree"));
47 PANDORA_MONITORING_API(SaveTree(this->GetPandora(),
"confusion_tree",
"confusion.root",
"UPDATE"));
49 catch (
const StatusCodeException &)
51 std::cout <<
"DlHitValidationAlgorithm: Unable to write confusion_tree to file" <<
std::endl;
59 const int SHOWER_IDX{0}, TRACK_IDX{1};
62 const CaloHitList *pCaloHitList(
nullptr);
63 PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::GetList(*
this, listName, pCaloHitList));
64 const MCParticleList *pMCParticleList(
nullptr);
65 PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::GetCurrentList(*
this, pMCParticleList));
67 const HitType view{pCaloHitList->front()->GetHitType()};
69 if (!(view == TPC_VIEW_U || view == TPC_VIEW_V || view == TPC_VIEW_W))
70 return STATUS_CODE_NOT_ALLOWED;
78 LArMCParticleHelper::SelectReconstructableMCParticles(
79 pMCParticleList, pCaloHitList, parameters, LArMCParticleHelper::IsBeamNeutrinoFinalState, targetMCParticleToHitsMap);
81 for (
const CaloHit *pCaloHit : *pCaloHitList)
85 const MCParticle *
const pMCParticle(MCParticleHelper::GetMainMCParticle(pCaloHit));
86 const int pdg{
std::abs(pMCParticle->GetParticleId())};
87 const int truth{(
pdg == 11 ||
pdg == 22) ? SHOWER_IDX : TRACK_IDX};
90 const float pShower{pLArCaloHit->GetShowerProbability()};
91 const int cls{(pShower > pTrack) ? SHOWER_IDX : TRACK_IDX};
92 if (view == TPC_VIEW_U)
94 else if (view == TPC_VIEW_V)
99 catch (
const StatusCodeException &)
106 return STATUS_CODE_SUCCESS;
113 PANDORA_RETURN_RESULT_IF_AND_IF(
114 STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadVectorOfValues(xmlHandle,
"CaloHitListNames",
m_caloHitListNames));
116 return STATUS_CODE_SUCCESS;
pandora::StatusCode Run()
std::unordered_map< const pandora::MCParticle *, pandora::CaloHitList > MCContributionMap
int m_confusionW[2][2]
Confusion matrix for the W view.
Header file for the lar calo hit class.
pandora::StringVector m_caloHitListNames
Name of input calo hit list.
int m_confusionU[2][2]
Confusion matrix for the U view.
Header file for the lar monitoring helper helper class.
unsigned int m_minHitsForGoodView
the minimum number of Hits for a good view
float m_maxPhotonPropagation
the maximum photon propagation length
Header file for the deep learning track shower id validation algorithm.
Header file for the lar monte carlo particle helper helper class.
int m_confusionV[2][2]
Confusion matrix for the V view.
static int max(int a, int b)
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
virtual ~DlHitValidationAlgorithm()
QTextStream & endl(QTextStream &s)
float GetTrackProbability() const
Get the probability that the hit is track-like.