10 from LArCalibProcessing.LArCalibBaseConfig
import LArCalibBaseCfg,chanSelStr
11 result=LArCalibBaseCfg(flags)
14 from ByteStreamCnvSvc.ByteStreamConfig
import ByteStreamReadCfg
15 result.merge(ByteStreamReadCfg(flags))
19 gainStrMap={0:
"HIGH",1:
"MEDIUM",2:
"LOW"}
20 digKey=gainStrMap[flags.LArCalib.Gain]
22 from LArCalibProcessing.utils
import FolderTagResolver
23 FolderTagResolver._globalTag=flags.IOVDb.GlobalTag
24 tagResolver=FolderTagResolver(dbname=flags.LArCalib.Input.CoolOflP1Replica)
25 caliWaveTag=tagResolver.getFolderTag(flags.LArCalib.CaliWave.Folder)
26 caliOFCTag=tagResolver.getFolderTag(flags.LArCalib.OFCCali.Folder)
27 if (flags.LArCalib.Input.Database ==
"LAR_OFL" and flags.LArCalib.Input.Database2 ==
"LAR_OFL"):
28 pedestalTag=tagResolver.getFolderTag(flags.LArCalib.Pedestal.Folder)
29 acTag=tagResolver.getFolderTag(flags.LArCalib.AutoCorr.Folder)
35 from IOVDbSvc.IOVDbSvcConfig
import addFolders
36 result.merge(addFolders(flags,flags.LArCalib.Pedestal.Folder,detDb=flags.LArCalib.Input.Database, tag=pedestalTag, modifiers=chanSelStr(flags),
37 className=
"LArPedestalComplete"))
38 result.merge(addFolders(flags,flags.LArCalib.AutoCorr.Folder,detDb=flags.LArCalib.Input.Database, tag=acTag,modifiers=chanSelStr(flags)))
40 if not flags.LArCalib.isSC:
41 if flags.LArCalib.Input.isRawData:
42 result.addEventAlgo(CompFactory.LArRawDataReadingAlg(LArRawChannelKey=
"", LArDigitKey=digKey, LArFebHeaderKey=
"LArFebHeader",
43 SubCaloPreselection=flags.LArCalib.Input.SubDet,
44 PosNegPreselection=flags.LArCalib.Preselection.Side,
45 BEPreselection=flags.LArCalib.Preselection.BEC,
46 FTNumPreselection=flags.LArCalib.Preselection.FT))
47 from LArCalibProcessing.LArCalib_CalibDigitsMakerConfig
import LArCalibDigitsMakerCfg
48 result.merge(LArCalibDigitsMakerCfg(flags,digKey))
50 result.addEventAlgo(CompFactory.LArRawCalibDataReadingAlg(LArAccCalibDigitKey=digKey,
51 LArFebHeaderKey=
"LArFebHeader",
52 SubCaloPreselection=flags.LArCalib.Input.SubDet,
53 PosNegPreselection=flags.LArCalib.Preselection.Side,
54 BEPreselection=flags.LArCalib.Preselection.BEC,
55 FTNumPreselection=flags.LArCalib.Preselection.FT))
57 from LArROD.LArFebErrorSummaryMakerConfig
import LArFebErrorSummaryMakerCfg
58 result.merge(LArFebErrorSummaryMakerCfg(flags))
59 result.getEventAlgo(
"LArFebErrorSummaryMaker").CheckAllFEB=
False
61 if flags.LArCalib.Input.SubDet ==
"EM":
62 theLArCalibShortCorrector = CompFactory.LArCalibShortCorrector(KeyList = [digKey,])
63 result.addEventAlgo(theLArCalibShortCorrector)
65 from LArCalibProcessing.LArStripsXtalkCorrConfig
import LArStripsXtalkCorrCfg
66 result.merge(LArStripsXtalkCorrCfg(flags,[digKey,]))
69 theLArLATOMEDecoder = CompFactory.LArLATOMEDecoder(
"LArLATOMEDecoder")
70 if flags.LArCalib.Input.isRawData:
71 result.addEventAlgo(CompFactory.LArRawSCDataReadingAlg(adcCollKey = digKey, adcBasCollKey =
"", etCollKey =
"",
72 etIdCollKey =
"", LATOMEDecoder = theLArLATOMEDecoder))
73 from LArCalibProcessing.LArCalib_CalibDigitsMakerConfig
import LArCalibDigitsMakerCfg
74 result.merge(LArCalibDigitsMakerCfg(flags,digKey))
78 from LArCabling.LArCablingConfig
import LArCalibIdMappingCfg,LArOnOffIdMappingCfg
79 result.merge(LArOnOffIdMappingCfg(flags))
80 result.merge(LArCalibIdMappingCfg(flags))
81 result.addEventAlgo(CompFactory.LArRawSCCalibDataReadingAlg(LArSCAccCalibDigitKey = digKey,
82 CalibCablingKeyLeg=
"LArCalibLineMap",
83 OnOffMapLeg=
"LArOnOffIdMap",
84 LATOMEDecoder = theLArLATOMEDecoder, ))
86 bcKey =
"LArBadChannelSC" if flags.LArCalib.isSC
else "LArBadChannel"
88 theLArCaliWaveBuilder = CompFactory.LArCaliWaveBuilder()
89 theLArCaliWaveBuilder.KeyList= [digKey,]
90 theLArCaliWaveBuilder.KeyOutput=
"LArCaliWave"
91 theLArCaliWaveBuilder.GroupingType = flags.LArCalib.GroupingType
92 theLArCaliWaveBuilder.SubtractPed =
True
93 theLArCaliWaveBuilder.NSteps = flags.LArCalib.CaliWave.Nsteps
94 theLArCaliWaveBuilder.CheckEmptyPhases =
not flags.LArCalib.isSC
95 theLArCaliWaveBuilder.NBaseline = 0
96 theLArCaliWaveBuilder.UseDacAndIsPulsedIndex =
False
97 theLArCaliWaveBuilder.RecAllCells =
False
98 theLArCaliWaveBuilder.CheckEmptyPhases =
False
99 theLArCaliWaveBuilder.isSC = flags.LArCalib.isSC
100 result.addEventAlgo(theLArCaliWaveBuilder)
103 if flags.LArCalib.Input.SubDet ==
"HEC" or flags.LArCalib.Input.SubDet ==
"HECFCAL":
104 theLArCaliWaveBuilder.KeyOutput=
"LArCaliWave_multi"
105 theLArCaliWaveSelector = CompFactory.LArCaliWaveSelector(
"LArCaliWaveSelector")
106 theLArCaliWaveSelector.KeyList = [
"LArCaliWave_multi",]
107 theLArCaliWaveSelector.KeyOutput =
"LArCaliWave"
108 theLArCaliWaveSelector.GroupingType = flags.LArCalib.GroupingType
109 if flags.LArCalib.Gain==0:
110 theLArCaliWaveSelector.SelectionList = [
"HEC/0/0/460",
"HEC/1/0/460",
"HEC/2/0/230",
"HEC/3/0/230" ]
111 theLArCaliWaveSelector.SelectionList += [
"FCAL/0/0/500",
"FCAL/1/0/500",
"FCAL/2/0/500",
"FCAL/3/0/500" ]
113 elif flags.LArCalib.Gain==1:
114 theLArCaliWaveSelector.SelectionList = [
"HEC/0/1/3600",
"HEC/1/1/3600",
"HEC/2/1/1800",
"HEC/3/1/1800"]
115 theLArCaliWaveSelector.SelectionList += [
"FCAL/0/1/5000",
"FCAL/1/1/5000",
"FCAL/2/1/5000",
"FCAL/3/1/5000" ]
117 elif flags.LArCalib.Gain==2:
118 theLArCaliWaveSelector.SelectionList = [
"HEC/0/2/24000",
"HEC/1/2/24000",
"HEC/2/2/18000",
"HEC/3/2/18000" ]
119 theLArCaliWaveSelector.SelectionList += [
"FCAL/0/2/40000",
"FCAL/1/2/40000",
"FCAL/2/2/40000",
"FCAL/3/2/40000" ]
121 result.addEventAlgo(theLArCaliWaveSelector)
124 if flags.LArCalib.CorrectBadChannels:
125 theLArCaliWavePatcher=CompFactory.getComp(
"LArCalibPatchingAlg<LArCaliWaveContainer>")(
"LArCaliWavePatch")
126 theLArCaliWavePatcher.ContainerKey =
"LArCaliWave"
127 theLArCaliWavePatcher.BadChanKey = bcKey
128 theLArCaliWavePatcher.SuperCells = flags.LArCalib.isSC
130 theLArCaliWavePatcher.PatchMethod =
"PhiAverage"
131 if flags.LArCalib.isSC:
132 theLArCaliWavePatcher.ProblemsToPatch = [
133 "deadCalib",
"deadReadout",
"deadPhys",
"maskedOSUM",
"OffOFCs",
"transmissionErrorFibre",]
134 theLArCaliWavePatcher.OnOffMap=
"LArOnOffIdMapSC"
135 theLArCaliWavePatcher.CalibLineKey=
"LArCalibIdMapSC"
137 theLArCaliWavePatcher.ProblemsToPatch = [
138 "deadCalib",
"deadReadout",
"deadPhys",
"almostDead",
"short", ]
140 result.addEventAlgo(theLArCaliWavePatcher)
143 if flags.LArCalib.doValidation:
145 result.merge(addFolders(flags,flags.LArCalib.CaliWave.Folder+
"<key>LArCaliWaveRef</key>",
"LAR_OFL"))
147 from LArCalibDataQuality.Thresholds
import cwAmpThr,cwFWHMThr,cwAmpThrFEB,cwFWHMThrFEB
150 theCaliWaveValidationAlg=CompFactory.LArCaliWaveValidationAlg(
"CaliWaveVal")
151 if flags.LArCalib.isSC:
152 theCaliWaveValidationAlg.ProblemsToMask=[
"deadCalib",
"deadReadout",
"deadPhys",
"maskedOSUM",
153 "OffOFCs",
"transmissionErrorFibre",]
155 theCaliWaveValidationAlg.ProblemsToMask=[
"deadReadout",
"deadCalib",
"deadPhys",
"almostDead",
156 "highNoiseHG",
"highNoiseMG",
"highNoiseLG"]
157 theCaliWaveValidationAlg.ValidationKey=
"LArCaliWave"
158 theCaliWaveValidationAlg.ReferenceKey=
"LArCaliWaveRef"
159 theCaliWaveValidationAlg.MsgLevelForDeviations=WARNING
160 theCaliWaveValidationAlg.ListOfDevFEBs=
"caliWaveFebs.txt"
161 theCaliWaveValidationAlg.AmplitudeTolerance=cwAmpThr
162 theCaliWaveValidationAlg.CaliWaveFWHMTolerance=cwFWHMThr
163 theCaliWaveValidationAlg.AmplitudeToleranceFEB=cwAmpThrFEB
164 theCaliWaveValidationAlg.CaliWaveFWHMToleranceFEB=cwFWHMThrFEB
165 theCaliWaveValidationAlg.TimeShiftDetection=
True
166 theCaliWaveValidationAlg.PatchMissingFEBs=
True
167 theCaliWaveValidationAlg.UseCorrChannels=
False
168 theCaliWaveValidationAlg.BadChanKey = bcKey
169 theCaliWaveValidationAlg.SuperCells = flags.LArCalib.isSC
171 if flags.LArCalib.isSC:
172 theCaliWaveValidationAlg.CablingKey =
"LArOnOffIdMapSC"
173 theCaliWaveValidationAlg.CalibLineKey =
"LArCalibIdMapSC"
175 result.addEventAlgo(theCaliWaveValidationAlg)
178 if flags.LArCalib.doOFCCali:
180 LArCaliOFCAlg = CompFactory.LArOFCAlg(
"LArCaliOFCAlg")
181 LArCaliOFCAlg.ReadCaliWave =
True
182 LArCaliOFCAlg.KeyList = [
"LArCaliWave" ]
183 LArCaliOFCAlg.Nphase = 50
184 LArCaliOFCAlg.Dphase = 1
185 LArCaliOFCAlg.Ndelay = 24
186 LArCaliOFCAlg.Nsample = 5
187 LArCaliOFCAlg.Normalize =
True
188 LArCaliOFCAlg.TimeShift =
False
189 LArCaliOFCAlg.TimeShiftByIndex = -1
190 LArCaliOFCAlg.Verify =
True
191 LArCaliOFCAlg.FillShape =
False
193 LArCaliOFCAlg.GroupingType = flags.LArCalib.GroupingType
194 LArCaliOFCAlg.isSC = flags.LArCalib.isSC
195 LArCaliOFCAlg.DecoderTool=CompFactory.LArAutoCorrDecoderTool(isSC=flags.LArCalib.isSC)
196 result.addEventAlgo(LArCaliOFCAlg)
200 rootfile=flags.LArCalib.Output.ROOTFile
201 rootfile2=flags.LArCalib.Output.ROOTFile2
203 result.addEventAlgo(CompFactory.LArCaliWaves2Ntuple(KeyList = [
"LArCaliWave",],
204 NtupleName =
"CALIWAVE",
205 AddFEBTempInfo =
False,
207 SaveDerivedInfo =
True,
208 ApplyCorrection =
True,
209 isSC = flags.LArCalib.isSC,
213 SaveJitter=
True if flags.LArCalib.CaliWave.Nsteps >= 24
else False
217 if os.path.exists(rootfile):
219 result.addService(CompFactory.NTupleSvc(Output = [
"FILE1 DATAFILE='"+rootfile+
"' OPT='NEW'" ]))
220 result.setAppProperty(
"HistogramPersistency",
"ROOT")
223 if rootfile2 !=
"" and flags.LArCalib.doOFCCali:
224 result.addEventAlgo(CompFactory.LArOFC2Ntuple(ContainerKey =
"LArOFC",
225 AddFEBTempInfo =
False,
226 NtupleFile =
"FILE2",
228 isSC = flags.LArCalib.isSC,
233 if os.path.exists(rootfile2):
236 result.addService(CompFactory.NTupleSvc(Output = [
"FILE2 DATAFILE='"+rootfile2+
"' OPT='NEW'" ]))
238 result.getService(
"NTupleSvc").Output += [
"FILE2 DATAFILE='"+rootfile2+
"' OPT='NEW'" ]
239 result.setAppProperty(
"HistogramPersistency",
"ROOT")
243 from RegistrationServices.OutputConditionsAlgConfig
import OutputConditionsAlgCfg
244 result.merge(OutputConditionsAlgCfg(flags,
245 outputFile=flags.LArCalib.Output.POOLFile,
246 ObjectList=[
"LArCaliWaveContainer#LArCaliWave#"+flags.LArCalib.CaliWave.Folder,],
247 IOVTagList=[caliWaveTag,],
248 Run1=flags.LArCalib.IOVStart,
249 Run2=flags.LArCalib.IOVEnd
251 if flags.LArCalib.doOFCCali:
252 result.getEventAlgo(
"OutputConditionsAlg").ObjectList += [
"LArOFCComplete#LArOFC#"+flags.LArCalib.OFCCali.Folder]
253 result.getEventAlgo(
"OutputConditionsAlg").IOVTagList += [caliOFCTag]
256 result.addService(CompFactory.IOVRegistrationSvc(RecreateFolders =
False))
259 from PerfMonComps.PerfMonCompsConfig
import PerfMonMTSvcCfg
260 result.merge(PerfMonMTSvcCfg(flags))
338 from LArCalibProcessing.LArCalibBaseConfig
import LArCalibBaseCfg,chanSelStr
339 result=LArCalibBaseCfg(flags)
342 from ByteStreamCnvSvc.ByteStreamConfig
import ByteStreamReadCfg
343 result.merge(ByteStreamReadCfg(flags))
347 gainStrMap={0:
"HIGH",1:
"MEDIUM",2:
"LOW"}
348 digKey=gainStrMap[flags.LArCalib.Gain]
350 from IOVDbSvc.IOVDbSvcConfig
import addFolders
351 if "ONL" in flags.LArCalib.Input.Database:
352 result.merge(addFolders(flags,flags.LArCalib.Pedestal.Folder,detDb=flags.LArCalib.Input.Database, className=
"CondAttrListCollection", db=
"CONDBR2"))
353 LArPedestalCondAlg = CompFactory.getComp(
"LArFlatConditionsAlg<LArPedestalFlat>")
354 result.addCondAlgo(LArPedestalCondAlg(ReadKey=flags.LArCalib.Pedestal.Folder, WriteKey=
"Pedestal"))
356 from LArCalibProcessing.utils
import FolderTagResolver
357 FolderTagResolver._globalTag=flags.IOVDb.GlobalTag
358 tagResolver=FolderTagResolver()
359 pedestalTag=tagResolver.getFolderTag(flags.LArCalib.Pedestal.Folder)
360 result.merge(addFolders(flags,flags.LArCalib.Pedestal.Folder,detDb=flags.LArCalib.Input.Database, tag=pedestalTag, modifiers=chanSelStr(flags),
361 className=
"LArPedestalComplete"))
364 from LArCalibProcessing.LArCalib_CalibDigitsMakerConfig
import LArCalibDigitsMakerCfg
365 result.merge(LArCalibDigitsMakerCfg(flags,DigitsKey=digKey,ntrigg=flags.LArCalib.OFC.Ncoll,notrun=
True))
367 if not flags.LArCalib.isSC:
368 if flags.LArCalib.Input.isRawData:
369 result.addEventAlgo(CompFactory.LArRawDataReadingAlg(LArRawChannelKey=
"", LArDigitKey=digKey, LArFebHeaderKey=
"LArFebHeader"))
371 result.addEventAlgo(CompFactory.LArRawCalibDataReadingAlg(LArAccCalibDigitKey=digKey,
372 LArFebHeaderKey=
"LArFebHeader",
373 SubCaloPreselection=flags.LArCalib.Input.SubDet,
374 PosNegPreselection=flags.LArCalib.Preselection.Side,
375 BEPreselection=flags.LArCalib.Preselection.BEC,
376 FTNumPreselection=flags.LArCalib.Preselection.FT))
378 from LArROD.LArFebErrorSummaryMakerConfig
import LArFebErrorSummaryMakerCfg
379 result.merge(LArFebErrorSummaryMakerCfg(flags))
380 result.getEventAlgo(
"LArFebErrorSummaryMaker").CheckAllFEB=
False
384 theLArLATOMEDecoder = CompFactory.LArLATOMEDecoder(
"LArLATOMEDecoder")
385 if flags.LArCalib.Input.isRawData:
386 result.addEventAlgo(CompFactory.LArRawSCDataReadingAlg(adcCollKey = digKey, adcBasCollKey =
"", etCollKey =
"",
387 etIdCollKey =
"", LATOMEDecoder = theLArLATOMEDecoder))
388 from LArCalibProcessing.LArCalib_CalibDigitsMakerConfig
import LArCalibDigitsMakerCfg
389 result.merge(LArCalibDigitsMakerCfg(flags,digKey))
393 from LArCabling.LArCablingConfig
import LArCalibIdMappingCfg,LArOnOffIdMappingCfg
394 result.merge(LArOnOffIdMappingCfg(flags))
395 result.merge(LArCalibIdMappingCfg(flags))
396 result.addEventAlgo(CompFactory.LArRawSCCalibDataReadingAlg(LArSCAccCalibDigitKey = digKey,
397 CalibCablingKeyLeg=
"LArCalibLineMap",
398 OnOffMapLeg=
"LArOnOffIdMap",
399 LATOMEDecoder = theLArLATOMEDecoder, ))
401 bcKey =
"LArBadChannelSC" if flags.LArCalib.isSC
else "LArBadChannel"
403 theLArCaliWaveBuilder = CompFactory.LArCaliWaveBuilder()
404 theLArCaliWaveBuilder.KeyList= [digKey,]
405 theLArCaliWaveBuilder.KeyOutput=
"LArCaliWave"
406 theLArCaliWaveBuilder.GroupingType = flags.LArCalib.GroupingType
407 theLArCaliWaveBuilder.SubtractPed =
True
408 theLArCaliWaveBuilder.NSteps = flags.LArCalib.CaliWave.Nsteps
409 theLArCaliWaveBuilder.CheckEmptyPhases =
False
410 theLArCaliWaveBuilder.NBaseline = 0
411 theLArCaliWaveBuilder.UseDacAndIsPulsedIndex =
False
412 theLArCaliWaveBuilder.RecAllCells =
True
413 theLArCaliWaveBuilder.UseParamsSel =
True
414 theLArCaliWaveBuilder.UsePattern = flags.LArCalib.OFC.Nsamples
415 theLArCaliWaveBuilder.NumSubStep = flags.LArCalib.CaliWave.NSubSteps
416 theLArCaliWaveBuilder.isSC = flags.LArCalib.isSC
417 result.addEventAlgo(theLArCaliWaveBuilder)
422 rootfile=flags.LArCalib.Output.ROOTFile
424 result.addEventAlgo(CompFactory.LArCaliWaves2Ntuple(KeyList = [
"LArCaliWave",],
425 NtupleName =
"CALIWAVE",
426 AddFEBTempInfo =
False,
428 SaveDerivedInfo =
True,
429 ApplyCorrection =
False,
430 isSC = flags.LArCalib.isSC,
434 SaveJitter=
True if flags.LArCalib.CaliWave.Nsteps >= 24
else False
438 if os.path.exists(rootfile):
440 result.addService(CompFactory.NTupleSvc(Output = [
"FILE1 DATAFILE='"+rootfile+
"' OPT='NEW'" ]))
441 result.setAppProperty(
"HistogramPersistency",
"ROOT")
444 from PerfMonComps.PerfMonCompsConfig
import PerfMonMTSvcCfg
445 result.merge(PerfMonMTSvcCfg(flags))