Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
BinnedMaterial.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
9  const Trk::Material* mat, const Trk::BinUtility& bu,
10  const std::vector<size_t>& index,
11  const std::vector<Trk::IdentifiedMaterial>& detailedMat)
12  : Trk::Material(*mat),
13  m_matVec(detailedMat),
14  m_matBins(std::make_unique<Trk::CompactBinnedArray1D<const Trk::IdentifiedMaterial> >(ptrs(), index, bu))
15  {}
16 
19  const Trk::Material* mat, const Trk::BinUtility& bu,
20  const std::vector<Trk::BinUtility>& bVec,
21  const std::vector<std::vector<size_t> >& index,
22  const std::vector<Trk::IdentifiedMaterial>& detailedMat)
23  : Trk::Material(*mat),
24  m_matVec(detailedMat),
25  m_matBins(std::make_unique<Trk::CompactBinnedArray2D<const Trk::IdentifiedMaterial> >(ptrs(), index, bu, bVec))
26  {}
27 
28 //copy
30  : Material(amc), m_matVec(amc.m_matVec) {
31  if (amc.m_matBins) {
32  if (!m_matVec.empty()) {
33  m_matBins = binsPtr_t(amc.m_matBins->clone(ptrs()));
34  } else {
35  m_matBins = binsPtr_t(amc.m_matBins->clone());
36  }
37  }
38 }
39 
42  if (this != &amc) {
44  m_matVec = amc.m_matVec;
45  m_matBins.reset();
46  if (amc.m_matBins) {
47  if (!m_matVec.empty()) {
48  m_matBins = binsPtr_t(amc.m_matBins->clone(ptrs()));
49  } else {
50  m_matBins = binsPtr_t(amc.m_matBins->clone());
51  }
52  }
53  }
54  return (*this);
55 }
56 
59  const Amg::Vector3D& position) const {
61  m_matBins ? m_matBins->object(position) : nullptr;
62  return mat;
63 }
64 
67  const Amg::Vector3D& position, const Amg::Vector3D& direction,
68  bool layOnly) const {
70  m_matBins ? m_matBins->nextObject(position, direction, layOnly) : nullptr;
71  return mat;
72 }
73 
74 //utility to return pointers to the elements of m_matVec
75 std::vector<const Trk::IdentifiedMaterial*> Trk::BinnedMaterial::ptrs() const {
76  std::vector<const Trk::IdentifiedMaterial*> p;
77  p.reserve(m_matVec.size());
78  for (const Trk::IdentifiedMaterial& m : m_matVec) {
79  p.push_back(&m);
80  }
81  return p;
82 }
BinnedMaterial.h
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
make_unique
std::unique_ptr< T > make_unique(Args &&... args)
Definition: SkimmingToolEXOT5.cxx:23
index
Definition: index.py:1
mat
GeoMaterial * mat
Definition: LArDetectorConstructionTBEC.cxx:55
Trk::BinnedMaterial
Definition: BinnedMaterial.h:31
Trk::BinnedMaterial::m_matVec
std::vector< IdentifiedMaterial > m_matVec
Definition: BinnedMaterial.h:74
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
Trk::BinnedMaterial::BinnedMaterial
BinnedMaterial()=default
Default Constructors.
Trk::CompactBinnedArray2D
Definition: CompactBinnedArray2D.h:32
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
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
Trk::BinUtility
Definition: BinUtility.h:39
Trk::Material::operator=
Material & operator=(const Material &amc)
Assignment operator.
Definition: Material.h:188
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
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::BinnedMaterial::m_matBins
binsPtr_t m_matBins
Definition: BinnedMaterial.h:76
Trk::BinnedMaterial::ptrs
std::vector< const Trk::IdentifiedMaterial * > ptrs() const
Definition: BinnedMaterial.cxx:75
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::CompactBinnedArray1D
Definition: CompactBinnedArray1D.h:33
Trk::IdentifiedMaterial
std::pair< const Material *, int > IdentifiedMaterial
Definition: BinnedMaterial.h:23