ATLAS Offline Software
MdtTubeCalibContainer.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef MUONCALIB_MDTTUBECALIBCONTAINER_H
6 #define MUONCALIB_MDTTUBECALIBCONTAINER_H
7 
8 #include <iostream>
9 #include <string>
10 #include <vector>
13 
14 namespace MuonCalib {
15 
18  public:
19  struct SingleTubeCalib {
21  float t0{0.f};
23  float adcCal{0.f};
26  SingleTubeCalib() = default;
27  };
29 
32  const Identifier& moduleID);
33 
35  const SingleTubeCalib* getCalib(const Identifier& tubeId) const {
36  unsigned int idx = vectorIndex(tubeId);
37  if (idx >= m_data.size()) return nullptr;
38  return &m_data[idx];
39  };
40 
42  bool setCalib(SingleTubeCalib val, const Identifier& tubeId, MsgStream& msg);
43 
45  const Identifier& identify() const { return m_moduleID; }
46  unsigned int size() const { return m_data.size(); }
47  unsigned int numMultilayers() const { return m_nMl; }
48  unsigned int numLayers() const { return m_nLayers; }
49  unsigned int numTubes() const { return m_nTubes; }
50 
51  const Muon::IMuonIdHelperSvc* idHelperSvc() const;
52 
53  protected:
57 
59  unsigned int vectorIndex(const Identifier& measID) const {
60  return (m_idHelper.multilayer(measID) - 1) * (m_nLayers * m_nTubes) +
61  (m_idHelper.tubeLayer(measID) - 1) * m_nTubes +
62  (m_idHelper.tube(measID) -1);
63  }
67  std::vector<SingleTubeCalib> m_data{};
68  };
69 
70 } // namespace MuonCalib
71 
72 #endif
MdtIdHelper::multilayer
int multilayer(const Identifier &id) const
Access to components of the ID.
Definition: MdtIdHelper.cxx:722
MuonCalib::MdtTubeCalibContainer::SingleTubeCalib::t0
float t0
< relative t0 in chamber (ns)
Definition: MdtTubeCalibContainer.h:21
MuonCalib::MdtTubeCalibContainer::SingleTubeCalib::statusCode
uint8_t statusCode
Definition: MdtTubeCalibContainer.h:25
GeoModel::TransientConstSharedPtr
The TransientConstSharedPtr allows non-const access if the pointer itself is non-const but in the con...
Definition: TransientConstSharedPtr.h:13
MuonCalib::MdtTubeCalibContainer::m_idHelper
const MdtIdHelper & m_idHelper
Definition: MdtTubeCalibContainer.h:56
MuonCalib::MdtTubeCalibContainer::identify
const Identifier & identify() const
return container name and dimensions
Definition: MdtTubeCalibContainer.h:45
MuonCalib::MdtTubeCalibContainer::vectorIndex
unsigned int vectorIndex(const Identifier &measID) const
calculate postion of tube in vector
Definition: MdtTubeCalibContainer.h:59
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:558
MuonCalib::MdtTubeCalibContainer::m_nTubes
uint8_t m_nTubes
number of tubes
Definition: MdtTubeCalibContainer.h:66
MuonCalib::MdtTubeCalibContainer::numMultilayers
unsigned int numMultilayers() const
Definition: MdtTubeCalibContainer.h:47
MuonCalib::MdtTubeCalibContainer::m_idHelperSvc
const Muon::IMuonIdHelperSvc * m_idHelperSvc
Definition: MdtTubeCalibContainer.h:55
MdtIdHelper::tubeLayer
int tubeLayer(const Identifier &id) const
Definition: MdtIdHelper.cxx:724
MuonCalib::MdtTubeCalibContainer::getCalib
const SingleTubeCalib * getCalib(const Identifier &tubeId) const
return calibration constants of a single tube
Definition: MdtTubeCalibContainer.h:35
MuonCalib::MdtTubeCalibContainer::MdtTubeCalibContainer
MdtTubeCalibContainer(const Muon::IMuonIdHelperSvc *idHelperSvc, const Identifier &moduleID)
nMl = number of multilayres, nLayers = number of layers in multilayer (3 or 4); nTubes = number of tu...
Definition: MdtTubeCalibContainer.cxx:6
MuonCalib::MdtTubeCalibContainer::numLayers
unsigned int numLayers() const
Definition: MdtTubeCalibContainer.h:48
MdtIdHelper
Definition: MdtIdHelper.h:61
MdtIdHelper::tube
int tube(const Identifier &id) const
Definition: MdtIdHelper.cxx:726
MuonCalib
CscCalcPed - algorithm that finds the Cathode Strip Chamber pedestals from an RDO.
Definition: CscCalcPed.cxx:22
MuonCalib::MdtTubeCalibContainer::m_moduleID
const Identifier m_moduleID
Definition: MdtTubeCalibContainer.h:54
MuonCalib::MdtTubeCalibContainer::numTubes
unsigned int numTubes() const
Definition: MdtTubeCalibContainer.h:49
MuonCalib::MdtTubeCalibContainer
Holds single-tube calibration constants of one chamber.
Definition: MdtTubeCalibContainer.h:17
MuonCalib::MdtTubeCalibContainer::m_nLayers
uint8_t m_nLayers
number of layer
Definition: MdtTubeCalibContainer.h:65
MuonCalib::MdtTubeCalibContainer::SingleTubeCalib::adcCal
float adcCal
quality flag for the SingleTubeCalib constants: 0 all ok, 1 no hits found, 2 too few hits,...
Definition: MdtTubeCalibContainer.h:23
MuonCalib::MdtTubeCalibContainer::SingleTubeCalib::SingleTubeCalib
SingleTubeCalib()=default
Muon::IMuonIdHelperSvc::mdtIdHelper
virtual const MdtIdHelper & mdtIdHelper() const =0
access to MdtIdHelper
MuonCalib::MdtTubeCalibContainer::m_nMl
uint8_t m_nMl
number of multilayers in chamber
Definition: MdtTubeCalibContainer.h:64
MuonCalib::MdtTubeCalibContainer::setCalib
bool setCalib(SingleTubeCalib val, const Identifier &tubeId, MsgStream &msg)
set the calibration constants of a single tube
Definition: MdtTubeCalibContainer.cxx:19
TransientConstSharedPtr.h
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
Muon::IMuonIdHelperSvc
Interface for Helper service that creates muon Identifiers and can be used to print Identifiers.
Definition: IMuonIdHelperSvc.h:27
MuonCalib::MdtTubeCalibContainer::SingleTubeCalib
Definition: MdtTubeCalibContainer.h:19
MuonCalib::MdtTubeCalibContainer::m_data
std::vector< SingleTubeCalib > m_data
Definition: MdtTubeCalibContainer.h:67
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
MuonCalib::MdtTubeCalibContainer::size
unsigned int size() const
Definition: MdtTubeCalibContainer.h:46
IMuonIdHelperSvc.h
MuonCalib::MdtTubeCalibContainer::idHelperSvc
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Definition: MdtTubeCalibContainer.cxx:39
Identifier
Definition: IdentifierFieldParser.cxx:14