ClearLongitudinalTracksTool.cc
Go to the documentation of this file.
1 /**
2  * @file larpandoracontent/LArThreeDReco/LArLongitudinalTrackMatching/ClearLongitudinalTracksTool.cc
3  *
4  * @brief Implementation of the clear tracks tool class.
5  *
6  * $Log: $
7  */
8 
9 #include "Pandora/AlgorithmHeaders.h"
10 
12 
13 using namespace pandora;
14 
15 namespace lar_content
16 {
17 
18 ClearLongitudinalTracksTool::ClearLongitudinalTracksTool() : m_minMatchedFraction(0.8f)
19 {
20 }
21 
22 //------------------------------------------------------------------------------------------------------------------------------------------
23 
25 {
26  if (PandoraContentApi::GetSettings(*pAlgorithm)->ShouldDisplayAlgorithmInfo())
27  std::cout << "----> Running Algorithm Tool: " << this->GetInstanceName() << ", " << this->GetType() << std::endl;
28 
29  bool particlesMade(false);
30 
31  TensorType::ElementList elementList;
32  overlapTensor.GetUnambiguousElements(true, elementList);
33  this->CreateThreeDParticles(pAlgorithm, elementList, particlesMade);
34 
35  return particlesMade;
36 }
37 
38 //------------------------------------------------------------------------------------------------------------------------------------------
39 
41  ThreeViewLongitudinalTracksAlgorithm *const pAlgorithm, const TensorType::ElementList &elementList, bool &particlesMade) const
42 {
43  ProtoParticleVector protoParticleVector;
44 
45  for (TensorType::ElementList::const_iterator iter = elementList.begin(), iterEnd = elementList.end(); iter != iterEnd; ++iter)
46  {
47  if (iter->GetOverlapResult().GetMatchedFraction() < m_minMatchedFraction)
48  continue;
49 
50  ProtoParticle protoParticle;
51  protoParticle.m_clusterList.push_back(iter->GetClusterU());
52  protoParticle.m_clusterList.push_back(iter->GetClusterV());
53  protoParticle.m_clusterList.push_back(iter->GetClusterW());
54  protoParticleVector.push_back(protoParticle);
55  }
56 
57  particlesMade |= pAlgorithm->CreateThreeDParticles(protoParticleVector);
58 }
59 
60 //------------------------------------------------------------------------------------------------------------------------------------------
61 
62 StatusCode ClearLongitudinalTracksTool::ReadSettings(const TiXmlHandle xmlHandle)
63 {
64  PANDORA_RETURN_RESULT_IF_AND_IF(
65  STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "MinMatchedFraction", m_minMatchedFraction));
66 
67  return STATUS_CODE_SUCCESS;
68 }
69 
70 } // namespace lar_content
std::vector< ProtoParticle > ProtoParticleVector
bool Run(ThreeViewLongitudinalTracksAlgorithm *const pAlgorithm, TensorType &overlapTensor)
Run the algorithm tool.
Header file for the clear tracks tool class.
void GetUnambiguousElements(const bool ignoreUnavailable, ElementList &elementList) const
Get unambiguous elements.
pandora::ClusterList m_clusterList
List of 2D clusters in a 3D proto particle.
float m_minMatchedFraction
The min matched sampling point fraction for particle creation.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
virtual bool CreateThreeDParticles(const ProtoParticleVector &protoParticleVector)
Create particles using findings from recent algorithm processing.
void CreateThreeDParticles(ThreeViewLongitudinalTracksAlgorithm *const pAlgorithm, const TensorType::ElementList &elementList, bool &particlesMade) const
Create three dimensional particles for a given tensor element list.
QTextStream & endl(QTextStream &s)