LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
lar_dl_content::DlClusterCharacterisationAlgorithm Class Reference

DlClusterCharacterisationBaseAlgorithm class. More...

#include "DlClusterCharacterisationAlgorithm.h"

Inheritance diagram for lar_dl_content::DlClusterCharacterisationAlgorithm:
lar_content::ClusterCharacterisationBaseAlgorithm

Public Member Functions

 DlClusterCharacterisationAlgorithm ()
 Default constructor. More...
 
 ~DlClusterCharacterisationAlgorithm ()
 Destructor. More...
 

Protected Member Functions

bool IsClearTrack (const pandora::Cluster *const pCluster) const
 Whether cluster is identified as a clear track. More...
 
pandora::StatusCode ReadSettings (const pandora::TiXmlHandle xmlHandle)
 
pandora::StatusCode Run ()
 

Protected Attributes

pandora::StringVector m_inputClusterListNames
 The names of the input cluster lists. More...
 
bool m_zeroMode
 Whether to zero all existing cluster particle id, overrides all other parameters. More...
 
bool m_overwriteExistingId
 Whether to consider any clusters that already have an assigned particle id. More...
 
bool m_useUnavailableClusters
 Whether to consider clusters that are already constituents of a pfo. More...
 

Detailed Description

DlClusterCharacterisationBaseAlgorithm class.

Definition at line 21 of file DlClusterCharacterisationAlgorithm.h.

Constructor & Destructor Documentation

lar_dl_content::DlClusterCharacterisationAlgorithm::DlClusterCharacterisationAlgorithm ( )

Default constructor.

Definition at line 23 of file DlClusterCharacterisationAlgorithm.cc.

24 {
25 }
lar_dl_content::DlClusterCharacterisationAlgorithm::~DlClusterCharacterisationAlgorithm ( )

Destructor.

Definition at line 29 of file DlClusterCharacterisationAlgorithm.cc.

30 {
31 }

Member Function Documentation

bool lar_dl_content::DlClusterCharacterisationAlgorithm::IsClearTrack ( const pandora::Cluster *const  pCluster) const
protectedvirtual

Whether cluster is identified as a clear track.

Parameters
pClusteraddress of the relevant cluster
Returns
boolean

Implements lar_content::ClusterCharacterisationBaseAlgorithm.

Definition at line 35 of file DlClusterCharacterisationAlgorithm.cc.

References util::begin(), util::end(), f, lar_content::LArCaloHit::GetTrackProbability(), and pmtana::mean().

36 {
37  const OrderedCaloHitList &orderedCaloHitList{pCluster->GetOrderedCaloHitList()};
38  CaloHitList caloHits;
39  orderedCaloHitList.FillCaloHitList(caloHits);
40  const CaloHitList &isolatedHits{pCluster->GetIsolatedCaloHitList()};
41  caloHits.insert(caloHits.end(), isolatedHits.begin(), isolatedHits.end());
42  FloatVector trackLikelihoods;
43  try
44  {
45  for (const CaloHit *pCaloHit : caloHits)
46  {
47  const LArCaloHit *pLArCaloHit{dynamic_cast<const LArCaloHit *>(pCaloHit)};
48  const float pTrack{pLArCaloHit->GetTrackProbability()};
49  const float pShower{pLArCaloHit->GetShowerProbability()};
50  if ((pTrack + pShower) > std::numeric_limits<float>::epsilon())
51  trackLikelihoods.emplace_back(pTrack / (pTrack + pShower));
52  }
53 
54  const unsigned long N{trackLikelihoods.size()};
55  if (N > 0)
56  {
57  float mean{std::accumulate(std::begin(trackLikelihoods), std::end(trackLikelihoods), 0.f) / N};
58  if (mean >= 0.5f)
59  return true;
60  else
61  return false;
62  }
63  }
64  catch (const StatusCodeException &)
65  {
66  }
67 
68  return true;
69 }
LAr calo hit class.
Definition: LArCaloHit.h:39
TFile f
Definition: plotHisto.C:6
decltype(auto) constexpr end(T &&obj)
ADL-aware version of std::end.
Definition: StdUtils.h:77
double mean(const std::vector< short > &wf, size_t start, size_t nsample)
Definition: UtilFunc.cxx:13
decltype(auto) constexpr begin(T &&obj)
ADL-aware version of std::begin.
Definition: StdUtils.h:69
float GetTrackProbability() const
Get the probability that the hit is track-like.
Definition: LArCaloHit.h:210
StatusCode lar_dl_content::DlClusterCharacterisationAlgorithm::ReadSettings ( const pandora::TiXmlHandle  xmlHandle)
protected

Definition at line 73 of file DlClusterCharacterisationAlgorithm.cc.

74 {
75  return ClusterCharacterisationBaseAlgorithm::ReadSettings(xmlHandle);
76 }
StatusCode lar_content::ClusterCharacterisationBaseAlgorithm::Run ( )
protectedinherited

Definition at line 36 of file ClusterCharacterisationBaseAlgorithm.cc.

References lar_content::ClusterCharacterisationBaseAlgorithm::IsClearTrack(), lar_content::ClusterCharacterisationBaseAlgorithm::m_inputClusterListNames, lar_content::ClusterCharacterisationBaseAlgorithm::m_overwriteExistingId, lar_content::ClusterCharacterisationBaseAlgorithm::m_useUnavailableClusters, and lar_content::ClusterCharacterisationBaseAlgorithm::m_zeroMode.

37 {
38  for (const std::string &clusterListName : m_inputClusterListNames)
39  {
40  const ClusterList *pClusterList = NULL;
41  PANDORA_RETURN_RESULT_IF_AND_IF(
42  STATUS_CODE_SUCCESS, STATUS_CODE_NOT_INITIALIZED, !=, PandoraContentApi::GetList(*this, clusterListName, pClusterList));
43 
44  if (!pClusterList || pClusterList->empty())
45  {
46  if (PandoraContentApi::GetSettings(*this)->ShouldDisplayAlgorithmInfo())
47  std::cout << "ClusterCharacterisationBaseAlgorithm: unable to find cluster list " << clusterListName << std::endl;
48 
49  continue;
50  }
51 
52  if (m_zeroMode)
53  {
54  for (const Cluster *const pCluster : *pClusterList)
55  {
56  PandoraContentApi::Cluster::Metadata metadata;
57  metadata.m_particleId = UNKNOWN_PARTICLE_TYPE;
58  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::Cluster::AlterMetadata(*this, pCluster, metadata));
59  }
60 
61  return STATUS_CODE_SUCCESS;
62  }
63 
64  for (const Cluster *const pCluster : *pClusterList)
65  {
66  if (!m_overwriteExistingId && (UNKNOWN_PARTICLE_TYPE != pCluster->GetParticleId()))
67  continue;
68 
69  if (!m_useUnavailableClusters && !PandoraContentApi::IsAvailable(*this, pCluster))
70  continue;
71 
72  PandoraContentApi::Cluster::Metadata metadata;
73 
74  if (this->IsClearTrack(pCluster))
75  {
76  metadata.m_particleId = MU_MINUS;
77  }
78  else
79  {
80  metadata.m_particleId = E_MINUS;
81  }
82 
83  if (pCluster->GetParticleId() != metadata.m_particleId.Get())
84  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::Cluster::AlterMetadata(*this, pCluster, metadata));
85  }
86  }
87 
88  return STATUS_CODE_SUCCESS;
89 }
bool m_overwriteExistingId
Whether to consider any clusters that already have an assigned particle id.
bool m_useUnavailableClusters
Whether to consider clusters that are already constituents of a pfo.
pandora::StringVector m_inputClusterListNames
The names of the input cluster lists.
bool m_zeroMode
Whether to zero all existing cluster particle id, overrides all other parameters. ...
virtual bool IsClearTrack(const pandora::Cluster *const pCluster) const =0
Whether cluster is identified as a clear track.

Member Data Documentation

pandora::StringVector lar_content::ClusterCharacterisationBaseAlgorithm::m_inputClusterListNames
protectedinherited
bool lar_content::ClusterCharacterisationBaseAlgorithm::m_overwriteExistingId
protectedinherited

Whether to consider any clusters that already have an assigned particle id.

Definition at line 49 of file ClusterCharacterisationBaseAlgorithm.h.

Referenced by lar_content::ClusterCharacterisationBaseAlgorithm::ReadSettings(), and lar_content::ClusterCharacterisationBaseAlgorithm::Run().

bool lar_content::ClusterCharacterisationBaseAlgorithm::m_useUnavailableClusters
protectedinherited

Whether to consider clusters that are already constituents of a pfo.

Definition at line 50 of file ClusterCharacterisationBaseAlgorithm.h.

Referenced by lar_content::ClusterCharacterisationBaseAlgorithm::ReadSettings(), and lar_content::ClusterCharacterisationBaseAlgorithm::Run().

bool lar_content::ClusterCharacterisationBaseAlgorithm::m_zeroMode
protectedinherited

Whether to zero all existing cluster particle id, overrides all other parameters.

Definition at line 47 of file ClusterCharacterisationBaseAlgorithm.h.

Referenced by lar_content::ClusterCharacterisationBaseAlgorithm::ReadSettings(), and lar_content::ClusterCharacterisationBaseAlgorithm::Run().


The documentation for this class was generated from the following files: