ATLAS Offline Software
Loading...
Searching...
No Matches
LayerArrayCreator.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// LayerArrayCreator.h, (c) ATLAS Detector software
8
9#ifndef TRKDETDESCRTOOLS_LAYERARRAYCREATOR_H
10#define TRKDETDESCRTOOLS_LAYERARRAYCREATOR_H
11
12#ifndef TRKDETDESCR_TAKESMALLERBIGGER
13#define TRKDETDESCR_TAKESMALLERBIGGER
14#define takeSmaller(current,test) current = current < test ? current : test
15#define takeBigger(current,test) current = current > test ? current : test
16#define takeSmallerBigger(cSmallest, cBiggest, test) takeSmaller(cSmallest, test); takeBigger(cBiggest, test)
17#endif
18// Amg
20// Trk
25// Gaudi & Athena
27// STL
28#include <algorithm>
29#include <memory>
30
31namespace Trk {
32
33 class Layer;
34 class PlaneLayer;
35
49
50 class LayerArrayCreator : public AthAlgTool, virtual public ILayerArrayCreator {
52 using LayerOrderPosition = std::pair< std::shared_ptr<const Layer>, Amg::Vector3D>;
53
54 public:
56 LayerArrayCreator(const std::string&,const std::string&,const IInterface*);
57
59 virtual ~LayerArrayCreator() = default;
60
62 std::unique_ptr<Trk::BinnedArray1D<Layer>> cylinderLayerArray(
63 const std::vector<CylinderLayer*>& layers,
64 double rmin,
65 double rmax,
66 BinningType btype = arbitrary) const;
67
69 std::unique_ptr<Trk::BinnedArray1D<Layer>> discLayerArray(
70 const std::vector<DiscLayer*>& layers,
71 double zmin,
72 double zmax,
73 BinningType btype = arbitrary) const;
74
76 std::unique_ptr<Trk::BinnedArray1D<Layer>> planeLayerArray(
77 const std::vector<PlaneLayer*>& layers,
78 double min,
79 double max,
80 BinningType btype = arbitrary,
81 Trk::BinningValue bv = Trk::binX) const;
82
83 private:
86 };
87
88} // end of namespace
89
90#endif // TRKDETDESCRTOOLS_LAYERARRAYCREATOR_H
91
#define min(a, b)
Definition cfImp.cxx:40
#define max(a, b)
Definition cfImp.cxx:41
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Interface class ILayerArrayCreators It inherits from IAlgTool.
std::pair< std::shared_ptr< const Layer >, Amg::Vector3D > LayerOrderPosition
std::unique_ptr< Trk::BinnedArray1D< Layer > > cylinderLayerArray(const std::vector< CylinderLayer * > &layers, double rmin, double rmax, BinningType btype=arbitrary) const
LayerArrayCreator interface method - for Barrel-like layers.
std::unique_ptr< Trk::BinnedArray1D< Layer > > discLayerArray(const std::vector< DiscLayer * > &layers, double zmin, double zmax, BinningType btype=arbitrary) const
LayerArrayCreator interface method - for Endcap-like layers.
LayerArrayCreator(const std::string &, const std::string &, const IInterface *)
Constructor.
virtual ~LayerArrayCreator()=default
Destructor.
Trk::Layer * checkAndReplaceEmptyLayer(Trk::Layer *lay) const
std::unique_ptr< Trk::BinnedArray1D< Layer > > planeLayerArray(const std::vector< PlaneLayer * > &layers, double min, double max, BinningType btype=arbitrary, Trk::BinningValue bv=Trk::binX) const
LayerArrayCreator interface method - for Planar-like layers.
int m_emptyLayerMode
0 - do nothing, 1 - replace with navigation layer, 2 - delete
Base Class for a Detector Layer in the Tracking realm.
Definition Layer.h:72
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.
BinningType
, BinningOption & BinningAccess
Definition BinningType.h:31
@ arbitrary
Definition BinningType.h:34
BinningValue
how to take the global / local position
Definition BinningType.h:46
@ binX
Definition BinningType.h:47