ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
DetectorDescription
GeoModel
GeoModelUtilities
GeoModelUtilities
TransformMap.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef GEOMODELUTILITIES_TRANSFORMMAP_H
6
#define GEOMODELUTILITIES_TRANSFORMMAP_H
7
8
#include <
CxxUtils/ConcurrentToValMap.h
>
9
#include <
CxxUtils/SimpleUpdater.h
>
10
11
#include <memory>
12
#include <unordered_map>
13
#include <shared_mutex>
14
21
template
<
typename
T,
typename
X>
class
TransformMap
{
22
public
:
24
TransformMap
() =
default
;
25
/*** @brief: Copy constructor from an existing map*/
26
TransformMap
(
const
TransformMap
& other) =
default
;
28
TransformMap
&
operator=
(
const
TransformMap
& other) =
default
;
29
30
~TransformMap
() =
default
;
38
bool
setTransform
(
const
T *obj,
const
X &xf)
const
;
39
bool
setTransform
(
const
T* obj,
const
X& xf);
45
bool
setTransform
(
const
T *obj, std::shared_ptr<const X> xf)
const
;
46
bool
setTransform
(
const
T* obj, std::shared_ptr<const X> xf);
47
52
const
X *
getTransform
(
const
T *obj)
const
;
53
58
bool
append
(
const
TransformMap
&other);
60
void
clear
();
63
void
lock
();
65
std::vector<const T*>
getStoredKeys
()
const
;
67
bool
isLocked
()
const
;
68
69
private
:
70
using
ConCurrentMap_t
=
CxxUtils::ConcurrentToValMap<const T*, std::shared_ptr<const X>
,
CxxUtils::SimpleUpdater
>;
71
using
ConCurrentMap_ptr
= std::unique_ptr<ConCurrentMap_t>;
72
using
CanonicalMap_t
= std::unordered_map<const T*, std::shared_ptr<const X>>;
73
using
CanonicalMap_ptr
= std::unique_ptr<CanonicalMap_t>;
74
75
76
mutable
CanonicalMap_t
m_container
ATLAS_THREAD_SAFE
{};
77
mutable
bool
m_locked
ATLAS_THREAD_SAFE
{
false
};
78
mutable
std::shared_mutex m_mutex
ATLAS_THREAD_SAFE
{};
79
mutable
ConCurrentMap_ptr
m_mutableCont
ATLAS_THREAD_SAFE
{
80
std::make_unique<ConCurrentMap_t>(
typename
ConCurrentMap_t::Updater_t())};
81
82
83
};
84
#include <
GeoModelUtilities/TransformMap.icc
>
85
#endif
ConcurrentToValMap.h
Hash map from pointers/integers to arbitrary objects allowing concurrent, lockless reads.
SimpleUpdater.h
Simple (non-deleting) Updater implementation.
TransformMap.icc
CxxUtils::SimpleUpdater
Simple (non-deleting) Updater implementation.
Definition
SimpleUpdater.h:37
TransformMap::isLocked
bool isLocked() const
Returns whether the map is locked.
TransformMap::setTransform
bool setTransform(const T *obj, std::shared_ptr< const X > xf)
TransformMap< GeoAlignableTransform, GeoTrf::Transform3D >::ConCurrentMap_t
CxxUtils::ConcurrentToValMap< const GeoAlignableTransform *, std::shared_ptr< const GeoTrf::Transform3D >, CxxUtils::SimpleUpdater > ConCurrentMap_t
Definition
TransformMap.h:70
TransformMap::operator=
TransformMap & operator=(const TransformMap &other)=default
: Copy assignment operator
TransformMap::getTransform
const X * getTransform(const T *obj) const
: Returns the transform that's associated with input object.
TransformMap::setTransform
bool setTransform(const T *obj, std::shared_ptr< const X > xf) const
: Adds a transform object to the map.
TransformMap::setTransform
bool setTransform(const T *obj, const X &xf)
TransformMap::getStoredKeys
std::vector< const T * > getStoredKeys() const
: Returns a vector of all objects that have been parsed to the map
TransformMap::~TransformMap
~TransformMap()=default
TransformMap::TransformMap
TransformMap(const TransformMap &other)=default
TransformMap::append
bool append(const TransformMap &other)
: Copies all key value pairs from the external map and appends it to this map instance.
TransformMap< GeoAlignableTransform, GeoTrf::Transform3D >::ConCurrentMap_ptr
std::unique_ptr< ConCurrentMap_t > ConCurrentMap_ptr
Definition
TransformMap.h:71
TransformMap::TransformMap
TransformMap()=default
: Default constructor
TransformMap::lock
void lock()
: Lock the map which switches off the mutex protection mechanism.
TransformMap::setTransform
bool setTransform(const T *obj, const X &xf) const
: Adds a transform object to the map.
TransformMap< GeoAlignableTransform, GeoTrf::Transform3D >::CanonicalMap_t
std::unordered_map< const GeoAlignableTransform *, std::shared_ptr< const GeoTrf::Transform3D > > CanonicalMap_t
Definition
TransformMap.h:72
TransformMap< GeoAlignableTransform, GeoTrf::Transform3D >::ATLAS_THREAD_SAFE
CanonicalMap_t m_container ATLAS_THREAD_SAFE
Definition
TransformMap.h:76
TransformMap::clear
void clear()
: Clear the transform cache map
TransformMap< GeoAlignableTransform, GeoTrf::Transform3D >::CanonicalMap_ptr
std::unique_ptr< CanonicalMap_t > CanonicalMap_ptr
Definition
TransformMap.h:73
CxxUtils::ConcurrentToValMap
ConcurrentToValMap(Updater_t &&updater, size_type capacity=64, const Context_t &ctx=Updater_t::defaultContext())
Hash map from pointers/integers to arbitrary objects allowing concurrent, lockless reads.
Generated on
for ATLAS Offline Software by
1.17.0