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.
Definition Surface.h:79
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.