2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
5 inline Trk::MaterialEffectsOnTrack::MaterialEffectsOnTrack(
7 std::optional<Trk::ScatteringAngles> scat,
8 std::unique_ptr<const Trk::EnergyLoss> eloss,
9 const Trk::Surface& sf,
10 const std::bitset<Trk::MaterialEffectsBase::NumberOfMaterialEffectsTypes>&
12 : Trk::MaterialEffectsBase(tInX0, sf, (typePattern == 0 ? 3 : typePattern))
13 , m_scatteringAngles(scat)
14 , m_energyLoss(std::move(eloss))
17 inline Trk::MaterialEffectsOnTrack::MaterialEffectsOnTrack(
19 std::optional<Trk::ScatteringAngles> scat,
20 const Trk::Surface& sf,
21 const std::bitset<Trk::MaterialEffectsBase::NumberOfMaterialEffectsTypes>&
23 : Trk::MaterialEffectsBase(
27 ? 1 << static_cast<int>(Trk::MaterialEffectsBase::ScatteringEffects)
29 , m_scatteringAngles(scat)
30 , m_energyLoss(nullptr)
33 inline Trk::MaterialEffectsOnTrack::MaterialEffectsOnTrack(
35 std::unique_ptr<const EnergyLoss> eloss,
37 const std::bitset<MaterialEffectsBase::NumberOfMaterialEffectsTypes>& typePattern)
38 : Trk::MaterialEffectsBase(
42 ? 1 << static_cast<int>(Trk::MaterialEffectsBase::EnergyLossEffects)
44 , m_scatteringAngles(std::nullopt)
45 , m_energyLoss(std::move(eloss))
48 inline Trk::MaterialEffectsOnTrack::MaterialEffectsOnTrack(const double tInX0,
49 const Trk::Surface& sf)
50 : Trk::MaterialEffectsBase(
53 1 << static_cast<int>(Trk::MaterialEffectsBase::MaterialThickness))
54 , m_scatteringAngles(std::nullopt)
55 , m_energyLoss(nullptr)
58 inline Trk::MaterialEffectsOnTrack::MaterialEffectsOnTrack(
59 const Trk::MaterialEffectsOnTrack& emef)
60 : Trk::MaterialEffectsBase(emef)
61 , m_scatteringAngles(emef.m_scatteringAngles)
62 , m_energyLoss(emef.m_energyLoss ? emef.m_energyLoss->clone() : nullptr)
65 inline Trk::MaterialEffectsOnTrack&
66 Trk::MaterialEffectsOnTrack::operator=(const Trk::MaterialEffectsOnTrack& rhs)
69 Trk::MaterialEffectsBase::operator=(rhs);
70 m_scatteringAngles = rhs.m_scatteringAngles;
71 m_energyLoss.reset(rhs.m_energyLoss ? rhs.m_energyLoss->clone() : nullptr);
77 inline std::unique_ptr<Trk::MaterialEffectsOnTrack>
78 Trk::MaterialEffectsOnTrack::uniqueClone() const
80 return std::unique_ptr<MaterialEffectsOnTrack>(clone());
83 inline const Trk::ScatteringAngles*
84 Trk::MaterialEffectsOnTrack::scatteringAngles() const
86 if (m_scatteringAngles == std::nullopt) {
89 return &(*m_scatteringAngles);
92 inline const Trk::EnergyLoss*
93 Trk::MaterialEffectsOnTrack::energyLoss() const
95 return m_energyLoss.get();
98 inline Trk::MaterialEffectsOnTrack*
99 Trk::MaterialEffectsOnTrack::clone() const
101 return new MaterialEffectsOnTrack(*this);