A container for photon visibility mapping data. More...
#include <OpDetVisibilityData.h>
Public Types | |
using | DataContainer_t = Cont |
Type of the original container. More... | |
using | Mapping_t = Mapping |
Type of the mapping object. More... | |
using | size_type = std::size_t |
using | value_type = Value_t |
Public Types inherited from util::MappedContainer< Cont, Mapping > | |
using | DataContainer_t = Cont |
Type of the original container. More... | |
using | Mapping_t = Mapping |
Type of the mapping object. More... | |
using | MappedContainer_t = MappedContainer< DataContainer_t, Mapping_t > |
Type of this class. More... | |
using | DataIndex_t = util::collection_value_t< Mapping_t > |
Type of the index passed to the original container. More... | |
using | MappingIndex_t = std::size_t |
Type of the index passed to the mapping. More... | |
using | value_type = Value_t |
using | size_type = std::size_t |
using | difference_type = std::ptrdiff_t |
using | reference = util::with_const_as_t< typename Storage_t::reference, util::collection_value_access_t< DataContainer_t > > |
using | const_reference = typename Storage_t::const_reference |
using | iterator = IteratorBase< MappedContainer_t, reference > |
using | const_iterator = IteratorBase< MappedContainer_t const, const_reference > |
Public Member Functions | |
Validity information | |
OpDetVisibilityData ()=default | |
OpDetVisibilityData (DataContainer_t const &cont, Mapping_t const &mapping, size_type size, value_type defValue) | |
Constructor: acquires data, mapping and a default value. More... | |
OpDetVisibilityData (DataContainer_t const &cont, Mapping_t const &mapping, size_type size) | |
Constructor: acquires data and mapping. More... | |
OpDetVisibilityData (DataContainer_t const &cont, Mapping_t const &mapping) | |
Constructor: acquires data and mapping. More... | |
bool | isValid () const |
Returns whether the contained data is valid or not. More... | |
operator bool () const | |
Returns whether the container has valid data. More... | |
bool | operator! () const |
Returns whether the container has no valid data. More... | |
Public Member Functions inherited from util::MappedContainer< Cont, Mapping > | |
size_type | max_size () const |
Returns the size of the largest possible container of this type. More... | |
bool | empty () const |
Returns whether the container has no elements. More... | |
void | setDefaultValue (value_type defValue) |
MappedContainer ()=default | |
Default constructor: container will be unusable until assigned to. More... | |
MappedContainer (DataContainer_t const &cont, Mapping_t const &mapping, size_type size, value_type defValue) | |
Constructor: acquires data, mapping and a default value. More... | |
MappedContainer (DataContainer_t const &cont, Mapping_t const &mapping, size_type size) | |
Constructor: acquires data and mapping. More... | |
reference | defaultValue () |
Returns the default value for elements with no original content. More... | |
const_reference | defaultValue () const |
decltype(auto) | operator[] (MappingIndex_t index) const |
Returns the content corresponding to the specified index . More... | |
decltype(auto) | operator[] (MappingIndex_t index) |
decltype(auto) | at (MappingIndex_t index) const |
Returns the content corresponding to the specified index . More... | |
decltype(auto) | at (MappingIndex_t index) |
decltype(auto) | front () const |
Returns the first element in the container. More... | |
decltype(auto) | front () |
decltype(auto) | back () const |
Returns the last element in the container. More... | |
decltype(auto) | back () |
decltype(auto) | map_index (MappingIndex_t index) const |
Returns the index in the original data which is mapped to index . More... | |
decltype(auto) | map_index (MappingIndex_t index) |
const_iterator | cbegin () const |
Returns a constant iterator to the first mapped element. More... | |
const_iterator | begin () const |
Returns a constant iterator to the first mapped element. More... | |
iterator | begin () |
Returns an iterator to the first mapped element. More... | |
const_iterator | cend () const |
Returns a constant iterator past the last mapped element. More... | |
const_iterator | end () const |
Returns a constant iterator past the last mapped element. More... | |
iterator | end () |
Returns an iterator past the last mapped element. More... | |
Private Types | |
using | ContainerBase_t = util::MappedContainer< Cont, Mapping > |
Static Private Member Functions | |
static size_type | effectiveSize (DataContainer_t const &cont, size_type allegedSize) |
Determines whether the current content should be considered valid. More... | |
static size_type | effectiveSize (DataContainer_t const &cont, Mapping_t const &mapping) |
Determines whether the current content should be considered valid. More... | |
Additional Inherited Members | |
Static Public Attributes inherited from util::MappedContainer< Cont, Mapping > | |
static constexpr DataIndex_t | InvalidIndex = invalidIndex<DataIndex_t>() |
Static Protected Member Functions inherited from util::MappedContainer< Cont, Mapping > | |
static size_type | minimal_size (DataContainer_t const &cont, Mapping_t const &mapping) |
Returns the minimum size to include all mapped values. More... | |
A container for photon visibility mapping data.
This container is designed to replace the use of plain pointers to library data, adding an intermediate mapping layer.
A proper mapping allows to use symmetries of the detector to reduce the redundant size of the library, at the cost of some run time.
This container is used as a util::MappedContainer
object, with the addition of being aware of whether the contained data is valid or not. The validity is estimated by considering the original data that is being mapped, that is the data from the library. If the data is invalid or empty, as it may be for a null pointer or an empty vector, the container data is also considered to be invalid.
In the current implementation, the concept of data being invalid is implemented by forcing the nominal size of the container to be zero.
Currently the mapping of the optical detectors is forced to be a static collection of detector IDs. If more flexibility is needed, the design of the container internals need to be updated to allow run time polymorphism.
Given the type of validity detection described above, it takes extra steps to provide a default mapping for areas not covered by the library. While with plain util::MappedContainer
that can be achieved by a empty data container and a mapping returning InvalidIndex
for all optical detectors, here this would just yield to an invalid container. Instead, together with that mapping, some fake data needs to be supplied to phot::OpDetVisibilityData
, which will be basically ignored and may be of any size larger than zero (or more precisely, phot::isValidLibraryData()
must return false
).
Definition at line 120 of file OpDetVisibilityData.h.
|
private |
Definition at line 123 of file OpDetVisibilityData.h.
using util::MappedContainer< Cont, Mapping >::DataContainer_t = Cont |
Type of the original container.
Definition at line 153 of file MappedContainer.h.
using util::MappedContainer< Cont, Mapping >::Mapping_t = Mapping |
Type of the mapping object.
Definition at line 154 of file MappedContainer.h.
using util::MappedContainer< Cont, Mapping >::size_type = std::size_t |
Definition at line 172 of file MappedContainer.h.
using util::MappedContainer< Cont, Mapping >::value_type = Value_t |
Definition at line 170 of file MappedContainer.h.
|
default |
|
inline |
Constructor: acquires data, mapping and a default value.
cont | container with the data to be mapped |
mapping | the mapping to be used |
size | the size of the container after mapping |
defValue | value to be used as default |
This works as the equivalent util::MappedContainer
constructor, except that if the data in cont
is deemed invalid the size is overridden to zero.
Definition at line 165 of file OpDetVisibilityData.h.
|
inline |
Constructor: acquires data and mapping.
cont | container with the data to be mapped |
mapping | the mapping to be used |
size | the size of the container after mapping |
This works as the equivalent util::MappedContainer
constructor, except that if the data in cont
is deemed invalid the size is overridden to zero.
Definition at line 186 of file OpDetVisibilityData.h.
|
inline |
Constructor: acquires data and mapping.
cont | container with the data to be mapped |
mapping | the mapping to be used |
The size of the container is declared to be the minimal one (see minimal_size()
), unless data of the library cont
is invalid, in which case the full container is invalid.
The default value is assigned as in util::MappedContainer(DataContainer_t const&, Mapping_t const&, size_type)
.
Definition at line 203 of file OpDetVisibilityData.h.
|
staticprivate |
Determines whether the current content should be considered valid.
Definition at line 398 of file OpDetVisibilityData.h.
|
staticprivate |
Determines whether the current content should be considered valid.
Definition at line 404 of file OpDetVisibilityData.h.
|
inline |
Returns whether the contained data is valid or not.
Definition at line 216 of file OpDetVisibilityData.h.
|
inline |
Returns whether the container has valid data.
Definition at line 219 of file OpDetVisibilityData.h.
|
inline |
Returns whether the container has no valid data.
Definition at line 222 of file OpDetVisibilityData.h.