LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
cluster::ClusterParamsAlgBase Class Referenceabstract

Algorithm collection class computing cluster parameters. More...

#include "ClusterParamsAlgBase.h"

Inheritance diagram for cluster::ClusterParamsAlgBase:
cluster::LazyClusterParamsAlg cluster::OverriddenClusterParamsAlg< AlgoBase > cluster::StandardClusterParamsAlg

Public Types

using Measure_t = details::Measure_t< float >
 Type used to return values with errors. More...
 

Public Member Functions

virtual ~ClusterParamsAlgBase ()=default
 
virtual void Clear ()
 Restores the class to post-configuration, pre-initialization state. More...
 
virtual void SetHitsFromPointers (util::GeometryUtilities const &gser, std::vector< recob::Hit const * > const &hits)=0
 Sets the list of input hits. More...
 
virtual void SetHits (util::GeometryUtilities const &gser, std::vector< recob::Hit > const &hits)
 Sets the list of input hits. More...
 
virtual void SetVerbose (int level=1)
 Set the verbosity level. More...
 
virtual size_t NHits ()
 Returns the number of hits in the cluster. More...
 
virtual float MultipleHitDensity ()
 Fraction of wires in the cluster with more than one hit. More...
 
virtual float Width (util::GeometryUtilities const &)
 Computes the width of the cluster. More...
 
virtual Measure_t StartCharge (util::GeometryUtilities const &)
 Computes the charge on the first and last wire of the track. More...
 
virtual Measure_t EndCharge (util::GeometryUtilities const &)
 Computes the charge on the first and last wire of the track. More...
 
virtual Measure_t StartAngle ()
 Computes the angle at the start or end of the cluster. More...
 
virtual Measure_t EndAngle ()
 Computes the angle at the start or end of the cluster. More...
 
virtual Measure_t StartOpeningAngle ()
 Computes the opening angle at the start or end of the cluster. More...
 
virtual Measure_t EndOpeningAngle ()
 Computes the opening angle at the start or end of the cluster. More...
 
Cluster charge
virtual Measure_t Integral ()
 Computes the total charge of the cluster from Hit::Integral() More...
 
virtual Measure_t IntegralStdDev ()
 Computes the standard deviation on the charge of the cluster hits. More...
 
virtual Measure_t SummedADC ()
 Computes the total charge of the cluster from Hit::SummedADC() More...
 
virtual Measure_t SummedADCStdDev ()
 Computes the standard deviation on the charge of the cluster hits. More...
 

Static Protected Member Functions

static std::logic_error NotImplemented (std::string function_name)
 

Protected Attributes

int verbose = 0
 verbosity level: 0 is normal, negative is even quieter More...
 

Detailed Description

Algorithm collection class computing cluster parameters.

See also
ClusterParamsAlg

This class is an interface only. The implementing classes should implement constructors able to read the necessary information from hit lists, and any of the virtual algorithms.

The interface allows for the single extraction of the information required in recob::Cluster version 14. The implementation can compute and cache different variables at once. The accessor functions are non-const, allowing the caching of the quantity after computation (without using mutable cache members).

The default algorithm functions throw an exception.

The algorithms require a list of hits as input. The structure chosen for this interface is recob::Hit from LArSoft, since it is complete by definition and it does not carry deep dependences (in fact, recob::Hit version 14 has only larreco/SimpleTypesAndConstants.h as compile-time dependency, and no external link-time dependency beside standard C++).

Definition at line 86 of file ClusterParamsAlgBase.h.

Member Typedef Documentation

Type used to return values with errors.

Definition at line 89 of file ClusterParamsAlgBase.h.

Constructor & Destructor Documentation

virtual cluster::ClusterParamsAlgBase::~ClusterParamsAlgBase ( )
virtualdefault

Member Function Documentation

virtual void cluster::ClusterParamsAlgBase::Clear ( )
inlinevirtual

Restores the class to post-configuration, pre-initialization state.

This function is expected to be called before SetHits(), and the implementation might call it in SetHits() itself.

Reimplemented in cluster::OverriddenClusterParamsAlg< AlgoBase >, cluster::LazyClusterParamsAlg, and cluster::StandardClusterParamsAlg.

Definition at line 99 of file ClusterParamsAlgBase.h.

References hits().

99 {}
virtual Measure_t cluster::ClusterParamsAlgBase::EndAngle ( )
inlinevirtual

Computes the angle at the start or end of the cluster.

Returns
angle at the start of the cluster, in radians

Reimplemented in cluster::OverriddenClusterParamsAlg< AlgoBase >, cluster::StandardClusterParamsAlg, and cluster::LazyClusterParamsAlg.

Definition at line 170 of file ClusterParamsAlgBase.h.

Referenced by cluster::ClusterCreator::CreateCluster().

170 { throw NotImplemented(__func__); }
static std::logic_error NotImplemented(std::string function_name)
virtual Measure_t cluster::ClusterParamsAlgBase::EndCharge ( util::GeometryUtilities const &  )
inlinevirtual

Computes the charge on the first and last wire of the track.

Returns
the charge in ADC counts, with uncertainty

Reimplemented in cluster::OverriddenClusterParamsAlg< AlgoBase >, cluster::StandardClusterParamsAlg, and cluster::LazyClusterParamsAlg.

Definition at line 161 of file ClusterParamsAlgBase.h.

Referenced by cluster::ClusterCreator::CreateCluster().

161 { throw NotImplemented(__func__); }
static std::logic_error NotImplemented(std::string function_name)
virtual Measure_t cluster::ClusterParamsAlgBase::EndOpeningAngle ( )
inlinevirtual

Computes the opening angle at the start or end of the cluster.

Returns
angle at the start of the cluster, in radians

Reimplemented in cluster::OverriddenClusterParamsAlg< AlgoBase >, cluster::StandardClusterParamsAlg, and cluster::LazyClusterParamsAlg.

Definition at line 179 of file ClusterParamsAlgBase.h.

Referenced by cluster::ClusterCreator::CreateCluster().

179 { throw NotImplemented(__func__); }
static std::logic_error NotImplemented(std::string function_name)
virtual Measure_t cluster::ClusterParamsAlgBase::Integral ( )
inlinevirtual

Computes the total charge of the cluster from Hit::Integral()

Returns
total charge of the cluster, in ADC count units
See also
IntegralStdDev(), SummedADC()

Reimplemented in cluster::OverriddenClusterParamsAlg< AlgoBase >, cluster::StandardClusterParamsAlg, and cluster::LazyClusterParamsAlg.

Definition at line 189 of file ClusterParamsAlgBase.h.

Referenced by cluster::ClusterCreator::CreateCluster().

189 { throw NotImplemented(__func__); }
static std::logic_error NotImplemented(std::string function_name)
virtual Measure_t cluster::ClusterParamsAlgBase::IntegralStdDev ( )
inlinevirtual

Computes the standard deviation on the charge of the cluster hits.

Returns
the standard deviation of charge of hits, in ADC count units
See also
Integral()

Hit charge is obtained by recob::Hit::Integral().

Reimplemented in cluster::OverriddenClusterParamsAlg< AlgoBase >, cluster::StandardClusterParamsAlg, and cluster::LazyClusterParamsAlg.

Definition at line 198 of file ClusterParamsAlgBase.h.

Referenced by cluster::ClusterCreator::CreateCluster().

198 { throw NotImplemented(__func__); }
static std::logic_error NotImplemented(std::string function_name)
virtual float cluster::ClusterParamsAlgBase::MultipleHitDensity ( )
inlinevirtual

Fraction of wires in the cluster with more than one hit.

Returns
fraction of wires with more than one hit, or 0 if no wires

Returns a quantity defined as NMultiHitWires / NWires, where NWires is the number of wires hosting at least one hit of this cluster, and NMultiHitWires is the number of wires which have more than just one hit.

Reimplemented in cluster::OverriddenClusterParamsAlg< AlgoBase >, cluster::StandardClusterParamsAlg, and cluster::LazyClusterParamsAlg.

Definition at line 230 of file ClusterParamsAlgBase.h.

Referenced by cluster::ClusterCreator::CreateCluster().

230 { throw NotImplemented(__func__); }
static std::logic_error NotImplemented(std::string function_name)
virtual size_t cluster::ClusterParamsAlgBase::NHits ( )
inlinevirtual

Returns the number of hits in the cluster.

Reimplemented in cluster::OverriddenClusterParamsAlg< AlgoBase >, cluster::StandardClusterParamsAlg, and cluster::LazyClusterParamsAlg.

Definition at line 219 of file ClusterParamsAlgBase.h.

Referenced by cluster::ClusterCreator::CreateCluster().

219 { throw NotImplemented(__func__); }
static std::logic_error NotImplemented(std::string function_name)
static std::logic_error cluster::ClusterParamsAlgBase::NotImplemented ( std::string  function_name)
inlinestaticprotected

Definition at line 242 of file ClusterParamsAlgBase.h.

243  {
244  return std::logic_error(function_name + "() not implemented.");
245  }
virtual void cluster::ClusterParamsAlgBase::SetHits ( util::GeometryUtilities const &  gser,
std::vector< recob::Hit > const &  hits 
)
inlinevirtual

Sets the list of input hits.

Parameters
hitslist of hits (hits will not be modified)
Exceptions
undefinedin case of error, this method can throw (anything)

The same general directions apply as for SetHits() version with pointers. This version takes a list of recob::Hit, rather than their pointers. It can simplify upstream handling when the original list is not recob::Hit and creation of temporary recob::Hit is needed. In that case, managing to obtain pointers to these temporary objects can be inefficient.

The default implementation provided here is not efficient either, since it just creates an additional vector of recob::Hit pointers and uses it. If an implementation is concerned with efficiency, it can reimplement this to initialize the algorithm in a more direct way.

Reimplemented in cluster::OverriddenClusterParamsAlg< AlgoBase >, and cluster::StandardClusterParamsAlg.

Definition at line 138 of file ClusterParamsAlgBase.h.

Referenced by cluster::StandardClusterParamsAlg::SetHits().

139  {
140  std::vector<recob::Hit const*> hitptrs;
141  hitptrs.reserve(hits.size());
142  std::transform(hits.begin(),
143  hits.end(),
144  std::back_inserter(hitptrs),
145  [](recob::Hit const& hit) { return &hit; });
146  SetHitsFromPointers(gser, hitptrs);
147  }
virtual void SetHitsFromPointers(util::GeometryUtilities const &gser, std::vector< recob::Hit const * > const &hits)=0
Sets the list of input hits.
Detector simulation of raw signals on wires.
2D representation of charge deposited in the TDC/wire plane
Definition: Hit.h:46
virtual void cluster::ClusterParamsAlgBase::SetHitsFromPointers ( util::GeometryUtilities const &  gser,
std::vector< recob::Hit const * > const &  hits 
)
pure virtual

Sets the list of input hits.

Parameters
hitslist of pointers to hits
Exceptions
undefinedin case of error, this method can throw (anything)

The hits are in the LArSoft format of recob::Hits, that should have enough information for all the algorithms. The hits are passed as constant pointers. The implementation is expected to either copy the vector (not just to keep a reference to it, since the vector might be temporary) or to translated the required information from the hits into its own internal format. The hits are expected to exist as long as this object is used, until the next Clear() call. It is recommended that this method call Clear() at the beginning. This is left to the implementation, that might still implement a different strategy.

Implemented in cluster::OverriddenClusterParamsAlg< AlgoBase >, cluster::StandardClusterParamsAlg, and cluster::LazyClusterParamsAlg.

Referenced by lar_pandora::LArPandoraOutput::BuildCluster().

virtual void cluster::ClusterParamsAlgBase::SetVerbose ( int  level = 1)
inlinevirtual

Set the verbosity level.

Reimplemented in cluster::OverriddenClusterParamsAlg< AlgoBase >, and cluster::StandardClusterParamsAlg.

Definition at line 150 of file ClusterParamsAlgBase.h.

Referenced by cluster::StandardClusterParamsAlg::SetVerbose(), and cluster::OverriddenClusterParamsAlg< AlgoBase >::SetVerbose().

150 { verbose = level; }
int verbose
verbosity level: 0 is normal, negative is even quieter
virtual Measure_t cluster::ClusterParamsAlgBase::StartAngle ( )
inlinevirtual

Computes the angle at the start or end of the cluster.

Returns
angle at the start of the cluster, in radians

Reimplemented in cluster::OverriddenClusterParamsAlg< AlgoBase >, cluster::StandardClusterParamsAlg, and cluster::LazyClusterParamsAlg.

Definition at line 169 of file ClusterParamsAlgBase.h.

Referenced by cluster::ClusterCreator::CreateCluster().

169 { throw NotImplemented(__func__); }
static std::logic_error NotImplemented(std::string function_name)
virtual Measure_t cluster::ClusterParamsAlgBase::StartCharge ( util::GeometryUtilities const &  )
inlinevirtual

Computes the charge on the first and last wire of the track.

Returns
the charge in ADC counts, with uncertainty

Reimplemented in cluster::OverriddenClusterParamsAlg< AlgoBase >, cluster::StandardClusterParamsAlg, and cluster::LazyClusterParamsAlg.

Definition at line 157 of file ClusterParamsAlgBase.h.

Referenced by cluster::ClusterCreator::CreateCluster().

158  {
159  throw NotImplemented(__func__);
160  }
static std::logic_error NotImplemented(std::string function_name)
virtual Measure_t cluster::ClusterParamsAlgBase::StartOpeningAngle ( )
inlinevirtual

Computes the opening angle at the start or end of the cluster.

Returns
angle at the start of the cluster, in radians

Reimplemented in cluster::OverriddenClusterParamsAlg< AlgoBase >, cluster::StandardClusterParamsAlg, and cluster::LazyClusterParamsAlg.

Definition at line 178 of file ClusterParamsAlgBase.h.

Referenced by cluster::ClusterCreator::CreateCluster().

178 { throw NotImplemented(__func__); }
static std::logic_error NotImplemented(std::string function_name)
virtual Measure_t cluster::ClusterParamsAlgBase::SummedADC ( )
inlinevirtual

Computes the total charge of the cluster from Hit::SummedADC()

Returns
total charge of the cluster, in ADC count units
See also
SummedADCStdDev(), Integral()

Reimplemented in cluster::OverriddenClusterParamsAlg< AlgoBase >, cluster::StandardClusterParamsAlg, and cluster::LazyClusterParamsAlg.

Definition at line 205 of file ClusterParamsAlgBase.h.

Referenced by cluster::ClusterCreator::CreateCluster().

205 { throw NotImplemented(__func__); }
static std::logic_error NotImplemented(std::string function_name)
virtual Measure_t cluster::ClusterParamsAlgBase::SummedADCStdDev ( )
inlinevirtual

Computes the standard deviation on the charge of the cluster hits.

Returns
the standard deviation of charge of hits, in ADC count units
See also
SummedADC()

Hit charge is obtained by recob::Hit::SummedADC().

Reimplemented in cluster::OverriddenClusterParamsAlg< AlgoBase >, cluster::StandardClusterParamsAlg, and cluster::LazyClusterParamsAlg.

Definition at line 214 of file ClusterParamsAlgBase.h.

Referenced by cluster::ClusterCreator::CreateCluster().

214 { throw NotImplemented(__func__); }
static std::logic_error NotImplemented(std::string function_name)
virtual float cluster::ClusterParamsAlgBase::Width ( util::GeometryUtilities const &  )
inlinevirtual

Computes the width of the cluster.

Returns
width of the cluster

Reimplemented in cluster::OverriddenClusterParamsAlg< AlgoBase >, cluster::StandardClusterParamsAlg, and cluster::LazyClusterParamsAlg.

Definition at line 237 of file ClusterParamsAlgBase.h.

Referenced by cluster::ClusterCreator::CreateCluster().

237 { throw NotImplemented(__func__); }
static std::logic_error NotImplemented(std::string function_name)

Member Data Documentation

int cluster::ClusterParamsAlgBase::verbose = 0
protected

verbosity level: 0 is normal, negative is even quieter

Definition at line 240 of file ClusterParamsAlgBase.h.


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