ATLAS Offline Software
LArCalib_HVCorrConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
3 
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 from AthenaConfiguration.MainServicesConfig import MainEvgenServicesCfg
6 
7 def HVCorrConfig(flags,outputName="hvcorr",runOut=0, lbOut=0):
8 
9  from LArGeoAlgsNV.LArGMConfig import LArGMCfg
10  result=LArGMCfg(flags)
11 
12  #Use the standard LArHVScaleCfg and adjust properties afterwards as needed
13  from LArCalibUtils.LArHVScaleConfig import LArHVScaleCfg
14 
15  result.merge(LArHVScaleCfg(flags))
16  result.getCondAlgo("LArHVCondAlg").UndoOnlineHVCorr=False
17  result.getCondAlgo("LArHVCondAlg").keyOutputCorr="NewLArHVScaleCorr"
18 
19  from LArCabling.LArCablingConfig import LArOnOffIdMappingSCCfg
20  result.merge(LArOnOffIdMappingSCCfg(flags))
21  result.addEventAlgo(CompFactory.LArHVCorrToSCHVCorr(ContainerKey="NewLArHVScaleCorr",OutputKey="NewSCLArHVScaleCorr",
22  OutputFolder="/LAR/ElecCalibFlatSC/HVScaleCorrNew",
23  IsHeavyIons=False, PatchInHeavyIons=1.0,
24  PhysicsWeights="TrigT1CaloCalibUtils/HVcorrPhysicsWeights.txt"))
25 
26  #The LArHVCorrMaker creates a flat blob in a CondAttrListCollection
27  #Input: The HV Scale Correction computed by the LArHVCondAlg based on the DCS HV values
28  result.addEventAlgo(CompFactory.LArHVCorrMaker(LArHVScaleCorr="NewLArHVScaleCorr",folderName="/LAR/ElecCalibFlat/HVScaleCorrNew"))
29 
32 
33  #Ntuple writing ...
34  from LArCalibTools.LArCalib_HVScale2NtupleConfig import LArHVScaleCorr2NtupleCfg
35  result.merge(LArHVScaleCorr2NtupleCfg(flags,rootfile=outputName+'_ntuple.root',addSC=True))
36  result.getEventAlgo("LArHVScaleCorr2Ntuple").ContainerKey="NewLArHVScaleCorr"
37  result.getEventAlgo("LArSCHVScaleCorr2Ntuple").ContainerKey="NewSCLArHVScaleCorr"
38  result.getEventAlgo("LArSCHVScaleCorr2Ntuple").NtuplePath="/NTUPLES/FILE1/HVSCALESC"
39 
40  #sqlite writing ...
41  from RegistrationServices.OutputConditionsAlgConfig import OutputConditionsAlgCfg
42  result.merge(OutputConditionsAlgCfg(flags,
43  outputFile="dummy.root",
44  ObjectList=["CondAttrListCollection#/LAR/ElecCalibFlat/HVScaleCorrNew#/LAR/ElecCalibFlat/HVScaleCorr",
45  "CondAttrListCollection#/LAR/ElecCalibFlatSC/HVScaleCorrNew#/LAR/ElecCalibFlatSC/HVScaleCorr",],
46  Run1=runOut,
47  LB1=lbOut
48  ))
49 
50 
51 
52  #RegistrationSvc
53  result.addService(CompFactory.IOVRegistrationSvc(RecreateFolders = True,
54  SVFolder=True,
55  OverrideNames = ["HVScaleCorr"],
56  OverrideTypes = ["Blob16M"],
57  ))
58 
59  result.getService("IOVDbSvc").DBInstance=""
60  return result
61 
62 
63 if __name__=="__main__":
64  import sys
65  from time import time,strptime
66  from calendar import timegm
67  import argparse
68  parser= argparse.ArgumentParser(description="Recalclulate HV corrections based on DCS values")
69  parser.add_argument('datestamp',help="time specification like 2007-05-25:14:01:00")
70  parser.add_argument('Run',type=int, nargs='?', default=0,help="IOV start (run-number)")
71  parser.add_argument('LB',type=int, nargs='?', default=0,help="IOV start (run-number)")
72  parser.add_argument('-g', '--globaltag', type=str, help="Geometry Tag ")
73  parser.add_argument('-o', '--output',type=str,default="hvcorr",help="name stub for root and sqlite output files")
74  parser.add_argument('-l','--olevel',type=int, default=3,help="OutputLevel")
75 
76  args = parser.parse_args()
77  try:
78  ts=strptime(args.datestamp+'/UTC','%Y-%m-%d:%H:%M:%S/%Z')
79  TimeStamp=int(timegm(ts))
80  TimeStamp_ns=TimeStamp*1000000000
81  except ValueError as e:
82  print("ERROR in time specification, use e.g. 2007-05-25:14:01:00")
83  print(e)
84  sys.exit(-1)
85 
86  from LArCalibProcessing.TimeStampToRunLumi import TimeStampToRunLumi
87 
88  rlb=TimeStampToRunLumi(TimeStamp_ns)
89  if rlb is None:
90  rlb=[0xFFFFFFF-1,0]
91  print("WARNING: Failed to convert time",TimeStamp_ns,"into a run/lumi number. Using 'infinite' run-number",rlb[0])
92 
93 
94  print("---> Working on run",rlb[0],"LB",rlb[1],"Timestamp:",TimeStamp)
95  timediff=int(time()-TimeStamp)
96  if timediff<0:
97  print("ERROR: Timestamp in the future???")
98  else:
99  (days,remainder)=divmod(timediff,24*60*60)
100  (hours,seconds)=divmod(remainder,60*60)
101  print ("---> Timestamp is %i days %i hours and %i minutes ago" % (days,hours,int(seconds/60)))
102  pass
103 
104  print("Output IOV will be from run %i lumiblock %i to INF" % (args.Run,args.LB))
105 
106  outputName=args.output
107 
108  from AthenaConfiguration.TestDefaults import defaultGeometryTags
109  from AthenaConfiguration.AllConfigFlags import initConfigFlags
110  ConfigFlags=initConfigFlags()
111 
112  if args.globaltag:
113  ConfigFlags.IOVDb.GlobalTag=args.globaltag
114 
115  ConfigFlags.Input.RunNumbers=[rlb[0]]
116  ConfigFlags.Input.LumiBlockNumbers=[rlb[1]]
117  ConfigFlags.Input.TimeStamps=[TimeStamp]
118  ConfigFlags.Input.Files=[]
119  ConfigFlags.IOVDb.DatabaseInstance="CONDBR2"
120  ConfigFlags.IOVDb.DBConnection="sqlite://;schema="+outputName+".sqlite;dbname=CONDBR2"
121  ConfigFlags.GeoModel.AtlasVersion=defaultGeometryTags.RUN3
122  ConfigFlags.Exec.OutputLevel=args.olevel
123  ConfigFlags.lock()
124  cfg=MainEvgenServicesCfg(ConfigFlags)
125  #First LB not set by McEventSelectorCfg, set it here:
126  cfg.getService("EventSelector").FirstLB=ConfigFlags.Input.LumiBlockNumbers[0]
127  cfg.merge(HVCorrConfig(ConfigFlags,outputName,args.Run,args.LB))
128 
129 
130  print("Start running...")
131  import sys
132  sys.exit(cfg.run(1).isFailure())
python.LArCalib_HVCorrConfig.HVCorrConfig
def HVCorrConfig(flags, outputName="hvcorr", runOut=0, lbOut=0)
Definition: LArCalib_HVCorrConfig.py:7
LArCablingConfig.LArOnOffIdMappingSCCfg
def LArOnOffIdMappingSCCfg(configFlags)
Definition: LArCablingConfig.py:65
OutputConditionsAlgConfig.OutputConditionsAlgCfg
def OutputConditionsAlgCfg(flags, name="OutputConditionsAlg", outputFile='condobjs.root', **kwargs)
Definition: OutputConditionsAlgConfig.py:5
python.MainServicesConfig.MainEvgenServicesCfg
def MainEvgenServicesCfg(flags, LoopMgr="AthenaEventLoopMgr", withSequences=True)
Definition: MainServicesConfig.py:415
python.LArCalib_HVCorrConfig.int
int
Definition: LArCalib_HVCorrConfig.py:70
LArGMConfig.LArGMCfg
def LArGMCfg(flags)
Definition: LArGMConfig.py:8
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:26
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
LArCalib_HVScale2NtupleConfig.LArHVScaleCorr2NtupleCfg
def LArHVScaleCorr2NtupleCfg(flags, rootfile="hvcorr_read.root", addSC=False)
Definition: LArCalib_HVScale2NtupleConfig.py:6
python.LArHVScaleConfig.LArHVScaleCfg
def LArHVScaleCfg(configFlags)
Definition: LArHVScaleConfig.py:8
python.TimeStampToRunLumi.TimeStampToRunLumi
def TimeStampToRunLumi(tmstmp, guard=1, dbInstance="CONDBR2")
Definition: TimeStampToRunLumi.py:3