LArSoft  v07_13_02
Liquid Argon Software toolkit - http://larsoft.org/
reco Namespace Reference

Definition of utility objects for use in the 3D clustering for LArSoft. More...

Classes

class  Cluster3D
 
class  ClusterHit2D
 
class  ClusterHit3D
 
class  ClusterParameters
 
class  ConvexHull
 Define a container for working with the convex hull. More...
 
class  PrincipalComponents
 
class  RecobClusterParameters
 A utility class used in construction of 3D clusters. More...
 

Typedefs

using ClusterHit2DVec = std::vector< const reco::ClusterHit2D * >
 
using Hit2DListPtr = std::list< const reco::ClusterHit2D * >
 export some data structure definitions More...
 
using HitPairListPtr = std::list< const reco::ClusterHit3D * >
 
using HitPairSetPtr = std::set< const reco::ClusterHit3D * >
 
using HitPairListPtrList = std::list< HitPairListPtr >
 
using HitPairClusterMap = std::map< int, HitPairListPtr >
 
using HitPairList = std::list< std::unique_ptr< reco::ClusterHit3D >>
 
using PCAHitPairClusterMapPair = std::pair< reco::PrincipalComponents, reco::HitPairClusterMap::iterator >
 
using PlaneToClusterParamsMap = std::map< size_t, RecobClusterParameters >
 
using EdgeTuple = std::tuple< const reco::ClusterHit3D *, const reco::ClusterHit3D *, double >
 
using EdgeList = std::list< EdgeTuple >
 
using Hit3DToEdgePair = std::pair< const reco::ClusterHit3D *, reco::EdgeList >
 
using Hit3DToEdgeMap = std::unordered_map< const reco::ClusterHit3D *, reco::EdgeList >
 
using Hit2DToHit3DListMap = std::unordered_map< const reco::ClusterHit2D *, reco::HitPairListPtr >
 
using ProjectedPoint = std::tuple< float, float, const reco::ClusterHit3D * >
 Projected coordinates and pointer to hit. More...
 
using ProjectedPointList = std::list< ProjectedPoint >
 
using ConvexHullKinkTuple = std::tuple< ProjectedPoint, Eigen::Vector2f, Eigen::Vector2f >
 Point plus edges that point to it. More...
 
using ConvexHullKinkTupleList = std::list< ConvexHullKinkTuple >
 
using ClusterParametersList = std::list< ClusterParameters >
 
using ClusterToHitPairSetPair = std::pair< reco::ClusterParameters *, HitPairSetPtr >
 
using ClusterToHitPairSetMap = std::unordered_map< reco::ClusterParameters *, HitPairSetPtr >
 
using Hit2DToHit3DSetMap = std::unordered_map< const reco::ClusterHit2D *, HitPairSetPtr >
 
using Hit2DToClusterMap = std::unordered_map< const reco::ClusterHit2D *, ClusterToHitPairSetMap >
 

Functions

std::ostream & operator<< (std::ostream &o, const ClusterHit2D &c)
 
bool operator< (const ClusterHit2D &a, const ClusterHit2D &b)
 
std::ostream & operator<< (std::ostream &o, const ClusterHit3D &c)
 
std::ostream & operator<< (std::ostream &o, const PrincipalComponents &a)
 
bool operator< (const PrincipalComponents &a, const PrincipalComponents &b)
 
std::ostream & operator<< (std::ostream &o, const Cluster3D &c)
 
bool operator< (const Cluster3D &a, const Cluster3D &b)
 

Detailed Description

Definition of utility objects for use in the 3D clustering for LArSoft.

The objects defined in this module are intended for internal use by the 3D clustering (see Cluster3D_module.cc in larreco/ClusterFinder). These objects mostly contain volatile information and are not suitable for storage in the art event store

Author
usher.nosp@m.@sla.nosp@m.c.sta.nosp@m.nfor.nosp@m.d.edu

Typedef Documentation

using reco::ClusterHit2DVec = typedef std::vector<const reco::ClusterHit2D*>

Definition at line 85 of file Cluster3D.h.

using reco::ClusterParametersList = typedef std::list<ClusterParameters>

Definition at line 381 of file Cluster3D.h.

Definition at line 486 of file Cluster3D.h.

Definition at line 485 of file Cluster3D.h.

using reco::ConvexHullKinkTuple = typedef std::tuple<ProjectedPoint, Eigen::Vector2f, Eigen::Vector2f>

Point plus edges that point to it.

Definition at line 335 of file Cluster3D.h.

Definition at line 336 of file Cluster3D.h.

using reco::EdgeList = typedef std::list<EdgeTuple>

Definition at line 326 of file Cluster3D.h.

using reco::EdgeTuple = typedef std::tuple<const reco::ClusterHit3D*,const reco::ClusterHit3D*,double>

Definition at line 325 of file Cluster3D.h.

using reco::Hit2DListPtr = typedef std::list<const reco::ClusterHit2D*>

export some data structure definitions

Definition at line 316 of file Cluster3D.h.

using reco::Hit2DToClusterMap = typedef std::unordered_map<const reco::ClusterHit2D*,ClusterToHitPairSetMap>

Definition at line 488 of file Cluster3D.h.

using reco::Hit2DToHit3DListMap = typedef std::unordered_map<const reco::ClusterHit2D*, reco::HitPairListPtr>

Definition at line 329 of file Cluster3D.h.

using reco::Hit2DToHit3DSetMap = typedef std::unordered_map<const reco::ClusterHit2D*,HitPairSetPtr>

Definition at line 487 of file Cluster3D.h.

using reco::Hit3DToEdgeMap = typedef std::unordered_map<const reco::ClusterHit3D*, reco::EdgeList>

Definition at line 328 of file Cluster3D.h.

using reco::Hit3DToEdgePair = typedef std::pair<const reco::ClusterHit3D*, reco::EdgeList>

Definition at line 327 of file Cluster3D.h.

using reco::HitPairClusterMap = typedef std::map<int, HitPairListPtr>

Definition at line 320 of file Cluster3D.h.

using reco::HitPairList = typedef std::list<std::unique_ptr<reco::ClusterHit3D>>

Definition at line 321 of file Cluster3D.h.

using reco::HitPairListPtr = typedef std::list<const reco::ClusterHit3D*>

Definition at line 317 of file Cluster3D.h.

using reco::HitPairListPtrList = typedef std::list<HitPairListPtr>

Definition at line 319 of file Cluster3D.h.

using reco::HitPairSetPtr = typedef std::set<const reco::ClusterHit3D*>

Definition at line 318 of file Cluster3D.h.

using reco::PlaneToClusterParamsMap = typedef std::map<size_t, RecobClusterParameters>

Definition at line 324 of file Cluster3D.h.

using reco::ProjectedPoint = typedef std::tuple<float, float, const reco::ClusterHit3D*>

Projected coordinates and pointer to hit.

Definition at line 333 of file Cluster3D.h.

using reco::ProjectedPointList = typedef std::list<ProjectedPoint>

Definition at line 334 of file Cluster3D.h.

Function Documentation

bool reco::operator< ( const ClusterHit2D a,
const ClusterHit2D b 
)

Definition at line 47 of file Cluster3D.cxx.

References reco::ClusterHit2D::getHit().

48 {
49  return a.getHit() < b.getHit();
50 }
bool reco::operator< ( const PrincipalComponents a,
const PrincipalComponents b 
)

Definition at line 224 of file Cluster3D.cxx.

References reco::PrincipalComponents::m_eigenValues, and reco::PrincipalComponents::m_svdOK.

225 {
226  if (a.m_svdOK && b.m_svdOK)
227  return a.m_eigenValues[0] > b.m_eigenValues[0];
228 
229  return false; //They are equal
230 }
bool reco::operator< ( const Cluster3D a,
const Cluster3D b 
)

Definition at line 331 of file Cluster3D.cxx.

References reco::Cluster3D::getStartPosition().

332 {
333 /*
334  if(a.View() != b.View())
335  return a.View() < b.View();
336  if(a.ID() != b. ID())
337  return a.ID() < b.ID();
338  if(a.StartPos()[0] != b.StartPos()[0])
339  return a.StartPos()[0] < b.StartPos()[0];
340  if(a.EndPos()[0] != b.EndPos()[0])
341  return a.EndPos()[0] < b.EndPos()[0];
342 */
343  if (a.getStartPosition()[2] < b.getStartPosition()[2]) return true;
344 
345  return false; //They are equal
346 }
std::ostream& reco::operator<< ( std::ostream &  o,
const ClusterHit2D c 
)

Definition at line 40 of file Cluster3D.cxx.

References reco::ClusterHit2D::getHit().

41 {
42  o << c.getHit();
43 
44  return o;
45 }
std::ostream& reco::operator<< ( std::ostream &  o,
const ClusterHit3D c 
)

Definition at line 160 of file Cluster3D.cxx.

References reco::ClusterHit3D::getHits().

161 {
162  o << "ClusterHit3D has " << c.getHits().size() << " hits associated";
163 
164  return o;
165 }
std::ostream& reco::operator<< ( std::ostream &  o,
const PrincipalComponents a 
)

Definition at line 204 of file Cluster3D.cxx.

References reco::PrincipalComponents::m_aveHitDoca, reco::PrincipalComponents::m_avePosition, reco::PrincipalComponents::m_eigenValues, reco::PrincipalComponents::m_eigenVectors, reco::PrincipalComponents::m_numHitsUsed, reco::PrincipalComponents::m_svdOK, and art::right().

205 {
206  if (a.m_svdOK)
207  {
208  o << std::setiosflags(std::ios::fixed) << std::setprecision(2);
209  o << " PCAxis ID run with " << a.m_numHitsUsed << " space points" << std::endl;
210  o << " - center position: " << std::setw(6) << a.m_avePosition[0] << ", " << a.m_avePosition[1] << ", " << a.m_avePosition[2] << std::endl;
211  o << " - eigen values: " << std::setw(8) << std::right << a.m_eigenValues[0] << ", "
212  << a.m_eigenValues[1] << ", " << a.m_eigenValues[2] << std::endl;
213  o << " - average doca: " << a.m_aveHitDoca << std::endl;
214  o << " - Principle axis: " << std::setw(7) << std::setprecision(4) << a.m_eigenVectors[0][0] << ", " << a.m_eigenVectors[0][1] << ", " << a.m_eigenVectors[0][2] << std::endl;
215  o << " - second axis: " << std::setw(7) << std::setprecision(4) << a.m_eigenVectors[1][0] << ", " << a.m_eigenVectors[1][1] << ", " << a.m_eigenVectors[1][2] << std::endl;
216  o << " - third axis: " << std::setw(7) << std::setprecision(4) << a.m_eigenVectors[2][0] << ", " << a.m_eigenVectors[2][1] << ", " << a.m_eigenVectors[2][2] << std::endl;
217  }
218  else
219  o << " Principal Components Axis is not valid" << std::endl;
220 
221  return o;
222 }
constexpr auto const & right(const_AssnsIter< L, R, D, Dir > const &a, const_AssnsIter< L, R, D, Dir > const &b)
Definition: AssnsIter.h:112
std::ostream& reco::operator<< ( std::ostream &  o,
const Cluster3D c 
)

Definition at line 311 of file Cluster3D.cxx.

References reco::Cluster3D::getClusterIdx(), and art::right().

312 {
313  o << std::setiosflags(std::ios::fixed) << std::setprecision(2);
314  o << "Cluster ID " << std::setw(5) << std::right << c.getClusterIdx();
315 // << " : View = " << std::setw(3) << std::right << c.View()
316 // << " StartWire = " << std::setw(7) << std::right << c.StartPos()[0]
317 // << " EndWire = " << std::setw(7) << std::right << c.EndPos()[0]
318 // << " StartTime = " << std::setw(9) << std::right << c.StartPos()[1]
319 // << " EndTime = " << std::setw(9) << std::right << c.EndPos()[1]
320 // << " dTdW = " << std::setw(9) << std::right << c.dTdW()
321 // << " dQdW = " << std::setw(9) << std::right << c.dQdW()
322 // << " Charge = " << std::setw(10) << std::right << c.Charge();
323 
324  return o;
325  }
constexpr auto const & right(const_AssnsIter< L, R, D, Dir > const &a, const_AssnsIter< L, R, D, Dir > const &b)
Definition: AssnsIter.h:112