ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonDetDescr
MuonReadoutGeometry
src
GlobalUtilities.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
/***************************************************************************
6
global stuff
7
-----------------------------------------
8
***************************************************************************/
9
10
#include "
MuonReadoutGeometry/GlobalUtilities.h
"
11
12
#include <charconv>
13
#include <cmath>
14
#include <cstdlib>
15
#include <iostream>
16
#include <sstream>
17
18
namespace
MuonGM
{
19
20
std::string
buildString
(
int
i,
int
ncha) {
21
if
(ncha <= 0) {
22
return
std::to_string(i);
23
}
else
{
24
int
ij = i;
25
std::ostringstream ostigg;
26
for
(
int
j = ncha - 1; j >= 0; j--) {
27
ostigg << int(ij / std::pow(10.0, j));
28
ij = int(ij %
int
(std::pow(10.0, j)));
29
}
30
return
ostigg.str();
31
}
32
}
33
34
int
strtoint
(std::string_view
str
,
unsigned
int
istart,
unsigned
int
length
) {
35
std::string_view s(
str
.substr(istart,
length
));
36
int
result = -999;
37
std::from_chars(s.data(), s.data() + s.size(), result);
38
return
result;
39
}
40
41
int
stationPhiTGC
(std::string_view stName,
int
fi,
int
zi_input) {
42
// fi and zi_imput are the amdb indices (1, ... 8) and (-8, 8) are their ranges
43
std::string_view stName3 = stName.substr(0, 3);
44
int
stphi = 0;
45
46
int
zi = std::abs(zi_input);
47
--fi;
// start from 0
48
49
if
(stName3 ==
"T4E"
) {
50
switch
(fi) {
51
case
0: stphi = zi;
break
;
52
case
1: stphi = zi + 3;
break
;
53
case
2: stphi = zi + 6;
break
;
54
case
3:
55
stphi = zi + 9;
// zi are numbered in order, i.e. 1 and 2
56
break
;
57
case
4: stphi = zi + 11;
break
;
58
case
5: stphi = zi + 14;
break
;
59
case
6: stphi = zi + 16;
break
;
60
case
7: stphi = zi + 19;
break
;
61
default
: stphi = 0;
62
}
63
// minumum stPhi at phi 0
64
stphi = stphi - 1;
65
if
(stphi < 1) stphi = stphi + 21;
66
}
else
{
67
int
nch = 3;
68
if
(stName[2] ==
'E'
) nch = 6;
69
int
fioff = std::abs(zi);
70
if
(fioff > 3 && stName[2] ==
'F'
) fioff = fioff - 3;
71
// minumum stPhi at phi 0
72
if
(stName[2] ==
'F'
)
73
fioff = fioff - 1;
74
else
75
fioff = fioff - 2;
76
stphi = fi * nch + fioff;
77
if
(stphi < 1) {
78
if
(stName[2] ==
'F'
)
79
stphi = stphi + 24;
80
else
81
stphi = stphi + 48;
82
}
83
}
84
return
stphi;
85
}
86
int
amdbPhiTGC
(std::string_view stName,
int
phiIndex,
int
eta_index) {
87
if
(stName !=
"T4E"
) {
88
const
int
nch = 3*( stName[2] ==
'E'
? 2 : 1);
89
int
fioff = std::abs(eta_index);
90
if
(fioff > 3 && stName[2] ==
'F'
) fioff -= 3;
91
if
(stName[2] ==
'F'
) fioff -=1;
92
else
fioff-=2;
93
int
amdbPhi = ( (phiIndex - fioff) / nch + 1 ) % 8;
94
if
(amdbPhi <= 0) amdbPhi = 8;
95
return
amdbPhi;
96
}
99
switch
(phiIndex) {
100
case
21:
return
1;
101
case
3 :
return
2;
102
case
6:
return
3;
103
case
9:
return
4;
104
case
11:
return
5;
105
case
14:
return
6;
106
case
16:
return
7;
107
case
19:
return
8;
108
default
:
return
0;
109
}
110
return
0;
111
}
112
113
114
}
// namespace MuonGM
length
double length(const pvec &v)
Definition
FPGATrackSimLLPDoubletHoughTransformTool.cxx:26
GlobalUtilities.h
MuonGM
Ensure that the Athena extensions are properly loaded.
Definition
GeoMuonHits.h:27
MuonGM::buildString
std::string buildString(int i, int ncha)
Definition
GlobalUtilities.cxx:20
MuonGM::amdbPhiTGC
int amdbPhiTGC(std::string_view stName, int phiIndex, int eta_index)
Converts the Identifier phi index to the AMDB phi index.
Definition
GlobalUtilities.cxx:86
MuonGM::stationPhiTGC
int stationPhiTGC(std::string_view stName, int fi, int zi_input)
Converts the AMDB phi index to the Identifier phi Index.
Definition
GlobalUtilities.cxx:41
MuonGM::strtoint
int strtoint(std::string_view str, unsigned int istart, unsigned int length)
Definition
GlobalUtilities.cxx:34
str
Definition
BTagTrackIpAccessor.cxx:11
Generated on
for ATLAS Offline Software by
1.17.0