LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
lar_content::TransverseTensorVisualizationTool Class Reference

TransverseTensorVisualizationTool class. More...

#include "TransverseTensorVisualizationTool.h"

Inheritance diagram for lar_content::TransverseTensorVisualizationTool:
lar_content::TransverseTensorTool

Public Types

typedef ThreeViewTransverseTracksAlgorithm::MatchingType::TensorType TensorType
 
typedef std::vector< TensorType::ElementList::const_iteratorIteratorList
 

Public Member Functions

 TransverseTensorVisualizationTool ()
 Default constructor. More...
 
bool Run (ThreeViewTransverseTracksAlgorithm *const pAlgorithm, TensorType &overlapTensor)
 Run the algorithm tool. More...
 

Private Member Functions

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

Private Attributes

unsigned int m_minClusterConnections
 The minimum number of cluster connections for display. More...
 
bool m_ignoreUnavailableClusters
 Whether to ignore (skip-over) unavailable clusters in the tensor. More...
 
bool m_showEachIndividualElement
 Whether to draw each individual tensor element. More...
 
bool m_showContext
 Whether to show input cluster lists to add context to tensor elements. More...
 

Detailed Description

Member Typedef Documentation

Constructor & Destructor Documentation

lar_content::TransverseTensorVisualizationTool::TransverseTensorVisualizationTool ( )

Default constructor.

Definition at line 18 of file TransverseTensorVisualizationTool.cc.

18  :
22  m_showContext(false)
23 {
24 }
bool m_showContext
Whether to show input cluster lists to add context to tensor elements.
bool m_ignoreUnavailableClusters
Whether to ignore (skip-over) unavailable clusters in the tensor.
bool m_showEachIndividualElement
Whether to draw each individual tensor element.
unsigned int m_minClusterConnections
The minimum number of cluster connections for display.

Member Function Documentation

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

Definition at line 108 of file TransverseTensorVisualizationTool.cc.

References m_ignoreUnavailableClusters, m_minClusterConnections, m_showContext, and m_showEachIndividualElement.

109 {
110  PANDORA_RETURN_RESULT_IF_AND_IF(
111  STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "MinClusterConnections", m_minClusterConnections));
112 
113  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=,
114  XmlHelper::ReadValue(xmlHandle, "IgnoreUnavailableClusters", m_ignoreUnavailableClusters));
115 
116  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=,
117  XmlHelper::ReadValue(xmlHandle, "ShowEachIndividualElement", m_showEachIndividualElement));
118 
119  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "ShowContext", m_showContext));
120 
121  return STATUS_CODE_SUCCESS;
122 }
bool m_showContext
Whether to show input cluster lists to add context to tensor elements.
bool m_ignoreUnavailableClusters
Whether to ignore (skip-over) unavailable clusters in the tensor.
bool m_showEachIndividualElement
Whether to draw each individual tensor element.
unsigned int m_minClusterConnections
The minimum number of cluster connections for display.
bool lar_content::TransverseTensorVisualizationTool::Run ( ThreeViewTransverseTracksAlgorithm *const  pAlgorithm,
TensorType overlapTensor 
)
virtual

Run the algorithm tool.

Parameters
pAlgorithmaddress of the calling algorithm
overlapTensorthe overlap tensor
Returns
whether changes have been made by the tool

Implements lar_content::TransverseTensorTool.

Definition at line 28 of file TransverseTensorVisualizationTool.cc.

References util::counter(), f, lar_content::OverlapTensor< T >::GetConnectedElements(), lar_content::NViewMatchingAlgorithm< T >::GetInputClusterList(), lar_content::OverlapTensor< T >::GetSortedKeyClusters(), m_ignoreUnavailableClusters, m_minClusterConnections, m_showContext, and m_showEachIndividualElement.

29 {
30  if (PandoraContentApi::GetSettings(*pAlgorithm)->ShouldDisplayAlgorithmInfo())
31  std::cout << "----> Running Algorithm Tool: " << this->GetInstanceName() << ", " << this->GetType() << std::endl;
32 
33  ClusterSet usedKeyClusters;
34  ClusterVector sortedKeyClusters;
35  overlapTensor.GetSortedKeyClusters(sortedKeyClusters);
36 
37  for (const Cluster *const pKeyCluster : sortedKeyClusters)
38  {
39  if (m_ignoreUnavailableClusters && !pKeyCluster->IsAvailable())
40  continue;
41 
42  if (usedKeyClusters.count(pKeyCluster))
43  continue;
44 
45  unsigned int nU(0), nV(0), nW(0);
46  TensorType::ElementList elementList;
47  overlapTensor.GetConnectedElements(pKeyCluster, m_ignoreUnavailableClusters, elementList, nU, nV, nW);
48 
50  continue;
51 
52  if (nU * nV * nW == 0)
53  continue;
54 
55  int counter(0);
56  ClusterList allClusterListU, allClusterListV, allClusterListW;
57  std::cout << " Connections: nU " << nU << ", nV " << nV << ", nW " << nW << ", nElements " << elementList.size() << std::endl;
58 
59  for (TensorType::ElementList::const_iterator eIter = elementList.begin(); eIter != elementList.end(); ++eIter)
60  {
61  if (allClusterListU.end() == std::find(allClusterListU.begin(), allClusterListU.end(), eIter->GetClusterU()))
62  allClusterListU.push_back(eIter->GetClusterU());
63  if (allClusterListV.end() == std::find(allClusterListV.begin(), allClusterListV.end(), eIter->GetClusterV()))
64  allClusterListV.push_back(eIter->GetClusterV());
65  if (allClusterListW.end() == std::find(allClusterListW.begin(), allClusterListW.end(), eIter->GetClusterW()))
66  allClusterListW.push_back(eIter->GetClusterW());
67  usedKeyClusters.insert(eIter->GetClusterU());
68 
69  std::cout << " Element " << counter++ << ": MatchedFraction " << eIter->GetOverlapResult().GetMatchedFraction()
70  << ", MatchedSamplingPoints " << eIter->GetOverlapResult().GetNMatchedSamplingPoints() << ", xSpanU "
71  << eIter->GetOverlapResult().GetXOverlap().GetXSpanU() << ", xSpanV " << eIter->GetOverlapResult().GetXOverlap().GetXSpanV()
72  << ", xSpanW " << eIter->GetOverlapResult().GetXOverlap().GetXSpanW() << ", xOverlapSpan "
73  << eIter->GetOverlapResult().GetXOverlap().GetXOverlapSpan() << std::endl;
74 
76  {
77  const ClusterList clusterListU(1, eIter->GetClusterU()), clusterListV(1, eIter->GetClusterV()),
78  clusterListW(1, eIter->GetClusterW());
79  PANDORA_MONITORING_API(SetEveDisplayParameters(this->GetPandora(), false, DETECTOR_VIEW_XZ, -1.f, -1.f, 1.f));
80  PANDORA_MONITORING_API(VisualizeClusters(this->GetPandora(), &clusterListU, "UCluster", RED));
81  PANDORA_MONITORING_API(VisualizeClusters(this->GetPandora(), &clusterListV, "VCluster", GREEN));
82  PANDORA_MONITORING_API(VisualizeClusters(this->GetPandora(), &clusterListW, "WCluster", BLUE));
83  PANDORA_MONITORING_API(ViewEvent(this->GetPandora()));
84  }
85  }
86 
87  std::cout << " All Connected Clusters " << std::endl;
88  PANDORA_MONITORING_API(SetEveDisplayParameters(this->GetPandora(), false, DETECTOR_VIEW_XZ, -1.f, -1.f, 1.f));
89  PANDORA_MONITORING_API(VisualizeClusters(this->GetPandora(), &allClusterListU, "AllUClusters", RED));
90  PANDORA_MONITORING_API(VisualizeClusters(this->GetPandora(), &allClusterListV, "AllVClusters", GREEN));
91  PANDORA_MONITORING_API(VisualizeClusters(this->GetPandora(), &allClusterListW, "AllWClusters", BLUE));
92 
93  if (m_showContext)
94  {
95  PANDORA_MONITORING_API(VisualizeClusters(this->GetPandora(), &(pAlgorithm->GetInputClusterList(TPC_VIEW_U)), "InputClusterListU", GRAY));
96  PANDORA_MONITORING_API(VisualizeClusters(this->GetPandora(), &(pAlgorithm->GetInputClusterList(TPC_VIEW_V)), "InputClusterListV", GRAY));
97  PANDORA_MONITORING_API(VisualizeClusters(this->GetPandora(), &(pAlgorithm->GetInputClusterList(TPC_VIEW_W)), "InputClusterListW", GRAY));
98  }
99 
100  PANDORA_MONITORING_API(ViewEvent(this->GetPandora()));
101  }
102 
103  return false;
104 }
bool m_showContext
Whether to show input cluster lists to add context to tensor elements.
bool m_ignoreUnavailableClusters
Whether to ignore (skip-over) unavailable clusters in the tensor.
intermediate_table::const_iterator const_iterator
TFile f
Definition: plotHisto.C:6
auto counter(T begin, T end)
Returns an object to iterate values from begin to end in a range-for loop.
Definition: counter.h:295
bool m_showEachIndividualElement
Whether to draw each individual tensor element.
unsigned int m_minClusterConnections
The minimum number of cluster connections for display.
std::vector< art::Ptr< recob::Cluster > > ClusterVector

Member Data Documentation

bool lar_content::TransverseTensorVisualizationTool::m_ignoreUnavailableClusters
private

Whether to ignore (skip-over) unavailable clusters in the tensor.

Definition at line 33 of file TransverseTensorVisualizationTool.h.

Referenced by ReadSettings(), and Run().

unsigned int lar_content::TransverseTensorVisualizationTool::m_minClusterConnections
private

The minimum number of cluster connections for display.

Definition at line 32 of file TransverseTensorVisualizationTool.h.

Referenced by ReadSettings(), and Run().

bool lar_content::TransverseTensorVisualizationTool::m_showContext
private

Whether to show input cluster lists to add context to tensor elements.

Definition at line 35 of file TransverseTensorVisualizationTool.h.

Referenced by ReadSettings(), and Run().

bool lar_content::TransverseTensorVisualizationTool::m_showEachIndividualElement
private

Whether to draw each individual tensor element.

Definition at line 34 of file TransverseTensorVisualizationTool.h.

Referenced by ReadSettings(), and Run().


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