LArSoft  v06_85_00
Liquid Argon Software toolkit - http://larsoft.org/
lar_content::BoundedClusterMopUpAlgorithm Class Reference

BoundedClusterMopUpAlgorithm class. More...

#include "BoundedClusterMopUpAlgorithm.h"

Inheritance diagram for lar_content::BoundedClusterMopUpAlgorithm:
lar_content::ClusterMopUpBaseAlgorithm lar_content::MopUpBaseAlgorithm

Classes

class  XSampling
 XSampling class. More...
 

Public Member Functions

 BoundedClusterMopUpAlgorithm ()
 Default constructor. More...
 
template<typename T >
const std::string GetListName (const T *const pT) const
 Find the name of the list hosting a specific object. More...
 

Protected Types

typedef std::unordered_map< const pandora::Cluster *, float > AssociationDetails
 
typedef std::unordered_map< const pandora::Cluster *, AssociationDetailsClusterAssociationMap
 

Protected Member Functions

virtual pandora::StatusCode Run ()
 
virtual void GetPfoClusterLists (pandora::ClusterList &clusterListU, pandora::ClusterList &clusterListV, pandora::ClusterList &clusterListW) const
 Get the two dimensional clusters contained in the input pfo list, divided into three different views. More...
 
virtual void GetDaughterClusterLists (pandora::ClusterList &clusterListU, pandora::ClusterList &clusterListV, pandora::ClusterList &clusterListW) const
 Get the two dimensional clusters contained in the input remant/daughter cluster lists, divided into three different views. More...
 
virtual void GetClusterLists (const pandora::ClusterList &inputClusterList, const bool availabilityFlag, pandora::ClusterList &clusterListU, pandora::ClusterList &clusterListV, pandora::ClusterList &clusterListW) const
 Get the two dimensional clusters contained in an input cluster list, divided into three different views. More...
 
virtual void MakeClusterMerges (const ClusterAssociationMap &clusterAssociationMap) const
 Make the cluster merges specified in the cluster association map, using list name information in the cluster list name map. More...
 

Protected Attributes

pandora::StringVector m_pfoListNames
 The list of pfo list names. More...
 
bool m_excludePfosContainingTracks
 Whether to exclude any pfos containing clusters flagged as fixed tracks. More...
 
pandora::StringVector m_daughterListNames
 The list of potential daughter object list names. More...
 

Private Member Functions

void ClusterMopUp (const pandora::ClusterList &pfoClusters, const pandora::ClusterList &remnantClusters) const
 Cluster mop up for a single view. This function is responsible for instructing pandora to make cluster alterations. More...
 
void GetShowerPositionMap (const TwoDSlidingShowerFitResult &fitResult, const XSampling &xSampling, ShowerPositionMap &showerPositionMap) const
 Get the shower position map containing high and low edge z positions in bins of x. More...
 
float GetBoundedFraction (const pandora::Cluster *const pCluster, const XSampling &xSampling, const ShowerPositionMap &showerPositionMap) const
 Get the fraction of hits in a cluster bounded by a specified shower position map. More...
 
pandora::StatusCode ReadSettings (const pandora::TiXmlHandle xmlHandle)
 

Private Attributes

unsigned int m_slidingFitWindow
 The layer window for the sliding linear fits. More...
 
float m_showerEdgeMultiplier
 Artificially tune width of shower envelope so as to make it more/less inclusive. More...
 
float m_minBoundedFraction
 The minimum cluster bounded fraction for merging. More...
 

Detailed Description

Member Typedef Documentation

typedef std::unordered_map<const pandora::Cluster*, float> lar_content::ClusterMopUpBaseAlgorithm::AssociationDetails
protectedinherited

Definition at line 71 of file ClusterMopUpBaseAlgorithm.h.

typedef std::unordered_map<const pandora::Cluster*, AssociationDetails> lar_content::ClusterMopUpBaseAlgorithm::ClusterAssociationMap
protectedinherited

Definition at line 72 of file ClusterMopUpBaseAlgorithm.h.

Constructor & Destructor Documentation

lar_content::BoundedClusterMopUpAlgorithm::BoundedClusterMopUpAlgorithm ( )

Default constructor.

Definition at line 21 of file BoundedClusterMopUpAlgorithm.cc.

21  :
25 {
26 }
float m_minBoundedFraction
The minimum cluster bounded fraction for merging.
TFile f
Definition: plotHisto.C:6
float m_showerEdgeMultiplier
Artificially tune width of shower envelope so as to make it more/less inclusive.
unsigned int m_slidingFitWindow
The layer window for the sliding linear fits.

Member Function Documentation

void lar_content::BoundedClusterMopUpAlgorithm::ClusterMopUp ( const pandora::ClusterList &  pfoClusters,
const pandora::ClusterList &  remnantClusters 
) const
privatevirtual

Cluster mop up for a single view. This function is responsible for instructing pandora to make cluster alterations.

Parameters
pfoClustersthe list of pfo clusters
remnantClustersthe list of remnant clusters

Implements lar_content::ClusterMopUpBaseAlgorithm.

Definition at line 30 of file BoundedClusterMopUpAlgorithm.cc.

References GetBoundedFraction(), lar_content::TwoDSlidingShowerFitResult::GetShowerFitResult(), GetShowerPositionMap(), lar_content::LArGeometryHelper::GetWireZPitch(), m_minBoundedFraction, m_showerEdgeMultiplier, m_slidingFitWindow, lar_content::ClusterMopUpBaseAlgorithm::MakeClusterMerges(), and lar_content::LArClusterHelper::SortByNHits().

31 {
32  ClusterAssociationMap clusterAssociationMap;
33  const float slidingFitPitch(LArGeometryHelper::GetWireZPitch(this->GetPandora()));
34 
35  ClusterVector sortedPfoClusters(pfoClusters.begin(), pfoClusters.end());
36  std::sort(sortedPfoClusters.begin(), sortedPfoClusters.end(), LArClusterHelper::SortByNHits);
37 
38  ClusterVector sortedRemnantClusters(remnantClusters.begin(), remnantClusters.end());
39  std::sort(sortedRemnantClusters.begin(), sortedRemnantClusters.end(), LArClusterHelper::SortByNHits);
40 
41  for (const Cluster *const pPfoCluster : sortedPfoClusters)
42  {
43  const TwoDSlidingShowerFitResult fitResult(pPfoCluster, m_slidingFitWindow, slidingFitPitch, m_showerEdgeMultiplier);
44 
45  ShowerPositionMap showerPositionMap;
46  const XSampling xSampling(fitResult.GetShowerFitResult());
47  this->GetShowerPositionMap(fitResult, xSampling, showerPositionMap);
48 
49  for (const Cluster *const pRemnantCluster : sortedRemnantClusters)
50  {
51  const float boundedFraction(this->GetBoundedFraction(pRemnantCluster, xSampling, showerPositionMap));
52 
53  if (boundedFraction < m_minBoundedFraction)
54  continue;
55 
56  AssociationDetails &associationDetails(clusterAssociationMap[pRemnantCluster]);
57 
58  if (!associationDetails.insert(AssociationDetails::value_type(pPfoCluster, boundedFraction)).second)
59  throw StatusCodeException(STATUS_CODE_ALREADY_PRESENT);
60  }
61  }
62 
63  this->MakeClusterMerges(clusterAssociationMap);
64 }
static bool SortByNHits(const pandora::Cluster *const pLhs, const pandora::Cluster *const pRhs)
Sort clusters by number of hits, then layer span, then inner layer, then position, then pulse-height.
virtual void MakeClusterMerges(const ClusterAssociationMap &clusterAssociationMap) const
Make the cluster merges specified in the cluster association map, using list name information in the ...
std::unordered_map< const pandora::Cluster *, float > AssociationDetails
std::unordered_map< const pandora::Cluster *, AssociationDetails > ClusterAssociationMap
float m_minBoundedFraction
The minimum cluster bounded fraction for merging.
static float GetWireZPitch(const pandora::Pandora &pandora, const float maxWirePitchDiscrepancy=0.01)
Return the wire pitch.
void GetShowerPositionMap(const TwoDSlidingShowerFitResult &fitResult, const XSampling &xSampling, ShowerPositionMap &showerPositionMap) const
Get the shower position map containing high and low edge z positions in bins of x.
std::map< int, ShowerExtent > ShowerPositionMap
float m_showerEdgeMultiplier
Artificially tune width of shower envelope so as to make it more/less inclusive.
float GetBoundedFraction(const pandora::Cluster *const pCluster, const XSampling &xSampling, const ShowerPositionMap &showerPositionMap) const
Get the fraction of hits in a cluster bounded by a specified shower position map. ...
std::vector< art::Ptr< recob::Cluster > > ClusterVector
unsigned int m_slidingFitWindow
The layer window for the sliding linear fits.
float lar_content::BoundedClusterMopUpAlgorithm::GetBoundedFraction ( const pandora::Cluster *const  pCluster,
const XSampling xSampling,
const ShowerPositionMap showerPositionMap 
) const
private

Get the fraction of hits in a cluster bounded by a specified shower position map.

Parameters
pClusteraddress of the cluster
xSamplingthe x sampling details
showerPositionMapthe shower position map
Returns
the fraction of bounded hits

Definition at line 96 of file BoundedClusterMopUpAlgorithm.cc.

References lar_content::BoundedClusterMopUpAlgorithm::XSampling::GetBin(), lar_content::BoundedClusterMopUpAlgorithm::XSampling::m_maxX, lar_content::BoundedClusterMopUpAlgorithm::XSampling::m_minX, lar_content::BoundedClusterMopUpAlgorithm::XSampling::m_nPoints, x, and z.

Referenced by ClusterMopUp().

97 {
98  if (((xSampling.m_maxX - xSampling.m_minX) < std::numeric_limits<float>::epsilon()) || (0 >= xSampling.m_nPoints) ||
99  (0 == pCluster->GetNCaloHits()))
100  {
101  throw StatusCodeException(STATUS_CODE_INVALID_PARAMETER);
102  }
103 
104  unsigned int nMatchedHits(0);
105  const OrderedCaloHitList &orderedCaloHitList(pCluster->GetOrderedCaloHitList());
106 
107  for (OrderedCaloHitList::const_iterator iter = orderedCaloHitList.begin(), iterEnd = orderedCaloHitList.end(); iter != iterEnd; ++iter)
108  {
109  for (CaloHitList::const_iterator hIter = iter->second->begin(), hIterEnd = iter->second->end(); hIter != hIterEnd; ++hIter)
110  {
111  const CaloHit *const pCaloHit = *hIter;
112  const float x(pCaloHit->GetPositionVector().GetX());
113  const float z(pCaloHit->GetPositionVector().GetZ());
114 
115  try
116  {
117  const int xBin(xSampling.GetBin(x));
118 
119  ShowerPositionMap::const_iterator positionIter = showerPositionMap.find(xBin);
120 
121  if ((showerPositionMap.end() != positionIter) && (z > positionIter->second.GetLowEdgeZ()) && (z < positionIter->second.GetHighEdgeZ()))
122  ++nMatchedHits;
123  }
124  catch (StatusCodeException &)
125  {
126  }
127  }
128  }
129 
130  return (static_cast<float>(nMatchedHits) / static_cast<float>(pCluster->GetNCaloHits()));
131 }
Float_t x
Definition: compare.C:6
Double_t z
Definition: plot.C:279
intermediate_table::const_iterator const_iterator
void lar_content::ClusterMopUpBaseAlgorithm::GetClusterLists ( const pandora::ClusterList &  inputClusterList,
const bool  availabilityFlag,
pandora::ClusterList &  clusterListU,
pandora::ClusterList &  clusterListV,
pandora::ClusterList &  clusterListW 
) const
protectedvirtualinherited

Get the two dimensional clusters contained in an input cluster list, divided into three different views.

Parameters
inputClusterListthe input cluster list
availabilityFlagonly clusters with matching availability will be considered
clusterListUto receive the list of clusters in the u view
clusterListVto receive the list of clusters in the v view
clusterListWto receive the list of clusters in the w view

Definition at line 82 of file ClusterMopUpBaseAlgorithm.cc.

References lar_content::LArClusterHelper::GetClusterHitType(), and target.

Referenced by lar_content::ClusterMopUpBaseAlgorithm::GetDaughterClusterLists(), and lar_content::ClusterMopUpBaseAlgorithm::GetPfoClusterLists().

84 {
85  for (ClusterList::const_iterator cIter = inputClusterList.begin(), cIterEnd = inputClusterList.end(); cIter != cIterEnd; ++cIter)
86  {
87  const Cluster *const pCluster(*cIter);
88 
89  if (availabilityFlag != pCluster->IsAvailable())
90  continue;
91 
92  const HitType hitType(LArClusterHelper::GetClusterHitType(pCluster));
93 
94  if ((TPC_VIEW_U != hitType) && (TPC_VIEW_V != hitType) && (TPC_VIEW_W != hitType))
95  continue;
96 
97  ClusterList &target((TPC_VIEW_U == hitType) ? clusterListU : (TPC_VIEW_V == hitType) ? clusterListV : clusterListW);
98  target.push_back(pCluster);
99  }
100 }
cout<< "-> Edep in the target
Definition: analysis.C:54
static pandora::HitType GetClusterHitType(const pandora::Cluster *const pCluster)
Get the hit type associated with a two dimensional cluster.
intermediate_table::const_iterator const_iterator
void lar_content::ClusterMopUpBaseAlgorithm::GetDaughterClusterLists ( pandora::ClusterList &  clusterListU,
pandora::ClusterList &  clusterListV,
pandora::ClusterList &  clusterListW 
) const
protectedvirtualinherited

Get the two dimensional clusters contained in the input remant/daughter cluster lists, divided into three different views.

Parameters
clusterListUto receive the list of clusters in the u view
clusterListVto receive the list of clusters in the v view
clusterListWto receive the list of clusters in the w view

Definition at line 67 of file ClusterMopUpBaseAlgorithm.cc.

References lar_content::ClusterMopUpBaseAlgorithm::GetClusterLists(), and lar_content::MopUpBaseAlgorithm::m_daughterListNames.

Referenced by lar_content::ClusterMopUpBaseAlgorithm::Run().

68 {
69  for (const std::string &daughterListName : m_daughterListNames)
70  {
71  const ClusterList *pClusterList(nullptr);
72 
73  if (STATUS_CODE_SUCCESS != PandoraContentApi::GetList(*this, daughterListName, pClusterList))
74  continue;
75 
76  this->GetClusterLists(*pClusterList, true, clusterListU, clusterListV, clusterListW);
77  }
78 }
virtual void GetClusterLists(const pandora::ClusterList &inputClusterList, const bool availabilityFlag, pandora::ClusterList &clusterListU, pandora::ClusterList &clusterListV, pandora::ClusterList &clusterListW) const
Get the two dimensional clusters contained in an input cluster list, divided into three different vie...
pandora::StringVector m_daughterListNames
The list of potential daughter object list names.
template<typename T >
template const std::string lar_content::MopUpBaseAlgorithm::GetListName ( const T *const  pT) const
inherited

Find the name of the list hosting a specific object.

Parameters
pTthe address of the object
Returns
the name of the list

Definition at line 19 of file MopUpBaseAlgorithm.cc.

Referenced by lar_content::IsolatedClusterMopUpAlgorithm::DissolveClustersToHits(), lar_content::ClusterMopUpBaseAlgorithm::MakeClusterMerges(), and lar_content::SlidingConeClusterMopUpAlgorithm::MakeClusterMerges().

20 {
21  std::string currentListName;
22  const MANAGED_CONTAINER<const T*> *pCurrentList(nullptr);
23  (void) PandoraContentApi::GetCurrentList(*this, pCurrentList, currentListName);
24 
25  if (pCurrentList && (pCurrentList->end() != std::find(pCurrentList->begin(), pCurrentList->end(), pT)))
26  return currentListName;
27 
28  for (const std::string &listName : m_daughterListNames)
29  {
30  const MANAGED_CONTAINER<const T*> *pList(nullptr);
31  (void) PandoraContentApi::GetList(*this, listName, pList);
32 
33  if (pList && (pList->end() != std::find(pList->begin(), pList->end(), pT)))
34  return listName;
35  }
36 
37  throw StatusCodeException(STATUS_CODE_NOT_FOUND);
38 }
pandora::StringVector m_daughterListNames
The list of potential daughter object list names.
void lar_content::ClusterMopUpBaseAlgorithm::GetPfoClusterLists ( pandora::ClusterList &  clusterListU,
pandora::ClusterList &  clusterListV,
pandora::ClusterList &  clusterListW 
) const
protectedvirtualinherited

Get the two dimensional clusters contained in the input pfo list, divided into three different views.

Parameters
clusterListUto receive the list of clusters in the u view
clusterListVto receive the list of clusters in the v view
clusterListWto receive the list of clusters in the w view

Definition at line 45 of file ClusterMopUpBaseAlgorithm.cc.

References lar_content::ClusterMopUpBaseAlgorithm::GetClusterLists(), lar_content::LArPfoHelper::IsTrack(), lar_content::ClusterMopUpBaseAlgorithm::m_excludePfosContainingTracks, and lar_content::ClusterMopUpBaseAlgorithm::m_pfoListNames.

Referenced by lar_content::ClusterMopUpBaseAlgorithm::Run().

46 {
47  for (StringVector::const_iterator sIter = m_pfoListNames.begin(), sIterEnd = m_pfoListNames.end(); sIter != sIterEnd; ++sIter)
48  {
49  const PfoList *pPfoList = NULL;
50  if (STATUS_CODE_SUCCESS != PandoraContentApi::GetList(*this, *sIter, pPfoList))
51  continue;
52 
53  for (PfoList::const_iterator pIter = pPfoList->begin(), pIterEnd = pPfoList->end(); pIter != pIterEnd; ++pIter)
54  {
55  const ParticleFlowObject *const pPfo = *pIter;
56 
58  continue;
59 
60  this->GetClusterLists(pPfo->GetClusterList(), false, clusterListU, clusterListV, clusterListW);
61  }
62  }
63 }
virtual void GetClusterLists(const pandora::ClusterList &inputClusterList, const bool availabilityFlag, pandora::ClusterList &clusterListU, pandora::ClusterList &clusterListV, pandora::ClusterList &clusterListW) const
Get the two dimensional clusters contained in an input cluster list, divided into three different vie...
bool m_excludePfosContainingTracks
Whether to exclude any pfos containing clusters flagged as fixed tracks.
static bool IsTrack(const pandora::ParticleFlowObject *const pPfo)
Return track flag based on Pfo Particle ID.
intermediate_table::const_iterator const_iterator
pandora::StringVector m_pfoListNames
The list of pfo list names.
void lar_content::BoundedClusterMopUpAlgorithm::GetShowerPositionMap ( const TwoDSlidingShowerFitResult fitResult,
const XSampling xSampling,
ShowerPositionMap showerPositionMap 
) const
private

Get the shower position map containing high and low edge z positions in bins of x.

Parameters
fitResultthe sliding shower fit result
xSamplingthe x sampling details
showerPositionMapto receive the shower position map

Definition at line 68 of file BoundedClusterMopUpAlgorithm.cc.

References lar_content::BoundedClusterMopUpAlgorithm::XSampling::GetBin(), lar_content::TwoDSlidingShowerFitResult::GetShowerEdges(), lar_content::BoundedClusterMopUpAlgorithm::XSampling::m_maxX, lar_content::BoundedClusterMopUpAlgorithm::XSampling::m_minX, lar_content::BoundedClusterMopUpAlgorithm::XSampling::m_nPoints, n, and x.

Referenced by ClusterMopUp().

70 {
71  for (int n=0; n <= xSampling.m_nPoints; ++n)
72  {
73  const float x(xSampling.m_minX + (xSampling.m_maxX - xSampling.m_minX) * static_cast<float>(n) / static_cast<float>(xSampling.m_nPoints));
74 
75  FloatVector edgePositions;
76  fitResult.GetShowerEdges(x, false, edgePositions);
77 
78  if (edgePositions.size() < 2)
79  continue;
80 
81  std::sort(edgePositions.begin(), edgePositions.end());
82 
83  try
84  {
85  const int xBin(xSampling.GetBin(x));
86  showerPositionMap.insert(ShowerPositionMap::value_type(xBin, ShowerExtent(x, edgePositions.front(), edgePositions.back())));
87  }
88  catch (StatusCodeException &)
89  {
90  }
91  }
92 }
Float_t x
Definition: compare.C:6
Char_t n[5]
void lar_content::ClusterMopUpBaseAlgorithm::MakeClusterMerges ( const ClusterAssociationMap clusterAssociationMap) const
protectedvirtualinherited

Make the cluster merges specified in the cluster association map, using list name information in the cluster list name map.

Parameters
clusterAssociationMapthe cluster association map

Definition at line 104 of file ClusterMopUpBaseAlgorithm.cc.

References lar_content::MopUpBaseAlgorithm::GetListName(), max, and lar_content::LArClusterHelper::SortByNHits().

Referenced by lar_content::ConeClusterMopUpAlgorithm::ClusterMopUp(), lar_content::NearbyClusterMopUpAlgorithm::ClusterMopUp(), and ClusterMopUp().

105 {
106  ClusterVector sortedRemnantClusters;
107  for (const auto &remnantMapEntry : clusterAssociationMap) sortedRemnantClusters.push_back(remnantMapEntry.first);
108  std::sort(sortedRemnantClusters.begin(), sortedRemnantClusters.end(), LArClusterHelper::SortByNHits);
109 
110  for (const Cluster *const pRemnantCluster : sortedRemnantClusters)
111  {
112  const AssociationDetails &associationDetails(clusterAssociationMap.at(pRemnantCluster));
113  const Cluster *pBestPfoCluster(nullptr);
114  float bestFigureOfMerit(-std::numeric_limits<float>::max());
115 
116  ClusterVector sortedPfoClusters;
117  for (const auto &pfoMapEntry : associationDetails) sortedPfoClusters.push_back(pfoMapEntry.first);
118  std::sort(sortedPfoClusters.begin(), sortedPfoClusters.end(), LArClusterHelper::SortByNHits);
119 
120  for (const Cluster *const pPfoCluster : sortedPfoClusters)
121  {
122  const float figureOfMerit(associationDetails.at(pPfoCluster));
123 
124  if (figureOfMerit > bestFigureOfMerit)
125  {
126  pBestPfoCluster = pPfoCluster;
127  bestFigureOfMerit = figureOfMerit;
128  }
129  }
130 
131  if (!pBestPfoCluster)
132  continue;
133 
134  PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::MergeAndDeleteClusters(*this, pBestPfoCluster, pRemnantCluster,
135  this->GetListName(pBestPfoCluster), this->GetListName(pRemnantCluster)));
136  }
137 }
static bool SortByNHits(const pandora::Cluster *const pLhs, const pandora::Cluster *const pRhs)
Sort clusters by number of hits, then layer span, then inner layer, then position, then pulse-height.
std::unordered_map< const pandora::Cluster *, float > AssociationDetails
const std::string GetListName(const T *const pT) const
Find the name of the list hosting a specific object.
Int_t max
Definition: plot.C:27
std::vector< art::Ptr< recob::Cluster > > ClusterVector
StatusCode lar_content::BoundedClusterMopUpAlgorithm::ReadSettings ( const pandora::TiXmlHandle  xmlHandle)
privatevirtual

Reimplemented from lar_content::ClusterMopUpBaseAlgorithm.

Definition at line 159 of file BoundedClusterMopUpAlgorithm.cc.

References m_minBoundedFraction, m_showerEdgeMultiplier, m_slidingFitWindow, and lar_content::ClusterMopUpBaseAlgorithm::ReadSettings().

160 {
161  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle,
162  "SlidingFitWindow", m_slidingFitWindow));
163 
164  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle,
165  "ShowerEdgeMultiplier", m_showerEdgeMultiplier));
166 
167  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle,
168  "MinBoundedFraction", m_minBoundedFraction));
169 
170  return ClusterMopUpBaseAlgorithm::ReadSettings(xmlHandle);
171 }
float m_minBoundedFraction
The minimum cluster bounded fraction for merging.
virtual pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
float m_showerEdgeMultiplier
Artificially tune width of shower envelope so as to make it more/less inclusive.
unsigned int m_slidingFitWindow
The layer window for the sliding linear fits.
StatusCode lar_content::ClusterMopUpBaseAlgorithm::Run ( )
protectedvirtualinherited

Definition at line 28 of file ClusterMopUpBaseAlgorithm.cc.

References lar_content::ClusterMopUpBaseAlgorithm::ClusterMopUp(), lar_content::ClusterMopUpBaseAlgorithm::GetDaughterClusterLists(), and lar_content::ClusterMopUpBaseAlgorithm::GetPfoClusterLists().

29 {
30  ClusterList pfoClusterListU, pfoClusterListV, pfoClusterListW;
31  this->GetPfoClusterLists(pfoClusterListU, pfoClusterListV, pfoClusterListW);
32 
33  ClusterList daughterClusterListU, daughterClusterListV, daughterClusterListW;
34  this->GetDaughterClusterLists(daughterClusterListU, daughterClusterListV, daughterClusterListW);
35 
36  this->ClusterMopUp(pfoClusterListU, daughterClusterListU);
37  this->ClusterMopUp(pfoClusterListV, daughterClusterListV);
38  this->ClusterMopUp(pfoClusterListW, daughterClusterListW);
39 
40  return STATUS_CODE_SUCCESS;
41 }
virtual void GetPfoClusterLists(pandora::ClusterList &clusterListU, pandora::ClusterList &clusterListV, pandora::ClusterList &clusterListW) const
Get the two dimensional clusters contained in the input pfo list, divided into three different views...
virtual void ClusterMopUp(const pandora::ClusterList &pfoClusters, const pandora::ClusterList &remnantClusters) const =0
Cluster mop up for a single view. This function is responsible for instructing pandora to make cluste...
virtual void GetDaughterClusterLists(pandora::ClusterList &clusterListU, pandora::ClusterList &clusterListV, pandora::ClusterList &clusterListW) const
Get the two dimensional clusters contained in the input remant/daughter cluster lists, divided into three different views.

Member Data Documentation

pandora::StringVector lar_content::MopUpBaseAlgorithm::m_daughterListNames
protectedinherited
bool lar_content::ClusterMopUpBaseAlgorithm::m_excludePfosContainingTracks
protectedinherited
float lar_content::BoundedClusterMopUpAlgorithm::m_minBoundedFraction
private

The minimum cluster bounded fraction for merging.

Definition at line 84 of file BoundedClusterMopUpAlgorithm.h.

Referenced by ClusterMopUp(), and ReadSettings().

pandora::StringVector lar_content::ClusterMopUpBaseAlgorithm::m_pfoListNames
protectedinherited
float lar_content::BoundedClusterMopUpAlgorithm::m_showerEdgeMultiplier
private

Artificially tune width of shower envelope so as to make it more/less inclusive.

Definition at line 83 of file BoundedClusterMopUpAlgorithm.h.

Referenced by ClusterMopUp(), and ReadSettings().

unsigned int lar_content::BoundedClusterMopUpAlgorithm::m_slidingFitWindow
private

The layer window for the sliding linear fits.

Definition at line 82 of file BoundedClusterMopUpAlgorithm.h.

Referenced by ClusterMopUp(), and ReadSettings().


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