WireCellToolkit
Wire Cell Simulation, Signal Process and Reconstruction Toolki for Liquid Argon Detectors
WireCell Namespace Reference

Namespaces

 Array
 
 Bits
 
 Factory
 Singleton interface.
 
 FrameTools
 
 Gen
 
 Log
 
 Persist
 
 RayGrid
 
 Response
 
 Ress
 
 SigProc
 
 Sio
 
 String
 
 tagrules
 
 Testing
 
 units
 
 Waveform
 
 WireSchema
 

Classes

class  Addresser
 
class  AssertionError
 Thrown when an assertion fails. More...
 
class  Binning
 
class  BoundingBox
 
class  BufferedHistogram2D
 
struct  cluster_node_t
 
struct  ComparePoints
 Return true if lhs<rhs w/in tolerance. More...
 
class  ConfigManager
 
class  D3Vector
 
class  DepoPlane
 
class  Detsim
 
struct  DfpGraph
 
class  Diffuser
 
class  Diffusion
 
class  DropSinkProc
 
class  DumpDepos
 
struct  Exception
 The base wire cell exception. More...
 
class  ExecMon
 
struct  FactoryException
 
struct  Fanin
 
class  Fanout
 
class  FilterProc
 
class  FunctionNodeProc
 
struct  GeneratorIter
 
class  GenWire
 
class  IAnodeFace
 
class  IAnodePlane
 
class  IApplication
 
class  IBlob
 
class  IBlobSet
 
class  IBlobSetFanin
 
class  IBlobSetFanout
 
class  IBlobSetProcessor
 
class  IBlobSetSink
 
class  IChannel
 
class  IChannelFilter
 
class  IChannelNoiseDatabase
 
class  IChannelResponse
 
class  IChannelSpectrum
 
class  IChannelStatus
 
class  ICluster
 
class  IClusterFanin
 
class  IClusterFilter
 
class  IClusterFramer
 
class  IClustering
 
class  IClusterSink
 
class  IComponent
 
class  IConfigurable
 
class  IData
 
class  IDataFlowGraph
 
class  IDeconvolution
 
class  IDepo
 
class  IDepoCollector
 
struct  IDepoDriftCompare
 
class  IDepoFanout
 
class  IDepoFilter
 
class  IDepoFramer
 
class  IDepoMerger
 
class  IDepoSet
 
class  IDepoSetFanout
 
class  IDepoSink
 
class  IDepoSource
 
class  IDiffuser
 
class  IDiffusion
 
struct  IDiffusionCompareLbegin
 
class  IDrifter
 
class  IDuctor
 
class  IFactory
 
class  IFaninNode
 
class  IFaninNodeBase
 
class  IFanoutNode
 
class  IFanoutNodeBase
 
class  IFieldResponse
 
class  IFilterWaveform
 
class  IFrame
 
class  IFrameFanin
 
class  IFrameFanout
 
class  IFrameFilter
 
class  IFrameJoiner
 
class  IFrameSink
 
class  IFrameSlicer
 
class  IFrameSlices
 
class  IFrameSource
 
class  IFrameSplitter
 
class  IFunctionNode
 
class  IFunctionNodeBase
 
class  IHydraNode
 
class  IHydraNodeBase
 
class  IImpactResponse
 
class  IJoinNode
 
class  IJoinNodeBase
 
class  INamedFactory
 
class  IndexedGraph
 
class  IndexedSet
 
struct  IndexError
 Thrown when a wrong index is used. More...
 
class  INode
 
class  Interface
 
class  IOError
 Thrown when an error involving accessing input or output has occurred. More...
 
class  IPlaneImpactResponse
 
class  IPointFieldSink
 
class  IProcessor
 
class  IQueuedoutNode
 
class  IQueuedoutNodeBase
 
class  IRandom
 
class  IRecombinationModel
 
class  IScalarFieldSink
 
class  ISequence
 
class  ISinkNode
 
class  ISinkNodeBase
 
class  ISlice
 
class  ISliceFanout
 
class  ISliceFrame
 
class  ISliceFrameSink
 
class  ISliceStriper
 
class  ISourceNode
 
class  ISourceNodeBase
 
class  ISplitNode
 
class  ISplitNodeBase
 
class  IStripe
 
class  IStripeSet
 
class  Iterator
 
class  IteratorAdapter
 
class  IteratorBase
 
class  ITiling
 
class  ITrace
 
class  IWaveform
 
class  IWire
 Interface to information about a physical wire segment. More...
 
struct  IWireCompareIdent
 
struct  IWireCompareIndex
 
struct  IWireCompareSegment
 
class  IWireGenerator
 
class  IWireParameters
 
class  IWirePlane
 
class  IWireSchema
 
class  IWireSource
 
class  IWireSummarizer
 
class  IWireSummary
 
struct  KeyError
 Thrown when a wrong key or has been encountered. More...
 
class  linterp
 
class  Main
 
class  MemUsage
 
class  NamedFactory
 
class  NamedFactoryRegistry
 
class  ObjectArray2d
 
class  Pimpos
 Pitch-Impact-Position. More...
 
class  PlaneDiffuser
 
class  Plugin
 
class  PluginManager
 
class  Proc
 
class  Quantity
 
class  QueuedNodeProc
 
struct  RandomIter
 
struct  RangeFeed
 
class  RuntimeError
 Thrown when an error occurs during the data processing. More...
 
class  SequenceAdapter
 
struct  shared_queued
 
struct  shared_queued< T< Types... > >
 
class  ShuntProc
 
class  SigSlotSinkSourceAdapter
 
class  SimpleBlob
 
class  SimpleBlobSet
 
class  SimpleChannel
 
class  SimpleCluster
 
class  SimpleDepo
 
class  SimpleDepoSet
 
class  SimpleFrame
 
class  SimpleTrace
 
class  SimpleWire
 
class  Singleton
 
class  SinkNodeProc
 
class  SinkProc
 
class  SourceNodeProc
 
class  SourceProc
 
class  TimeKeeper
 
struct  tuple_helper
 
struct  tuple_helper< T< Types... > >
 
struct  type_repeater
 
struct  type_repeater< 0, T >
 
struct  ValueError
 Thrown when a wrong value has been encountered. More...
 
class  WireGenerator
 
class  WireParams
 
class  WirePlaneId
 
struct  WirePlaneSelector
 Select wires by plane (and apa/face) More...
 
class  WireSource
 
class  WireSummarizer
 
class  WireSummary
 
class  ZSEndedTrace
 

Typedefs

typedef Json::Value Configuration
 
typedef boost::error_info< struct tag_errmsg, std::string > errmsg
 
typedef D3Vector< double > Point
 A 3D Cartesian point in double precision. More...
 
typedef Point Vector
 An alias for Point. More...
 
typedef std::pair< Point, PointRay
 A line segment running from a first (tail) to a second (head) point. More...
 
typedef std::pair< Ray, Rayray_pair_t
 
typedef std::vector< ray_pair_tray_pair_vector_t
 
typedef std::vector< PointPointVector
 PointVector - a collection of Points. More...
 
typedef std::pair< double, VectorScalarPoint
 A scalar + vector, eg charge at a point. More...
 
typedef std::vector< ScalarPointScalarField
 
typedef std::pair< Point, float > PointValue
 PointValue - an association of a point and a value. More...
 
typedef std::vector< PointValuePointValueVector
 PointValueVector - a collection of point-value associations. More...
 
typedef std::set< Point, ComparePointsPointSet
 
typedef D3Vector< float > PointF
 
typedef std::variant< size_t, IChannel::pointer, IWire::pointer, IBlob::pointer, ISlice::pointer, IChannel::shared_vectorcluster_ptr_t
 The vertex property. More...
 
typedef boost::adjacency_list< boost::setS, boost::vecS, boost::undirectedS, cluster_node_tcluster_graph_t
 
typedef boost::graph_traits< cluster_graph_t >::vertex_descriptor cluster_vertex_t
 
typedef boost::graph_traits< cluster_graph_t >::edge_descriptor cluster_edge_t
 
typedef boost::graph_traits< cluster_graph_t >::vertex_iterator cluster_vertex_iter_t
 
typedef IndexedGraph< cluster_node_tcluster_indexed_graph_t
 
typedef std::set< IDepo::pointer, IDepoDriftCompareDepoTauSortedSet
 
typedef std::set< IDiffusion::pointer, IDiffusionCompareLbeginIDiffusionSet
 
typedef std::pair< IImpactResponse::pointer, IImpactResponse::pointerTwoImpactResponses
 
typedef std::pair< IWire::pointer, IWire::pointerIWirePair
 Some common collections. More...
 
typedef std::set< IWire::pointer, IWireCompareIdentIWireSet
 
typedef std::set< IWire::pointer, IWireCompareIndexIWireIndexSet
 
typedef std::set< IWire::pointer, IWireCompareSegmentIWireSegmentSet
 
typedef boost::function< bool(IWire::pointer)> wire_selector
 
typedef std::queue< boost::any > Pipe
 
typedef std::vector< Proc * > Pipeline
 
typedef std::deque< boost::any > queuedany
 

Enumerations

enum  WirePlaneLayer_t { kUnknownLayer =0, kUlayer =1, kVlayer =2, kWlayer =4 }
 Enumerate layer IDs. These are not indices! More...
 

Functions

std::ostream & operator<< (std::ostream &os, const WireCell::Binning &bins)
 
template<typename T >
convert (const Configuration &cfg, const T &def=T())
 Convert a configuration value to a particular type. More...
 
template<>
bool convert< bool > (const Configuration &cfg, const bool &def)
 
template<>
int convert< int > (const Configuration &cfg, const int &def)
 
template<>
float convert< float > (const Configuration &cfg, const float &def)
 
template<>
double convert< double > (const Configuration &cfg, const double &def)
 
template<>
std::string convert< std::string > (const Configuration &cfg, const std::string &def)
 
template<>
std::vector< std::string > convert< std::vector< std::string > > (const Configuration &cfg, const std::vector< std::string > &def)
 
template<>
std::vector< int > convert< std::vector< int > > (const Configuration &cfg, const std::vector< int > &def)
 
template<>
std::vector< double > convert< std::vector< double > > (const Configuration &cfg, const std::vector< double > &def)
 
Configuration branch (Configuration cfg, const std::string &dotpath)
 Follow a dot.separated.path and return the branch there. More...
 
Configuration update (Configuration &a, Configuration &b)
 Merge dictionary b into a, return a. More...
 
Configuration append (Configuration &a, Configuration &b)
 Return an array which is composed of the array b appended to the array a. More...
 
template<typename T >
Configuration find (Configuration &lst, const std::string &dotpath, const T &val)
 Return dictionary in given list if it value at dotpath matches. More...
 
template<typename T >
get (Configuration cfg, const std::string &dotpath, const T &def=T())
 Get value in configuration at the dotted path from or return default. More...
 
template<typename T >
void put (Configuration &cfg, const std::string &dotpath, const T &val)
 Put value in configuration at the dotted path. More...
 
template<class T >
std::ostream & operator<< (std::ostream &os, const D3Vector< T > &vec)
 
template<class T >
D3Vector< T > operator- (const D3Vector< T > a, const D3Vector< T > b)
 
template<class T >
D3Vector< T > operator+ (const D3Vector< T > a, const D3Vector< T > b)
 
template<class T >
D3Vector< T > operator* (const D3Vector< T > a, T s)
 
template<class T >
D3Vector< T > operator/ (const D3Vector< T > a, T s)
 
template<class T >
bool operator== (const D3Vector< T > &a, const D3Vector< T > &b)
 
template<class T >
bool operator!= (const D3Vector< T > &a, const D3Vector< T > &b)
 
template<class T >
D3Vector< T > operator* (T s, const D3Vector< T > a)
 
std::size_t fft_best_length (size_t nsamples, bool keep_odd_even=false)
 
int hit_square (int axis0, const Ray &bounds, const Point &point, const Vector &dir, Ray &hits)
 
int box_intersection (const Ray &bounds, const Ray &ray, Ray &hits)
 
double memusage_resident ()
 
double memusage_shared ()
 
double memusage_size ()
 
bool point_contained (const Point &point, const Ray &bounds)
 
bool point_contained (const Point &point, const Ray &bounds, int axis)
 
double point_angle (const Vector &axis, const Vector &vector)
 
Ray ray_pitch (const Ray &ray1, const Ray &ray2)
 
double ray_length (const Ray &ray)
 
Vector ray_vector (const Ray &ray)
 
Vector ray_unit (const Ray &ray)
 
double ray_dist (const Ray &ray, const Point &point)
 
double ray_volume (const Ray &ray)
 
template<>
WireCell::Point convert< WireCell::Point > (const Configuration &cfg, const WireCell::Point &def)
 
template<>
WireCell::Ray convert< WireCell::Ray > (const Configuration &cfg, const WireCell::Ray &def)
 
std::ostream & operator<< (std::ostream &os, const WireCell::Ray &ray)
 
WireCell::Ray operator/ (WireCell::Ray ray, const double &scale)
 
std::ostream & operator<< (std::ostream &os, const WireCell::Quantity &q)
 
WireCell::Quantity operator- (const WireCell::Quantity &other)
 
WireCell::Quantity operator* (const WireCell::Quantity &lhs, const WireCell::Quantity &rhs)
 
WireCell::Quantity operator/ (const WireCell::Quantity &lhs, const WireCell::Quantity &rhs)
 
WireCell::Quantity operator+ (const WireCell::Quantity &lhs, const WireCell::Quantity &rhs)
 
WireCell::Quantity operator- (const WireCell::Quantity &lhs, const WireCell::Quantity &rhs)
 
bool operator== (const WireCell::Quantity &lhs, const double &scalar)
 
bool operator!= (const WireCell::Quantity &lhs, const double &scalar)
 
bool operator< (const WireCell::Quantity &lhs, const double &scalar)
 
bool operator> (const WireCell::Quantity &lhs, const double &scalar)
 
bool operator== (const double &scalar, const WireCell::Quantity &rhs)
 
bool operator!= (const double &scalar, const WireCell::Quantity &rhs)
 
bool operator< (const double &scalar, const WireCell::Quantity &rhs)
 
bool operator> (const double &scalar, const WireCell::Quantity &rhs)
 
template<>
tagrules::tagset_t convert< tagrules::tagset_t > (const Configuration &cfg, const tagrules::tagset_t &def)
 
template<>
tagrules::ruleset_t convert< tagrules::ruleset_t > (const Configuration &cfg, const tagrules::ruleset_t &def)
 
std::string demangle (const std::string &name)
 
template<class T >
std::string type (const T &t)
 
template<typename Type >
std::vector< Type > oftype (const cluster_indexed_graph_t &g)
 
template<typename Type >
std::vector< Type > neighbors_oftype (const cluster_indexed_graph_t &g, const cluster_node_t &n)
 
IDepo::vector depo_chain (IDepo::pointer recent)
 
bool ascending_time (const WireCell::IDepo::pointer &lhs, const WireCell::IDepo::pointer &rhs)
 Compare two IDepo::pointer by time (ascending). x is used to break tie. More...
 
bool descending_time (const WireCell::IDepo::pointer &lhs, const WireCell::IDepo::pointer &rhs)
 Compare two IDepo::pointers for by time, descending. x is used to break tie. More...
 
bool ascending_index (IWire::pointer lhs, IWire::pointer rhs)
 
std::ostream & operator<< (std::ostream &os, const WireCell::WirePlaneId &wpid)
 
std::ostream & operator<< (std::ostream &o, const WireCell::WirePlaneLayer_t &layer)
 
template<>
WireCell::WirePlaneId convert< WireCell::WirePlaneId > (const Configuration &cfg, const WireCell::WirePlaneId &def)
 
Procjoin (Pipeline &pipeline, Proc *src, Proc *dst)
 

Variables

wire_selector select_all_wires = WirePlaneSelector(kUlayer|kVlayer|kWlayer, 0, 0)
 
wire_selector select_u_wires = WirePlaneSelector(kUlayer, 0, 0)
 
wire_selector select_v_wires = WirePlaneSelector(kVlayer, 0, 0)
 
wire_selector select_w_wires = WirePlaneSelector(kWlayer, 0, 0)
 
wire_selector select_uvw_wires [3]
 
const WirePlaneLayer_t iplane2layer [3] = { kUlayer, kVlayer, kWlayer }
 

Detailed Description

This is the main entry point to the WCT. It provides a single command line method or optionally a family of fine-grained methods for setup and running.

One use of this is in the wire-cell command line program. It may also be use to embed WCT into a larger application or framework.

Wire Cell uses Eigen3 arrays for holding large block data like the waveforms from one plane of one readout frame. This header provides a shim between Eigen3 and the rest of Wire Cell.

There are a few important rules:

  • Eigen3 Arrays have element-wise arithmetic and Matrices have matrix-like arithmetic otherwise are similar.
  • They have .array() and .matrix() methods to produce one from the other.
  • Arrays are indexed by (row,col) order.
  • An Eigen3 Vector is a 1D Matrix of shape (N,1), again, (row,col).
  • A row, column or block from an array references the original array so can not live beyond it.
  • In Wire Cell large arrays are accessed via const shared pointer.

Usage examples are given below.

Vector a 3-vector of double.

See also WireCell::Point.

Interpolationn helpers.

See test_interpolate.cxx.

This class provides a 2D array-like structure which holds things of templated type. It's not fancy.

Persist structured information.

Any and all structured information that needs to be loaded or saved uses the methods in WireCell::Persist to do so. The transient data model is that of JsonCPP's Json::Value. The persistent format is either JSON or if the toolkit has support compiled in, Jsonnet.

Note, "external" data which may be voluminous, complex or otherwise inconvenient to convert to JSON would not use WireCell::Persist but rather be brought between files and an IData model using an ISink/ISource.

See also WireCellUtil/Configuration.h for how the configuration layer uses Json::Value objects. Large configuration items like wire geometry and field response are also loaded as JSON.

A ray grid is defined by pair-wise layers of parallel, ordered pairs of rays.

This file includes the implemenation for a ray grid as well as classes and functions that operate with it.

See section in the WCT manual for details.

Solving attempts to invert the matrix equation m = G*b where m is a vector of measurements on channels, b is a vector of blobs and G is a matrix that relates the two.

Define a tiling of overlapping sets rays.

This is part of Ray Grid.

See the WCT manual for details.

Ress is an interface to wire-cell-ress

A system of units compatible with (taken from) CLHEP.

Code here helps read in data which follows the Wire Cell Toolkit wire data schema. See python module wirecell.util.wires.schema and sister submodules.

Some tools that operate on frame-related interfaces.

fixme: this should probably go into some WireCellItools package.

Provides information about an "anode face" which consists of a number of parallel wire planes, each consisting of a number of parallel wires.

Information includes:

  • Internal geometry of the wires in their planes and how they relate to a coordinate system of the larger enclosing volume.
  • field response information
  • wire/channel connectivity and numbering

Provides information about an "anode plane" which consists of a number of parallel wire planes as IWirePlane objects.

fixme: this has become kind of a kitchen sink.

A blob is a region in the 2D plane transverse to the drift direction. It is made up of a number of logically coplanar "layers". Each layer is bound by a pair of parallel rays. Rays may correspond to wires or to overall bounds of senitivity of the anode plane face. See manual for details.

A blob is assumed to exist in some context which provides its location along a drift direction aka time and a logical assocation with a particular anode face. See IBlobSet for example.

A blob set holds a collection of blobs.

See also ICluster which allows more rich associations.

IBlobSetProcessor consumes blob sets and sometimes produces them.

IChannel embodies static information about a single front end electronics channel to which some number of wire segments in an conductor feeds.

A channel response gives access to a per-channel response function. This is typically used to return the electronics response for a channel. Depending on implementation this may be an ideal response shared by all or it could be some measured or calibration response that differs for each channel.

A Channel Spectrum provides a discrete Fourier amplitude as a function of frequency.

An example implementation is a model of the noise on a given channel.

IChannelStatus provides information about each channel which potentially could change during the run.

A "cluster" (as defined here) is a graph connecting shared points to instances of a specific set of types of WCT data classes related to WC imaging. See node_t below for the supported types.

A clustering consumes blob sets and sometimes emits cluster objects.

A depo framer takes in a collection of depositions and produces a single frame that contains their associated signal waveforms. Excess depos may be dropped.

A field response provides access to a FieldResponse data structure. Use this interface instead of directly loading a response schema so that multiple components may share the same data without causing multiple loads.

This interface provides access to some "filter waveform" which is some discreetly sampled function.

A hydra has N input queues and M output queues each of a specified type. Not all queues may have elements. The implementation callable may leave elements in input queues for subsequent calls when new data exists.

A plane impact response provides information about a collection of impact responses for a plane. An impact response is a complex Fourier spectrum of some response (eg, field and possibly also electronics) to a point charge on a drift path that starts at the given impact position. Impact positions provide a regular subdivision along the pitch direction for a wire plane. Typically ten impact positions per wire region are used and with one impact position exactly aligned to a wire position.

A slice associates an IChannel with a value representing activity over some time span.

The time span of the slice is given in the WCT system of units. Typically it is some multiple of sampling ticks, but need not be.

The slice also caries an "ident" which definition is application-dependent.

A tiling consumes a time slice of channel samples and produces a set of blobs from it.

This is an interface to data about a waveform. It is a contiguous floating point sampling over a regular period and relative to some start (eg, start time).

Provides geometrical information about one wire plane in terms of its wire direction, pitch, bounding box and individual wires from which channel information can be derived.

A wire schema provides information on the detector/anode/face/plane/wire geometry hiearchy.

This information should be accessed through this interface instead of directly loading via the WireSchema code so that different components may share the information without leading to multiple loads of the data.

Some wire selectors.

Fixme: this isn't really appropriate for an interface package.

SimpleBlob

An AnodePlane provides wire-related and some volumetric geometrical information as well serving as the top of anode/face/plane organizational hierarchy for accessing this info. See also IAnodeFace and IWirePlane.

A blip source produces individual energy depositions in various ways.

This class "splats" depos directly into a frame without regards to much reality. It's only useful for gross, but fast debugging jobs. The frame it produces is the moral equivalent of post-SP.

Make a frame from depos using an ImpactTransform.

Make a frame from depos using an ImpactZipper.

See also the very similar DepoTransform which is newer and faster.

Convert ionization electrons into ADC.

This class assumes fine-grained field responses calculated at impact positions along lines across the wire pitch for each plane.

Digitizer converts voltage waveforms to integer ADC ones.

Resulting waveforms are still in floating-point form and should be round()'ed and truncated to whatever integer representation is wanted by some subsequent node.

An ElecResponse waveform is that due to sending a unit charge pulse into an amplifier with gain and shaping and a particular response function of the BNL cold electronics.

A noise model based on empirically measured noise spectra.

It requires configuration file holding a list of dictionary which provide association between wire length and the noise spectrum.

TBD: document JSON file format for providing spectra and any other parameters.

Define a pipeline facade over WCT nodes.

FIXME: this needs to move into the mithical "interface utilities" library along with much other stuff.

ImpactData represents the true charge distribution in time at the point in space where a field response function begins.

This component will output a "misconfigured" trace for each input trace.

It does this by filtering out an assumed electronics response function and applying a new one.

Note, traces are "misconfigured" independently even if multiple traces exist on the same channel.

By default the output traces will be sized larger than input by nsamples-1. If the "truncated" option is true then the output trace will be truncated to match the input size. this may cut off signal for traces smaller than the time where the electronics response functions are finite.

This component does not honor frame/trace tags. No tags will be considered on input and none are placed on output.

MultiDuctor - apply one of many possible ductors based on outcome of rules applied to input depos.

A list of independent "chains" are given. Each chain is applied to an input depo. A chain is a sequence of rules. Each rule is applied in turn to a depo until one matches. On a match, the ductor associated with the rule is given the depo and subsequent iteration of the chain is abandoned.

This frame source provides frames filled with noise.

Each time it is called it produces a fixed readout length of voltage-level noise which spans all channels.

This component will output a "ch-by-ch variation" trace for each input trace. Reference to "Misconfigure"

It does this by filtering out an assumed electronics response function and applying a new one from ch-by-ch electronics calibration.

By default the output traces will be sized larger than input by nsamples-1. If the "truncated" option is true then the output trace will be truncated to match the input size. this may cut off signal for traces smaller than the time where the electronics response functions are finite.

This component does not honor frame/trace tags. No tags will be considered on input and none are placed on output.

A PlaneDiffuser will return a queue of diffusions once enough depositions have been collected such that the queue represents all diffusions "close enough" to each wire. It implements a window across the wire pitch.

Gen::Random is an IRandom which is implemented with standard C++ <random>.

An RCResponse waveform is simple resistor-capacitor response.

A reframer takes makes a "rectangular" frame filled with samples from the tagged traces of its input. This new frame has exactly one trace for each channel and each trace is padded to span a uniform duration. These configuration paramters control how the new frame is shaped:

  • tags :: list of trace tags to consider. an empty list means to use all traces. Default: [].
  • tbin :: the number of ticks measured from the input frame reference time to start each output trace. Converted to time via the input frame's tick, this value will be applied to the output frame's reference time. As such, the "tbin()" method of the output traces will return 0. Default: 0.
  • nticks :: the total number of ticks in the output traces. Default: 0.
  • toffset :: an addition time offset arbitrarily added to the output frame's reference time. This time is asserts some fiction and does not contribute to calculating the output tbin. Default: 0.0.
  • fill :: if a needed sample does not exist it will be set to this value. Default: 0.0.

Vary field response to study systematics.

The static channel status component provides a simple way to set channel status via configuration. It does not provide for dynamic changes.

An IWirePlane.

A wire schema store based on loading data from files.

Make a new output frame with a set of traces selected from the input based on being in a set of channels and possibly tags.

Database Channel Selector: select channels from database

This component provides field response data as read in from a "WCT field response" JSON file

This component applies "compressed sensing" influenced signal processing based on an L1 norm minimzation which fits both a unipolar collection and a bipolar induction response to regions channels in shorted regions known to have a mix.

Inherently MicroBooNE-specific functions and classes

This component provides identical channel responses for all channels and which use the nominal electronics response parameterized by gain and shaping time.

This is Omnibus, a WCT app object that ties together signal processing components. It takes any number of frame filters and pushes one frame from source, through the pipeline to sink.

Remove all possible noise from a microboone-like detector.

This filter is a kitchen sink class and is a candidate for factoring.

This component provides per-channel responses based on a configuration data file.

Inherently protoDUNE-specific functions and classes Modified from Microboone.h

Save depos to a Numpy file.

Some frames to a Numpy file

Typedef Documentation

◆ cluster_edge_t

typedef boost::graph_traits<cluster_graph_t>::edge_descriptor WireCell::cluster_edge_t

Definition at line 89 of file ICluster.h.

◆ cluster_graph_t

typedef boost::adjacency_list<boost::setS, boost::vecS, boost::undirectedS, cluster_node_t> WireCell::cluster_graph_t

Definition at line 87 of file ICluster.h.

◆ cluster_indexed_graph_t

◆ cluster_ptr_t

The vertex property.

Definition at line 33 of file ICluster.h.

◆ cluster_vertex_iter_t

typedef boost::graph_traits<cluster_graph_t>::vertex_iterator WireCell::cluster_vertex_iter_t

Definition at line 90 of file ICluster.h.

◆ cluster_vertex_t

typedef boost::graph_traits<cluster_graph_t>::vertex_descriptor WireCell::cluster_vertex_t

Definition at line 88 of file ICluster.h.

◆ Configuration

typedef Json::Value WireCell::Configuration

The Wire Cell Toolkit configuration layer uses Json::Value objects for its transient data model.

The Configuration type is a recursive in that one Configuration object may contain others.

The WCT assumes an Object Configuration Protocol is implemented by the "client" code that uses the toolkit. See for example the reference implementation in the wire-cell command line program. This protocol consists of:

1) Creation of the list of Configuration objects, typically via WireCell::Persist::load().

2) Iterating this list and for each suitable Configuration object instantiating the appropriately matching IConfigurable via the WireCell::NamedFactory facility.

3) Obtaining the default Configuration object from the IConfigurable and merging the user-supplied on top of it.

4) Passing the resulting Configuration object to the IConfigurable::configure() method.

A suitable Configuration object must have two top level keys and may have a third optional key:

  • type :: must match the "component class name" (as given as first argument to the WIRECELL_FACTORY() macro in the implementation file)
  • data :: an object which follows a schema which is specific to each IConfigurable implementation.
  • name :: an optional Instance Name. If not given, the default instance of the type will be used.

Definition at line 50 of file Configuration.h.

◆ DepoTauSortedSet

Definition at line 77 of file IDepo.h.

◆ errmsg

typedef boost::error_info<struct tag_errmsg, std::string> WireCell::errmsg

Definition at line 54 of file Exceptions.h.

◆ IDiffusionSet

Definition at line 66 of file IDiffusion.h.

◆ IWireIndexSet

Definition at line 78 of file IWire.h.

◆ IWirePair

Some common collections.

Definition at line 55 of file IWire.h.

◆ IWireSegmentSet

Definition at line 89 of file IWire.h.

◆ IWireSet

Definition at line 66 of file IWire.h.

◆ Pipe

typedef std::queue<boost::any> WireCell::Pipe

Definition at line 22 of file GenPipeline.h.

◆ Pipeline

typedef std::vector<Proc*> WireCell::Pipeline

Definition at line 32 of file GenPipeline.h.

◆ Point

typedef D3Vector<double> WireCell::Point

A 3D Cartesian point in double precision.

Definition at line 15 of file Point.h.

◆ PointF

typedef D3Vector<float> WireCell::PointF

PointF - a 3D Cartesian point in single precision for when memory is constrained and double precision is not required.

Definition at line 50 of file Point.h.

◆ PointSet

Definition at line 46 of file Point.h.

◆ PointValue

typedef std::pair<Point, float> WireCell::PointValue

PointValue - an association of a point and a value.

Definition at line 37 of file Point.h.

◆ PointValueVector

typedef std::vector<PointValue> WireCell::PointValueVector

PointValueVector - a collection of point-value associations.

Definition at line 40 of file Point.h.

◆ PointVector

typedef std::vector<Point> WireCell::PointVector

PointVector - a collection of Points.

Definition at line 30 of file Point.h.

◆ queuedany

typedef std::deque<boost::any> WireCell::queuedany

Definition at line 181 of file GenPipeline.h.

◆ Ray

typedef std::pair<Point, Point> WireCell::Ray

A line segment running from a first (tail) to a second (head) point.

Definition at line 21 of file Point.h.

◆ ray_pair_t

typedef std::pair<Ray,Ray> WireCell::ray_pair_t

Definition at line 24 of file Point.h.

◆ ray_pair_vector_t

Definition at line 27 of file Point.h.

◆ ScalarField

typedef std::vector<ScalarPoint> WireCell::ScalarField

Definition at line 34 of file Point.h.

◆ ScalarPoint

typedef std::pair<double, Vector> WireCell::ScalarPoint

A scalar + vector, eg charge at a point.

Definition at line 33 of file Point.h.

◆ TwoImpactResponses

◆ Vector

An alias for Point.

Definition at line 18 of file Point.h.

◆ wire_selector

typedef boost::function<bool (IWire::pointer)> WireCell::wire_selector

Definition at line 16 of file IWireSelectors.h.

Enumeration Type Documentation

◆ WirePlaneLayer_t

Enumerate layer IDs. These are not indices!

Enumerator
kUnknownLayer 
kUlayer 
kVlayer 
kWlayer 

Definition at line 13 of file WirePlaneId.h.

Function Documentation

◆ append()

WireCell::Configuration WireCell::append ( Configuration a,
Configuration b 
)

Return an array which is composed of the array b appended to the array a.

Append array b onto end of a and return a.

Definition at line 42 of file Configuration.cxx.

Here is the caller graph for this function:

◆ ascending_index()

bool WireCell::ascending_index ( IWire::pointer  lhs,
IWire::pointer  rhs 
)

Definition at line 16 of file IWire.cxx.

◆ ascending_time()

bool WireCell::ascending_time ( const WireCell::IDepo::pointer lhs,
const WireCell::IDepo::pointer rhs 
)

Compare two IDepo::pointer by time (ascending). x is used to break tie.

Definition at line 17 of file IDepo.cxx.

Here is the caller graph for this function:

◆ box_intersection()

int WireCell::box_intersection ( const Ray bounds,
const Ray ray,
Ray hits 
)

Determine if a ray hits a rectangular box aligned with the Cartesian axes.

See WireCelll::hit_square for definition of arguments and return value.

Definition at line 61 of file Intersection.cxx.

Here is the call graph for this function:

◆ branch()

WireCell::Configuration WireCell::branch ( WireCell::Configuration  cfg,
const std::string &  dotpath 
)

Follow a dot.separated.path and return the branch there.

Definition at line 7 of file Configuration.cxx.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ convert()

template<typename T >
T WireCell::convert ( const Configuration cfg,
const T &  def = T() 
)

Convert a configuration value to a particular type.

For persistence use WireCell::Persist::load() and WireCell::Persist::dump(). The following functions provide some access methods which add some value beyond what Json::Value provides including some support for basic WCT types.

Definition at line 63 of file Configuration.h.

Here is the caller graph for this function:

◆ convert< bool >()

template<>
bool WireCell::convert< bool > ( const Configuration cfg,
const bool &  def 
)
inline

Definition at line 68 of file Configuration.h.

◆ convert< double >()

template<>
double WireCell::convert< double > ( const Configuration cfg,
const double &  def 
)
inline

Definition at line 86 of file Configuration.h.

Here is the caller graph for this function:

◆ convert< float >()

template<>
float WireCell::convert< float > ( const Configuration cfg,
const float &  def 
)
inline

Definition at line 80 of file Configuration.h.

◆ convert< int >()

template<>
int WireCell::convert< int > ( const Configuration cfg,
const int &  def 
)
inline

Definition at line 74 of file Configuration.h.

Here is the caller graph for this function:

◆ convert< std::string >()

template<>
std::string WireCell::convert< std::string > ( const Configuration cfg,
const std::string &  def 
)
inline

Definition at line 92 of file Configuration.h.

◆ convert< std::vector< double > >()

template<>
std::vector<double> WireCell::convert< std::vector< double > > ( const Configuration cfg,
const std::vector< double > &  def 
)
inline

Definition at line 116 of file Configuration.h.

Here is the call graph for this function:

◆ convert< std::vector< int > >()

template<>
std::vector<int> WireCell::convert< std::vector< int > > ( const Configuration cfg,
const std::vector< int > &  def 
)
inline

Definition at line 107 of file Configuration.h.

Here is the call graph for this function:

◆ convert< std::vector< std::string > >()

template<>
std::vector<std::string> WireCell::convert< std::vector< std::string > > ( const Configuration cfg,
const std::vector< std::string > &  def 
)
inline

Definition at line 98 of file Configuration.h.

◆ convert< tagrules::ruleset_t >()

template<>
tagrules::ruleset_t WireCell::convert< tagrules::ruleset_t > ( const Configuration cfg,
const tagrules::ruleset_t def 
)
inline

Definition at line 118 of file TagRules.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ convert< tagrules::tagset_t >()

template<>
tagrules::tagset_t WireCell::convert< tagrules::tagset_t > ( const Configuration cfg,
const tagrules::tagset_t def 
)
inline

Definition at line 101 of file TagRules.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ convert< WireCell::Point >()

template<>
WireCell::Point WireCell::convert< WireCell::Point > ( const Configuration cfg,
const WireCell::Point def 
)
inline

Definition at line 91 of file Point.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ convert< WireCell::Ray >()

template<>
WireCell::Ray WireCell::convert< WireCell::Ray > ( const Configuration cfg,
const WireCell::Ray def 
)
inline

Definition at line 96 of file Point.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ convert< WireCell::WirePlaneId >()

template<>
WireCell::WirePlaneId WireCell::convert< WireCell::WirePlaneId > ( const Configuration cfg,
const WireCell::WirePlaneId def 
)
inline

Definition at line 60 of file WirePlaneId.h.

Here is the call graph for this function:

◆ demangle()

std::string WireCell::demangle ( const std::string &  name)

Definition at line 6 of file Type.cxx.

Here is the caller graph for this function:

◆ depo_chain()

IDepo::vector WireCell::depo_chain ( IDepo::pointer  recent)

Simple utility to return a vector of depositions formed by walking the prior() chain. The vector begins with the most recent.

Definition at line 4 of file IDepo.cxx.

Here is the caller graph for this function:

◆ descending_time()

bool WireCell::descending_time ( const WireCell::IDepo::pointer lhs,
const WireCell::IDepo::pointer rhs 
)

Compare two IDepo::pointers for by time, descending. x is used to break tie.

Definition at line 29 of file IDepo.cxx.

Here is the caller graph for this function:

◆ fft_best_length()

std::size_t WireCell::fft_best_length ( size_t  nsamples,
bool  keep_odd_even = false 
)
Here is the caller graph for this function:

◆ find()

template<typename T >
Configuration WireCell::find ( Configuration lst,
const std::string &  dotpath,
const T &  val 
)

Return dictionary in given list if it value at dotpath matches.

Definition at line 138 of file Configuration.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get()

template<typename T >
T WireCell::get ( Configuration  cfg,
const std::string &  dotpath,
const T &  def = T() 
)

Get value in configuration at the dotted path from or return default.

Definition at line 149 of file Configuration.h.

Here is the call graph for this function:

◆ hit_square()

int WireCell::hit_square ( int  axis0,
const Ray bounds,
const Point point,
const Vector dir,
Ray hits 
)

Determine a 2D square is intersected by a 3D ray projected to its plane.

Parameters
axis0is the axis number (0,1,2) to which the projected plane is perpendicular.
boundsis a raw from opposite corners of the bounding box.
pointis a WireCell::Point from which a ray emanates.
diris a WireCell::Vector in the direction of the ray.
hitsis the returned intersection(s).
Returns
a "hit mask" with 0 indicating the ray did not intersect, 1 or 2 meaning the first or second point in the ray is valid and 3 meaning both are.

Definition at line 8 of file Intersection.cxx.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ join()

Proc* WireCell::join ( Pipeline pipeline,
Proc src,
Proc dst 
)

Definition at line 218 of file GenPipeline.h.

Here is the caller graph for this function:

◆ memusage_resident()

double WireCell::memusage_resident ( )

Definition at line 43 of file MemUsage.cxx.

Here is the caller graph for this function:

◆ memusage_shared()

double WireCell::memusage_shared ( )

Definition at line 50 of file MemUsage.cxx.

◆ memusage_size()

double WireCell::memusage_size ( )

Definition at line 57 of file MemUsage.cxx.

Here is the caller graph for this function:

◆ neighbors_oftype()

template<typename Type >
std::vector<Type> WireCell::neighbors_oftype ( const cluster_indexed_graph_t g,
const cluster_node_t n 
)

Definition at line 120 of file ICluster.h.

◆ oftype()

template<typename Type >
std::vector<Type> WireCell::oftype ( const cluster_indexed_graph_t g)

Definition at line 108 of file ICluster.h.

◆ operator!=() [1/3]

template<class T >
bool WireCell::operator!= ( const D3Vector< T > &  a,
const D3Vector< T > &  b 
)

Definition at line 175 of file D3Vector.h.

◆ operator!=() [2/3]

bool WireCell::operator!= ( const WireCell::Quantity lhs,
const double &  scalar 
)
inline

Definition at line 177 of file Quantity.h.

Here is the call graph for this function:

◆ operator!=() [3/3]

bool WireCell::operator!= ( const double &  scalar,
const WireCell::Quantity rhs 
)
inline

Definition at line 190 of file Quantity.h.

Here is the call graph for this function:

◆ operator*() [1/3]

WireCell::Quantity WireCell::operator* ( const WireCell::Quantity lhs,
const WireCell::Quantity rhs 
)
inline

Definition at line 142 of file Quantity.h.

◆ operator*() [2/3]

template<class T >
D3Vector<T> WireCell::operator* ( const D3Vector< T >  a,
s 
)

Definition at line 160 of file D3Vector.h.

◆ operator*() [3/3]

template<class T >
D3Vector<T> WireCell::operator* ( s,
const D3Vector< T >  a 
)

Definition at line 180 of file D3Vector.h.

◆ operator+() [1/2]

template<class T >
D3Vector<T> WireCell::operator+ ( const D3Vector< T >  a,
const D3Vector< T >  b 
)

Definition at line 155 of file D3Vector.h.

Here is the call graph for this function:

◆ operator+() [2/2]

WireCell::Quantity WireCell::operator+ ( const WireCell::Quantity lhs,
const WireCell::Quantity rhs 
)
inline

Definition at line 156 of file Quantity.h.

◆ operator-() [1/3]

WireCell::Quantity WireCell::operator- ( const WireCell::Quantity other)
inline

Definition at line 137 of file Quantity.h.

Here is the call graph for this function:

◆ operator-() [2/3]

template<class T >
D3Vector<T> WireCell::operator- ( const D3Vector< T >  a,
const D3Vector< T >  b 
)

Definition at line 150 of file D3Vector.h.

Here is the call graph for this function:

◆ operator-() [3/3]

WireCell::Quantity WireCell::operator- ( const WireCell::Quantity lhs,
const WireCell::Quantity rhs 
)
inline

Definition at line 163 of file Quantity.h.

◆ operator/() [1/3]

WireCell::Ray WireCell::operator/ ( WireCell::Ray  ray,
const double &  scale 
)
inline

Definition at line 110 of file Point.h.

◆ operator/() [2/3]

WireCell::Quantity WireCell::operator/ ( const WireCell::Quantity lhs,
const WireCell::Quantity rhs 
)
inline

Definition at line 149 of file Quantity.h.

◆ operator/() [3/3]

template<class T >
D3Vector<T> WireCell::operator/ ( const D3Vector< T >  a,
s 
)

Definition at line 165 of file D3Vector.h.

◆ operator<() [1/2]

bool WireCell::operator< ( const WireCell::Quantity lhs,
const double &  scalar 
)
inline

Definition at line 180 of file Quantity.h.

Here is the call graph for this function:

◆ operator<() [2/2]

bool WireCell::operator< ( const double &  scalar,
const WireCell::Quantity rhs 
)
inline

Definition at line 193 of file Quantity.h.

Here is the call graph for this function:

◆ operator<<() [1/6]

std::ostream & WireCell::operator<< ( std::ostream &  os,
const WireCell::WirePlaneId wpid 
)

Definition at line 83 of file WirePlaneId.cxx.

Here is the call graph for this function:

◆ operator<<() [2/6]

std::ostream & WireCell::operator<< ( std::ostream &  o,
const WireCell::WirePlaneLayer_t layer 
)

Definition at line 91 of file WirePlaneId.cxx.

◆ operator<<() [3/6]

std::ostream& WireCell::operator<< ( std::ostream &  os,
const WireCell::Ray ray 
)
inline

Definition at line 103 of file Point.h.

◆ operator<<() [4/6]

std::ostream& WireCell::operator<< ( std::ostream &  os,
const WireCell::Binning bins 
)
inline

Definition at line 124 of file Binning.h.

Here is the call graph for this function:

◆ operator<<() [5/6]

std::ostream& WireCell::operator<< ( std::ostream &  os,
const WireCell::Quantity q 
)
inline

Definition at line 131 of file Quantity.h.

Here is the call graph for this function:

◆ operator<<() [6/6]

template<class T >
std::ostream& WireCell::operator<< ( std::ostream &  os,
const D3Vector< T > &  vec 
)

Definition at line 144 of file D3Vector.h.

◆ operator==() [1/3]

template<class T >
bool WireCell::operator== ( const D3Vector< T > &  a,
const D3Vector< T > &  b 
)

Definition at line 170 of file D3Vector.h.

Here is the call graph for this function:

◆ operator==() [2/3]

bool WireCell::operator== ( const WireCell::Quantity lhs,
const double &  scalar 
)
inline

Definition at line 174 of file Quantity.h.

Here is the call graph for this function:

◆ operator==() [3/3]

bool WireCell::operator== ( const double &  scalar,
const WireCell::Quantity rhs 
)
inline

Definition at line 187 of file Quantity.h.

Here is the call graph for this function:

◆ operator>() [1/2]

bool WireCell::operator> ( const WireCell::Quantity lhs,
const double &  scalar 
)
inline

Definition at line 183 of file Quantity.h.

Here is the call graph for this function:

◆ operator>() [2/2]

bool WireCell::operator> ( const double &  scalar,
const WireCell::Quantity rhs 
)
inline

Definition at line 196 of file Quantity.h.

Here is the call graph for this function:

◆ point_angle()

double WireCell::point_angle ( const Vector axis,
const Vector vector 
)

Return the angle from axis vector to vector. This is just acos(dot).

Definition at line 57 of file Point.cxx.

Here is the call graph for this function:

◆ point_contained() [1/2]

bool WireCell::point_contained ( const Point point,
const Ray bounds 
)

Return true if point is contained in a rectangular solid described by the ray bounds running between diagonally opposed corners.

Definition at line 40 of file Point.cxx.

◆ point_contained() [2/2]

bool WireCell::point_contained ( const Point point,
const Ray bounds,
int  axis 
)

Return true if point is contained by the bounding box along the given axis (x=0, y=1, z=2) of the bounding box.

Definition at line 50 of file Point.cxx.

◆ put()

template<typename T >
void WireCell::put ( Configuration cfg,
const std::string &  dotpath,
const T &  val 
)

Put value in configuration at the dotted path.

Definition at line 155 of file Configuration.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ray_dist()

double WireCell::ray_dist ( const Ray ray,
const Point point 
)

Return the distance from the tail of the ray to the point projected onto the ray's direction.

Definition at line 95 of file Point.cxx.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ray_length()

double WireCell::ray_length ( const Ray ray)

Return the distance from the tail to the head of the ray.

Definition at line 62 of file Point.cxx.

Here is the caller graph for this function:

◆ ray_pitch()

WireCell::Ray WireCell::ray_pitch ( const Ray ray1,
const Ray ray2 
)

Return a ray representing the points of closest approach between the two lines colinear with the two rays.

Definition at line 76 of file Point.cxx.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ray_unit()

WireCell::Vector WireCell::ray_unit ( const Ray ray)

Return a unit vector pointing in the direction from the tail to the head of the ray.

Definition at line 71 of file Point.cxx.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ray_vector()

WireCell::Vector WireCell::ray_vector ( const Ray ray)

Return a vector going from ray's tail to ray's head.

Definition at line 67 of file Point.cxx.

Here is the caller graph for this function:

◆ ray_volume()

double WireCell::ray_volume ( const Ray ray)

Return the volume of a box aligned with axes and with the ray at opposite corners.

Definition at line 101 of file Point.cxx.

Here is the call graph for this function:

◆ type()

template<class T >
std::string WireCell::type ( const T &  t)

Definition at line 20 of file Type.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update()

Merge dictionary b into a, return a.

Definition at line 19 of file Configuration.cxx.

Here is the caller graph for this function:

Variable Documentation

◆ iplane2layer

const WirePlaneLayer_t WireCell::iplane2layer[3] = { kUlayer, kVlayer, kWlayer }

Definition at line 14 of file WirePlaneId.h.

◆ select_all_wires

wire_selector WireCell::select_all_wires = WirePlaneSelector(kUlayer|kVlayer|kWlayer, 0, 0)

Definition at line 15 of file IWireSelectors.cxx.

◆ select_u_wires

wire_selector WireCell::select_u_wires = WirePlaneSelector(kUlayer, 0, 0)

Definition at line 7 of file IWireSelectors.cxx.

◆ select_uvw_wires

wire_selector WireCell::select_uvw_wires
Initial value:
= {
}
wire_selector select_u_wires
wire_selector select_v_wires
wire_selector select_w_wires

Definition at line 10 of file IWireSelectors.cxx.

◆ select_v_wires

wire_selector WireCell::select_v_wires = WirePlaneSelector(kVlayer, 0, 0)

Definition at line 8 of file IWireSelectors.cxx.

◆ select_w_wires

wire_selector WireCell::select_w_wires = WirePlaneSelector(kWlayer, 0, 0)

Definition at line 9 of file IWireSelectors.cxx.