9 #include "Pandora/AlgorithmHeaders.h" 
   19 using namespace lar_content;
 
   21 namespace lar_dl_content
 
   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. 
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
virtual ~DlHitValidationAlgorithm()
required by fuzzyCluster table::sbnd_g4_services gaushitTruthMatch pandora
BEGIN_PROLOG could also be cout
float GetTrackProbability() const 
Get the probability that the hit is track-like.