ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonCablings
MuonCablingData
src
HedgehogBoard.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
#include <
MuonCablingData/HedgehogBoard.h
>
5
#include <cassert>
6
#include <iostream>
7
#include <iomanip>
8
9
10
namespace
Muon
{
11
std::ostream&
operator<<
(std::ostream& ostr,
const
Muon::HedgehogBoard
& board) {
12
ostr<<
"boardID: "
<<
static_cast<
int
>
(board.
boardId
())<<
", "
;
13
ostr<<
"nLayers: "
<<
static_cast<
int
>
(board.
numTubeLayers
())<<
", "
;
14
ostr<<
"nTubesPerLay: "
<<
static_cast<
int
>
(board.
numTubesPerLayer
())<<
", "
;
15
ostr<<
"mapping: "
<<std::endl;
16
for
(uint8_t lay = board.
numTubeLayers
(); lay > 0; --lay) {
17
if
(!(lay % 2))
18
ostr <<
" "
;
19
for
(uint8_t tube = 1; tube <= board.
numTubesPerLayer
(); ++tube) {
20
ostr << std::setw(5) << static_cast<int>(board.
pairPin
(lay, tube));
21
}
22
ostr << std::endl;
23
}
24
return
ostr;
25
}
26
27
using
TubeLayer
=
HedgehogBoard::TubeLayer
;
28
HedgehogBoard::HedgehogBoard
(
const
Mapping
&
map
,
29
const
uint8_t nTubeLay,
30
const
uint16_t
boardId
):
31
m_hedgePins
{
map
},
32
m_nTubeLay
{nTubeLay},
33
m_id
{
boardId
} {
34
assert(nTubeLay == 3 || nTubeLay == 4);
35
m_nTubePerLay
=
m_hedgePins
.size() / nTubeLay;
36
}
37
bool
HedgehogBoard::operator<
(
const
HedgehogBoard
& other)
const
{
38
return
boardId
() < other.boardId();
39
}
40
uint16_t
HedgehogBoard::boardId
()
const
{
return
m_id
; }
41
uint8_t
HedgehogBoard::numTubeLayers
()
const
{
return
m_nTubeLay
; }
42
uint8_t
HedgehogBoard::numTubesPerLayer
()
const
{
return
m_nTubePerLay
; }
43
const
HedgehogBoard::Mapping
&
HedgehogBoard::data
()
const
{
return
m_hedgePins
; }
44
uint8_t
HedgehogBoard::pinNumber
(
const
TubeLayer
& tubeLay)
const
{
45
return
pinNumber
(tubeLay.
layer
, tubeLay.
tube
);
46
}
47
uint8_t
HedgehogBoard::pinNumber
(uint8_t layer, uint8_t tube)
const
{
48
uint8_t pin = (layer-1) *
m_nTubePerLay
+ (tube -1) %
m_nTubePerLay
;
49
assert(pin <
m_hedgePins
.size());
50
return
pin;
51
}
52
uint8_t
HedgehogBoard::pairPin
(
const
TubeLayer
& tubeLay)
const
{
53
return
m_hedgePins
[
pinNumber
(tubeLay)];
54
}
55
uint8_t
HedgehogBoard::pairPin
(uint8_t layer, uint8_t tube)
const
{
56
return
m_hedgePins
[
pinNumber
(layer, tube)];
57
}
58
59
TubeLayer
HedgehogBoard::twinPair
(
const
TubeLayer
& tubeLay)
const
{
60
return
twinPair
(tubeLay.
layer
, tubeLay.
tube
);
61
}
62
TubeLayer
HedgehogBoard::twinPair
(uint8_t layer, uint8_t tube)
const
{
63
const
uint8_t pin =
pinNumber
(layer, tube);
64
const
uint8_t twin =
m_hedgePins
[pin];
65
TubeLayer
result{};
66
if
(pin != twin) {
67
result.layer = (twin - twin%
m_nTubePerLay
) /
m_nTubePerLay
+ 1;
68
result.tube = (twin %
m_nTubePerLay
) + 1;
69
}
else
{
70
result.tube = tube;
71
result.layer = layer;
72
}
73
return
result;
74
}
75
void
HedgehogBoard::setHVDelayTime
(
const
double
hvTime) {
76
m_hvDelay
= std::make_optional<double>(hvTime);
77
}
78
bool
HedgehogBoard::hasHVDelayTime
()
const
{
79
return
m_hvDelay
.has_value();
80
}
81
double
HedgehogBoard::hvDelayTime
()
const
{
82
return
m_hvDelay
.value_or(0.);
83
}
84
}
HedgehogBoard.h
Muon::HedgehogBoard
Helper struct to represent the High-voltage pins and a possible connection between them.
Definition
HedgehogBoard.h:32
Muon::HedgehogBoard::m_nTubePerLay
uint8_t m_nTubePerLay
Definition
HedgehogBoard.h:114
Muon::HedgehogBoard::boardId
uint16_t boardId() const
Returns the identifier of the hedgehog board.
Definition
HedgehogBoard.cxx:40
Muon::HedgehogBoard::pinNumber
uint8_t pinNumber(const TubeLayer &tubeLay) const
Returns the pinNumber of the tubeLayer.
Definition
HedgehogBoard.cxx:44
Muon::HedgehogBoard::pairPin
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,...
Definition
HedgehogBoard.cxx:52
Muon::HedgehogBoard::m_hedgePins
Mapping m_hedgePins
Definition
HedgehogBoard.h:112
Muon::HedgehogBoard::m_hvDelay
std::optional< double > m_hvDelay
Definition
HedgehogBoard.h:116
Muon::HedgehogBoard::Mapping
std::array< uint8_t, nChPerBoard > Mapping
Definition
HedgehogBoard.h:37
Muon::HedgehogBoard::data
const Mapping & data() const
Returns the underlying map.
Definition
HedgehogBoard.cxx:43
Muon::HedgehogBoard::numTubeLayers
uint8_t numTubeLayers() const
Returns the number of tube layers 3 or 4.
Definition
HedgehogBoard.cxx:41
Muon::HedgehogBoard::hasHVDelayTime
bool hasHVDelayTime() const
Returns whether the HedgehogBoard has a specifc delay time.
Definition
HedgehogBoard.cxx:78
Muon::HedgehogBoard::hvDelayTime
double hvDelayTime() const
Returns the HV delay time.
Definition
HedgehogBoard.cxx:81
Muon::HedgehogBoard::m_id
uint16_t m_id
Definition
HedgehogBoard.h:115
Muon::HedgehogBoard::HedgehogBoard
HedgehogBoard()=default
Default constructor.
Muon::HedgehogBoard::twinPair
TubeLayer twinPair(const TubeLayer &tubeLay) const
Returns the tube & layer short circuited with the given tubeLayer.
Definition
HedgehogBoard.cxx:59
Muon::HedgehogBoard::setHVDelayTime
void setHVDelayTime(const double hvTime)
Define a HV delay in the time of arrival between the primary & twin electronics signal.
Definition
HedgehogBoard.cxx:75
Muon::HedgehogBoard::operator<
bool operator<(const HedgehogBoard &other) const
Ordering of hedgehog boards, performed by Identifier.
Definition
HedgehogBoard.cxx:37
Muon::HedgehogBoard::m_nTubeLay
uint8_t m_nTubeLay
Definition
HedgehogBoard.h:113
Muon::HedgehogBoard::numTubesPerLayer
uint8_t numTubesPerLayer() const
Returns the number of tubes per layer.
Definition
HedgehogBoard.cxx:42
map
STL class.
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition
TrackSystemController.h:46
Muon::TubeLayer
HedgehogBoard::TubeLayer TubeLayer
Definition
HedgehogBoard.cxx:27
Muon::operator<<
std::ostream & operator<<(std::ostream &ostr, const Muon::HedgehogBoard &board)
Definition
HedgehogBoard.cxx:11
Muon::HedgehogBoard::TubeLayer
Helper struct to return a tube & tube layer pair.
Definition
HedgehogBoard.h:57
Muon::HedgehogBoard::TubeLayer::tube
uint8_t tube
Tube number [1- 24/numTubeLayers()].
Definition
HedgehogBoard.h:59
Muon::HedgehogBoard::TubeLayer::layer
uint8_t layer
Layer number [1- numTubeLayers()].
Definition
HedgehogBoard.h:61
Generated on
for ATLAS Offline Software by
1.17.0