ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArTest
LArCalibTest
python
HECNoiseD3PDMaker.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
2
3
#
4
# D3PDMaker
5
#
6
# Author: Sven Menke
7
#
8
# this python alg creates a D3PD and fills it
9
#
10
import
AthenaPython.PyAthena
as
PyAthena
11
import
ROOT
12
from
array
import
array
13
14
class
HECNoiseD3PDMaker
(
PyAthena.Alg
):
15
def
__init__
( self, name, **kw ) :
16
PyAthena.Alg.__init__(self,name)
17
self.
name
= name
18
self.
det
=
None
19
self.
cond
=
None
20
21
22
self.
MinDigitADC
= kw.get(
'MinDigitADC'
, 20)
23
self.
MaxDeltaT
= kw.get(
'MaxDeltaT'
, 5)
24
self.
NtupleFileName
= kw.get(
'NtupleFileName'
,
'HECNoiseD3PD.root'
)
25
self.
RequireTrigger
= kw.get(
'RequireTrigger'
,
False
)
26
self.
TriggerLines
= kw.get(
'TriggerLines'
, [
'HLT_noalg_L1EM20A'
,
27
'HLT_noalg_L1EM20C'
,
28
'L1_J12'
,
29
'L1_J30'
,
30
'L1_TAU5'
,
31
'L1_TAU8'
,
32
'L1_J5_EMPTY'
,
33
'L1_J10_EMPTY'
,
34
'L1_J12_EMPTY'
,
35
'L1_J30_EMPTY'
,
36
'L1_TAU5_EMPTY'
,
37
'L1_TAU8_EMPTY'
,
38
'L1_J5_FIRSTEMPTY'
,
39
'L1_J10_FIRSTEMPTY'
,
40
'L1_J12_FIRSTEMPTY'
,
41
'L1_J30_FIRSTEMPTY'
,
42
'L1_TAU5_FIRSTEMPTY'
,
43
'L1_TAU8_FIRSTEMPTY'
])
44
45
def
initialize
(self):
46
print
(
"==> initializing "
, self.
name
)
47
print
(
"MinDigitADC: "
, self.
MinDigitADC
)
48
print
(
"MaxDeltaT: "
, self.
MaxDeltaT
)
49
print
(
"NtupleFileName: "
, self.
NtupleFileName
)
50
print
(
"RequireTrigger: "
, self.
RequireTrigger
)
51
print
(
"TriggerLines: "
, self.
TriggerLines
)
52
#
53
self.
sg
= PyAthena.py_svc(
"StoreGateSvc"
)
54
self.
cond
= PyAthena.py_svc(
'StoreGateSvc/ConditionStore'
)
55
self.
det
= PyAthena.py_svc(
"StoreGateSve/DetectorStore"
)
56
self.
LArOID
= self.
det
.retrieve(
"LArOnlineID"
,
"LArOnlineID"
)
57
self.
cid
= self.
det
.retrieve(
"CaloCell_ID"
,
"CaloCell_ID"
)
58
self.
tdt
= PyAthena.py_tool(
'Trig::TrigDecisionTool/TrigDecisionTool'
)
59
self.
ntfile
= ROOT.TFile(self.
NtupleFileName
,
"RECREATE"
)
60
self.
hectree
= ROOT.TTree(
"HECNoise"
,
"HECNoise"
)
61
self.
iRun
=
array
(
'i'
,[0])
62
self.
iEvent
=
array
(
'L'
,[0])
63
self.
iEventCount
=
array
(
'i'
,[0])
64
self.
fPrescale
= {}
65
self.
iTrigger
= {}
66
for
tl
in
self.
TriggerLines
:
67
self.
fPrescale
[tl] =
array
(
'f'
,[0.0])
68
self.
iTrigger
[tl] =
array
(
'i'
,[0])
69
pass
70
self.
iTime
=
array
(
'i'
,[0])
71
self.
iLB
=
array
(
'i'
,[0])
72
self.
iBCID
=
array
(
'i'
,[0])
73
self.
avgMu
=
array
(
'f'
,[0.0])
74
self.
actMu
=
array
(
'f'
,[0.0])
75
self.
iGain
=
array
(
'i'
,[0])
76
self.
iOID
=
array
(
'L'
,[0])
77
self.
iSide
=
array
(
'i'
,[0])
78
self.
iSamp
=
array
(
'i'
,[0])
79
self.
iReg
=
array
(
'i'
,[0])
80
self.
iEta
=
array
(
'i'
,[0])
81
self.
iPhi
=
array
(
'i'
,[0])
82
self.
iQuality
=
array
(
'i'
,[0])
83
self.
e
=
array
(
'f'
,[0.0])
84
self.
t
=
array
(
'f'
,[0.0])
85
self.
eta
=
array
(
'f'
,[0.0])
86
self.
phi
=
array
(
'f'
,[0.0])
87
self.
z
=
array
(
'f'
,[0.0])
88
self.
r
=
array
(
'f'
,[0.0])
89
self.
Ped
=
array
(
'f'
,[0.0])
90
self.
PedRMS
=
array
(
'f'
,[0.0])
91
self.
iDigi
=
array
(
'i'
,32*[0])
92
self.
iMax
=
array
(
'i'
,[0])
93
self.
iMin
=
array
(
'i'
,[0])
94
#
95
self.
hectree
.Branch(
"iRun"
,self.
iRun
,
"iRun/I"
)
96
self.
hectree
.Branch(
"iEvent"
,self.
iEvent
,
"iEvent/I"
)
97
self.
hectree
.Branch(
"iEventCount"
,self.
iEventCount
,
"iEventCount/I"
)
98
99
for
tl
in
self.
TriggerLines
:
100
self.
hectree
.Branch(tl+
"_Prescale"
,self.
fPrescale
[tl],tl+
"_Prescale/F"
)
101
self.
hectree
.Branch(tl+
"_Trigger"
,self.
iTrigger
[tl],tl+
"_Trigger/I"
)
102
pass
103
self.
hectree
.Branch(
"iTime"
,self.
iTime
,
"iTime/I"
)
104
self.
hectree
.Branch(
"iLB"
,self.
iLB
,
"iLB/I"
)
105
self.
hectree
.Branch(
"iBCID"
,self.
iBCID
,
"iBCID/I"
)
106
self.
hectree
.Branch(
"avgMu"
,self.
avgMu
,
"avgMu/F"
)
107
self.
hectree
.Branch(
"actMu"
,self.
actMu
,
"actMu/F"
)
108
self.
hectree
.Branch(
"iGain"
,self.
iGain
,
"iGain/I"
)
109
self.
hectree
.Branch(
"iOID"
,self.
iOID
,
"iOID/l"
)
110
self.
hectree
.Branch(
"iSide"
,self.
iSide
,
"iSide/I"
)
111
self.
hectree
.Branch(
"iSamp"
,self.
iSamp
,
"iSamp/I"
)
112
self.
hectree
.Branch(
"iReg"
,self.
iReg
,
"iReg/I"
)
113
self.
hectree
.Branch(
"iEta"
,self.
iEta
,
"iEta/I"
)
114
self.
hectree
.Branch(
"iPhi"
,self.
iPhi
,
"iPhi/I"
)
115
self.
hectree
.Branch(
"iQuality"
,self.
iQuality
,
"iQuality/I"
)
116
self.
hectree
.Branch(
"e"
,self.
e
,
"e/F"
)
117
self.
hectree
.Branch(
"t"
,self.
t
,
"t/F"
)
118
self.
hectree
.Branch(
"eta"
,self.
eta
,
"eta/F"
)
119
self.
hectree
.Branch(
"phi"
,self.
phi
,
"phi/F"
)
120
self.
hectree
.Branch(
"z"
,self.
z
,
"z/F"
)
121
self.
hectree
.Branch(
"r"
,self.
r
,
"r/F"
)
122
self.
hectree
.Branch(
"Ped"
,self.
Ped
,
"Ped/F"
)
123
self.
hectree
.Branch(
"PedRMS"
,self.
PedRMS
,
"PedRMS/F"
)
124
self.
hectree
.Branch(
"iDigi"
,self.
iDigi
,
"iDigi[32]/I"
)
125
self.
hectree
.Branch(
"iMax"
,self.
iMax
,
"iMax/I"
)
126
self.
hectree
.Branch(
"iMin"
,self.
iMin
,
"iMin/I"
)
127
#
128
return
True
129
130
def
execute
(self):
131
eid=ROOT.Gaudi.Hive.currentContext().eventID()
132
lcsCont = self.
cond
.retrieve(
"CondCont<LArOnOffIdMapping>"
,
"LArOnOffIdMap"
)
133
lcs=lcsCont.find(eid)
134
pedCont = self.
cond
.retrieve(
"CondCont<ILArPedestal>"
,
"LArPedestal"
)
135
ped=pedCont.find(eid)
136
cddCont = self.
cond
.retrieve(
"CondCont<CaloDetDescrManager>"
,
"CaloDetDescrManager"
)
137
cdd=cddCont.find(eid)
138
# filter low gain cells
139
passedTrigger =
False
140
foundLowCell =
False
141
for
tl
in
self.
TriggerLines
:
142
self.
fPrescale
[tl][0] = self.
tdt
.getPrescale(tl)
143
if
self.
tdt
.isPassed(tl):
144
passedTrigger =
True
145
self.
iTrigger
[tl][0] = 1
146
pass
147
else
:
148
self.
iTrigger
[tl][0] = 0
149
pass
150
pass
151
if
passedTrigger
or
not
self.
RequireTrigger
:
# take only triggered events or all if RequireTrigger is False (default)
152
self.
iEventCount
[0] = 0
153
ldc = self.
sg
.retrieve(
"LArDigitContainer"
,
"LArDigitContainer_Thinned"
)
154
for
ld
in
ldc:
155
hid = ld.hardwareID()
156
if
self.
LArOID
.isHECchannel(hid):
# and ld.gain() == 2:
157
sigmax=0
158
sigmin=0
159
imax=0
160
imin=0
161
isamp=0
162
samp0= ld.samples()[0]
163
for
samp
in
ld.samples():
164
if
isamp < 32:
165
self.
iDigi
[isamp] = samp
166
pass
167
if
samp-samp0 > sigmax:
168
sigmax = samp-samp0
169
imax=isamp
170
pass
171
if
samp-samp0 < sigmin:
172
sigmin = samp-samp0
173
imin=isamp
174
pass
175
isamp = isamp+1
176
pass
177
if
sigmax > self.
MinDigitADC
and
sigmin < -self.
MinDigitADC
and
( (imin-imax) < self.
MaxDeltaT
or
imin < imax):
178
foundLowCell =
True
179
ei = self.
sg
.retrieve(
"xAOD::EventInfo"
,
"EventInfo"
)
180
cc = self.
sg
.retrieve(
"CaloCellContainer"
,
"AllCalo"
)
181
self.
iRun
[0] = ei.runNumber()
182
self.
iEvent
[0] = ei.eventNumber()
183
self.
iEventCount
[0] = self.
iEventCount
[0]+1
184
self.
iTime
[0] = ei.timeStamp()
185
self.
iLB
[0] = ei.lumiBlock()
186
self.
iBCID
[0] = ei.bcid()
187
self.
avgMu
[0] = ei.averageInteractionsPerCrossing()
188
self.
actMu
[0] = ei.actualInteractionsPerCrossing()
189
self.
iGain
[0] = ld.gain()
190
oid = lcs.cnvToIdentifier(hid)
191
self.
iOID
[0] = ld.channelID().get_compact()
192
self.
Ped
[0] = ped.pedestal(ld.channelID(),ld.gain())
193
self.
PedRMS
[0] = ped.pedestalRMS(ld.channelID(),ld.gain())
194
self.
iSide
[0] = self.
cid
.pos_neg(oid)
195
self.
iSamp
[0] = self.
cid
.sampling(oid)
196
self.
iReg
[0] = self.
cid
.region(oid)
197
self.
iEta
[0] = self.
cid
.
eta
(oid)
198
self.
iPhi
[0] = self.
cid
.
phi
(oid)
199
self.
iMax
[0] = imax
200
self.
iMin
[0] = imin
201
ihash = self.
cid
.calo_cell_hash(oid)
202
rcell = cc.findCell(ihash)
203
self.
e
[0] = 0.0
204
self.
t
[0] = 0.0
205
self.
iQuality
[0] = 0
206
if
rcell.ID() != oid:
207
print
(
"Cell iHash does not match ..."
)
208
pass
209
else
:
210
self.
e
[0] = rcell.e()
211
self.
t
[0] = rcell.time()
212
self.
iQuality
[0] = rcell.quality()
213
pass
214
cdde = cdd.get_element(oid)
215
self.
eta
[0] = cdde.eta()
216
self.
phi
[0] = cdde.phi()
217
self.
z
[0] = cdde.z()
218
self.
r
[0] = cdde.r()
219
self.
hectree
.Fill()
220
self.
setFilterPassed
(
True
)
221
pass
222
pass
223
pass
224
if
foundLowCell:
225
print
(
'Event passed HECNoise Filter'
)
226
return
True
227
pass
228
print
(
'Event failed HECNoise Filter'
)
229
self.
setFilterPassed
(
False
)
230
return
True
231
232
def
finalize
(self):
233
self.
ntfile
.Write()
234
self.
ntfile
.Close()
235
return
True
236
AthCommonAlgorithm< Gaudi::Algorithm >::setFilterPassed
virtual void setFilterPassed(bool state, const EventContext &ctx) const
Definition
AthCommonAlgorithm.h:99
HECNoiseD3PDMaker.HECNoiseD3PDMaker
Definition
HECNoiseD3PDMaker.py:14
HECNoiseD3PDMaker.HECNoiseD3PDMaker.e
e
Definition
HECNoiseD3PDMaker.py:83
HECNoiseD3PDMaker.HECNoiseD3PDMaker.avgMu
avgMu
Definition
HECNoiseD3PDMaker.py:73
HECNoiseD3PDMaker.HECNoiseD3PDMaker.iPhi
iPhi
Definition
HECNoiseD3PDMaker.py:81
HECNoiseD3PDMaker.HECNoiseD3PDMaker.phi
phi
Definition
HECNoiseD3PDMaker.py:86
HECNoiseD3PDMaker.HECNoiseD3PDMaker.r
r
Definition
HECNoiseD3PDMaker.py:88
HECNoiseD3PDMaker.HECNoiseD3PDMaker.Ped
Ped
Definition
HECNoiseD3PDMaker.py:89
HECNoiseD3PDMaker.HECNoiseD3PDMaker.iRun
iRun
Definition
HECNoiseD3PDMaker.py:61
HECNoiseD3PDMaker.HECNoiseD3PDMaker.execute
execute(self)
Definition
HECNoiseD3PDMaker.py:130
HECNoiseD3PDMaker.HECNoiseD3PDMaker.name
name
Definition
HECNoiseD3PDMaker.py:17
HECNoiseD3PDMaker.HECNoiseD3PDMaker.TriggerLines
TriggerLines
Definition
HECNoiseD3PDMaker.py:26
HECNoiseD3PDMaker.HECNoiseD3PDMaker.PedRMS
PedRMS
Definition
HECNoiseD3PDMaker.py:90
HECNoiseD3PDMaker.HECNoiseD3PDMaker.det
det
Definition
HECNoiseD3PDMaker.py:18
HECNoiseD3PDMaker.HECNoiseD3PDMaker.LArOID
LArOID
Definition
HECNoiseD3PDMaker.py:56
HECNoiseD3PDMaker.HECNoiseD3PDMaker.iQuality
iQuality
Definition
HECNoiseD3PDMaker.py:82
HECNoiseD3PDMaker.HECNoiseD3PDMaker.iTrigger
dict iTrigger
Definition
HECNoiseD3PDMaker.py:65
HECNoiseD3PDMaker.HECNoiseD3PDMaker.iSide
iSide
Definition
HECNoiseD3PDMaker.py:77
HECNoiseD3PDMaker.HECNoiseD3PDMaker.iEventCount
iEventCount
Definition
HECNoiseD3PDMaker.py:63
HECNoiseD3PDMaker.HECNoiseD3PDMaker.iBCID
iBCID
Definition
HECNoiseD3PDMaker.py:72
HECNoiseD3PDMaker.HECNoiseD3PDMaker.iEta
iEta
Definition
HECNoiseD3PDMaker.py:80
HECNoiseD3PDMaker.HECNoiseD3PDMaker.NtupleFileName
NtupleFileName
Definition
HECNoiseD3PDMaker.py:24
HECNoiseD3PDMaker.HECNoiseD3PDMaker.actMu
actMu
Definition
HECNoiseD3PDMaker.py:74
HECNoiseD3PDMaker.HECNoiseD3PDMaker.MinDigitADC
MinDigitADC
cell cuts
Definition
HECNoiseD3PDMaker.py:22
HECNoiseD3PDMaker.HECNoiseD3PDMaker.RequireTrigger
# take only triggered events or all if RequireTrigger is False(default) RequireTrigger
Definition
HECNoiseD3PDMaker.py:25
HECNoiseD3PDMaker.HECNoiseD3PDMaker.__init__
__init__(self, name, **kw)
Definition
HECNoiseD3PDMaker.py:15
HECNoiseD3PDMaker.HECNoiseD3PDMaker.iLB
iLB
Definition
HECNoiseD3PDMaker.py:71
HECNoiseD3PDMaker.HECNoiseD3PDMaker.eta
eta
Definition
HECNoiseD3PDMaker.py:85
HECNoiseD3PDMaker.HECNoiseD3PDMaker.iEvent
iEvent
Definition
HECNoiseD3PDMaker.py:62
HECNoiseD3PDMaker.HECNoiseD3PDMaker.iReg
iReg
Definition
HECNoiseD3PDMaker.py:79
HECNoiseD3PDMaker.HECNoiseD3PDMaker.iTime
iTime
Definition
HECNoiseD3PDMaker.py:70
HECNoiseD3PDMaker.HECNoiseD3PDMaker.z
z
Definition
HECNoiseD3PDMaker.py:87
HECNoiseD3PDMaker.HECNoiseD3PDMaker.cid
cid
Definition
HECNoiseD3PDMaker.py:57
HECNoiseD3PDMaker.HECNoiseD3PDMaker.iMax
iMax
Definition
HECNoiseD3PDMaker.py:92
HECNoiseD3PDMaker.HECNoiseD3PDMaker.cond
cond
Definition
HECNoiseD3PDMaker.py:19
HECNoiseD3PDMaker.HECNoiseD3PDMaker.iMin
iMin
Definition
HECNoiseD3PDMaker.py:93
HECNoiseD3PDMaker.HECNoiseD3PDMaker.fPrescale
dict fPrescale
Definition
HECNoiseD3PDMaker.py:64
HECNoiseD3PDMaker.HECNoiseD3PDMaker.iGain
iGain
Definition
HECNoiseD3PDMaker.py:75
HECNoiseD3PDMaker.HECNoiseD3PDMaker.iOID
iOID
Definition
HECNoiseD3PDMaker.py:76
HECNoiseD3PDMaker.HECNoiseD3PDMaker.hectree
hectree
Definition
HECNoiseD3PDMaker.py:60
HECNoiseD3PDMaker.HECNoiseD3PDMaker.tdt
tdt
Definition
HECNoiseD3PDMaker.py:58
HECNoiseD3PDMaker.HECNoiseD3PDMaker.t
t
Definition
HECNoiseD3PDMaker.py:84
HECNoiseD3PDMaker.HECNoiseD3PDMaker.iDigi
iDigi
Definition
HECNoiseD3PDMaker.py:91
HECNoiseD3PDMaker.HECNoiseD3PDMaker.iSamp
iSamp
Definition
HECNoiseD3PDMaker.py:78
HECNoiseD3PDMaker.HECNoiseD3PDMaker.MaxDeltaT
MaxDeltaT
Definition
HECNoiseD3PDMaker.py:23
HECNoiseD3PDMaker.HECNoiseD3PDMaker.ntfile
ntfile
Definition
HECNoiseD3PDMaker.py:59
HECNoiseD3PDMaker.HECNoiseD3PDMaker.sg
sg
Definition
HECNoiseD3PDMaker.py:53
PyAthena::Alg
Definition
PyAthenaAlg.h:33
PyAthena::Alg::finalize
virtual StatusCode finalize() override
Definition
PyAthenaAlg.cxx:86
PyAthena::Alg::initialize
virtual StatusCode initialize() override
Definition
PyAthenaAlg.cxx:60
array
STL class.
Generated on
for ATLAS Offline Software by
1.17.0