 |
ATLAS Offline Software
|
Go to the documentation of this file.
5 #ifndef ACTSTRKEVENT_SEEDCONTAINER_H
6 #define ACTSTRKEVENT_SEEDCONTAINER_H 1
8 #include "Acts/EventData/SeedContainer2.hpp"
9 #include "Acts/EventData/SpacePointContainer.hpp"
10 #include "Acts/EventData/Seed.hpp"
15 #include <type_traits>
20 using Base = Acts::SeedContainer2;
22 using const_iterator = Acts::detail::ContainerIterator<SeedContainer, value_type, Index, true>;
27 using Seed1 = Acts::Seed<SpacePointValueBase, 3ul>;
34 Acts::MutableSeedProxy2
push_back(Acts::MutableSeedProxy2 seed);
35 Acts::MutableSeedProxy2
push_back(Acts::SpacePointIndexSubset2 sp) {
36 Acts::MutableSeedProxy2 seed = createSeed();
37 seed.assignSpacePointIndices(sp);
45 Acts::MutableSeedProxy2
push_back(std::unique_ptr<Seed1> pSeed) {
return push_back(pSeed.get()); }
46 template <
template <
typename>
class seed_type,
typename container_t>
47 Acts::MutableSeedProxy2
push_back(
const seed_type<Acts::SpacePointProxy<container_t>> *pSeed) {
48 return push_back(pSeed, [
this](
const Acts::SpacePointProxy<container_t> *sp) -> Acts::SpacePointIndex2 {
50 assert(
m_spacePoints[sp->index()] == &sp->externalSpacePoint());
66 template <
typename seed_type,
typename spindex_fun>
67 Acts::MutableSeedProxy2
push_back(seed_type *pSeed, spindex_fun spindex);
75 struct Seed :
public Acts::ConstSeedProxy2 {
76 using Base = Acts::ConstSeedProxy2;
83 float z()
const noexcept {
return vertexZ(); }
90 auto newseed =
push_back(seed.spacePointIndices());
91 newseed.vertexZ() = seed.vertexZ();
92 newseed.quality() = seed.quality();
96 template <
typename seed_type,
typename spindex_fun>
98 std::vector<Acts::SpacePointIndex2> spacePointIndices;
99 spacePointIndices.reserve(pSeed->sp().size());
100 for (
auto sp2 : pSeed->sp()) {
101 Acts::SpacePointIndex2 ind = spindex(sp2);
102 spacePointIndices.push_back(ind);
104 Acts::MutableSeedProxy2 seed = createSeed();
105 seed.assignSpacePointIndices(spacePointIndices);
106 seed.vertexZ() = pSeed->z();
107 seed.quality() = pSeed->seedQuality();
112 using Base = Acts::SpacePointIndexSubset2;
116 using const_iterator = Acts::detail::ContainerIterator<SpacePointIndexSubset, value_type, Index, true>;
std::remove_const_t< std::remove_pointer_t< SpacePointValue > > SpacePointValueBase
SeedContainer::SpacePointContainer SpacePointContainer
std::string find(const std::string &s)
return a remapped string
Seed operator[](Index index) const noexcept
Acts::Seed< SpacePointValueBase, 3ul > Seed1
const SpacePointContainer * m_spacePointContainer
bool const RAWDATA *ch2 const
value_type operator[](Index index) const noexcept
const_iterator begin() const noexcept
std::vector< SpacePointValue > SpacePointContainer
Acts::MutableSeedProxy2 push_back(Acts::SpacePointIndexSubset2 sp)
const SpacePointContainer & spacePointContainer() const noexcept
SpacePointContainer m_spacePoints
const xAOD::SpacePoint * SpacePointValue
IndexedConstituentUserInfo::Index Index
const_iterator end() const noexcept
const_iterator begin() const noexcept
float seedQuality() const noexcept
const_iterator end() const noexcept
Seed at(Index index) const
Acts::detail::ContainerIterator< SeedContainer, value_type, Index, true > const_iterator
const SpacePointContainer & spacePoints() const noexcept
SpacePointIndexSubset(const SpacePointContainer &spacePointContainer, Base spacePointIndices)
Acts::MutableSeedProxy2 push_back(Acts::MutableSeedProxy2 seed)
ObjectId< CI, CM > operator[](std::size_t) const noexcept
SeedContainer::SpacePointContainer SpacePointContainer
Acts::MutableSeedProxy2 push_back(std::unique_ptr< Seed1 > pSeed)
SpacePointIndexSubset sp() const
Acts::MutableSeedProxy2 push_back(const Seed1 *pSeed)
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
SpacePointIndexSubset()=default
Acts::MutableSeedProxy2 push_back(const seed_type< Acts::SpacePointProxy< container_t >> *pSeed)
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Acts::detail::ContainerIterator< SpacePointIndexSubset, value_type, Index, true > const_iterator
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
macros to associate a CLID to a type
SpacePointContainer & spacePoints() noexcept
value_type at(Index index) const