ATLAS Offline Software
Loading...
Searching...
No Matches
LArNNChannelBuilder.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2from AthenaConfiguration.ComponentFactory import CompFactory
3from AthenaConfiguration.Enums import LHCPeriod, ProductionStep
4from LArRecUtils.LArADC2MeVCondAlgConfig import LArADC2MeVCondAlgCfg
5from LArConfiguration.LArElecCalibDBConfig import LArElecCalibDBCfg
6from LArRecUtils.LArRecUtilsConfig import LArOFCCondAlgCfg
7from LArConfiguration.LArConfigFlags import RawChannelSource
8from IOVDbSvc.IOVDbSvcConfig import addFolders
9
10def 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
void print(char *figname, TCanvas *c1)
LArNNRawChannelBuilderCfg(flags, name="LArNNRawChannelBuilder", **kwargs)