ATLAS Offline Software
Loading...
Searching...
No Matches
TrackingVolumeArrayCreator.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// TrackingVolumeArrayCreator.h, (c) ATLAS Detector software
8
9#ifndef TRKDETDESCRTOOLS_TRACKINGVOLUMEARRAYCREATOR_H
10#define TRKDETDESCRTOOLS_TRACKINGVOLUMEARRAYCREATOR_H
11
12// Gaudi & Athena
14// Amg
16// Trk
19// STL
20#include <algorithm>
21#include <memory>
22
23namespace Trk {
24
25class Layer;
26class PlaneLayer;
27
36
38 : public AthAlgTool,
39 virtual public ITrackingVolumeArrayCreator {
40
41 public:
42 using TrackingVolumeOrderPosition = std::pair<VolumePtr, Amg::Vector3D>;
43 using TrackingVolumeNavOrder = std::pair<VolumePtr, const Amg::Transform3D*>;
44
46 TrackingVolumeArrayCreator(const std::string&, const std::string&,
47 const IInterface*);
48
51
53 std::unique_ptr<TrackingVolumeArray> cylinderVolumesArrayInR(
54 const std::vector<TrackingVolume*>& vols,
55 bool navigationtype = false) const override;
56 std::unique_ptr<TrackingVolumeArray> cylinderVolumesArrayInZ(
57 const std::vector<TrackingVolume*>& vols,
58 bool navigationtype = false) const override;
59 std::unique_ptr<TrackingVolumeArray> cylinderVolumesArrayInPhiR(
60 const std::vector<TrackingVolume*>& vols,
61 bool navigationtype = false) const override;
62 std::unique_ptr<TrackingVolumeArray> cylinderVolumesArrayInPhiZ(
63 const std::vector<TrackingVolume*>& vols,
64 bool navigationtype = false) const override;
65
68 std::unique_ptr<TrackingVolumeArray> cylinderVolumesArrayInR(
69 const std::vector<VolumePtr>& vols,
70 bool navigationtype = false) const override;
73 std::unique_ptr<TrackingVolumeArray> cylinderVolumesArrayInZ(
74 const std::vector<VolumePtr>& vols,
75 bool navigationtype = false) const override;
78 std::unique_ptr<TrackingVolumeArray> cylinderVolumesArrayInPhi(
79 const std::vector<VolumePtr>& vols,
80 bool navigationtype = false) const override;
83 std::unique_ptr<TrackingVolumeArray> cylinderVolumesArrayInPhiR(
84 const std::vector<VolumePtr>& vols,
85 bool navigationtype = false) const override;
88 std::unique_ptr<TrackingVolumeArray> cylinderVolumesArrayInPhiZ(
89 const std::vector<VolumePtr>& vols,
90 bool navigationtype = false) const override;
91
94 std::unique_ptr<TrackingVolumeArray> cuboidVolumesArrayNav(
95 const std::vector<VolumePtr>& vols,
96 const Trk::BinUtility& binUtil) const override;
99 std::unique_ptr<TrackingVolumeArray> trapezoidVolumesArrayNav(
100 const std::vector<VolumePtr>& vols,
101 const Trk::BinUtility& binUtil) const override;
102
106 std::unique_ptr<TrackingVolumeArray> doubleTrapezoidVolumesArrayNav(
107 const std::vector<VolumePtr>& vols,
108 const Trk::BinUtility& binUtil) const override;
109};
110
111} // namespace Trk
112
113#endif
114
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
A generic symmetric BinUtility, for fully symmetric binning in terms of binning grid and binning type...
Definition BinUtility.h:39
Interface class ITrackingVolumeArrayCreators It inherits from IAlgTool.
Base Class for a Detector Layer in the Tracking realm.
Definition Layer.h:72
Class to describe a planar detector layer for tracking, it inhertis from both, Layer base class and P...
Definition PlaneLayer.h:40
std::unique_ptr< TrackingVolumeArray > cuboidVolumesArrayNav(const std::vector< VolumePtr > &vols, const Trk::BinUtility &binUtil) const override
TrackingVolumeArrayCreator interface method - create a cuboid volume array - linked to detached track...
std::pair< VolumePtr, const Amg::Transform3D * > TrackingVolumeNavOrder
std::unique_ptr< TrackingVolumeArray > trapezoidVolumesArrayNav(const std::vector< VolumePtr > &vols, const Trk::BinUtility &binUtil) const override
TrackingVolumeArrayCreator interface method - create a trapezoid volume array - linked to detached tr...
std::unique_ptr< TrackingVolumeArray > cylinderVolumesArrayInPhi(const std::vector< VolumePtr > &vols, bool navigationtype=false) const override
TrackingVolumeArrayCreator interface method - create a R-binned cylindrical volume array.
std::unique_ptr< TrackingVolumeArray > cylinderVolumesArrayInR(const std::vector< TrackingVolume * > &vols, bool navigationtype=false) const override
Extra interface methods for compatibility.
TrackingVolumeArrayCreator(const std::string &, const std::string &, const IInterface *)
Constructor.
std::unique_ptr< TrackingVolumeArray > cylinderVolumesArrayInZ(const std::vector< TrackingVolume * > &vols, bool navigationtype=false) const override
std::unique_ptr< TrackingVolumeArray > doubleTrapezoidVolumesArrayNav(const std::vector< VolumePtr > &vols, const Trk::BinUtility &binUtil) const override
TrackingVolumeArrayCreator interface method - create a doubleTrapezoid volume array - linked to detac...
virtual ~TrackingVolumeArrayCreator()
Destructor.
std::unique_ptr< TrackingVolumeArray > cylinderVolumesArrayInPhiZ(const std::vector< TrackingVolume * > &vols, bool navigationtype=false) const override
std::pair< VolumePtr, Amg::Vector3D > TrackingVolumeOrderPosition
std::unique_ptr< TrackingVolumeArray > cylinderVolumesArrayInPhiR(const std::vector< TrackingVolume * > &vols, bool navigationtype=false) const override
Ensure that the ATLAS eigen extensions are properly loaded.