ATLAS Offline Software
LArNNChannelBuilder.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 from AthenaConfiguration.ComponentFactory import CompFactory
3 from AthenaConfiguration.Enums import LHCPeriod, ProductionStep
4 from LArRecUtils.LArADC2MeVCondAlgConfig import LArADC2MeVCondAlgCfg
5 from LArConfiguration.LArElecCalibDBConfig import LArElecCalibDBCfg
6 from LArRecUtils.LArRecUtilsConfig import LArOFCCondAlgCfg
7 from LArConfiguration.LArConfigFlags import RawChannelSource
8 from IOVDbSvc.IOVDbSvcConfig import addFolders
9 
10 def LArNNRawChannelBuilderCfg(flags, name="LArNNRawChannelBuilder", **kwargs):
11  acc = LArADC2MeVCondAlgCfg(flags)
12 
13  acc.merge(addFolders(flags,"/LAR/IdentifierOfl/OnnxMap", "LAR_OFL", className="CondAttrListCollection", db="OFLP200", tag="LARIdentifierOflOnnxMap-RUN4-000"))
14 
15  # the NN always requires 1 sample in the past
16  kwargs.setdefault("firstSample", flags.LAr.ROD.nPreceedingSamples if flags.LAr.ROD.nPreceedingSamples!=0 else flags.LAr.ROD.FirstSample)
17  obj = "AthenaAttributeList"
18  dspkey = 'Run2DSPThresholdsKey'
19 
20  if flags.Input.isMC:
21  acc.merge(LArOFCCondAlgCfg(flags))
22  kwargs.setdefault("LArRawChannelKey", "LArRawChannels")
23 
24  if flags.GeoModel.Run is LHCPeriod.Run1: # back to flat threshold
25  kwargs.setdefault("useDB", False)
26  dspkey = ''
27  else:
28  fld="/LAR/NoiseOfl/DSPThresholds"
29  sgkey=fld
30  dbString="OFLP200"
31  dbInstance="LAR_OFL"
32  acc.merge(addFolders(flags,fld, dbInstance, className=obj, db=dbString))
33 
34  if flags.Common.ProductionStep is ProductionStep.PileUpPresampling:
35  kwargs.setdefault("LArDigitKey", flags.Overlay.BkgPrefix + "LArDigitContainer_MC")
36  else:
37  kwargs.setdefault("LArDigitKey", "LArDigitContainer_MC")
38  else:
39  acc.merge(LArElecCalibDBCfg(flags,("OFC","Shape","Pedestal")))
40  if flags.Overlay.DataOverlay:
41  kwargs.setdefault("LArDigitKey", "LArDigitContainer_MC")
42  kwargs.setdefault("LArRawChannelKey", "LArRawChannels")
43  else:
44  kwargs.setdefault("LArRawChannelKey", "LArRawChannels_FromDigits")
45 
46  if 'COMP200' in flags.IOVDb.DatabaseInstance:
47  fld='/LAR/Configuration/DSPThreshold/Thresholds'
48  obj='LArDSPThresholdsComplete'
49  dspkey = 'Run1DSPThresholdsKey'
50  sgkey='LArDSPThresholds'
51  dbString = 'COMP200'
52  else:
53  fld="/LAR/Configuration/DSPThresholdFlat/Thresholds"
54  sgkey=fld
55  dbString="CONDBR2"
56  dbInstance="LAR_ONL"
57  acc.merge(addFolders(flags,fld, dbInstance, className=obj, db=dbString))
58 
59  kwargs.setdefault(dspkey, sgkey)
60 
61  if flags.LAr.ROD.forceIter or flags.LAr.RawChannelSource is RawChannelSource.Calculated:
62  # iterative OFC procedure
63  LArRawChannelBuilderIterAlg=CompFactory.LArRawChannelBuilderIterAlg
64  kwargs.setdefault('minSample',2)
65  kwargs.setdefault('maxSample',12)
66  kwargs.setdefault('minADCforIterInSigma',4)
67  kwargs.setdefault('minADCforIter',15)
68  kwargs.setdefault('defaultPhase',12)
69  nominalPeakSample=2
70  from LArConditionsCommon.LArRunFormat import getLArFormatForRun
71  larformat=getLArFormatForRun(flags.Input.RunNumbers[0],connstring="COOLONL_LAR/"+flags.IOVDb.DatabaseInstance)
72  if larformat is not None:
73  nominalPeakSample = larformat.firstSample()
74  else:
75  print("WARNING: larformat not found, use nominalPeakSample = 2")
76  nominalPeakSample = 2
77  if (nominalPeakSample > 1) :
78  kwargs.setdefault('DefaultShiftTimeSample',nominalPeakSample-2)
79  else :
80  kwargs.setdefault('DefaultShiftTimeSample',0)
81 
82  acc.addEventAlgo(LArRawChannelBuilderIterAlg(**kwargs))
83  else:
84 
85  acc.addEventAlgo(CompFactory.LArNNRawChannelBuilder(name, **kwargs))
86 
87  return acc
python.LArElecCalibDBConfig.LArElecCalibDBCfg
def LArElecCalibDBCfg(flags, condObjs)
Definition: LArElecCalibDBConfig.py:47
python.LArRecUtilsConfig.LArOFCCondAlgCfg
def LArOFCCondAlgCfg(flags, name='LArOFCCondAlg', **kwargs)
Definition: LArRecUtilsConfig.py:33
python.LArNNChannelBuilder.LArNNRawChannelBuilderCfg
def LArNNRawChannelBuilderCfg(flags, name="LArNNRawChannelBuilder", **kwargs)
Definition: LArNNChannelBuilder.py:10
python.LArADC2MeVCondAlgConfig.LArADC2MeVCondAlgCfg
def LArADC2MeVCondAlgCfg(flags)
Definition: LArADC2MeVCondAlgConfig.py:6
LArRawChannelBuilderIterAlg
Definition: LArRawChannelBuilderIterAlg.h:29
LArRunFormat
python.IOVDbSvcConfig.addFolders
def addFolders(flags, folderStrings, detDb=None, className=None, extensible=False, tag=None, db=None, modifiers='')
Definition: IOVDbSvcConfig.py:86
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:25
python.LArRunFormat.getLArFormatForRun
def getLArFormatForRun(run, quiet=False, connstring="COOLONL_LAR/CONDBR2")
Definition: LArRunFormat.py:58