File indexing completed on 2025-05-14 07:56:51
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/Definitions/Algebra.hpp"
0012 #include "Acts/Definitions/Common.hpp"
0013 #include "ActsExamples/EventData/MuonSpacePoint.hpp"
0014
0015 #include <cmath>
0016 #include <vector>
0017
0018 namespace ActsExamples {
0019 class MuonSegment {
0020 public:
0021 using MuonId = MuonSpacePoint::MuonId;
0022
0023 MuonSegment() = default;
0024
0025 MuonSegment(const MuonSegment& other) = default;
0026
0027 MuonSegment(MuonSegment&& other) = default;
0028
0029 MuonSegment& operator=(const MuonSegment& other) = default;
0030
0031
0032 const Acts::Vector3& globalPosition() const { return m_globPos; }
0033
0034 const Acts::Vector3& globalDirection() const { return m_globDir; }
0035
0036 const Acts::Vector3& localPosition() const { return m_localPos; }
0037
0038 const Acts::Vector3& localDirection() const { return m_localDir; }
0039
0040 const MuonId& id() const { return m_id; }
0041
0042 double time() const { return m_time; }
0043 double timeUncert() const { return m_timeError; }
0044
0045 double chiSquared() const { return m_chiSquared; }
0046 double nDoF() const { return m_nDoF; }
0047
0048 unsigned nPrecisionHits() const { return m_precisionHits; }
0049
0050 unsigned nTrigEtaLayers() const { return m_triEtaLayers; }
0051
0052 unsigned nTrigPhiLayers() const { return m_phiLayers; }
0053
0054 void setGlobalCoords(const Acts::Vector3& pos, const Acts::Vector3& dir) {
0055 m_globPos = pos;
0056 m_globDir = dir;
0057 }
0058
0059 void setLocalCoords(const Acts::Vector3& pos, const Acts::Vector3& dir) {
0060 m_localPos = pos;
0061 m_localDir = dir;
0062 }
0063
0064 void setId(const MuonId& id) { m_id = id; }
0065
0066 void setTime(const double time, const double timeError) {
0067 m_time = time;
0068 m_timeError = timeError;
0069 }
0070
0071 void setFitQuality(const double chi2, const unsigned nDoF) {
0072 m_chiSquared = chi2;
0073 m_nDoF = nDoF;
0074 }
0075
0076
0077 void setHitSummary(unsigned nPrec, unsigned nTrigEta, unsigned nTrigPhi) {
0078 m_precisionHits = nPrec;
0079 m_triEtaLayers = nTrigEta;
0080 m_phiLayers = nTrigPhi;
0081 }
0082
0083 private:
0084 MuonId m_id{};
0085 Acts::Vector3 m_globPos{Acts::Vector3::Zero()};
0086 Acts::Vector3 m_globDir{Acts::Vector3::Zero()};
0087 Acts::Vector3 m_localPos{Acts::Vector3::Zero()};
0088 Acts::Vector3 m_localDir{Acts::Vector3::Zero()};
0089
0090 double m_time{0.f};
0091
0092 double m_timeError{0.f};
0093
0094 double m_chiSquared{0.f};
0095 unsigned m_nDoF{0u};
0096
0097 unsigned m_precisionHits{0u};
0098
0099 unsigned m_phiLayers{0u};
0100
0101 unsigned m_triEtaLayers{0u};
0102 };
0103 using MuonSegmentContainer = std::vector<MuonSegment>;
0104
0105 }