8 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
9 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
10 from AthenaConfiguration.ComponentFactory
import CompFactory
11 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
13 def TRTCondWriterCfg(flags, name="TRTCondStoreText", rtTag="Textrt", t0Tag="Textt0", **kwargs):
17 if "CalibInputFile" not in kwargs:
18 kwargs.setdefault(
'CalibInputFile',
"dbconst.txt")
20 from IOVDbSvc.IOVDbSvcConfig
import IOVDbSvcCfg
25 "TRTCond::RtRelationMultChanContainer#/TRT/Calib/RT",
26 "TRTCond::StrawT0MultChanContainer#/TRT/Calib/T0"
28 tagList = [rtTag, t0Tag]
30 from RegistrationServices.OutputConditionsAlgConfig
import OutputConditionsAlgCfg
33 name=
"TRT_OutputConditionsAlg",
34 outputFile=
"pooloutputfile.root",
35 ObjectList=objectList,
46 from AthenaPoolCnvSvc.PoolWriteConfig
import PoolWriteCfg
50 TRTCondStoreText = CompFactory.TRTCondStoreText(name=name, **kwargs)
51 acc.addCondAlgo(TRTCondStoreText)
55 def TRTCondReaderCfg(flags, name="TRTCondRead", rtTag="Textrt", t0Tag="Textt0", ReadCOOL=True, **kwargs):
58 if "CalibOutputFile" not in kwargs:
59 kwargs.setdefault(
'CalibOutputFile',
"caliboutput.txt")
61 from IOVDbSvc.IOVDbSvcConfig
import addOverride
66 acc.merge(
addOverride( flags,
"/TRT/Calib/T0", tag=t0Tag, db=flags.IOVDb.DBConnection))
67 acc.merge(
addOverride( flags,
"/TRT/Calib/RT", tag=rtTag, db=flags.IOVDb.DBConnection))
69 if "TRTCalDbTool" not in kwargs:
70 from TRT_ConditionsServices.TRT_ConditionsServicesConfig
import TRT_CalDbToolCfg
71 kwargs.setdefault(
"TRTCalDbTool", acc.popToolsAndMerge(
TRT_CalDbToolCfg(flags)))
74 TRTCondRead = CompFactory.TRTCondRead(name=name, **kwargs)
75 acc.addEventAlgo(TRTCondRead)
79 if __name__ ==
"__main__":
82 parser = argparse.ArgumentParser(prog=
'python -m TRT_ConditionsAlgs.TRT_PoolGenerator --read --condRunNumber 450000',
83 description=
"Write or Read TRT conditions")
85 parser.add_argument(
'-r',
'--read',action=
'store_true' ,help=
"By default writes. If set the it reads from local DB")
86 parser.add_argument(
'-m',
'--isMC',action=
'store_true' ,help=
"This is to tell athena if it is MC or Data (OFLP200 or CONDBR2)")
87 parser.add_argument(
'--tagRT', default=
"Textrt" ,help=
"Tag for RT folder")
88 parser.add_argument(
'--tagT0', default=
"Textt0" ,help=
"Tag for T0 folder")
89 parser.add_argument(
'--dbname', default=
"mycool.db" ,help=
"DB folder name for reader")
90 parser.add_argument(
'--dbconst', default=
"dbconst.txt" ,help=
"Input file constants for writer")
91 parser.add_argument(
'--outputtxt', default=
"" ,help=
"Output file for the TRT")
92 parser.add_argument(
'--condRunNumber', type=int, default=-1, help=
" choose the IoV covering this run number")
93 args = parser.parse_args()
97 from AthenaConfiguration.TestDefaults
import defaultGeometryTags, defaultTestFiles, defaultConditionsTags
98 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN3
101 flags.Input.Files = defaultTestFiles.RDO_RUN3
102 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN3_MC
104 flags.Input.Files = defaultTestFiles.RAW_RUN3
105 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN3_DATA
108 textOutput = args.outputtxt
if args.outputtxt
else "caliboutput.txt"
109 if args.condRunNumber > 0:
110 flags.Input.RunNumbers = [args.condRunNumber]
111 flags.Input.OverrideRunNumber=
True
113 textOutput = args.outputtxt
if args.outputtxt
else f
"caliboutput_{args.condRunNumber}.txt"
115 flags.IOVDb.DBConnection = f
"sqlite://;schema={args.dbname};dbname=" + (
"OFLP200" if args.isMC
else "CONDBR2")
118 flags.Detector.GeometryTRT =
True
119 flags.Detector.EnableTRT =
True
120 flags.Output.ESDFileName =
"trtcalibout.pool.root"
122 flags.Exec.MaxEvents = 1
130 from AtlasGeoModel.GeoModelConfig
import GeoModelCfg
135 acc.merge(
TRTCondWriterCfg(flags, rtTag=args.tagRT, t0Tag=args.tagT0, CalibInputFile=args.dbconst))
137 acc.merge(
TRTCondReaderCfg(flags, rtTag=args.tagRT, t0Tag=args.tagT0, ReadCOOL=ReadCOOL, CalibOutputFile=textOutput))
140 with open(
"TRT_PoolGenerator.pkl",
"wb")
as f:
145 sys.exit(
not acc.run().isSuccess())