ATLAS Offline Software
Loading...
Searching...
No Matches
LArRawChannelBuilderAlgConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2from AthenaConfiguration.ComponentFactory import CompFactory
3from AthenaConfiguration.Enums import LHCPeriod, ProductionStep, Format
4from LArRecUtils.LArADC2MeVCondAlgConfig import LArADC2MeVCondAlgCfg
5from LArConfiguration.LArElecCalibDBConfig import LArElecCalibDBCfg
6from LArRecUtils.LArRecUtilsConfig import LArOFCCondAlgCfg
7from LArConfiguration.LArConfigFlags import RawChannelSource
8
9def LArRawChannelBuilderAlgCfg(flags, **kwargs):
10
11 acc = LArADC2MeVCondAlgCfg(flags)
12
13 kwargs.setdefault("name", "LArRawChannelBuilder")
14 kwargs.setdefault("firstSample", flags.LAr.ROD.nPreceedingSamples if flags.LAr.ROD.nPreceedingSamples!=0 else flags.LAr.ROD.FirstSample)
15 obj = "AthenaAttributeList"
16 dspkey = 'Run2DSPThresholdsKey'
17 from IOVDbSvc.IOVDbSvcConfig import addFolders
18 if flags.Input.isMC and flags.Input.Format != Format.BS:
19 # need OFC configuration, which includes appropriate ElecCalibDb
20 acc.merge(LArOFCCondAlgCfg(flags))
21 kwargs.setdefault("LArRawChannelKey", "LArRawChannels")
22 kwargs.setdefault("ShapeKey", "LArShapeSym")
23 if flags.GeoModel.Run is LHCPeriod.Run1: # back to flat threshold
24 kwargs.setdefault("useDB", False)
25 dspkey = ''
26 else:
27 fld="/LAR/NoiseOfl/DSPThresholds"
28 sgkey=fld
29 dbString="OFLP200"
30 dbInstance="LAR_OFL"
31 acc.merge(addFolders(flags,fld, dbInstance, className=obj, db=dbString))
32
33 if flags.Common.ProductionStep in [ProductionStep.PileUpPresampling, ProductionStep.PileUpPretracking]:
34 kwargs.setdefault("LArDigitKey", flags.Overlay.BkgPrefix + "LArDigitContainer_MC")
35 else:
36 kwargs.setdefault("LArDigitKey", "LArDigitContainer_MC")
37 else:
38 acc.merge(LArElecCalibDBCfg(flags,("OFC","Shape","Pedestal")))
39 if flags.Common.ProductionStep is ProductionStep.MinbiasPreprocessing:
40 kwargs.setdefault("LArDigitKey", f"{flags.Overlay.BkgPrefix}LArDigitContainer_data")
41 kwargs.setdefault("LArRawChannelKey", "LArRawChannels_FromDigits")
42 elif flags.Overlay.DataOverlay:
43 kwargs.setdefault("LArDigitKey", "LArDigitContainer_MC")
44 kwargs.setdefault("LArRawChannelKey", "LArRawChannels")
45 else:
46 kwargs.setdefault("LArRawChannelKey", "LArRawChannels_FromDigits")
47 if 'COMP200' in flags.IOVDb.DatabaseInstance:
48 fld='/LAR/Configuration/DSPThreshold/Thresholds'
49 obj='LArDSPThresholdsComplete'
50 dspkey = 'Run1DSPThresholdsKey'
51 sgkey='LArDSPThresholds'
52 dbString = 'COMP200'
53 else:
54 fld="/LAR/Configuration/DSPThresholdFlat/Thresholds"
55 sgkey=fld
56 dbString="CONDBR2"
57 dbInstance="LAR_ONL"
58 acc.merge(addFolders(flags,fld, dbInstance, className=obj, db=dbString))
59
60 if len (dspkey) > 0:
61 kwargs.setdefault(dspkey, sgkey)
62
63 if flags.LAr.ROD.forceIter or flags.LAr.RawChannelSource is RawChannelSource.Calculated:
64 # iterative OFC procedure
65 kwargs.setdefault('minSample',2)
66 kwargs.setdefault('maxSample',12)
67 kwargs.setdefault('minADCforIterInSigma',4)
68 kwargs.setdefault('minADCforIter',15)
69 kwargs.setdefault('defaultPhase',12)
70 nominalPeakSample=2
71 from LArConditionsCommon.LArRunFormat import getLArFormatForRun
72 larformat=getLArFormatForRun(flags.Input.RunNumbers[0],connstring="COOLONL_LAR/"+flags.IOVDb.DatabaseInstance)
73 if larformat is not None:
74 nominalPeakSample = larformat.firstSample()
75 else:
76 print("WARNING: larformat not found, use nominalPeakSample = 2")
77 nominalPeakSample = 2
78 if (nominalPeakSample > 1) :
79 kwargs.setdefault('DefaultShiftTimeSample',nominalPeakSample-2)
80 else :
81 kwargs.setdefault('DefaultShiftTimeSample',0)
82
83 acc.addEventAlgo(CompFactory.LArRawChannelBuilderIterAlg(**kwargs))
84 else:
85 #fixed OFC, as in DSP
86 acc.addEventAlgo(CompFactory.LArRawChannelBuilderAlg(**kwargs))
87
88 return acc
89
90
91if __name__=="__main__":
92
93 from AthenaConfiguration.AllConfigFlags import initConfigFlags
94 from AthenaCommon.Logging import log
95 from AthenaCommon.Constants import DEBUG
96 log.setLevel(DEBUG)
97
98 from AthenaConfiguration.TestDefaults import defaultConditionsTags, defaultGeometryTags, defaultTestFiles
99 flags = initConfigFlags()
100 flags.Input.Files = defaultTestFiles.RAW_RUN2
101 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
102 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN2_DATA
103 # in case of testing iterative OFC:
104 #flags.Input.Files = ['/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/RecJobTransformTests/data15_1beam/data15_1beam.00260466.physics_L1Calo.merge.RAW._lb1380._SFO-ALL._0001.1']
105 flags.Input.isMC = False
106 flags.Detector.GeometryTile = False
107 flags.lock()
108
109
110 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
111 from LArByteStream.LArRawDataReadingConfig import LArRawDataReadingCfg
112
113 acc=MainServicesCfg(flags)
114 acc.merge(LArRawDataReadingCfg(flags))
115 acc.merge(LArRawChannelBuilderAlgCfg(flags))
116
117 DumpLArRawChannels=CompFactory.DumpLArRawChannels
118 acc.addEventAlgo(DumpLArRawChannels(LArRawChannelContainerName="LArRawChannels_FromDigits",),sequenceName="AthAlgSeq")
119
120 acc.run(3)
void print(char *figname, TCanvas *c1)