Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
BinnedMaterial.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 // Material.h, (c) ATLAS Detector software
8 
9 #ifndef TRKGEOMETRY_BINNEDMATERIAL_H
10 #define TRKGEOMETRY_BINNEDMATERIAL_H
11 
15 #include "TrkGeometry/Material.h"
16 
17 #include <memory>
18 #include <vector>
19 
20 
21 namespace Trk {
22 
23 typedef std::pair<const Material*, int> IdentifiedMaterial;
24 
25 class BinUtility;
26 
31 class BinnedMaterial final: public Material {
32  public:
33  using binsPtr_t = std::unique_ptr<const CompactBinnedArray<const IdentifiedMaterial> >;
34 
36  BinnedMaterial() = default;
39  virtual ~BinnedMaterial() = default;
40 
41  //These can not be defaulted due to unique_ptr.
42  BinnedMaterial(const BinnedMaterial& amc);
44 
46  BinnedMaterial(const Material* mat, const BinUtility& bu,
47  const std::vector<size_t>& index,
48  const std::vector<IdentifiedMaterial>& detailedMat);
49 
51  BinnedMaterial(const Material* mat, const BinUtility& bu,
52  const std::vector<Trk::BinUtility>& bVec,
53  const std::vector<std::vector<size_t> >& index,
54  const std::vector<IdentifiedMaterial>& detailedMat);
55 
56 
58  const Trk::BinUtility* layerBinUtility(const Amg::Vector3D& position) const;
59 
61  size_t layerBin(const Amg::Vector3D& position) const;
62 
64  const IdentifiedMaterial* material(const Amg::Vector3D& position) const;
66  const Amg::Vector3D& dir,
67  bool layOnly) const;
68 
69  private:
70  //utility to return pointers to the elements of m_matVec
71  std::vector<const Trk::IdentifiedMaterial*> ptrs() const;
72 
73  //The vector that actual owns the IdentifiedMaterial elements
74  std::vector<IdentifiedMaterial> m_matVec;
75  // Binned arrays of IdentifiedMaterial elements
77 };
78 } // namespace Trk
79 
81  const Amg::Vector3D& position) const {
82  return m_matBins ? m_matBins->layerBinUtility(position) : nullptr;
83 }
84 
86  const Amg::Vector3D& position) const {
87  return m_matBins ? m_matBins->layerBin(position) : 0;
88 }
89 
90 #endif
CompactBinnedArray.h
index
Definition: index.py:1
mat
GeoMaterial * mat
Definition: LArDetectorConstructionTBEC.cxx:55
Trk::BinnedMaterial
Definition: BinnedMaterial.h:31
Trk::BinnedMaterial::~BinnedMaterial
virtual ~BinnedMaterial()=default
Trk::BinnedMaterial::m_matVec
std::vector< IdentifiedMaterial > m_matVec
Definition: BinnedMaterial.h:74
Trk::BinnedMaterial::BinnedMaterial
BinnedMaterial()=default
Default Constructors.
Trk::BinnedMaterial::materialNext
const IdentifiedMaterial * materialNext(const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool layOnly) const
access to binned material
Definition: BinnedMaterial.cxx:66
CompactBinnedArray1D.h
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk::BinUtility
Definition: BinUtility.h:39
Trk::BinnedMaterial::binsPtr_t
std::unique_ptr< const CompactBinnedArray< const IdentifiedMaterial > > binsPtr_t
Definition: BinnedMaterial.h:33
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
columnar::final
CM final
Definition: ColumnAccessor.h:106
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Trk::BinnedMaterial::m_matBins
binsPtr_t m_matBins
Definition: BinnedMaterial.h:76
Trk::BinnedMaterial::layerBinUtility
const Trk::BinUtility * layerBinUtility(const Amg::Vector3D &position) const
access to layer bin utility
Definition: BinnedMaterial.h:80
Trk::BinnedMaterial::ptrs
std::vector< const Trk::IdentifiedMaterial * > ptrs() const
Definition: BinnedMaterial.cxx:75
CompactBinnedArray2D.h
Trk::BinnedMaterial::material
const IdentifiedMaterial * material(const Amg::Vector3D &position) const
access to material/id per bin
Definition: BinnedMaterial.cxx:58
Trk::BinnedMaterial::operator=
BinnedMaterial & operator=(BinnedMaterial &&)=default
Trk::Material
Definition: Material.h:116
Trk::BinnedMaterial::layerBin
size_t layerBin(const Amg::Vector3D &position) const
layer bin
Definition: BinnedMaterial.h:85
Trk::BinnedMaterial::BinnedMaterial
BinnedMaterial(BinnedMaterial &&)=default
Trk::IdentifiedMaterial
std::pair< const Material *, int > IdentifiedMaterial
Definition: BinnedMaterial.h:23
Material.h