ATLAS Offline Software
Loading...
Searching...
No Matches
LArRawChannelBuilderCrestConfig.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
8
9def LArRawChannelBuilderAlgCfg(flags, **kwargs):
10
11 acc = LArADC2MeVCondAlgCfg(flags)
12
13 kwargs.setdefault("name", "LArRawChannelBuilder")
14 kwargs.setdefault("firstSample", flags.LAr.ROD.FirstSample)
15 obj = "AthenaAttributeList"
16 dspkey = 'Run2DSPThresholdsKey'
17 from IOVDbSvc.IOVDbSvcConfig import addFolders
18 if flags.Input.isMC:
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 is ProductionStep.PileUpPresampling:
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.Overlay.DataOverlay:
40 kwargs.setdefault("LArDigitKey", "LArDigitContainer_MC")
41 kwargs.setdefault("LArRawChannelKey", "LArRawChannels")
42 else:
43 kwargs.setdefault("LArRawChannelKey", "LArRawChannels_FromDigits")
44 if 'COMP200' in flags.IOVDb.DatabaseInstance:
45 fld='/LAR/Configuration/DSPThreshold/Thresholds'
46 obj='LArDSPThresholdsComplete'
47 dspkey = 'Run1DSPThresholdsKey'
48 sgkey='LArDSPThresholds'
49 dbString = 'COMP200'
50 else:
51 fld="/LAR/Configuration/DSPThresholdFlat/Thresholds"
52 sgkey=fld
53 dbString="CONDBR2"
54 dbInstance="LAR_ONL"
55 acc.merge(addFolders(flags,fld, dbInstance, className=obj, db=dbString))
56
57 kwargs.setdefault(dspkey, sgkey)
58
59 if flags.LAr.ROD.forceIter or flags.LAr.RawChannelSource is RawChannelSource.Calculated:
60 # iterative OFC procedure
61 kwargs.setdefault('minSample',2)
62 kwargs.setdefault('maxSample',12)
63 kwargs.setdefault('minADCforIterInSigma',4)
64 kwargs.setdefault('minADCforIter',15)
65 kwargs.setdefault('defaultPhase',12)
66 nominalPeakSample=2
67 from LArConditionsCommon.LArRunFormat import getLArFormatForRun
68 larformat=getLArFormatForRun(flags.Input.RunNumbers[0],connstring="COOLONL_LAR/"+flags.IOVDb.DatabaseInstance)
69 if larformat is not None:
70 nominalPeakSample = larformat.firstSample()
71 else:
72 print("WARNING: larformat not found, use nominalPeakSample = 2")
73 nominalPeakSample = 2
74 if (nominalPeakSample > 1) :
75 kwargs.setdefault('DefaultShiftTimeSample',nominalPeakSample-2)
76 else :
77 kwargs.setdefault('DefaultShiftTimeSample',0)
78
79 acc.addEventAlgo(CompFactory.LArRawChannelBuilderIterAlg(**kwargs))
80 else:
81 #fixed OFC, as in DSP
82 acc.addEventAlgo(CompFactory.LArRawChannelBuilderAlg(**kwargs))
83
84 return acc
85
86
87if __name__=="__main__":
88
89 from AthenaConfiguration.AllConfigFlags import initConfigFlags
90 from AthenaCommon.Logging import log
91 from AthenaCommon.Constants import DEBUG
92 log.setLevel(DEBUG)
93
94 from AthenaConfiguration.TestDefaults import defaultTestFiles,defaultGeometryTags
95 flags = initConfigFlags()
96 flags.Input.Files = defaultTestFiles.RAW_RUN2
97 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
98 # in case of testing iterative OFC:
99 #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']
100 flags.Input.isMC = False
101 flags.Detector.GeometryTile = False
102 flags.lock()
103
104
105 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
106 from LArByteStream.LArRawDataReadingConfig import LArRawDataReadingCfg
107
108 acc=MainServicesCfg(flags)
109 acc.merge(LArRawDataReadingCfg(flags))
110 acc.merge(LArRawChannelBuilderAlgCfg(flags))
111
112 DumpLArRawChannels=CompFactory.DumpLArRawChannels
113 acc.addEventAlgo(DumpLArRawChannels(LArRawChannelContainerName="LArRawChannels_FromDigits",),sequenceName="AthAlgSeq")
114 acc.getService("IOVDbSvc").GlobalTag="CREST-RUN12-SDR-25-MC"
115 acc.getService("IOVDbSvc").Source="CREST"
116 acc.getService("IOVDbSvc").OutputLevel=DEBUG
117 acc.getService("IOVDbSvc").DBInstance=""
118 acc.getService("IOVDbSvc").crestServer="http://crest-03.cern.ch:8090"
119 acc.run(3)
void print(char *figname, TCanvas *c1)