ATLAS Offline Software
Loading...
Searching...
No Matches
HedgehogBoard.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4#ifndef MUONMDT_CABLING_HEDGEHOGBOARD_H
5#define MUONMDT_CABLING_HEDGEHOGBOARD_H
6
7#include <array>
8#include <string>
9#include <cinttypes>
10#include <optional>
11#include <memory>
12#include <iosfwd>
14
15namespace Muon{
33 public:
34 using HedgehogBoardPtr = std::shared_ptr<const HedgehogBoard>;
35
36 static constexpr unsigned nChPerBoard = 24;
37 using Mapping = std::array<uint8_t, nChPerBoard>;
38
40 HedgehogBoard() = default;
46 const uint8_t nTubeLay,
47 const uint16_t boardId);
49 bool operator<(const HedgehogBoard& other) const;
51 uint16_t boardId() const;
53 uint8_t numTubeLayers() const;
55 uint8_t numTubesPerLayer() const;
57 struct TubeLayer {
59 uint8_t tube{0};
61 uint8_t layer{0};
63 bool operator==(const TubeLayer& other) const {
64 return tube == other.tube && layer == other.layer;
65 }
66
67 bool operator!=(const TubeLayer& other) const {
68 return tube != other.tube || layer != other.layer;
69 }
70 friend std::ostream& operator<<(std::ostream& ostr, const TubeLayer& tubeLay){
71 ostr<<"layer: "<<static_cast<int>(tubeLay.layer)
72 <<", tube: "<<static_cast<int>(tubeLay.tube);
73 return ostr;
74 }
75 };
76
78 uint8_t pinNumber(const TubeLayer& tubeLay) const;
82 uint8_t pinNumber(uint8_t layer, uint8_t tube) const;
87 uint8_t pairPin(const TubeLayer& tubeLay) const;
93 uint8_t pairPin(uint8_t layer, uint8_t tube) const;
96 TubeLayer twinPair(const TubeLayer& tubeLay) const;
100 TubeLayer twinPair(uint8_t layer, uint8_t tube) const;
104 void setHVDelayTime(const double hvTime);
106 bool hasHVDelayTime() const;
108 double hvDelayTime() const;
110 const Mapping& data() const;
111 private:
113 uint8_t m_nTubeLay{0};
114 uint8_t m_nTubePerLay{0};
115 uint16_t m_id{0};
116 std::optional<double> m_hvDelay{std::nullopt};
117 };
118 std::ostream& operator<<(std::ostream& ostr, const Muon::HedgehogBoard& board);
119}
120
121
122#endif
constexpr std::array< T, N > make_array(const T &def_val)
Helper function to initialize in-place arrays with non-zero values.
Definition ArrayHelper.h:10
Helper struct to represent the High-voltage pins and a possible connection between them.
std::shared_ptr< const HedgehogBoard > HedgehogBoardPtr
uint16_t boardId() const
Returns the identifier of the hedgehog board.
static constexpr unsigned nChPerBoard
uint8_t pinNumber(const TubeLayer &tubeLay) const
Returns the pinNumber of the tubeLayer.
uint8_t pairPin(const TubeLayer &tubeLay) const
Returns the number of the pin that's twin to the tubeLayer If the pin is not short circuited,...
std::optional< double > m_hvDelay
std::array< uint8_t, nChPerBoard > Mapping
const Mapping & data() const
Returns the underlying map.
uint8_t numTubeLayers() const
Returns the number of tube layers 3 or 4.
bool hasHVDelayTime() const
Returns whether the HedgehogBoard has a specifc delay time.
double hvDelayTime() const
Returns the HV delay time.
HedgehogBoard()=default
Default constructor.
TubeLayer twinPair(const TubeLayer &tubeLay) const
Returns the tube & layer short circuited with the given tubeLayer.
void setHVDelayTime(const double hvTime)
Define a HV delay in the time of arrival between the primary & twin electronics signal.
bool operator<(const HedgehogBoard &other) const
Ordering of hedgehog boards, performed by Identifier.
uint8_t numTubesPerLayer() const
Returns the number of tubes per layer.
STL class.
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
HedgehogBoard::TubeLayer TubeLayer
std::ostream & operator<<(std::ostream &ostr, const Muon::HedgehogBoard &board)
Helper struct to return a tube & tube layer pair.
uint8_t tube
Tube number [1- 24/numTubeLayers()].
uint8_t layer
Layer number [1- numTubeLayers()].
bool operator==(const TubeLayer &other) const
Equality operator with another TubeLayer object.
friend std::ostream & operator<<(std::ostream &ostr, const TubeLayer &tubeLay)
bool operator!=(const TubeLayer &other) const
Inequality operator with another TubeLayer object.