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.
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.