11def LArOFFCRawChannelBuilderCfg(flags, name="LArOFFCRawChannelBuilder", **kwargs):
12
13 acc = LArADC2MeVCondAlgCfg(flags)
14
15
16
17 kwargs.setdefault(
18 "firstSample",
19 (
20 flags.LAr.ROD.nPreceedingSamples
21 if flags.LAr.ROD.nPreceedingSamples != 0
22 else flags.LAr.ROD.FirstSample
23 ),
24 )
25 obj = "AthenaAttributeList"
26 dspkey = "Run2DSPThresholdsKey"
27 from IOVDbSvc.IOVDbSvcConfig import addFolders
28
29 kwargs.setdefault("ShapeKey", "LArShapeSym")
30
31 if flags.Input.isMC:
32 acc.merge(LArOFCCondAlgCfg(flags))
33 kwargs.setdefault("LArRawChannelKey", "LArRawChannels")
34
35 if flags.GeoModel.Run is LHCPeriod.Run1:
36 kwargs.setdefault("useDB", False)
37 dspkey = ""
38 else:
39 fld = "/LAR/NoiseOfl/DSPThresholds"
40 sgkey = fld
41 dbString = "OFLP200"
42 dbInstance = "LAR_OFL"
43 acc.merge(
44 addFolders(flags, fld, dbInstance, className=obj, db=dbString)
45 )
46
47 if flags.LAr.ROD.ApplyRODBCIDCorr:
48
49 mlog = logging.getLogger("LArOFFCRawChannelBuilderCfg")
50 mlog.info("LAr.ROD.ApplyRODBCIDCorr is set: reading pile-up "
51 "corrected digits LArDigitContainer_PileupCorrected")
52 kwargs.setdefault("LArDigitKey", "LArDigitContainer_PileupCorrected")
53 elif flags.Common.ProductionStep is ProductionStep.PileUpPresampling:
54 kwargs.setdefault(
55 "LArDigitKey", flags.Overlay.BkgPrefix + "LArDigitContainer_MC"
56 )
57 else:
58 kwargs.setdefault("LArDigitKey", "LArDigitContainer_MC")
59
60 else:
61 acc.merge(LArElecCalibDBCfg(flags, ("OFC", "Shape", "Pedestal")))
62 if flags.Overlay.DataOverlay:
63 kwargs.setdefault("LArDigitKey", "LArDigitContainer_MC")
64 kwargs.setdefault("LArRawChannelKey", "LArRawChannels")
65 else:
66 kwargs.setdefault("LArRawChannelKey", "LArRawChannels_FromDigits")
67
68 if "COMP200" in flags.IOVDb.DatabaseInstance:
69 fld = "/LAR/Configuration/DSPThreshold/Thresholds"
70 obj = "LArDSPThresholdsComplete"
71 dspkey = "Run1DSPThresholdsKey"
72 sgkey = "LArDSPThresholds"
73 dbString = "COMP200"
74 else:
75 fld = "/LAR/Configuration/DSPThresholdFlat/Thresholds"
76 sgkey = fld
77 dbString = "CONDBR2"
78 dbInstance = "LAR_ONL"
79 acc.merge(addFolders(flags, fld, dbInstance, className=obj, db=dbString))
80
81
82 if len(dspkey) > 0:
83 kwargs.setdefault(dspkey, sgkey)
84
85 if (
86 flags.LAr.ROD.forceIter
87 or flags.LAr.RawChannelSource is RawChannelSource.Calculated
88 ):
89
90
91
92 kwargs.setdefault("minSample", 2)
93 kwargs.setdefault("maxSample", 12)
94 kwargs.setdefault("minADCforIterInSigma", 4)
95 kwargs.setdefault("minADCforIter", 15)
96 kwargs.setdefault("defaultPhase", 12)
97 nominalPeakSample = 2
99
100 larformat = getLArFormatForRun(
101 flags.Input.RunNumbers[0],
102 connstring="COOLONL_LAR/" + flags.IOVDb.DatabaseInstance,
103 )
104 if larformat is not None:
105 nominalPeakSample = larformat.firstSample()
106 else:
107 print(
"WARNING: larformat not found, use nominalPeakSample = 2")
108 nominalPeakSample = 2
109 if nominalPeakSample > 1:
110 kwargs.setdefault("DefaultShiftTimeSample", nominalPeakSample - 2)
111 else:
112 kwargs.setdefault("DefaultShiftTimeSample", 0)
113
114 acc.addEventAlgo(CompFactory.LArRawChannelBuilderIterAlg(**kwargs))
115 else:
116
117 kwargs.setdefault("BelowThreshold", flags.LAr.ROD.OFFCBelowThreshold)
118 kwargs.setdefault("BelowTillReset", flags.LAr.ROD.OFFCBelowTillReset)
119 kwargs.setdefault("NPulse", flags.LAr.ROD.OFFCNPulse)
120 kwargs.setdefault("Q3Cut", flags.LAr.ROD.OFFCQ3Cut)
121 kwargs.setdefault("Q3Offset", flags.LAr.ROD.OFFCQ3Offset)
122 kwargs.setdefault("FilterThreshold", flags.LAr.ROD.OFFCFilterThreshold)
123
124 acc.addEventAlgo(CompFactory.LArOFFCRawChannelBuilder(name, **kwargs))
125
126 return acc
127
128
void print(char *figname, TCanvas *c1)