ATLAS Offline Software
Loading...
Searching...
No Matches
TRT_PoolGenerator.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3# This python script has one main function for the TRT Database upload parameters:
4# - Generaters a DB (mycool.db) and a POOL (pooloutputfile.root) files with a chosen run for Data or MC
5
6# Since we can write those files this module can also read the output setting the flag "--read" for the local DB
7
8from AthenaConfiguration.AllConfigFlags import initConfigFlags
9from AthenaConfiguration.MainServicesConfig import MainServicesCfg
10from AthenaConfiguration.ComponentFactory import CompFactory
11from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
12
13def TRTCondWriterCfg(flags, name="TRTCondStoreText", rtTag="Textrt", t0Tag="Textt0", **kwargs):
14
15 acc = ComponentAccumulator()
16
17 if "CalibInputFile" not in kwargs:
18 kwargs.setdefault('CalibInputFile', "dbconst.txt")
19
20 from IOVDbSvc.IOVDbSvcConfig import IOVDbSvcCfg
21 acc.merge(IOVDbSvcCfg(flags))
22
23 # Define OutputConditionsAlg
24 objectList = [
25 "TRTCond::RtRelationMultChanContainer#/TRT/Calib/RT",
26 "TRTCond::StrawT0MultChanContainer#/TRT/Calib/T0"
27 ]
28 tagList = [rtTag, t0Tag]
29
30 from RegistrationServices.OutputConditionsAlgConfig import OutputConditionsAlgCfg
31 OutputCond = OutputConditionsAlgCfg(
32 flags,
33 name="TRT_OutputConditionsAlg",
34 outputFile="pooloutputfile.root",
35 ObjectList=objectList,
36 IOVTagList=tagList,
37 WriteIOV=True,
38 Run1=0,
39 LB1=0,
40 Run2=2147483647,
41 LB2=4294967295
42 )
43 acc.merge(OutputCond)
44
45 # Add pool output stream tool
46 from AthenaPoolCnvSvc.PoolWriteConfig import PoolWriteCfg
47 acc.merge(PoolWriteCfg(flags))
48
49 # TRT Conditions text reader
50 TRTCondStoreText = CompFactory.TRTCondStoreText(name=name, **kwargs)
51 acc.addCondAlgo(TRTCondStoreText)
52
53 return acc
54
55def TRTCondReaderCfg(flags, name="TRTCondRead", rtTag="Textrt", t0Tag="Textt0", ReadCOOL=True, **kwargs):
56 acc = ComponentAccumulator()
57
58 if "CalibOutputFile" not in kwargs:
59 kwargs.setdefault('CalibOutputFile', "caliboutput.txt")
60
61 from IOVDbSvc.IOVDbSvcConfig import addOverride
62
63 #Folder for COOL db are added in the TRTCalDbTool tool, in case of local DB overwrite with the local tag!
64 if not ReadCOOL:
65 # TRT folders from local SQLite
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))
68
69 if "TRTCalDbTool" not in kwargs:
70 from TRT_ConditionsServices.TRT_ConditionsServicesConfig import TRT_CalDbToolCfg
71 kwargs.setdefault("TRTCalDbTool", acc.popToolsAndMerge(TRT_CalDbToolCfg(flags)))
72
73 # TRT CondRead Algorithm
74 TRTCondRead = CompFactory.TRTCondRead(name=name, **kwargs)
75 acc.addEventAlgo(TRTCondRead)
76
77 return acc
78
79if __name__ == "__main__":
80
81 import argparse
82 parser = argparse.ArgumentParser(prog='python -m TRT_ConditionsAlgs.TRT_PoolGenerator --read --condRunNumber 450000',
83 description="Write or Read TRT conditions")
84
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('-f','--inputFile', 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()
94
95 flags = initConfigFlags()
96
97 from AthenaConfiguration.TestDefaults import defaultGeometryTags, defaultTestFiles, defaultConditionsTags
98 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN3
99
100 if args.isMC:
101 flags.Input.Files = defaultTestFiles.RDO_RUN3
102 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN3_MC
103 else:
104 flags.Input.Files = defaultTestFiles.RAW_RUN3
105 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN3_DATA
106
107 ReadCOOL = False
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
112 ReadCOOL = True
113 textOutput = args.outputtxt if args.outputtxt else f"caliboutput_{args.condRunNumber}.txt"
114 else:
115 flags.IOVDb.DBConnection = f"sqlite://;schema={args.dbname};dbname=" + ("OFLP200" if args.isMC else "CONDBR2")
116
117
118 flags.Detector.GeometryTRT = True
119 flags.Detector.EnableTRT = True
120 flags.Output.ESDFileName = "trtcalibout.pool.root"
121
122 # For debug output INFO=3
123 flags.Exec.OutputLevel = 3
124
125 flags.Exec.MaxEvents = 1
126 flags.lock()
127 flags.dump()
128
129 # Main services accumulator
130 acc = MainServicesCfg(flags)
131
132 # Add Detector geometry
133 from AtlasGeoModel.GeoModelConfig import GeoModelCfg
134 acc.merge(GeoModelCfg(flags))
135
136 if not args.read:
137 # Add TRT conditions writing
138 acc.merge(TRTCondWriterCfg(flags, rtTag=args.tagRT, t0Tag=args.tagT0, CalibInputFile=args.inputFile))
139 else:
140 acc.merge(TRTCondReaderCfg(flags, rtTag=args.tagRT, t0Tag=args.tagT0, ReadCOOL=ReadCOOL, CalibOutputFile=textOutput))
141
142 # Run the configuration
143 with open("TRT_PoolGenerator.pkl", "wb") as f:
144 acc.store(f)
145 f.close()
146
147 import sys
148 sys.exit(not acc.run().isSuccess())
TRTCondWriterCfg(flags, name="TRTCondStoreText", rtTag="Textrt", t0Tag="Textt0", **kwargs)
TRTCondReaderCfg(flags, name="TRTCondRead", rtTag="Textrt", t0Tag="Textt0", ReadCOOL=True, **kwargs)