ATLAS Offline Software
Loading...
Searching...
No Matches
BoundaryDiscSurface.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
6// BoundaryDiscSurface.h, (c) ATLAS Detector software
8
9#ifndef TRKVOLUMES_BOUNDARYDISCSURFACE_H
10#define TRKVOLUMES_BOUNDARYDISCSURFACE_H
11
12// Trk
13#include <memory>
18// CLHEP
20
21namespace Trk {
22
23// class TrackParameters;
24class Volume;
36
37template <class Tvol>
38class BoundaryDiscSurface final : public BoundarySurface<Tvol>,
39 public DiscSurface {
42
43 public:
46
49
52
54 virtual ~BoundaryDiscSurface() = default;
55
57 BoundaryDiscSurface(const Tvol* inside, const Tvol* outside,
58 const DiscSurface& dsf)
59 : BoundarySurface<Tvol>(inside, outside), DiscSurface(dsf) {}
60
62 BoundaryDiscSurface(std::shared_ptr<const VolumeArray> insideArray,
63 std::shared_ptr<const VolumeArray> outsideArray,
64 const DiscSurface& dsf)
65 : BoundarySurface<Tvol>(std::move(insideArray), std::move(outsideArray)), DiscSurface(dsf) {}
66
67
68 BoundaryDiscSurface(const Tvol* inside, const Tvol* outside,
69 const DiscSurface& dsf, const Amg::Transform3D& tr)
70 : BoundarySurface<Tvol>(inside, outside), DiscSurface(dsf, tr) {}
71
78 virtual const Tvol* attachedVolume(const TrackParameters& parms,
79 PropDirection dir) const override final;
80
83 virtual const Tvol* attachedVolume(const Amg::Vector3D& pos,
84 const Amg::Vector3D& mom,
85 PropDirection dir) const override final;
86
88 virtual const Surface& surfaceRepresentation() const override final;
89 virtual Surface& surfaceRepresentation() override final;
90};
91
92// Hash include inline functions
93#include "TrkVolumes/BoundaryDiscSurface.icc"
94
95} // end of namespace Trk
96
97#endif // TRKVOLUMES_BOUNDARYDISCSURFACE_H
98
Binned Array for avoiding map searches/.
Definition BinnedArray.h:36
virtual ~BoundaryDiscSurface()=default
Virtual Destructor.
virtual const Tvol * attachedVolume(const TrackParameters &parms, PropDirection dir) const override final
Get the next Volume depending on the TrackParameters and the requested direction, gives back 0 if the...
BoundaryDiscSurface(const Tvol *inside, const Tvol *outside, const DiscSurface &dsf)
Constructor for a Boundary with exact two Volumes attached to it.
BoundaryDiscSurface(std::shared_ptr< const VolumeArray > insideArray, std::shared_ptr< const VolumeArray > outsideArray, const DiscSurface &dsf)
Constructor for a Boundary with two VolumeArrays attached to it.
BoundaryDiscSurface(const Tvol *inside, const Tvol *outside, const DiscSurface &dsf, const Amg::Transform3D &tr)
Copy constructor with a shift.
virtual const Surface & surfaceRepresentation() const override final
The Surface Representation of this.
BoundaryDiscSurface & operator=(const BoundaryDiscSurface &vol)=default
Assignment operator.
BoundaryDiscSurface()=default
Default Constructor - needed for pool and inherited classes.
BinnedArray< Tvol > VolumeArray
typedef the BinnedArray
BoundarySurface()=default
Default Constructor - needed for pool and inherited classes.
DiscSurface()
Default Constructor.
Abstract Base Class for tracking surfaces.
Base class for all volumes inside the tracking realm, it defines the interface for inherited Volume c...
Definition Volume.h:36
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.
PropDirection
PropDirection, enum for direction of the propagation.
ParametersBase< TrackParametersDim, Charged > TrackParameters
@ outside
STL namespace.