ATLAS Offline Software
Loading...
Searching...
No Matches
LArConditions2Ntuple.py
Go to the documentation of this file.
1#!/bin/env python
2# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3
4from AthenaConfiguration.ComponentFactory import CompFactory
5
6
7if __name__=='__main__':
8
9 import os,sys
10 import argparse
11
12 # now process the CL options and assign defaults
13 parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
14 parser.add_argument('-r','--run', dest='run', default=0x7fffffff, help='Run number', type=int)
15 parser.add_argument('--sqlite', dest='sqlite', default=None, help='sqlite file to read from (default: oracle)', type=str)
16 parser.add_argument('-t','--tag',dest='dbtag',default=None,help="Global conditions tag", type=str)
17 parser.add_argument('-f','--ftag',dest='ftag',default=None,help="folder tag suffig", type=str)
18 parser.add_argument('-o','--out', dest='out', default="LArConditions.root", help='Output root file', type=str)
19 parser.add_argument('--ofcfolder',dest='ofcfolder',default="", help="OFC flavor",type=str)
20 parser.add_argument('-s','--isSC', dest='isSC', action='store_true', default=False, help='is SC?')
21 parser.add_argument('-m','--isMC', dest='isMC', action='store_true', default=False, help='is MC?')
22
23 parser.add_argument("--objects",dest="objects",default="PEDESTAL,RAMP",help="List of conditions types to be dumped",type=str)
24 parser.add_argument("--folders",dest="folders",default="/LAR/ElecCalibFlat/Pedestal,/LAR/ElecCalibFlat/Ramp",help="List of folders to be taken from sqlite",type=str)
25 parser.add_argument('--offline',dest="offline", action='store_true', default=False, help='is offline folder?')
26 parser.add_argument('--poolcat',dest="poolcat", default="", type=str, help='is offline folder?')
27 parser.add_argument('-n', '--ntuple', dest='ntname', default='', help='output ntuple name (if different from default)', type=str)
28 parser.add_argument('--oLevel', dest='olevel', default=3, help='OutputLevel of the job', type=int)
29
30 args = parser.parse_args()
31 if help in args and args.help is not None and args.help:
32 parser.print_help()
33 sys.exit(0)
34
35 print(vars(args))
36
37 #Translation table ... with a few potential variant spellings
38 objTable={"RAMP":"Ramp",
39 "DAC2UA":"DAC2uA",
40 "DACUA":"DAC2uA",
41 "PEDESTAL":"Pedestal",
42 "PED":"Pedestal",
43 "UA2MEV":"uA2MeV",
44 "UAMEV":"uA2MeV",
45 "MPHYSOVERMCAL":"MphysOverMcal",
46 "MPHYSMCAL":"MphysOverMcal",
47 "MPMC":"MphysOverMcal",
48 "OFC":"OFC",
49 "SHAPE":"Shape",
50 "HVSCALECORR":"HVScaleCorr",
51 "HVSCALE":"HVScaleCorr",
52 "FSAMPL":"fSampl",
53 "AUTOCORR":"AutoCorr",
54 "AC":"AutoCorr",
55 "CALIWAVE":"CaliWave",
56 "PHYSWAVE":"PhysWave",
57 "OFCCALI":"OFCCali",
58 "ACORR":"AutoCorr",
59 "DSPTHR":"DSPThr",
60 "DSPTEMP":"DSPTemp",
61 "MINBIAS":"MinBias",
62 "BCID":"PileupAverage",
63 "PHYSAC":"PhysAutoCorr",
64 }
65
66 objects=set()
67 objectsOnl=set()
68 for obj in args.objects.split(","):
69 objU=obj.upper()
70 if objU not in objTable:
71 print("ERROR: Unknown conditions type",obj)
72 sys.exit(0)
73
74 objects.add(objTable[objU])
75 if all(txt not in obj.upper() for txt in ["OFCCALI", "WAVE", "DSP", "MINBIAS", "BCID"]) and not args.offline:
76 objectsOnl.add(objTable[objU])
77
78 flds=set()
79 for fld in args.folders.split(","):
80 flds.add(fld)
81
82 from AthenaConfiguration.AllConfigFlags import initConfigFlags
83 flags=initConfigFlags()
84 from LArCalibProcessing.LArCalibConfigFlags import addLArCalibFlags
85 addLArCalibFlags(flags, args.isSC)
86
87 flags.Input.RunNumbers=[args.run]
88 from AthenaConfiguration.TestDefaults import defaultGeometryTags
89 flags.GeoModel.AtlasVersion=defaultGeometryTags.RUN3
90
91 flags.Input.Files=[]
92
93 flags.Input.isMC=args.isMC
94 flags.LArCalib.isSC=args.isSC
95
96 flags.LAr.doAlign=False
97
98 flags.LAr.OFCShapeFolder=args.ofcfolder
99
100 from AthenaConfiguration.Enums import LHCPeriod
101 if flags.Input.RunNumbers[0] < 222222:
102 #Set to run1 for early run-numbers
103 flags.GeoModel.Run=LHCPeriod.Run1
104 flags.IOVDb.DatabaseInstance="OFLP200" if flags.Input.isMC else "COMP200"
105 else:
106 flags.GeoModel.Run=LHCPeriod.Run2
107 flags.IOVDb.DatabaseInstance="OFLP200" if flags.Input.isMC else "CONDBR2"
108
109 if args.dbtag:
110 flags.IOVDb.GlobalTag=args.dbtag
111 elif flags.Input.isMC:
112 flags.IOVDb.GlobalTag="OFLCOND-MC16-SDR-20"
113 elif flags.IOVDb.DatabaseInstance == "COMP200":
114 flags.IOVDb.GlobalTag="COMCOND-BLKPA-RUN1-09"
115 elif args.offline:
116 flags.IOVDb.GlobalTag="CONDBR2-BLKPA-2026-01"
117 else:
118 flags.IOVDb.GlobalTag="CONDBR2-ES1PA-2026-01"
119
120 flags.Exec.OutputLevel=args.olevel
121 flags.Debug.DumpCondStore=True
122 flags.Debug.DumpDetStore=True
123
124 if (args.sqlite):
125 flags.IOVDb.SqliteInput=args.sqlite
126 flags.IOVDb.SqliteFolders=tuple(flds)
127 if len(objects)!=len(objectsOnl):
128 flags.IOVDb.DBConnection="COOLOFL_LAR/CONDBR2"
129
130 if "fSampl" in objects:
131 flags.Overlay.DataOverlay=True
132
133 flags.lock()
134
135 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
136 cfg=MainServicesCfg(flags)
137
138 #MC Event selector since we have no input data file
139 from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
140 cfg.merge(McEventSelectorCfg(flags,
141 EventsPerRun = 1,
142 FirstEvent = 1,
143 InitialTimeStamp = 0,
144 TimeStampInterval = 1))
145
146
147 if "fSampl" in objects:
148 from IOVDbSvc.IOVDbSvcConfig import addOverride
149 cfg.merge(addOverride(flags,"/LAR/ElecCalibMC/fSampl","LARElecCalibMCfSampl-G496-19213-FTFP_BERT_BIRK"))
150
151 #Get LAr basic services and cond-algos
152 from LArGeoAlgsNV.LArGMConfig import LArGMCfg
153 cfg.merge(LArGMCfg(flags))
154
155 if flags.LArCalib.isSC:
156 #Setup SuperCell cabling
157 from LArCabling.LArCablingConfig import LArOnOffIdMappingSCCfg, LArCalibIdMappingSCCfg, LArLATOMEMappingCfg
158 cfg.merge(LArOnOffIdMappingSCCfg(flags))
159 if not flags.Input.isMC:
160 cfg.merge(LArCalibIdMappingSCCfg(flags))
161 cfg.merge(LArLATOMEMappingCfg(flags))
162 if not args.offline:
163 from LArConfiguration.LArElecCalibDBConfig import LArElecCalibDBSCCfg
164 cfg.merge(LArElecCalibDBSCCfg(flags,objectsOnl))
165 else:
166 #Setup regular cabling
167 from LArCabling.LArCablingConfig import LArOnOffIdMappingCfg, LArCalibIdMappingCfg
168 cfg.merge(LArOnOffIdMappingCfg(flags))
169 cfg.merge(LArCalibIdMappingCfg(flags))
170 if not args.offline:
171 from LArConfiguration.LArElecCalibDBConfig import LArElecCalibDBCfg
172 cfg.merge(LArElecCalibDBCfg(flags,objectsOnl))
173
174 from LArBadChannelTool.LArBadChannelConfig import LArBadChannelCfg
175 bchtag = "LARBadChannelsBadChannelsSC-RUN3-UPD1-00" if flags.LArCalib.isSC else None
176 cfg.merge(LArBadChannelCfg(flags, tag=bchtag, isSC=flags.LArCalib.isSC))
177
178 bcKey = "LArBadChannelSC" if flags.LArCalib.isSC else "LArBadChannel"
179
180 if "Pedestal" in objects:
181 ckey = "LArPedestalSC" if flags.LArCalib.isSC else "LArPedestal"
182 cfg.addEventAlgo(CompFactory.LArPedestals2Ntuple(ContainerKey = ckey,
183 AddFEBTempInfo = False,
184 AddCalib = True,
185 isSC = flags.LArCalib.isSC,
186 BadChanKey = bcKey
187 ))
188
189 if "AutoCorr" in objects:
190 from IOVDbSvc.IOVDbSvcConfig import addFolders
191 if flags.LArCalib.isSC:
192 cfg.merge(addFolders(flags,'/LAR/ElecCalibOflSC/AutoCorrs/AutoCorr',modifiers='<key>LArAutoCorrSC</key>',className='LArAutoCorrComplete'))
193 else:
194 if args.ftag:
195 cfg.merge(addFolders(flags,'/LAR/ElecCalibOfl/AutoCorrs/AutoCorr',tag="".join('/LAR/ElecCalibOfl/AutoCorrs/AutoCorr'.split('/')) + args.ftag))
196 else:
197 cfg.merge(addFolders(flags,'/LAR/ElecCalibOfl/AutoCorrs/AutoCorr',className='LArAutoCorrComplete'))
198 ckey="LArAutoCorrSC" if flags.LArCalib.isSC else "LArAutoCorr"
199 cfg.addEventAlgo(CompFactory.LArAutoCorr2Ntuple(ContainerKey = "LArAutoCorrSym" if flags.Input.isMC else ckey,
200 AddFEBTempInfo = False,
201 AddCalib = True,
202 isSC = flags.LArCalib.isSC,
203 ApplyCorrection = True,
204 AddCorrUndo = True,
205 BadChanKey = bcKey,
206
207 ))
208
209 if "PhysAutoCorr" in objects:
210 from IOVDbSvc.IOVDbSvcConfig import addFolders
211 if flags.LArCalib.isSC:
212 cfg.merge(addFolders(flags,'/LAR/ElecCalibOflSC/AutoCorrs/PhysicsAutoCorr',modifiers='<key>LArAutoCorrSC</key>',className='LArAutoCorrComplete'))
213 else:
214 if args.ftag:
215 cfg.merge(addFolders(flags,'/LAR/ElecCalibOfl/AutoCorrs/PhysicsAutoCorr',tag="".join('/LAR/ElecCalibOfl/AutoCorrs/PhysicsAutoCorr'.split('/')) + args.ftag))
216 else:
217 cfg.merge(addFolders(flags,'/LAR/ElecCalibOfl/AutoCorrs/PhysicsAutoCorr',className='LArAutoCorrComplete'))
218 ckey="LArPhysAutoCorrSC" if flags.LArCalib.isSC else "LArPhysAutoCorr"
219 cfg.addEventAlgo(CompFactory.LArAutoCorr2Ntuple(ContainerKey = ckey,
220 AddFEBTempInfo = False,
221 AddCalib = True,
222 isSC = flags.LArCalib.isSC,
223 ApplyCorrection = not flags.Input.isMC,
224 AddCorrUndo = not flags.Input.isMC,
225 BadChanKey = bcKey,
226
227 ))
228
229 if "Ramp" in objects:
230 ckey = "LArRampSC" if flags.LArCalib.isSC else "LArRamp"
231 if args.offline:
232 from IOVDbSvc.IOVDbSvcConfig import addFolders
233 if flags.LArCalib.isSC:
234 cfg.merge(addFolders(flags,'/LAR/ElecCalibOflSC/Ramps/RampLinea',modifiers='<key>LArRampSC</key>',className='LArRampComplete'))
235 else:
236 cfg.merge(addFolders(flags,'/LAR/ElecCalibOfl/Ramps/RampLinea',className='LArRampComplete'))
237 cfg.addEventAlgo(CompFactory.LArRamps2Ntuple(RampKey="LArRampSym" if flags.Input.isMC else ckey,
238 AddFEBTempInfo = False,
239 AddCalib = True,
240 isSC = flags.LArCalib.isSC,
241 ApplyCorr = True,
242 AddCorrUndo = True,
243 BadChanKey = bcKey
244 ))
245
246 if "OFC" in objects:
247 if args.offline:
248 from IOVDbSvc.IOVDbSvcConfig import addFolders
249 for fld in flds:
250 if 'OFC' in fld:
251 if args.ftag:
252 cfg.merge(addFolders(flags,fld,tag="".join(fld.split('/')) + args.ftag))
253 else:
254 cfg.merge(addFolders(flags,fld))
255 ckey= 'LArOFC'
256 ntname= 'OFC' if '1phase' in fld else 'OFC_1ns'
257 break
258 else:
259 ckey = "LArOFCSC" if flags.LArCalib.isSC else "LArOFC"
260 ntname = 'OFC'
261 cfg.addEventAlgo(CompFactory.LArOFC2Ntuple(AddFEBTempInfo = False,
262 ContainerKey=ckey,
263 NtupleName=ntname,
264 isSC = flags.LArCalib.isSC,
265 BadChanKey = bcKey
266 ))
267
268 if "OFCCali" in objects:
269 if args.offline:
270 from IOVDbSvc.IOVDbSvcConfig import addFolders
271 for fld in flds:
272 if 'OFC' in fld:
273 if args.ftag:
274 cfg.merge(addFolders(flags,fld,tag="".join(foldername.split('/')) + args.ftag))
275 else:
276 cfg.merge(addFolders(flags,fld))
277 ckey= 'LArOFC' if '1phase' in fld else 'LArOFC'
278 break
279 else:
280 ckey = "LArOFCSCCali" if flags.LArCalib.isSC else "LArOFCCali"
281 fldr = "/LAR/ElecCalibFlatSC/OFCCali" if flags.LArCalib.isSC else "/LAR/ElecCalibFlat/OFCCali"
282 dbString = "<db>sqlite://;schema="+args.sqlite+";dbname=CONDBR2" if args.sqlite else "<db>COOLONL_LAR/CONDBR2</db>"
283 from IOVDbSvc.IOVDbSvcConfig import addFolders
284 cfg.merge(addFolders(flags,fldr,detDb=dbString,className="CondAttrListCollection"))
285 LArOFCSCCondAlg = CompFactory.getComp("LArFlatConditionsAlg<LArOFCSC>")("LArOFCSCCaliCondAlg")
286 LArOFCSCCondAlg.ReadKey=fldr
287 LArOFCSCCondAlg. WriteKey=ckey
288 cfg.addCondAlgo(LArOFCSCCondAlg)
289
290 cfg.addEventAlgo(CompFactory.LArOFC2Ntuple("LArOFC2NtupleCali",
291 AddFEBTempInfo = False,
292 ContainerKey=ckey,
293 NtupleName="OFCCali" if args.ntname=='' else args.ntname,
294 isSC = flags.LArCalib.isSC,
295 BadChanKey = bcKey
296 ))
297
298
299 if "Shape" in objects:
300 if args.offline:
301 from IOVDbSvc.IOVDbSvcConfig import addFolders
302 for fld in flds:
303 if 'Shape' in fld:
304 if args.ftag:
305 cfg.merge(addFolders(flags,fld,tag="".join(fld.split('/')) + args.ftag))
306 else:
307 cfg.merge(addFolders(flags,fld))
308 ckey= 'LArShape'
309 ntname= 'SHAPE' if '1phase' in fld else 'SHAPE_1ns'
310 break
311 else:
312 ckey = "LArShapeSC" if flags.LArCalib.isSC else "LArShape"
313 if flags.Input.isMC:
314 ckey="LArShapeSym"
315
316 cfg.addEventAlgo(CompFactory.LArShape2Ntuple(ContainerKey=ckey,
317 AddFEBTempInfo = False,
318 AddCalib = True,
319 isSC = flags.LArCalib.isSC,
320 BadChanKey = bcKey
321
322 ))
323 if "MphysOverMcal" in objects:
324 if args.offline:
325 from IOVDbSvc.IOVDbSvcConfig import addFolders
326 if flags.LArCalib.isSC:
327 print('offline, adding /LAR/ElecCalibOflSC/MphysOverMcal/RTM folder')
328 cfg.merge(addFolders(flags,'/LAR/ElecCalibOflSC/MphysOverMcal/RTM',modifiers='<key>LArMphysOverMcalSC</key>',className='LArMphysOverMcalComplete'))
329 else:
330 cfg.merge(addFolders(flags,'/LAR/ElecCalibOfl/MphysOverMcal/RTM',className='LArMphysOverMcalComplete'))
331
332 cfg.addEventAlgo(CompFactory.LArMphysOverMcal2Ntuple(ContainerKey = "LArMphysOverMcalSC" if flags.LArCalib.isSC else "LArMphysOverMcal",
333 AddFEBTempInfo = False,
334 AddCalib = True,
335 isSC = flags.LArCalib.isSC,
336 BadChanKey = bcKey
337 ))
338
339 #ADC2MeV and DACuA are handled by the same ntuple dumper
340 if "DAC2uA" in objects or "uA2MeV" in objects:
341 uackey = "LAruA2MeVSC" if flags.LArCalib.isSC else "LAruA2MeV"
342 dackey = "LArDAC2uASC" if flags.LArCalib.isSC else "LArDAC2uA"
343 ua2MeVKey="LAruA2MeVSym" if flags.Input.isMC else uackey
344 dac2uAKey="LArDAC2uASym" if flags.Input.isMC else dackey
345
346 cfg.addEventAlgo(CompFactory.LAruA2MeV2Ntuple(uA2MeVKey=ua2MeVKey if "uA2MeV" in objects else "",
347 DAC2uAKey=dac2uAKey if "DAC2uA" in objects else "",
348 isSC = flags.LArCalib.isSC,
349 BadChanKey = bcKey
350 ))
351
352
353 if "HVScaleCorr" in objects:
354 # hack to read from sqlite created by HV computations
355 iovDbSvc=cfg.getService("IOVDbSvc")
356 for i in range(0,len(iovDbSvc.Folders)):
357 if (iovDbSvc.Folders[i].find("HVScaleCorr")>=0):
358 iovDbSvc.Folders[i]+="<key>/LAR/ElecCalibFlatSC/HVScaleCorr</key>"
359
360 cfg.addEventAlgo(CompFactory.LArHVScaleCorr2Ntuple(ContainerKey= "LArHVScaleCorrSC" if flags.LArCalib.isSC else "LArHVScaleCorr",
361 AddFEBTempInfo = False,
362 isSC = flags.LArCalib.isSC,
363 BadChanKey = bcKey
364 ))
365
366 if "fSampl" in objects:
367 cfg.addEventAlgo(CompFactory.LArfSampl2Ntuple(ContainerKey="LArfSamplSC" if flags.LArCalib.isSC else "LArfSamplSym",
368 isSC=flags.LArCalib.isSC
369 ))
370
371 if "CaliWave" in objects:
372 if flags.Input.isMC:
373 print('No CaliWave in MC')
374 else:
375 fld = "/LAR/ElecCalibOflSC/CaliWaves/CaliWave" if flags.LArCalib.isSC else "/LAR/ElecCalibOfl/CaliWaves/CaliWave"
376 from IOVDbSvc.IOVDbSvcConfig import addFolders
377 cfg.merge(addFolders(flags,fld,modifiers='<key>LArCaliWave</key><typeName>LArCaliWaveContainer</typeName>'))
378 cfg.addEventAlgo(CompFactory.LArCaliWaves2Ntuple(KeyList = ["LArCaliWave"],
379 NtupleName = "CALIWAVE",
380 AddFEBTempInfo = False,
381 SaveDerivedInfo = True,
382 AddCalib = True,
383 SaveJitter = True,
384 isFlat = False,
385 isSC = flags.LArCalib.isSC,
386 BadChanKey = bcKey
387 ))
388
389 if "PhysWave" in objects:
390 if flags.Input.isMC:
391 print('No PhysWave in MC yet')
392 else:
393 fld = "/LAR/ElecCalibOflSC/PhysWaves/RTM" if flags.LArCalib.isSC else "/LAR/ElecCalibOfl/PhysWaves/RTM"
394 if len(flds) > 0:
395 for fld1 in flds:
396 if 'PhysWave' in fld1:
397 fld=fld1
398 break
399
400 if args.ftag:
401 from IOVDbSvc.IOVDbSvcConfig import addOverride
402 cfg.merge(addOverride(flags,fld,args.ftag))
403 from IOVDbSvc.IOVDbSvcConfig import addFolders
404 cfg.merge(addFolders(flags,fld,modifiers='<key>LArPhysWave</key>'))
405 cfg.addEventAlgo(CompFactory.LArPhysWaves2Ntuple(KeyList = ["LArPhysWave"],
406 NtupleName = "PHYSWAVE",
407 AddFEBTempInfo = False,
408 SaveDerivedInfo = True,
409 AddCalib = True,
410 isFlat = False,
411 isSC = flags.LArCalib.isSC,
412 BadChanKey = bcKey
413 ))
414
415 if "DSPThr" in objects:
416 from IOVDbSvc.IOVDbSvcConfig import addFoldersSplitOnline
417 f1 = "/LAR/Configuration/DSPThresholdFlat/Thresholds"
418 f2 = "/LAR/NoiseOfl/DSPThresholds"
419 cfg.merge(addFoldersSplitOnline(flags,"LAR",f1,f2,splitMC=True))
420 cfg.addEventAlgo(CompFactory.LArDSPThresholds2Ntuple(DumpFlat=True,FlatFolder=f2 if flags.Input.isMC else f1))
421
422 if "DSPTemp" in objects:
423 from IOVDbSvc.IOVDbSvcConfig import addFolders
424 cfg.merge(addFolders(flags,"/LAR/Configuration/DSPThresholdFlat/Templates",tag=args.ftag,detDb="LAR_ONL"))
425 cfg.addEventAlgo(CompFactory.LArDSPThresholds2Ntuple(DumpFlat=True,FlatFolder="/LAR/Configuration/DSPThresholdFlat/Templates",OffId=True,RealGeometry=True))
426
427 if "PileupAverage" in objects:
428 from IOVDbSvc.IOVDbSvcConfig import addFolders
429 if flags.Input.isMC:
430 myfld="/LAR/ElecCalibMC/LArPileupAverage"
431 mydb="LAR_OFL"
432 else:
433 if args.offline:
434 myfld="/LAR/ElecCalibOfl/LArPileupAverage"
435 mydb="LAR_OFL"
436 else:
437 myfld="/LAR/LArPileup/LArPileupAverage"
438 mydb="LAR_ONL"
439 if args.ftag:
440 cfg.merge(addFolders(flags,myfld,detDb=mydb,className="LArMinBiasAverageMC",tag="".join(myfld.split('/')) + args.ftag))
441 else:
442 cfg.merge(addFolders(flags,myfld,detDb=mydb,className="LArMinBiasAverageMC"))
443 LArMinBiasAverageSymAlg = CompFactory.getComp("LArSymConditionsAlg<LArMinBiasAverageMC, LArMinBiasAverageSym>")
444 LArMCSymCondAlg=CompFactory.LArMCSymCondAlg
445 cfg.addCondAlgo(LArMCSymCondAlg(ReadKey="LArOnOffIdMap"))
446 cfg.addCondAlgo(LArMinBiasAverageSymAlg(ReadKey="LArPileupAverage",WriteKey="LArSymPileupAverage"))
447 cfg.addEventAlgo(CompFactory.LArMinBias2Ntuple(ContainerKey="",ContainerKeyAv="LArSymPileupAverage"))
448
449 if "MinBias" in objects:
450 # onlyfor MC
451 from IOVDbSvc.IOVDbSvcConfig import addFolders
452 if not flags.Input.isMC:
453 print("MinBias available only for MC")
454 elif flags.LArCalib.isSC:
455 myfld="/LAR/ElecCalibMCSC/MinBias"
456 myfldav="/LAR/ElecCalibMCSC/MinBiasAverage"
457 mydb="LAR_OFL"
458 if args.ftag:
459 cfg.merge(addFolders(flags,myfld,detDb=mydb,className="CondAttrListCollection",tag="".join(myfld.split('/')) + args.ftag))
460 cfg.merge(addFolders(flags,myfldav,detDb=mydb,className="CondAttrListCollection",tag="".join(myfld.split('/')) + args.ftag))
461 else:
462 cfg.merge(addFolders(flags,myfld,detDb=mydb,className="CondAttrListCollection"))
463 cfg.merge(addFolders(flags,myfldav,detDb=mydb,className="CondAttrListCollection"))
464
465 larMinBiasSCCondAlg = CompFactory.getComp("LArFlatConditionsAlg<LArMinBiasSC>")
466 larMinBiasAverageSCCondAlg = CompFactory.getComp("LArFlatConditionsAlg<LArMinBiasAverageSC>")
467 cfg.addCondAlgo(larMinBiasSCCondAlg(ReadKey=myfld, WriteKey="LArMinBiasSC"))
468 cfg.addCondAlgo(larMinBiasAverageSCCondAlg(ReadKey=myfldav, WriteKey="LArMinBiasAverageSC"))
469 cfg.addEventAlgo(CompFactory.LArMinBias2Ntuple(ContainerKey="LArMinBiasSC",ContainerKeyAv="LArMinBiasAverageSC",isSC=True, BadChanKey="LArBadChannelSC"))
470 else:
471 myfld="/LAR/ElecCalibMC/MinBias"
472 myfldav="/LAR/ElecCalibMC/MinBiasAverage"
473
474 mydb="LAR_OFL"
475 if args.ftag:
476 cfg.merge(addFolders(flags,myfld,detDb=mydb,className="LArMinBiasMC",tag="".join(myfld.split('/')) + args.ftag))
477 cfg.merge(addFolders(flags,myfldav,detDb=mydb,className="LArMinBiasAverageMC",tag="".join(myfld.split('/')) + args.ftag))
478 else:
479 cfg.merge(addFolders(flags,myfld,detDb=mydb,className="LArMinBiasMC"))
480 cfg.merge(addFolders(flags,myfldav,detDb=mydb,className="LArMinBiasAverageMC"))
481 LArMinBiasSymAlg = CompFactory.getComp("LArSymConditionsAlg<LArMinBiasMC, LArMinBiasSym>")
482 LArMinBiasAverageSymAlg = CompFactory.getComp("LArSymConditionsAlg<LArMinBiasAverageMC, LArMinBiasAverageSym>")
483 LArMCSymCondAlg=CompFactory.LArMCSymCondAlg
484 cfg.addCondAlgo(LArMCSymCondAlg(ReadKey="LArOnOffIdMap"))
485 cfg.addCondAlgo(LArMinBiasSymAlg(ReadKey="LArMinBias",WriteKey="LArSymMinBias"))
486 cfg.addCondAlgo(LArMinBiasAverageSymAlg(ReadKey="LArMinBiasAverage",WriteKey="LArSymMinBiasAverage"))
487 cfg.addEventAlgo(CompFactory.LArMinBias2Ntuple(ContainerKey="LArSymMinBias",ContainerKeyAv="LArSymMinBiasAverage"))
488
489 rootfile=args.out
490 if os.path.exists(rootfile):
491 os.remove(rootfile)
492 cfg.addService(CompFactory.NTupleSvc(Output = [ "FILE1 DATAFILE='"+rootfile+"' OPT='NEW'" ]))
493 cfg.setAppProperty("HistogramPersistency","ROOT")
494
495 if args.dbtag and 'CALIB' in args.dbtag:
496 cfg.getService("IOVDbSvc").DBInstance=""
497
498 if args.poolcat:
499 cfg.getService("PoolSvc").ReadCatalog+=["xmlcatalog_file:%s"%args.poolcat,]
500
501 cfg.run(1)
502 sys.exit(0)
503
void print(char *figname, TCanvas *c1)
STL class.
std::string find(const std::string &s)
return a remapped string
Definition hcg.cxx:138
std::vector< std::string > split(const std::string &s, const std::string &t=":")
Definition hcg.cxx:177