ATLAS Offline Software
LArCalorimeter
LArExample
LArConditionsCommon
python
LArExtendedFTGrouping.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
2
3
4
class
LArExtendedFTGrouping
:
5
def
__init__
(self):
6
self.
_EMBC
=
range
(3,35)
#+[1006]
7
self.
_EMBA
=
range
(35,67)
#+[1005]
8
self.
_EMBCPS
=
range
(117,149)
#+[]
9
self.
_EMBAPS
=
range
(149,181)
#+[]
10
11
#List of EMEC OW channels (C-side)
12
EMEC=(67, 68, 69, 71, 72, 74, 75, 76, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 90, 91)
13
self.
_EMECC
=EMEC+(231,233,235,237)
# EMEC C OW + IW
14
self.
_EMECA
=()
15
for
i
in
EMEC:
#EMECA OW is EMECC OW +25
16
self.
_EMECA
+=(i+25,)
17
self.
_EMECA
+=(232,234,236,238)
#EMECA OW + EMECA IW
18
19
self.
_EMECCPS
=()
20
self.
_EMECAPS
=()
21
for
i
in
EMEC:
22
self.
_EMECCPS
+=(i+114,)
23
self.
_EMECAPS
+=(i+139,)
24
25
self.
_HECC
=(70,77,83,89)
26
self.
_HECA
=()
27
for
i
in
self.
_HECC
:
28
self.
_HECA
+=(i+25,)
29
30
self.
_FCALC
=(73,)
31
self.
_FCALA
=(73+25,)
32
33
self.
_emptyC
=(184,187,191,197,203)
34
self.
_emptyA
=(209,212,216,222,228)
35
self.
_empty
=self.
_emptyC
+ self.
_emptyA
36
37
self.
_withCorr
=
True
38
39
#Build dictionary:
40
self.
_partitions
=dict()
41
self.
_partitions
[
'EMBAPS'
] = self.
_EMBAPS
42
self.
_partitions
[
'EMBCPS'
] = self.
_EMBCPS
43
self.
_partitions
[
'EMECAPS'
] = self.
_EMECAPS
44
self.
_partitions
[
'EMECCPS'
] = self.
_EMECCPS
45
self.
_partitions
[
'EMBA'
] = self.
_EMBA
46
self.
_partitions
[
'EMBC'
] = self.
_EMBC
47
self.
_partitions
[
'EMECA'
]= self.
_EMECA
48
self.
_partitions
[
'EMECC'
] = self.
_EMECC
49
self.
_partitions
[
'HECA'
] = self.
_HECA
50
self.
_partitions
[
'HECC'
] = self.
_HECC
51
self.
_partitions
[
'FCALA'
] = self.
_FCALA
52
self.
_partitions
[
'FCALC'
] = self.
_FCALC
53
self.
_partitions
[
'EMPTYA'
] = self.
_emptyA
54
self.
_partitions
[
'EMPTYC'
] = self.
_emptyC
55
56
#Correction Channels:
57
self.
_corr
=dict()
58
self.
_corr
[
'EMBAPS'
] = 1001
59
self.
_corr
[
'EMBCPS'
] = 1002
60
self.
_corr
[
'EMECAPS'
] = 1003
61
self.
_corr
[
'EMECCPS'
] = 1004
62
self.
_corr
[
'EMBA'
] = 1005
63
self.
_corr
[
'EMBC'
] = 1006
64
self.
_corr
[
'EMECA'
] = 1007
65
self.
_corr
[
'EMECC'
] = 1008
66
self.
_corr
[
'HECA'
] = 1009
67
self.
_corr
[
'HECC'
] = 1010
68
self.
_corr
[
'FCALA'
] = 1011
69
self.
_corr
[
'FCALC'
] = 1012
70
71
#Lookup-dict indexed by channel (partition is the payload)
72
self.
_revLookup
=dict()
73
for
(p, chs)
in
self.
_partitions
.
iteritems
():
74
for
c
in
chs:
75
self.
_revLookup
[c]=p
76
77
78
def
setWithCorr
(self,val):
79
self.
_withCorr
=val
80
81
def
Print
(self):
82
print
(self.
_EMBC
)
83
print
(self.
_EMBA
)
84
85
86
def
getChannelList
(self,partitions,gains=[0]):
87
chans=
list
()
88
for
g
in
gains:
89
if
g<0
or
g>2:
90
print
(
"ERROR: Unkown gain"
,g)
91
return
None
92
93
extPart=
list
()
94
for
partition
in
partitions:
95
p=partition.upper()
96
if
(p==
"ECC"
):
97
extPart+=[
"EMECCPS"
,
"EMECC"
,
"HECC"
,
"FCALC"
]
98
elif
(p==
"ECA"
):
99
extPart+=[
"EMECAPS"
,
"EMECA"
,
"HECA"
,
"FCALA"
]
100
elif
(p==
"EC"
):
101
extPart+=[
"EMECAPS"
,
"EMECA"
,
"HECA"
,
"FCALA"
,
102
"EMECCPS"
,
"EMECC"
,
"HECC"
,
"FCALC"
]
103
elif
(p==
"EMB"
):
104
extPart+=[
"EMBA"
,
"EMBAPS"
,
"EMBC"
,
"EMBCPS"
]
105
else
:
106
extPart+=[p]
107
108
for
p
in
extPart:
109
if
p
in
self.
_partitions
:
110
for
g
in
gains:
111
for
c
in
self.
_partitions
[p]:
112
chans+=[c+(g*236)]
113
if
(self.
_withCorr
):
114
for
g
in
gains:
115
chans+=[self.
_corr
[p]+g*12]
116
else
:
117
print
(
"ERROR: Unkown partition '"
,partition,
"'"
)
118
119
return
chans
120
121
def
makeRange
(self,chans):
122
chans.sort()
123
retVal=
""
124
if
(len(chans)==0):
125
return
retVal
126
retVal=
str
(chans[0])
127
c1=chans[0]
128
series=
False
129
for
c2
in
chans[1:]:
130
if
c1 == c2:
131
print
(
"Duplicated entry"
,c2)
132
continue
133
if
c2-1 == c1
or
c2-1
in
self.
_empty
:
134
series=
True
135
else
:
136
if
series:
137
retVal+=
":"
+
str
(c1)+
","
+
str
(c2)
138
series=
False
139
else
:
140
retVal+=
","
+
str
(c2)
141
# print ("c1=",c1,"c2=",c2,"sep=",sep)
142
c1=c2
143
if
series: retVal+=
":"
+
str
(c1)
144
return
retVal
145
146
147
148
def
getChannelSelection
(self,partitions,gains):
149
return
self.
makeRange
(self.
getChannelList
(partitions,gains))
150
151
def
getChannelSelectionAllGains
(self,partitions):
152
chans=
list
()
153
for
p
in
partitions:
154
chans+=self.
getChannelList
([p],[0,1,2])
155
return
self.
makeRange
(chans)
156
157
158
def
getGain
(self,c):
159
if
c<2:
160
return
(0,
None
)
161
if
c<239:
162
return
(0,c)
163
if
c<475:
164
return
(1,c-236)
165
if
c<711:
166
return
(2,c-472)
167
if
c<1001:
168
return
(0,
None
)
169
if
c<1013:
170
return
(0,c)
171
if
c<1025:
172
return
(1,c-12)
173
if
c<1037:
174
return
(2,c-24)
175
return
(0,
None
)
176
177
178
def
channelsPerPartition
(self,chans,show=True):
179
class
counterElem:
180
def
__init__
(self,l,n):
181
self.
size
=l
182
self.
name
=n
183
self.
counts
=[0,0,0]
184
def
inc(self,g):
185
self.
counts
[g]=1+self.
counts
[g]
186
187
def
show(self):
188
print
(
"%7s: "
% self.
name
, end=
""
)
189
print
(
"HIGH:%2i/%2i"
% (self.
counts
[0],self.
size
),)
190
if
self.
counts
[0] != self.
size
:
191
print
(
"* "
,end=
""
)
192
else
:
193
print
(
" "
,end=
""
)
194
print
(
"MED:%2i/%2i"
% (self.
counts
[1],self.
size
),)
195
if
self.
counts
[1] != self.
size
:
196
print
(
"* "
,end=
""
)
197
else
:
198
print
(
" "
,end=
""
)
199
print
(
"LOW:%2i/%2i"
% (self.
counts
[2],self.
size
),)
200
if
self.
counts
[2] != self.
size
:
201
print
(
"* "
)
202
else
:
203
print
(
" "
)
204
205
partCounter=dict()
206
for
(p, chs)
in
self.
_partitions
.
iteritems
():
207
partCounter[p]=counterElem(len(chs),p)
208
209
for
c
in
chans:
210
(gain,cs)=self.
getGain
(c)
211
if
cs
is
None
:
212
print
(
"ERROR: Unkown channel"
,c)
213
else
:
214
if
(c<711):
215
p=self.
_revLookup
[cs]
216
partCounter[p].inc(gain)
217
218
return
partCounter
219
220
python.Bindings.iteritems
iteritems
Definition:
Control/AthenaPython/python/Bindings.py:823
python.LArExtendedFTGrouping.LArExtendedFTGrouping.size
size
Definition:
LArExtendedFTGrouping.py:181
python.LArExtendedFTGrouping.LArExtendedFTGrouping.makeRange
def makeRange(self, chans)
Definition:
LArExtendedFTGrouping.py:121
python.LArExtendedFTGrouping.LArExtendedFTGrouping._partitions
_partitions
Definition:
LArExtendedFTGrouping.py:40
python.LArExtendedFTGrouping.LArExtendedFTGrouping._empty
_empty
Definition:
LArExtendedFTGrouping.py:35
python.LArExtendedFTGrouping.LArExtendedFTGrouping._HECC
_HECC
Definition:
LArExtendedFTGrouping.py:25
python.LArExtendedFTGrouping.LArExtendedFTGrouping._withCorr
_withCorr
Definition:
LArExtendedFTGrouping.py:37
python.LArExtendedFTGrouping.LArExtendedFTGrouping._corr
_corr
Definition:
LArExtendedFTGrouping.py:57
python.LArExtendedFTGrouping.LArExtendedFTGrouping._FCALA
_FCALA
Definition:
LArExtendedFTGrouping.py:31
python.LArExtendedFTGrouping.LArExtendedFTGrouping.getChannelSelectionAllGains
def getChannelSelectionAllGains(self, partitions)
Definition:
LArExtendedFTGrouping.py:151
python.LArExtendedFTGrouping.LArExtendedFTGrouping.getChannelSelection
def getChannelSelection(self, partitions, gains)
Definition:
LArExtendedFTGrouping.py:148
python.LArExtendedFTGrouping.LArExtendedFTGrouping._FCALC
_FCALC
Definition:
LArExtendedFTGrouping.py:30
python.LArExtendedFTGrouping.LArExtendedFTGrouping._EMBAPS
_EMBAPS
Definition:
LArExtendedFTGrouping.py:9
python.LArExtendedFTGrouping.LArExtendedFTGrouping._EMECC
_EMECC
Definition:
LArExtendedFTGrouping.py:13
python.LArExtendedFTGrouping.LArExtendedFTGrouping._EMECA
_EMECA
Definition:
LArExtendedFTGrouping.py:14
python.LArExtendedFTGrouping.LArExtendedFTGrouping._EMBC
_EMBC
Definition:
LArExtendedFTGrouping.py:6
plotBeamSpotVxVal.range
range
Definition:
plotBeamSpotVxVal.py:194
python.LArExtendedFTGrouping.LArExtendedFTGrouping._EMBA
_EMBA
Definition:
LArExtendedFTGrouping.py:7
histSizes.list
def list(name, path='/')
Definition:
histSizes.py:38
python.LArExtendedFTGrouping.LArExtendedFTGrouping._emptyA
_emptyA
Definition:
LArExtendedFTGrouping.py:34
python.LArExtendedFTGrouping.LArExtendedFTGrouping._EMECAPS
_EMECAPS
Definition:
LArExtendedFTGrouping.py:20
print
void print(char *figname, TCanvas *c1)
Definition:
TRTCalib_StrawStatusPlots.cxx:25
python.LArExtendedFTGrouping.LArExtendedFTGrouping.Print
def Print(self)
Definition:
LArExtendedFTGrouping.py:81
python.LArExtendedFTGrouping.LArExtendedFTGrouping.setWithCorr
def setWithCorr(self, val)
Definition:
LArExtendedFTGrouping.py:78
python.LArExtendedFTGrouping.LArExtendedFTGrouping.getGain
def getGain(self, c)
Definition:
LArExtendedFTGrouping.py:158
python.LArExtendedFTGrouping.LArExtendedFTGrouping._EMECCPS
_EMECCPS
Definition:
LArExtendedFTGrouping.py:19
python.LArExtendedFTGrouping.LArExtendedFTGrouping
Definition:
LArExtendedFTGrouping.py:4
python.LArExtendedFTGrouping.LArExtendedFTGrouping.counts
counts
Definition:
LArExtendedFTGrouping.py:183
python.LArExtendedFTGrouping.LArExtendedFTGrouping._EMBCPS
_EMBCPS
Definition:
LArExtendedFTGrouping.py:8
python.LArExtendedFTGrouping.LArExtendedFTGrouping.__init__
def __init__(self)
Definition:
LArExtendedFTGrouping.py:5
python.LArExtendedFTGrouping.LArExtendedFTGrouping._HECA
_HECA
Definition:
LArExtendedFTGrouping.py:26
python.LArExtendedFTGrouping.LArExtendedFTGrouping.getChannelList
def getChannelList(self, partitions, gains=[0])
Definition:
LArExtendedFTGrouping.py:86
python.LArExtendedFTGrouping.LArExtendedFTGrouping._revLookup
_revLookup
Definition:
LArExtendedFTGrouping.py:72
str
Definition:
BTagTrackIpAccessor.cxx:11
python.LArExtendedFTGrouping.LArExtendedFTGrouping.channelsPerPartition
def channelsPerPartition(self, chans, show=True)
Definition:
LArExtendedFTGrouping.py:178
python.LArExtendedFTGrouping.LArExtendedFTGrouping._emptyC
_emptyC
Definition:
LArExtendedFTGrouping.py:33
python.LArExtendedFTGrouping.LArExtendedFTGrouping.name
name
Definition:
LArExtendedFTGrouping.py:182
Generated on Mon Sep 1 2025 21:13:50 for ATLAS Offline Software by
1.8.18