ATLAS Offline Software
Loading...
Searching...
No Matches
BoundaryCylinderSurface.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// BoundaryCylinderSurface.h, (c) ATLAS Detector software
8
9#ifndef TRKVOLUMES_BOUNDARYCYLIMDERSURFACE_H
10#define TRKVOLUMES_BOUNDARYCYLIMDERSURFACE_H
11
12// Trk
13#include "GaudiKernel/SystemOfUnits.h"
18
19namespace Trk {
20
21// class TrackParameters;
22class Volume;
23
27 BoundaryCylinderSurface description inside the tracking realm,
28 Extends the Surface description to make a surface being a boundary of a
29 Trk::Volume
30
31 @author Andreas.Salzburger@cern.ch
32 @author Christos Anastopoulos (Athena MT modifications)
33 */
34
35template <class Tvol>
36class BoundaryCylinderSurface final : public BoundarySurface<Tvol>,
37 public CylinderSurface {
40
41 public:
49 virtual ~BoundaryCylinderSurface() = default;
50
52 BoundaryCylinderSurface(const Tvol* inside, const Tvol* outside,
53 const CylinderSurface& csf)
55
56 /** Constructor for a Boundary with two VolumeArrays attached to it*/
57 BoundaryCylinderSurface(std::shared_ptr<const VolumeArray> insideArray,
58 std::shared_ptr<const VolumeArray> outsideArray,
59 const CylinderSurface& csf)
60 : BoundarySurface<Tvol>(std::move(insideArray), std::move(outsideArray)),
61 CylinderSurface(csf) {}
62
64 BoundaryCylinderSurface(const Tvol* inside, const Tvol* outside,
65 const CylinderSurface& csf,
66 const Amg::Transform3D& tr)
67 : BoundarySurface<Tvol>(inside, outside), CylinderSurface(csf, tr) {}
68
75 virtual const Tvol* attachedVolume(const TrackParameters& parms,
76 PropDirection dir) const override final;
77
80 virtual const Tvol* attachedVolume(const Amg::Vector3D& pos,
81 const Amg::Vector3D& mom,
82 PropDirection dir) const override final;
83
85 virtual const Surface& surfaceRepresentation() const override final;
86 virtual Surface& surfaceRepresentation() override final;
87};
88
89// Hash include the inline functions
90#include "TrkVolumes/BoundaryCylinderSurface.icc"
91
92} // end of namespace Trk
93
94#endif // TRKVOLUMES_BOUNDARYCYLIMDERSURFACE_H
95
Binned Array for avoiding map searches/.
Definition BinnedArray.h:36
BoundaryCylinderSurface()=default
Default Constructor - needed for pool and inherited classes.
virtual ~BoundaryCylinderSurface()=default
Virtual Destructor.
BoundaryCylinderSurface & operator=(const BoundaryCylinderSurface &vol)=default
Assignment operator.
BinnedArray< Tvol > VolumeArray
typedef the BinnedArray
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...
BoundaryCylinderSurface(const Tvol *inside, const Tvol *outside, const CylinderSurface &csf)
Constructor for a Boundary with exact two Volumes attached to it.
BoundaryCylinderSurface(const Tvol *inside, const Tvol *outside, const CylinderSurface &csf, const Amg::Transform3D &tr)
Copy constructor with a shift.
BoundaryCylinderSurface(std::shared_ptr< const VolumeArray > insideArray, std::shared_ptr< const VolumeArray > outsideArray, const CylinderSurface &csf)
Constructor for a Boundary with two VolumeArrays attached to it.
virtual const Surface & surfaceRepresentation() const override final
The Surface Representation of this.
BoundaryCylinderSurface(const BoundaryCylinderSurface< Tvol > &bcs)=default
Copy constructor.
BoundarySurface()=default
Default Constructor - needed for pool and inherited classes.
CylinderSurface()
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.