ATLAS Offline Software
ITrackingVolumeArrayCreator.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 // ITrackingVolumeArrayCreator.h, (c) ATLAS Detector software
8 
9 #ifndef TRKDETDESCRINTERFACES_ITRACKINGVOLUMEARRAYCREATOR_H
10 #define TRKDETDESCRINTERFACES_ITRACKINGVOLUMEARRAYCREATOR_H
11 
12 // Gaudi
13 #include "GaudiKernel/IAlgTool.h"
14 // TrkDetDescrUtils - templated classes & enums
17 // STL
18 #include <memory>
19 #include <vector>
20 namespace Trk {
21 
23 class TrackingVolume;
24 
28 
42 class ITrackingVolumeArrayCreator : virtual public IAlgTool {
43 
44  public:
47  using VolumePtr = std::shared_ptr<TrackingVolume>;
49  virtual ~ITrackingVolumeArrayCreator() = default;
50 
52  virtual std::unique_ptr<TrackingVolumeArray> cylinderVolumesArrayInR(
53  const std::vector<TrackingVolume*>& vols,
54  bool navigationtype = false) const = 0;
55  virtual std::unique_ptr<TrackingVolumeArray> cylinderVolumesArrayInZ(
56  const std::vector<TrackingVolume*>& vols,
57  bool navigationtype = false) const = 0;
58  virtual std::unique_ptr<TrackingVolumeArray> cylinderVolumesArrayInPhiR(
59  const std::vector<TrackingVolume*>& vols,
60  bool navigationtype = false) const = 0;
61  virtual std::unique_ptr<TrackingVolumeArray> cylinderVolumesArrayInPhiZ(
62  const std::vector<TrackingVolume*>& vols,
63  bool navigationtype = false) const = 0;
64 
67  virtual std::unique_ptr<TrackingVolumeArray> cylinderVolumesArrayInR(
68  const std::vector<VolumePtr>& vols,
69  bool navigationtype = false) const = 0;
72  virtual std::unique_ptr<TrackingVolumeArray> cylinderVolumesArrayInZ(
73  const std::vector<VolumePtr>& vols,
74  bool navigationtype = false) const = 0;
77  virtual std::unique_ptr<TrackingVolumeArray> cylinderVolumesArrayInPhi(
78  const std::vector<VolumePtr>& vols,
79  bool navigationtype = false) const = 0;
82  virtual std::unique_ptr<TrackingVolumeArray> cylinderVolumesArrayInPhiR(
83  const std::vector<VolumePtr>& vols,
84  bool navigationtype = false) const = 0;
87  virtual std::unique_ptr<TrackingVolumeArray> cylinderVolumesArrayInPhiZ(
88  const std::vector<VolumePtr>& vols,
89  bool navigationtype = false) const = 0;
92  virtual std::unique_ptr<TrackingVolumeArray> cuboidVolumesArrayNav(
93  const std::vector<VolumePtr>& vols,
94  const Trk::BinUtility& binUtil) const = 0;
97  virtual std::unique_ptr<TrackingVolumeArray> trapezoidVolumesArrayNav(
98  const std::vector<VolumePtr>& vols,
99  const Trk::BinUtility& binUtil) const = 0;
102  virtual std::unique_ptr<TrackingVolumeArray> doubleTrapezoidVolumesArrayNav(
103  const std::vector<VolumePtr>& vols,
104  const Trk::BinUtility& binUtil) const = 0;
105 };
106 
107 } // namespace Trk
108 
109 #endif
110 
Trk::ITrackingVolumeArrayCreator::cylinderVolumesArrayInPhiR
virtual std::unique_ptr< TrackingVolumeArray > cylinderVolumesArrayInPhiR(const std::vector< VolumePtr > &vols, bool navigationtype=false) const =0
TrackingVolumeArrayCreator interface method - create a 2dim cylindrical volume array.
Trk::ITrackingVolumeArrayCreator::cylinderVolumesArrayInR
virtual std::unique_ptr< TrackingVolumeArray > cylinderVolumesArrayInR(const std::vector< TrackingVolume * > &vols, bool navigationtype=false) const =0
Extra interface methods for compatibility.
BinnedArray.h
BinningType.h
Trk::ITrackingVolumeArrayCreator::cylinderVolumesArrayInZ
virtual std::unique_ptr< TrackingVolumeArray > cylinderVolumesArrayInZ(const std::vector< TrackingVolume * > &vols, bool navigationtype=false) const =0
Trk::ITrackingVolumeArrayCreator::cylinderVolumesArrayInPhiR
virtual std::unique_ptr< TrackingVolumeArray > cylinderVolumesArrayInPhiR(const std::vector< TrackingVolume * > &vols, bool navigationtype=false) const =0
Trk::ITrackingVolumeArrayCreator::cylinderVolumesArrayInPhi
virtual std::unique_ptr< TrackingVolumeArray > cylinderVolumesArrayInPhi(const std::vector< VolumePtr > &vols, bool navigationtype=false) const =0
TrackingVolumeArrayCreator interface method - create a Phi-binned cylindrical volume array.
Trk::ITrackingVolumeArrayCreator::VolumePtr
std::shared_ptr< TrackingVolume > VolumePtr
Definition: ITrackingVolumeArrayCreator.h:47
Trk::ITrackingVolumeArrayCreator::cylinderVolumesArrayInPhiZ
virtual std::unique_ptr< TrackingVolumeArray > cylinderVolumesArrayInPhiZ(const std::vector< VolumePtr > &vols, bool navigationtype=false) const =0
TrackingVolumeArrayCreator interface method - create a 2dim cylindrical volume array.
Trk::ITrackingVolumeArrayCreator::cuboidVolumesArrayNav
virtual std::unique_ptr< TrackingVolumeArray > cuboidVolumesArrayNav(const std::vector< VolumePtr > &vols, const Trk::BinUtility &binUtil) const =0
TrackingVolumeArrayCreator interface method - create a cuboid volume array.
Trk::BinUtility
Definition: BinUtility.h:39
Trk::ITrackingVolumeArrayCreator::~ITrackingVolumeArrayCreator
virtual ~ITrackingVolumeArrayCreator()=default
Virtual destructor.
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::ITrackingVolumeArrayCreator::cylinderVolumesArrayInR
virtual std::unique_ptr< TrackingVolumeArray > cylinderVolumesArrayInR(const std::vector< VolumePtr > &vols, bool navigationtype=false) const =0
TrackingVolumeArrayCreator interface method - create a R-binned cylindrical volume array.
Trk::ITrackingVolumeArrayCreator
Definition: ITrackingVolumeArrayCreator.h:42
Trk::ITrackingVolumeArrayCreator::trapezoidVolumesArrayNav
virtual std::unique_ptr< TrackingVolumeArray > trapezoidVolumesArrayNav(const std::vector< VolumePtr > &vols, const Trk::BinUtility &binUtil) const =0
TrackingVolumeArrayCreator interface method - create a trapezoid volume array.
Trk::ITrackingVolumeArrayCreator::DeclareInterfaceID
DeclareInterfaceID(ITrackingVolumeArrayCreator, 1, 0)
Creates the InterfaceID and interfaceID() method.
Trk::BinnedArray
Definition: BinnedArray.h:36
Trk::ITrackingVolumeArrayCreator::cylinderVolumesArrayInZ
virtual std::unique_ptr< TrackingVolumeArray > cylinderVolumesArrayInZ(const std::vector< VolumePtr > &vols, bool navigationtype=false) const =0
TrackingVolumeArrayCreator interface method - create a R-binned cylindrical volume array.
Trk::ITrackingVolumeArrayCreator::cylinderVolumesArrayInPhiZ
virtual std::unique_ptr< TrackingVolumeArray > cylinderVolumesArrayInPhiZ(const std::vector< TrackingVolume * > &vols, bool navigationtype=false) const =0
Trk::ITrackingVolumeArrayCreator::doubleTrapezoidVolumesArrayNav
virtual std::unique_ptr< TrackingVolumeArray > doubleTrapezoidVolumesArrayNav(const std::vector< VolumePtr > &vols, const Trk::BinUtility &binUtil) const =0
TrackingVolumeArrayCreator interface method - create a doubleTrapezoid volume array.