ATLAS Offline Software
DriftCircle.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef DCMATH_DRIFTCIRCLE_H
6 #define DCMATH_DRIFTCIRCLE_H
7 
8 #include <ostream>
9 #include <vector>
10 
11 #include "GaudiKernel/MsgStream.h"
14 
15 namespace Muon {
16  class MdtDriftCircleOnTrack;
17 }
18 
19 namespace TrkDriftCircleMath {
20 
22  class DriftCircle {
23  public:
25  enum DriftState {
26  EarlyHit = -1,
27  InTime = 0,
28  LateHit = 1,
29  EmptyTube = 2,
30  NotCrossed = 3
31  };
32 
33  public:
34 
43  double r,
44  double dr,
45  DriftState state,
46  MdtId id,
48  unsigned int index = 0) :
49  m_pos(pos), m_r(r), m_dr(dr), m_drPrecise(dr), m_state(state), m_id(id), m_rot(rot), m_idx{index} {}
50 
60  double r,
61  double dr,
62  double drPrecise,
63  DriftState state,
64  MdtId id,
66  unsigned int index = 0) :
68  m_idx{index} {}
69 
71  virtual ~DriftCircle() = default;
72 
74  const LocVec2D& position() const { return m_pos; }
75 
77  const MdtId& id() const { return m_id; }
78 
80  double x() const { return m_pos.x(); }
81 
83  double y() const { return m_pos.y(); }
84 
86  double r() const { return m_r; }
87 
89  double dr() const { return m_dr; }
90 
92  double drPrecise() const { return m_drPrecise; }
93 
95  const DriftState& driftState() const { return m_state; }
97  const Muon::MdtDriftCircleOnTrack* rot() const { return m_rot; }
98 
99  unsigned int index() const { return m_idx; }
101  void updateRadius(double r, double dr) {
102  m_r = r;
103  m_dr = dr;
104  }
105 
106  private:
107  LocVec2D m_pos{0., 0.};
108  double m_r{0.};
109  double m_dr{0.};
110  double m_drPrecise{0.};
111  DriftState m_state; // Masked by DCOnTrack::m_state which is a DCOnTrackState
114  unsigned int m_idx{0};
115  };
116 
117  typedef std::vector<DriftCircle> DCVec;
119  typedef DCVec::const_iterator DCCit;
120 } // namespace TrkDriftCircleMath
121 
122 std::ostream& operator<<(std::ostream& os, const TrkDriftCircleMath::DriftCircle& dc);
123 
124 MsgStream& operator<<(MsgStream& os, const TrkDriftCircleMath::DriftCircle& dc);
125 
126 #endif
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
TrkDriftCircleMath::DriftCircle::LateHit
@ LateHit
drift time compatible with drift spectrum
Definition: DriftCircle.h:28
TrkDriftCircleMath::DriftCircle::index
unsigned int index() const
Definition: DriftCircle.h:99
TrkDriftCircleMath::MdtId
Definition: MdtId.h:14
index
Definition: index.py:1
operator<<
std::ostream & operator<<(std::ostream &os, const TrkDriftCircleMath::DriftCircle &dc)
Definition: DriftCircle.cxx:24
TrkDriftCircleMath::DriftCircle::m_rot
const Muon::MdtDriftCircleOnTrack * m_rot
Definition: DriftCircle.h:113
TrkDriftCircleMath::DriftCircle::position
const LocVec2D & position() const
access to local position
Definition: DriftCircle.h:74
TrkDriftCircleMath
Function object to check whether two Segments are sub/super sets or different.
Definition: IMdtSegmentFinder.h:13
TrkDriftCircleMath::DriftCircle::dr
double dr() const
access to error drift radius
Definition: DriftCircle.h:89
TrkDriftCircleMath::LocVec2D::x
double x() const
Returns the x coordinate of the vector.
Definition: LocVec2D.h:27
TrkDriftCircleMath::DriftCircle::x
double x() const
direct access to local x position
Definition: DriftCircle.h:80
TrkDriftCircleMath::DriftCircle
This class represents a drift time measurement.
Definition: DriftCircle.h:22
TrkDriftCircleMath::DriftCircle::rot
const Muon::MdtDriftCircleOnTrack * rot() const
access to the ROT
Definition: DriftCircle.h:97
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:49
TrkDriftCircleMath::DriftCircle::r
double r() const
access to drift radius
Definition: DriftCircle.h:86
TrkDriftCircleMath::DriftCircle::m_r
double m_r
Definition: DriftCircle.h:108
TrkDriftCircleMath::LocVec2D
Implementation of 2 dimensional vector class.
Definition: LocVec2D.h:16
TrkDriftCircleMath::DCVec
std::vector< DriftCircle > DCVec
Definition: DriftCircle.h:117
TrkDriftCircleMath::DriftCircle::m_drPrecise
double m_drPrecise
Definition: DriftCircle.h:110
TrkDriftCircleMath::DriftCircle::NotCrossed
@ NotCrossed
channel without drift measurement
Definition: DriftCircle.h:30
TrkDriftCircleMath::DriftCircle::driftState
const DriftState & driftState() const
access to drift state
Definition: DriftCircle.h:95
TrkDriftCircleMath::DriftCircle::m_pos
LocVec2D m_pos
Definition: DriftCircle.h:107
TrkDriftCircleMath::LocVec2D::y
double y() const
Returns the y coordinate of the vector.
Definition: LocVec2D.h:29
ReadFromCoolCompare.os
os
Definition: ReadFromCoolCompare.py:231
TrkDriftCircleMath::DriftCircle::DriftCircle
DriftCircle(const LocVec2D &pos, double r, double dr, double drPrecise, DriftState state, MdtId id, const Muon::MdtDriftCircleOnTrack *rot, unsigned int index=0)
full constructor
Definition: DriftCircle.h:59
MdtId.h
TrkDriftCircleMath::DriftCircle::m_idx
unsigned int m_idx
Definition: DriftCircle.h:114
TrkDriftCircleMath::DCIt
DCVec::iterator DCIt
Definition: DriftCircle.h:118
TrkDriftCircleMath::DriftCircle::~DriftCircle
virtual ~DriftCircle()=default
destructor
Muon::MdtDriftCircleOnTrack
This class represents the corrected MDT measurements, where the corrections include the effects of wi...
Definition: MdtDriftCircleOnTrack.h:37
TrkDriftCircleMath::DriftCircle::DriftState
DriftState
state of the drift circle
Definition: DriftCircle.h:25
TrkDriftCircleMath::DCCit
DCVec::const_iterator DCCit
Definition: DriftCircle.h:119
TrkDriftCircleMath::DriftCircle::m_state
DriftState m_state
Definition: DriftCircle.h:111
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
TrkDriftCircleMath::DriftCircle::m_id
MdtId m_id
Definition: DriftCircle.h:112
TrkDriftCircleMath::DriftCircle::EmptyTube
@ EmptyTube
drift time too large to be compatible with drift spectrum
Definition: DriftCircle.h:29
TrkDriftCircleMath::DriftCircle::DriftCircle
DriftCircle(const LocVec2D &pos, double r, double dr, DriftState state, MdtId id, const Muon::MdtDriftCircleOnTrack *rot, unsigned int index=0)
full constructor
Definition: DriftCircle.h:42
TrkDriftCircleMath::DriftCircle::m_dr
double m_dr
Definition: DriftCircle.h:109
TrkDriftCircleMath::DriftCircle::id
const MdtId & id() const
access to identifier
Definition: DriftCircle.h:77
TrkDriftCircleMath::DriftCircle::drPrecise
double drPrecise() const
access to precise error drift radius
Definition: DriftCircle.h:92
TrkDriftCircleMath::DriftCircle::EarlyHit
@ EarlyHit
Definition: DriftCircle.h:26
TrkDriftCircleMath::DriftCircle::updateRadius
void updateRadius(double r, double dr)
set method to allow update from t0 refit
Definition: DriftCircle.h:101
LocVec2D.h
TrkDriftCircleMath::DriftCircle::y
double y() const
direct access to local y position
Definition: DriftCircle.h:83
TrkDriftCircleMath::DriftCircle::InTime
@ InTime
drift time too small to be compatible with drift spectrum
Definition: DriftCircle.h:27