ATLAS Offline Software
Loading...
Searching...
No Matches
LArCalib_HVScale2NtupleConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.ComponentFactory import CompFactory
4from AthenaConfiguration.MainServicesConfig import MainEvgenServicesCfg
5
6def LArHVScaleCorr2NtupleCfg(flags, rootfile="hvcorr_read.root", hvcorr="LArHVScaleCorr", hvcorrSC="LArHVScaleCorrSC",
7 treename="HVSCALE", treenameSC="HVSCALESC"):
8
9 from LArGeoAlgsNV.LArGMConfig import LArGMCfg
10 result=LArGMCfg(flags)
11
12 if hvcorr != "" and treename != "":
13 from LArCabling.LArCablingConfig import LArOnOffIdMappingCfg
14 result.merge(LArOnOffIdMappingCfg(flags))
15
16 from LArBadChannelTool.LArBadChannelConfig import LArBadChannelCfg
17 result.merge(LArBadChannelCfg(flags))
18
19 from LArConfiguration.LArElecCalibDBConfig import LArElecCalibDBCfg
20 result.merge(LArElecCalibDBCfg(flags,["HVScaleCorr"]))
21
22 result.addEventAlgo(CompFactory.LArHVScaleCorr2Ntuple(
23 f"LArHVScaleCorr2Ntuple-{hvcorr}", ContainerKey=hvcorr, AddFEBTempInfo=False, OffId=True,
24 NtuplePath=f"/NTUPLES/FILE1/{treename}"))
25
26 if hvcorrSC != "" and treenameSC != "":
27 from LArConfiguration.LArElecCalibDBConfig import LArElecCalibDBSCCfg
28 result.merge(LArElecCalibDBSCCfg(flags,["HVScaleCorr"]))
29
30 from LArCabling.LArCablingConfig import LArOnOffIdMappingSCCfg
31 result.merge(LArOnOffIdMappingSCCfg(flags))
32
33 result.merge(LArBadChannelCfg(flags, isSC=True))
34
35 result.addEventAlgo(CompFactory.LArHVScaleCorr2Ntuple(
36 f"LArHVScaleCorr2Ntuple-{hvcorrSC}", AddFEBTempInfo=False, OffId=True, ContainerKey=hvcorrSC,
37 isSC=True, BadChanKey = "LArBadChannelSC", NtuplePath=f"/NTUPLES/FILE1/{treenameSC}"))
38
39 import os
40 if os.path.exists(rootfile):
41 os.remove(rootfile)
42 result.addService(CompFactory.NTupleSvc(Output = [ "FILE1 DATAFILE='"+rootfile+"' OPT='NEW'" ]))
43 result.setAppProperty("HistogramPersistency","ROOT")
44
45 return result
46
47if __name__=="__main__":
48 import sys
49 from time import strptime
50 from calendar import timegm
51
52 if len(sys.argv)<2:
53 print("Usage:")
54 print("%s <time> <outputfile> <globaltag> [sqlitefile]" % sys.argv[0])
55 sys.exit(-1)
56
57
58 try:
59 ts=strptime(sys.argv[1]+'/UTC','%Y-%m-%d:%H:%M:%S/%Z')
60 TimeStamp=int(timegm(ts))
61 TimeStamp_ns=TimeStamp*1000000000
62 except ValueError as e:
63 print("ERROR in time specification, use e.g. 2007-05-25:14:01:00")
64 print(e)
65 sys.exit(-1)
66
67 from LArCalibProcessing.TimeStampToRunLumi import TimeStampToRunLumi
68
69 rlb=TimeStampToRunLumi(TimeStamp_ns)
70 if rlb is None:
71 rlb=[0xFFFFFFF-1,0]
72 print("WARNING: Failed to convert time",TimeStamp_ns,"into a run/lumi number. Using 'infinite' run-number",rlb[0])
73
74
75 from AthenaConfiguration.AllConfigFlags import initConfigFlags
76 flags = initConfigFlags()
77 from LArCalibProcessing.LArCalibConfigFlags import addLArCalibFlags
78 addLArCalibFlags(flags)
79
80 flags.Input.RunNumbers=[rlb[0]]
81 flags.Input.TimeStamps=[TimeStamp]
82 flags.Input.Files=[]
83 flags.IOVDb.DatabaseInstance="CONDBR2"
84 from AthenaConfiguration.TestDefaults import defaultGeometryTags, defaultConditionsTags
85 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN3
86 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN3_DATA
87
88 rootfile="hvcorr_read.root"
89 if len(sys.argv)>2:
90 rootfile=sys.argv[2]
91
92 if len(sys.argv)>3:
93 flags.IOVDb.GlobalTag=sys.argv[3]
94
95 if len(sys.argv)>4:
96 print('Taking /LAR/ElecCalibFlat/HVScaleCorr from sqlite ',sys.argv[4])
97 flags.IOVDb.SqliteInput=sys.argv[4]
98 flags.IOVDb.SqliteFolders=("/LAR/ElecCalibFlat/HVScaleCorr",)
99
100 flags.lock()
101 cfg=MainEvgenServicesCfg(flags)
102 cfg.merge(LArHVScaleCorr2NtupleCfg(flags, rootfile=rootfile))
103
104
105 print("Start running...")
106 cfg.run(1)
void print(char *figname, TCanvas *c1)
LArHVScaleCorr2NtupleCfg(flags, rootfile="hvcorr_read.root", hvcorr="LArHVScaleCorr", hvcorrSC="LArHVScaleCorrSC", treename="HVSCALE", treenameSC="HVSCALESC")