Juggler
Juggling algorithms and event processing using gaudi framework
|
Namespaces | |
Base | |
BField | |
detail | |
Digi | |
Helpers | |
Options | |
PlotHelpers | |
Reco | |
Track | |
Utils | |
Classes | |
struct | GeometryIdMultisetAccessor |
class | GroupBy |
class | IndexSourceLink |
class | MeasurementCalibrator |
Calibrator to convert an index source link to a measurement. More... | |
struct | ParticleHitCount |
Associate a particle to its hit count within a proto track. More... | |
class | Range |
struct | SimMultiTrajectory |
Struct for truth track fitting/finding result with Acts::KalmanFitter/Acts::CombinatorialKalmanFilter. More... | |
class | SourceLink |
struct | Trajectories |
Typedefs | |
using | VecULong = std::vector< unsigned long > |
using | VecVecULong = std::vector< std::vector< unsigned long > > |
template<typename T > | |
using | GeometryIdMultiset = boost::container::flat_multiset< T, detail::CompareGeometryId > |
template<typename T > | |
using | GeometryIdMultimap = GeometryIdMultiset< std::pair< Acts::GeometryIdentifier, T > > |
using | Index = uint32_t |
template<typename value_t > | |
using | IndexMultimap = boost::container::flat_multimap< Index, value_t > |
using | IndexSourceLinkContainer = GeometryIdMultiset< IndexSourceLink > |
using | IndexSourceLinkAccessor = GeometryIdMultisetAccessor< IndexSourceLink > |
Accessor for the above source link container. More... | |
using | Measurement = ::Acts::BoundVariantMeasurement< IndexSourceLink > |
Variable measurement type that can contain all possible combinations. More... | |
using | MeasurementContainer = std::vector< Measurement > |
using | IndexedParams = std::unordered_map< size_t, Acts::BoundTrackParameters > |
using | SourceLinkContainer = GeometryIdMultiset< SourceLink > |
Store source links ordered by geometry identifier. More... | |
using | TrackParameters = ::Acts::BoundTrackParameters |
(Reconstructed) track parameters e.g. close to the vertex. More... | |
using | TrackParametersContainer = std::vector< TrackParameters > |
Container of reconstructed track states for multiple tracks. More... | |
using | Trajectory = Acts::MultiTrajectory< IndexSourceLink > |
MultiTrajectory definition. More... | |
using | TrajectoryContainer = std::vector< SimMultiTrajectory > |
Container for the truth fitting/finding track(s) More... | |
using | ProtoTrack = std::vector< size_t > |
A proto track is a collection of hits identified by their indices. More... | |
using | ProtoTrackContainer = std::vector< ProtoTrack > |
Container of proto tracks. Each proto track is identified by its index. More... | |
using | TrajectoriesContainer = std::vector< Trajectories > |
Container for multiple trajectories. More... | |
Functions | |
template<typename Container , typename KeyGetter > | |
auto | makeGroupBy (const Container &container, KeyGetter keyGetter) -> GroupBy< decltype(std::begin(container)), KeyGetter > |
Construct the group-by proxy for a container. More... | |
std::string | ensureWritableDirectory (const std::string &dir) |
std::string | joinPaths (const std::string &dir, const std::string &name) |
Join dir and name into one path with correct handling of empty dirs. More... | |
std::string | perEventFilepath (const std::string &dir, const std::string &name, size_t event) |
std::pair< size_t, size_t > | determineEventFilesRange (const std::string &dir, const std::string &name) |
template<typename Iterator > | |
Range< Iterator > | makeRange (Iterator begin, Iterator end) |
template<typename Iterator > | |
Range< Iterator > | makeRange (std::pair< Iterator, Iterator > range) |
template<typename T > | |
Range< typename GeometryIdMultiset< T >::const_iterator > | selectVolume (const GeometryIdMultiset< T > &container, Acts::GeometryIdentifier::Value volume) |
Select all elements within the given volume. More... | |
template<typename T > | |
auto | selectVolume (const GeometryIdMultiset< T > &container, Acts::GeometryIdentifier id) |
template<typename T > | |
Range< typename GeometryIdMultiset< T >::const_iterator > | selectLayer (const GeometryIdMultiset< T > &container, Acts::GeometryIdentifier::Value volume, Acts::GeometryIdentifier::Value layer) |
Select all elements within the given layer. More... | |
template<typename T > | |
auto | selectLayer (const GeometryIdMultiset< T > &container, Acts::GeometryIdentifier id) |
template<typename T > | |
Range< typename GeometryIdMultiset< T >::const_iterator > | selectModule (const GeometryIdMultiset< T > &container, Acts::GeometryIdentifier geoId) |
Select all elements for the given module / sensitive surface. More... | |
template<typename T > | |
auto | selectModule (const GeometryIdMultiset< T > &container, Acts::GeometryIdentifier::Value volume, Acts::GeometryIdentifier::Value layer, Acts::GeometryIdentifier::Value module) |
template<typename T > | |
GroupBy< typename GeometryIdMultiset< T >::const_iterator, detail::GeometryIdGetter > | groupByModule (const GeometryIdMultiset< T > &container) |
Iterate over groups of elements belonging to each module/ sensitive surface. More... | |
template<typename value_t > | |
boost::container::flat_multimap< value_t, Index > | invertIndexMultimap (const IndexMultimap< value_t > &multimap) |
template<typename Container , typename KeyGetter > | |
GroupBy< typename Container::const_iterator, KeyGetter > | makeGroupBy (const Container &container, KeyGetter keyGetter) |
Construct the group-by proxy for a container. More... | |
using Jug::GeometryIdMultimap = typedef GeometryIdMultiset<std::pair<Acts::GeometryIdentifier, T> > |
Store elements indexed by an geometry id.
T | type to be stored |
The behaviour is the same as for the GeometryIdMultiset
except that the stored elements do not know their geometry id themself. When iterating the iterator elements behave as for the std::map
, i.e.
for (const auto& entry: elements) { auto id = entry.first; // geometry id const auto& el = entry.second; // stored element }
using Jug::GeometryIdMultiset = typedef boost::container::flat_multiset<T, detail::CompareGeometryId> |
Store elements that know their detector geometry id, e.g. simulation hits.
T | type to be stored, must be compatible with CompareGeometryId |
The container stores an arbitrary number of elements for any geometry id. Elements can be retrieved via the geometry id; elements can be selected for a specific geometry id or for a larger range, e.g. a volume or a layer within the geometry hierachy using the helper functions below. Elements can also be accessed by index that uniquely identifies each element regardless of geometry id.
typedef uint32_t Jug::Index |
Index type to reference elements in a container.
We do not expect to have more than 2^32 elements in any given container so a fixed sized integer type is sufficient.
using Jug::IndexedParams = typedef std::unordered_map<size_t, Acts::BoundTrackParameters> |
using Jug::IndexMultimap = typedef boost::container::flat_multimap<Index, value_t> |
Store elements that are identified by an index, e.g. in another container.
Each index can have zero or more associated elements. A typical case could be to store all generating particles for a hit where the hit is identified by its index in the hit container.
typedef GeometryIdMultisetAccessor< std::reference_wrapper< const IndexSourceLink > > Jug::IndexSourceLinkAccessor |
Accessor for the above source link container.
It wraps up a few lookup methods to be used in the Combinatorial Kalman Filter
Accessor for the above source link container
It wraps up a few lookup methods to be used in the Combinatorial Kalman Filter
typedef GeometryIdMultiset< std::reference_wrapper< const IndexSourceLink > > Jug::IndexSourceLinkContainer |
Container of index source links.
Since the source links provide a .geometryId()
accessor, they can be stored in an ordered geometry container.
typedef::Acts::BoundVariantMeasurement Jug::Measurement |
Variable measurement type that can contain all possible combinations.
typedef std::vector< Measurement > Jug::MeasurementContainer |
Container of measurements.
In contrast to the source links, the measurements themself must not be orderable. The source links stored in the measurements are treated as opaque here and no ordering is enforced on the stored measurements.
using Jug::ProtoTrack = typedef std::vector<size_t> |
A proto track is a collection of hits identified by their indices.
using Jug::ProtoTrackContainer = typedef std::vector<ProtoTrack> |
Container of proto tracks. Each proto track is identified by its index.
typedef GeometryIdMultiset< SourceLink > Jug::SourceLinkContainer |
Store source links ordered by geometry identifier.
typedef::Acts::BoundTrackParameters Jug::TrackParameters |
(Reconstructed) track parameters e.g. close to the vertex.
typedef std::vector< TrackParameters > Jug::TrackParametersContainer |
Container of reconstructed track states for multiple tracks.
using Jug::TrajectoriesContainer = typedef std::vector<Trajectories> |
Container for multiple trajectories.
using Jug::Trajectory = typedef Acts::MultiTrajectory<IndexSourceLink> |
MultiTrajectory definition.
using Jug::TrajectoryContainer = typedef std::vector<SimMultiTrajectory> |
Container for the truth fitting/finding track(s)
using Jug::VecULong = typedef std::vector<unsigned long> |
using Jug::VecVecULong = typedef std::vector<std::vector<unsigned long> > |
std::pair< size_t, size_t > Jug::determineEventFilesRange | ( | const std::string & | dir, |
const std::string & | name | ||
) |
Determine the range of available events in a directory of per-event files.
@params dir input directory, current directory if empty @params name base filename
Event files must be named [<dir>/]event<XXXXXXXXX>-<name>
to be considered
std::string Jug::ensureWritableDirectory | ( | const std::string & | dir | ) |
Ensure that the given directory exists and is writable.
Will create missing directories and throw on any error.
|
inline |
Iterate over groups of elements belonging to each module/ sensitive surface.
|
inline |
Invert the multimap, i.e. from a -> {b...} to b -> {a...}.
std::string Jug::joinPaths | ( | const std::string & | dir, |
const std::string & | name | ||
) |
Join dir and name into one path with correct handling of empty dirs.
GroupBy< typename Container::const_iterator, KeyGetter > Jug::makeGroupBy | ( | const Container & | container, |
KeyGetter | keyGetter | ||
) |
Construct the group-by proxy for a container.
auto Jug::makeGroupBy | ( | const Container & | container, |
KeyGetter | keyGetter | ||
) | -> GroupBy<decltype(std::begin(container)), KeyGetter> |
Construct the group-by proxy for a container.
Range< Iterator > Jug::makeRange | ( | Iterator | begin, |
Iterator | end | ||
) |
Range< Iterator > Jug::makeRange | ( | std::pair< Iterator, Iterator > | range | ) |
std::string Jug::perEventFilepath | ( | const std::string & | dir, |
const std::string & | name, | ||
size_t | event | ||
) |
Construct a file path of the form [<dir>/]event<XXXXXXXXX>-<name>
.
@params dir output directory, current directory if empty @params name basic filename @params event event number
|
inline |
|
inline |
Select all elements within the given layer.
|
inline |
Select all elements for the given module / sensitive surface.
|
inline |
|
inline |
|
inline |
Select all elements within the given volume.