ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArConfiguration
python
LArConfigFlags.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
2
3
from
AthenaConfiguration.AthConfigFlags
import
AthConfigFlags
4
from
AthenaConfiguration.Enums
import
FlagEnum, LHCPeriod
5
from
AthenaCommon.Logging
import
logging
6
7
class
RawChannelSource
(FlagEnum):
8
Input=
"Input"
# read from the input-file, bytestream or RDO
9
Calculated=
"Calculated"
#re-computed by the offline LArRawChannelBuilder
10
Both=
"Both"
# overwrite the digits computed
11
12
13
def
createLArConfigFlags
():
14
lcf=AthConfigFlags()
15
16
lcf.addFlag(
"LAr.doAlign"
,
lambda
prevFlags : prevFlags.GeoModel.Layout==
"atlas"
)
17
lcf.addFlag(
"LAr.doHVCorr"
,
lambda
prevFlags :
not
prevFlags.Input.isMC)
18
lcf.addFlag(
"LAr.doCellEmMisCalib"
,
lambda
prevFlags : prevFlags.Input.isMC)
19
20
lcf.addFlag(
"LAr.RawChannelSource"
, _determineRawChannelSource, type=RawChannelSource)
21
22
lcf.addFlag(
"LAr.doCellNoiseMasking"
,
True
)
23
lcf.addFlag(
"LAr.doCellSporadicNoiseMasking"
,
True
)
24
lcf.addFlag(
"LAr.doBadFebMasking"
,
lambda
prevFlags :
not
prevFlags.Input.isMC)
25
lcf.addFlag(
"LAr.doDeadOTxCorr"
,
lambda
prevFlags :
not
prevFlags.Input.isMC
and
prevFlags.GeoModel.Run >= LHCPeriod.Run3)
26
27
# Include MC shape folder
28
lcf.addFlag(
"LAr.UseMCShape"
,
True
)
29
# Name of sqlite file containing Electronic Calibration values
30
lcf.addFlag(
"LAr.ElecCalibSqlite"
,
""
)
31
# Load Electronic Calibration constants
32
lcf.addFlag(
"LAr.LoadElecCalib"
,
True
)
33
# Folder name for Optimal Filtering coefficients (empty means default)
34
lcf.addFlag(
"LAr.OFCShapeFolder"
,
""
)
35
# Load conditions with this `run-number' string
36
lcf.addFlag(
"LAr.ForceIOVRunNumber"
,
""
)
37
# Include Shape folder
38
lcf.addFlag(
"LAr.UseShape"
,
True
)
39
# DataBase server string
40
lcf.addFlag(
"LAr.DBConnection"
,
""
)
41
42
# Number of collisions to optimize OFC for pileup
43
lcf.addFlag(
"LAr.ROD.NumberOfCollisions"
,0)
44
# Number of samples in LAr digitization + ROD emulation
45
lcf.addFlag(
"LAr.ROD.nSamples"
, 5)
46
# Index of first sample in LAr digitization + ROD emulation
47
lcf.addFlag(
"LAr.ROD.FirstSample"
, 0)
48
# Number of preceeding samples (necessary for phase 2 simulation)
49
lcf.addFlag(
"LAr.ROD.nPreceedingSamples"
, 0)
50
# Force using the highest gain autocorrelation function
51
# when doing OFC optimization
52
lcf.addFlag(
"LAr.ROD.UseHighestGainAutoCorr"
,
False
)
53
# Flag not to use pileup noise neither average constrain in EMB and EMEC-OW,
54
# and both pileup noise and average constrain everywhere else
55
lcf.addFlag(
"LAr.ROD.DoOFCMixedOptimization"
,
False
)
56
58
lcf.addFlag(
"LAr.ROD.UseDelta"
, 0)
59
# Force using the iterative OFC procedure
60
lcf.addFlag(
"LAr.ROD.forceIter"
,
False
)
61
# NN based energy reconstruction
62
lcf.addFlag(
"LAr.ROD.NNRawChannelBuilding"
,
False
)
63
# OFFC based energy reconstruction
64
lcf.addFlag(
"LAr.ROD.OFFCRawChannelBuilding"
,
False
)
65
66
lcf.addFlag(
"LAr.ROD.OFFCBelowThreshold"
, 3)
67
lcf.addFlag(
"LAr.ROD.OFFCBelowTillReset"
, 7)
68
lcf.addFlag(
"LAr.ROD.OFFCNPulse"
, 5)
69
lcf.addFlag(
"LAr.ROD.OFFCQ3Cut"
, 3.0)
# relative term, on Q3/A
70
lcf.addFlag(
"LAr.ROD.OFFCQ3Offset"
, 2.0)
# absolute term in ADC
71
lcf.addFlag(
"LAr.ROD.OFFCFilterThreshold"
, 2.0)
72
lcf.addFlag(
"LAr.ROD.OFFCFilterThresholdByLayer"
, {
73
"EMEC-OW/1"
: 100.0,
74
"FCAL/2"
: 25.0,
75
"EMB/1"
: 50.0,
76
"EMEC-OW/0"
: 50.0,
77
"EMB/2"
: 25.0,
78
"FCAL/3"
: 25.0,
79
"EMB/0"
: 75.0,
80
"EMEC-OW/2"
: 50.0,
81
"FCAL/1"
: 25.0,
82
"HEC/0"
: 100.0,
83
"EMEC-IW/2"
: 25.0,
84
"HEC/3"
: 75.0,
85
"EMEC-IW/1"
: 50.0,
86
"EMB/3"
: 250.0,
87
"EMEC-OW/3"
: 250.0,
88
"HEC/1"
: 50.0,
89
"HEC/2"
: 250.0,
90
})
91
lcf.addFlag(
"LAr.ROD.OFFCEnabledLayers"
, [])
92
lcf.addFlag(
"LAr.ROD.OFFCQ3CutByLayer"
, {})
93
lcf.addFlag(
"LAr.ROD.OFFCQ3OffsetByLayer"
, {})
94
lcf.addFlag(
"LAr.ROD.OFFCNPulseByLayer"
, {})
95
96
# Perform a minbias correct to the LArDigit energies before building the raw channels
97
# (SHOULD TURN OFF ConfigFlags.Calo.Cell.doPileupOffsetBCIDCorr to not double count)
98
lcf.addFlag(
"LAr.ROD.ApplyRODBCIDCorr"
,
False
)
99
100
# default LArRawSC container
101
lcf.addFlag(
"LAr.LATOME.DTInfoForL1"
,
"SC_ET_ID"
)
102
# storing SC CaloCellContainer with bcid'ed energies
103
lcf.addFlag(
"LAr.DT.storeET_ID"
,
False
)
104
lcf.addFlag(
"LAr.DT.ET_IDKey"
,
"SCell"
)
105
lcf.addFlag(
"LAr.DT.doSCMasking"
,
True
)
106
# storing SC CaloCellContainers +-1 around bcid'ed energies
107
lcf.addFlag(
"LAr.DT.storeET_additional"
,
False
)
108
lcf.addFlag(
"LAr.DT.ET_PlusKey"
,
"SCellPlus"
)
109
lcf.addFlag(
"LAr.DT.ET_MinusKey"
,
"SCellMinus"
)
110
111
113
lcf.addFlag(
"LAr.NoisyRO.CellQuality"
, 4000)
114
# Number of channels above quality cut
115
lcf.addFlag(
"LAr.NoisyRO.BadChanPerFEB"
, 30)
116
# Number of Bad FEBs per partition cut
117
lcf.addFlag(
"LAr.NoisyRO.BadFEBCut"
, 5)
118
# Number of channels to declare MNB-Loose
119
lcf.addFlag(
"LAr.NoisyRO.MNBLooseCut"
, 5)
120
# Number of channels to declare MNB-Tight
121
lcf.addFlag(
"LAr.NoisyRO.MNBTightCut"
, 17)
122
# Number of channels to declare MNB-Tight wir PS veto
123
lcf.addFlag(
"LAr.NoisyRO.MNBTight_PsVetoCut"
, [13,3])
124
# Number of noisy HVlines
125
lcf.addFlag(
"LAr.NoisyRO.BadHVCut"
, 3)
126
# Fraction of cells noisy on one HV line
127
lcf.addFlag(
"LAr.NoisyRO.BadHVlineFrac"
, 0.25)
128
129
return
lcf
130
131
132
_lArRunInfo=
None
133
134
def
_getLArRunInfo
(prevFlags):
135
log = logging.getLogger(
'LArConfigFlags.getLArRunInfo'
)
136
global
_lArRunInfo
#Cache of lar run info
137
if
_lArRunInfo
is
None
:
138
from
LArConditionsCommon.LArRunFormat
import
getLArFormatForRun
139
runnbr=prevFlags.Input.RunNumbers[0]
#If more than one run, assume config for first run is valid for all runs
140
dbStr=
"COOLONL_LAR/"
+prevFlags.IOVDb.DatabaseInstance
141
_lArRunInfo=getLArFormatForRun(run=runnbr,connstring=dbStr)
142
log.info(
"Got LArRunInfo for run %d"
,runnbr)
143
return
_lArRunInfo
144
145
146
def
_determineRawChannelSource
(prevFlags):
147
log = logging.getLogger(
'LArConfigFlags.determineRawChannelSource'
)
148
if
prevFlags.Input.isMC
or
prevFlags.Overlay.DataOverlay:
149
return
RawChannelSource.Input
150
151
lri=
_getLArRunInfo
(prevFlags)
152
#runType: 0=RawData, 1=RawDataResult, 2=Result
153
if
lri
is
None
or
lri.runType
is
None
:
154
log.warning(
"WARNING do not have LArRunInfo !"
)
155
return
RawChannelSource.Both
156
log.info(
"runType %d"
,lri.runType())
157
if
(lri.runType()==0):
158
return
RawChannelSource.Calculated
#Have only digits in bytestream
159
elif
(lri.runType()==1
or
lri.runType()==2):
160
return
RawChannelSource.Both
#Have both, digits and raw-channels in bytestream
161
else
:
162
log.warning(
"Unknown LAr run type %i"
,lri.runType())
163
return
RawChannelSource.Both
python.LArConfigFlags.RawChannelSource
Definition
LArConfigFlags.py:7
LArRunFormat
python.LArConfigFlags._getLArRunInfo
_getLArRunInfo(prevFlags)
Definition
LArConfigFlags.py:134
python.LArConfigFlags.createLArConfigFlags
createLArConfigFlags()
Definition
LArConfigFlags.py:13
python.LArConfigFlags._determineRawChannelSource
_determineRawChannelSource(prevFlags)
Definition
LArConfigFlags.py:146
Generated on
for ATLAS Offline Software by
1.17.0