ATLAS Offline Software
STGC_RawData.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef MUONRDO_STGCRAWDATA_H
6 #define MUONRDO_STGCRAWDATA_H
7 
8 #include <iostream>
9 #include "Identifier/Identifier.h"
10 
11 class MsgStream;
12 
13 namespace Muon {
14 class STGC_RawData final{
15  friend class STGC_RawDataCnv_p1;
16  friend class STGC_RawDataCnv_p2;
17  friend class STGC_RawDataCnv_p3;
18 
19  private:
20 
21  // offline identifier
23 
24  // readout data
25  // keeping time in two variables: a float and an int. The float variable is kept for backward compatibility
26  float m_time;
27  unsigned int m_tdo; // time converted to TDC counts
28  unsigned int m_charge;
30 
31  bool m_isDead;
33 
34 
35  public:
36  STGC_RawData (const Identifier id);
37  STGC_RawData () = default;
38  STGC_RawData(const STGC_RawData&) = default;
39  STGC_RawData(STGC_RawData&&) = default;
40  STGC_RawData& operator=(const STGC_RawData&) = default;
42  ~STGC_RawData() = default;
43 
44  STGC_RawData(const Identifier id, const uint16_t bcTag, const float time,
45  const unsigned int charge, const bool isDead,
46  const bool timeAndChargeInCounts);
47 
48  STGC_RawData (const Identifier id, const uint16_t bcTag, const float time, const unsigned int tdo,
49  const unsigned int charge, const bool isDead, const bool timeAndChargeInCounts );
50 
51 
52  const Identifier identify() const { return m_id; }
53 
54  // access functions
55  float time() const {return m_time;}
56  unsigned int tdo() const {return m_tdo;}
57  unsigned int charge() const {return m_charge;}
58  uint16_t bcTag() const {return m_bcTag;}
59 
60  bool isDead() const {return m_isDead;}
62 
63  // Lower time bound of digits selected at the end of digitization.
64  // As of June 2022, the main event is assigned to relative_BCID=3, which is set to correspond
65  // to the time interval [-12.5ns, +12.5ns]. The digits within the BC window [-3, +4] are kept.
66  // Therefore the lower time bound is -87.5 ns.
67  static constexpr double s_lowerTimeBound{-87.5};
68 
69  // BC window
70  static constexpr int s_BCWindow{8};
71 
72  // A Simple constant to convert time to TDC counts in the absence of time calibration.
73  // This constant should be used only to preserve backward compatibility, since it doesn't have
74  // physical meaning and the value is arbitrary. The value is chosen to be greater than
75  // 25 ns plus the absolute value of the time corresponding to the first bunch crossing defined in
76  // sTGC_Digitization/python/sTGC_DigitizationConfig.py, which is -100ns as of 2022-05-01.
77  // Therefore, after time-tdo conversion, the resulting TDC count is positive.
78  static constexpr int s_timeTdoShift{200};
79 };
80 }
81 
83 MsgStream& operator << ( MsgStream& sl, const Muon::STGC_RawData& coll);
84 
86 std::ostream& operator << ( std::ostream& sl, const Muon::STGC_RawData& coll);
87 
88 #endif
89 
Muon::STGC_RawData::identify
const Identifier identify() const
Definition: STGC_RawData.h:52
Muon::STGC_RawData::m_time
float m_time
Definition: STGC_RawData.h:26
Muon::STGC_RawData::~STGC_RawData
~STGC_RawData()=default
Muon::STGC_RawData::STGC_RawData
STGC_RawData(const STGC_RawData &)=default
Muon::STGC_RawData::m_tdo
unsigned int m_tdo
Definition: STGC_RawData.h:27
Muon::STGC_RawData::STGC_RawData
STGC_RawData(STGC_RawData &&)=default
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:49
Muon::STGC_RawData::STGC_RawData
STGC_RawData()=default
Muon::STGC_RawData::s_lowerTimeBound
static constexpr double s_lowerTimeBound
Definition: STGC_RawData.h:67
Muon::STGC_RawData::operator=
STGC_RawData & operator=(const STGC_RawData &)=default
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
Muon::STGC_RawData
Definition: STGC_RawData.h:14
Muon::STGC_RawData::tdo
unsigned int tdo() const
Definition: STGC_RawData.h:56
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
Muon::STGC_RawDataCnv_p2
Definition: STGC_RawDataCnv_p2.h:18
Muon::STGC_RawData::isDead
bool isDead() const
Definition: STGC_RawData.h:60
Muon::STGC_RawData::time
float time() const
Definition: STGC_RawData.h:55
Muon::STGC_RawDataCnv_p3
Definition: STGC_RawDataCnv_p3.h:18
Muon::STGC_RawDataCnv_p1
Definition: STGC_RawDataCnv_p1.h:18
Muon::STGC_RawData::m_timeAndChargeInCounts
bool m_timeAndChargeInCounts
Definition: STGC_RawData.h:32
Muon::STGC_RawData::m_charge
unsigned int m_charge
Definition: STGC_RawData.h:28
Muon::STGC_RawData::m_bcTag
uint16_t m_bcTag
Definition: STGC_RawData.h:29
Muon::STGC_RawData::m_isDead
bool m_isDead
Definition: STGC_RawData.h:31
Muon::STGC_RawData::operator=
STGC_RawData & operator=(STGC_RawData &&)=default
Muon::STGC_RawData::m_id
Identifier m_id
Definition: STGC_RawData.h:22
Muon::STGC_RawData::charge
unsigned int charge() const
Definition: STGC_RawData.h:57
operator<<
MsgStream & operator<<(MsgStream &sl, const Muon::STGC_RawData &coll)
Overload of << operator for MsgStream for debug output.
Definition: STGC_RawData.cxx:30
Muon::STGC_RawData::bcTag
uint16_t bcTag() const
Definition: STGC_RawData.h:58
Muon::STGC_RawData::timeAndChargeInCounts
bool timeAndChargeInCounts() const
Definition: STGC_RawData.h:61
Muon::STGC_RawData::s_BCWindow
static constexpr int s_BCWindow
Definition: STGC_RawData.h:70
Muon::STGC_RawData::s_timeTdoShift
static constexpr int s_timeTdoShift
Definition: STGC_RawData.h:78