LArSoft  v10_06_00
Liquid Argon Software toolkit - https://larsoft.org/
lar_content::RandomClusteringAlgorithm Class Reference

RandomClusteringAlgorithm class. More...

#include "RandomClusteringAlgorithm.h"

Inheritance diagram for lar_content::RandomClusteringAlgorithm:

Public Member Functions

 RandomClusteringAlgorithm ()=default
 Default constructor. More...
 
 ~RandomClusteringAlgorithm ()=default
 Default destructor. More...
 

Private Member Functions

pandora::StatusCode Run ()
 
pandora::StatusCode ReadSettings (const pandora::TiXmlHandle xmlHandle)
 

Private Attributes

unsigned int m_numNewClusters
 Number of new random clusters to generate from original cluster list. More...
 

Detailed Description

RandomClusteringAlgorithm class.

Definition at line 22 of file RandomClusteringAlgorithm.h.

Constructor & Destructor Documentation

lar_content::RandomClusteringAlgorithm::RandomClusteringAlgorithm ( )
default

Default constructor.

lar_content::RandomClusteringAlgorithm::~RandomClusteringAlgorithm ( )
default

Default destructor.

Member Function Documentation

StatusCode lar_content::RandomClusteringAlgorithm::ReadSettings ( const pandora::TiXmlHandle  xmlHandle)
private

Definition at line 62 of file RandomClusteringAlgorithm.cc.

63 {
64  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, XmlHelper::ReadValue(xmlHandle, "NumNewClusters", m_numNewClusters));
65  if (m_numNewClusters == 0)
66  return STATUS_CODE_INVALID_PARAMETER;
67 
68  return STATUS_CODE_SUCCESS;
69 }
unsigned int m_numNewClusters
Number of new random clusters to generate from original cluster list.
StatusCode lar_content::RandomClusteringAlgorithm::Run ( )
private

Definition at line 24 of file RandomClusteringAlgorithm.cc.

25 {
26  const CaloHitList *pCaloHits{nullptr};
27  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::GetCurrentList(*this, pCaloHits));
28 
29  if (pCaloHits->size() < m_numNewClusters)
30  return STATUS_CODE_SUCCESS;
31 
32  std::vector<unsigned int> idxs, splitIdxs;
33  for (unsigned int i = 0; i < pCaloHits->size(); i++)
34  idxs.emplace_back(i);
35  std::shuffle(idxs.begin(), idxs.end(), std::default_random_engine(0));
36  for (unsigned int i = 0; i < m_numNewClusters - 1; i++)
37  splitIdxs.emplace_back(idxs.at(i));
38  std::sort(splitIdxs.begin(), splitIdxs.end());
39 
40  std::vector<unsigned int>::const_iterator splitItr{splitIdxs.cbegin()};
41  PandoraContentApi::Cluster::Parameters params;
42  unsigned int cntr{0};
43  for (const CaloHit *const pCaloHit : *pCaloHits)
44  {
45  if (splitItr != splitIdxs.cend() && cntr++ > *splitItr)
46  {
47  const Cluster *pCluster{nullptr};
48  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::Cluster::Create(*this, params, pCluster));
49  params.m_caloHitList.clear();
50  splitItr++;
51  }
52  params.m_caloHitList.emplace_back(pCaloHit);
53  }
54  const Cluster *pCluster{nullptr};
55  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::Cluster::Create(*this, params, pCluster));
56 
57  return STATUS_CODE_SUCCESS;
58 }
intermediate_table::const_iterator const_iterator
unsigned int m_numNewClusters
Number of new random clusters to generate from original cluster list.

Member Data Documentation

unsigned int lar_content::RandomClusteringAlgorithm::m_numNewClusters
private

Number of new random clusters to generate from original cluster list.

Definition at line 40 of file RandomClusteringAlgorithm.h.


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