5from AthenaConfiguration.ComponentFactory
import CompFactory
6from AthenaConfiguration.MainServicesConfig
import MainEvgenServicesCfg
8def HVCorrConfig(flags,outputName="hvcorr",runOut=0, lbOut=0, voltages=[], currents=[], isHI=False, hipatch=1.0):
10 from LArGeoAlgsNV.LArGMConfig
import LArGMCfg
11 result=LArGMCfg(flags)
14 from LArCalibUtils.LArHVScaleConfig
import LArHVScaleCfg
16 result.merge(LArHVScaleCfg(flags))
17 alg = result.getCondAlgo(
"LArHVCondAlg")
18 alg.UndoOnlineHVCorr=
False
19 alg.keyOutputCorr=
"NewLArHVScaleCorr"
20 alg.fixCurrent = currents
23 from LArCabling.LArCablingConfig
import LArOnOffIdMappingSCCfg
24 result.merge(LArOnOffIdMappingSCCfg(flags))
25 result.addEventAlgo(CompFactory.LArHVCorrToSCHVCorr(ContainerKey=
"NewLArHVScaleCorr",OutputKey=
"NewSCLArHVScaleCorr",
26 OutputFolder=
"/LAR/ElecCalibFlatSC/HVScaleCorrNew",
27 IsHeavyIons=isHI, PatchInHeavyIons=hipatch,
28 PhysicsWeights=
"TrigT1CaloCalibUtils/HVcorrPhysicsWeights.txt"))
32 result.addEventAlgo(CompFactory.LArHVCorrMaker(LArHVScaleCorr=
"NewLArHVScaleCorr",folderName=
"/LAR/ElecCalibFlat/HVScaleCorrNew"))
38 from LArCalibTools.LArCalib_HVScale2NtupleConfig
import LArHVScaleCorr2NtupleCfg
39 result.merge(LArHVScaleCorr2NtupleCfg(flags,rootfile=outputName+
'_ntuple.root',addSC=
True))
40 result.getEventAlgo(
"LArHVScaleCorr2Ntuple").ContainerKey=
"NewLArHVScaleCorr"
41 result.getEventAlgo(
"LArSCHVScaleCorr2Ntuple").ContainerKey=
"NewSCLArHVScaleCorr"
42 result.getEventAlgo(
"LArSCHVScaleCorr2Ntuple").NtuplePath=
"/NTUPLES/FILE1/HVSCALESC"
45 from RegistrationServices.OutputConditionsAlgConfig
import OutputConditionsAlgCfg
46 result.merge(OutputConditionsAlgCfg(flags,
47 outputFile=
"dummy.root",
48 ObjectList=[
"CondAttrListCollection#/LAR/ElecCalibFlat/HVScaleCorrNew#/LAR/ElecCalibFlat/HVScaleCorr",
49 "CondAttrListCollection#/LAR/ElecCalibFlatSC/HVScaleCorrNew#/LAR/ElecCalibFlatSC/HVScaleCorr",],
57 result.addService(CompFactory.IOVRegistrationSvc(RecreateFolders =
True,
59 OverrideNames = [
"HVScaleCorr"],
60 OverrideTypes = [
"Blob16M"],
63 result.getService(
"IOVDbSvc").DBInstance=
""
67if __name__==
"__main__":
71 from time
import time,strptime
72 from calendar
import timegm
74 parser= argparse.ArgumentParser(description=
"Recalculate HV corrections based on DCS values")
75 parser.add_argument(
'datestamp',help=
"time specification like 2007-05-25:14:01:00")
76 parser.add_argument(
'Run',type=int, nargs=
'?', default=0,help=
"IOV start (run-number)")
77 parser.add_argument(
'LB',type=int, nargs=
'?', default=0,help=
"IOV start (run-number)")
78 parser.add_argument(
'-g',
'--globaltag', type=str, help=
"Global conditions Tag ")
79 parser.add_argument(
'-o',
'--output',type=str,default=
"hvcorr",help=
"name stub for root and sqlite output files")
80 parser.add_argument(
'-l',
'--olevel',type=int, default=3,help=
"OutputLevel")
81 parser.add_argument(
'-V',
'--voltage',type=str, default=[], action=
'append', nargs=1,
82 help=
"use -V \"<ID> <HV>\" to set the voltage for this line instead of reading it from DCS")
83 parser.add_argument(
'-I',
'--current',type=str, default=[], action=
'append', nargs=1,
84 help=
"use -I \"<ID> <current>\" to set the current for this line instead of reading it from DCS")
85 parser.add_argument(
'-s',
'--sqlite',type=str,default=
"",help=
"name of sqlite file to be used instead of COOL")
86 parser.add_argument(
'--isHI', dest=
'hi', default=
False, help=
'is for HI ?', action=
'store_true')
88 parser.add_argument(
'--patchHI',dest=
'patchhi',type=float, default=1.4,help=
"Ptching value for HI")
90 args = parser.parse_args()
92 ts=strptime(args.datestamp+
'/UTC',
'%Y-%m-%d:%H:%M:%S/%Z')
93 TimeStamp=int(timegm(ts))
94 TimeStamp_ns=TimeStamp*1000000000
95 except ValueError
as e:
96 print(
"ERROR in time specification, use e.g. 2007-05-25:14:01:00")
100 from LArCalibProcessing.TimeStampToRunLumi
import TimeStampToRunLumi
102 rlb=TimeStampToRunLumi(TimeStamp_ns)
105 print(
"WARNING: Failed to convert time",TimeStamp_ns,
"into a run/lumi number. Using 'infinite' run-number",rlb[0])
108 print(
"---> Working on run",rlb[0],
"LB",rlb[1],
"Timestamp:",TimeStamp)
109 timediff=int(time()-TimeStamp)
111 print(
"ERROR: Timestamp in the future???")
113 (days,remainder)=divmod(timediff,24*60*60)
114 (hours,seconds)=divmod(remainder,60*60)
115 print (
"---> Timestamp is %i days %i hours and %i minutes ago" % (days,hours,int(seconds/60)))
118 print(
"Output IOV will be from run %i lumiblock %i to INF" % (args.Run,args.LB))
119 args.voltage = list(itertools.chain.from_iterable(args.voltage))
120 args.current = list(itertools.chain.from_iterable(args.current))
121 for x
in args.voltage + args.current:
122 if re.match(
r"\d+\s+\d+\.?\d*", x)
is None:
123 print(
"ERROR: invalid voltage/current specification, should be of the form \"<line ID> <HV>\"")
125 outputName=args.output
127 from AthenaConfiguration.TestDefaults
import defaultGeometryTags
128 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
129 ConfigFlags=initConfigFlags()
132 ConfigFlags.IOVDb.GlobalTag=args.globaltag
134 ConfigFlags.Input.RunNumbers=[rlb[0]]
135 ConfigFlags.Input.LumiBlockNumbers=[rlb[1]]
136 ConfigFlags.Input.TimeStamps=[TimeStamp]
137 ConfigFlags.Input.Files=[]
138 ConfigFlags.IOVDb.DatabaseInstance=
"CONDBR2"
139 ConfigFlags.IOVDb.DBConnection=
"sqlite://;schema="+outputName+
".db;dbname=CONDBR2"
140 if len(args.sqlite)>0:
141 ConfigFlags.IOVDb.SqliteInput=args.sqlite
142 ConfigFlags.IOVDb.SqliteFolders=(
"/LAR/ElecCalibFlat/HVScaleCorr",)
143 ConfigFlags.GeoModel.AtlasVersion=defaultGeometryTags.RUN3
144 ConfigFlags.Exec.OutputLevel=args.olevel
146 cfg=MainEvgenServicesCfg(ConfigFlags)
148 cfg.getService(
"EventSelector").FirstLB=ConfigFlags.Input.LumiBlockNumbers[0]
149 cfg.merge(
HVCorrConfig(ConfigFlags, outputName, runOut=args.Run, lbOut=args.LB,
150 voltages=args.voltage, currents=args.current,isHI=args.hi,hipatch=args.patchhi))
152 print(
"Start running...")
154 sys.exit(cfg.run(1).isFailure())
void print(char *figname, TCanvas *c1)
HVCorrConfig(flags, outputName="hvcorr", runOut=0, lbOut=0, voltages=[], currents=[], isHI=False, hipatch=1.0)