ATLAS Offline Software
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 
8 from AthenaConfiguration.AllConfigFlags import initConfigFlags
9 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
10 from AthenaConfiguration.ComponentFactory import CompFactory
11 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
12 
13 def 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 
55 def 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 
79 if __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('--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()
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  flags.Exec.MaxEvents = 1
123  flags.lock()
124  flags.dump()
125 
126  # Main services accumulator
127  acc = MainServicesCfg(flags)
128 
129  # Add Detector geometry
130  from AtlasGeoModel.GeoModelConfig import GeoModelCfg
131  acc.merge(GeoModelCfg(flags))
132 
133  if not args.read:
134  # Add TRT conditions writing
135  acc.merge(TRTCondWriterCfg(flags, rtTag=args.tagRT, t0Tag=args.tagT0, CalibInputFile=args.dbconst))
136  else:
137  acc.merge(TRTCondReaderCfg(flags, rtTag=args.tagRT, t0Tag=args.tagT0, ReadCOOL=ReadCOOL, CalibOutputFile=textOutput))
138 
139  # Run the configuration
140  with open("TRT_PoolGenerator.pkl", "wb") as f:
141  acc.store(f)
142  f.close()
143 
144  import sys
145  sys.exit(not acc.run().isSuccess())
python.PoolWriteConfig.PoolWriteCfg
def PoolWriteCfg(flags)
Definition: PoolWriteConfig.py:41
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
OutputConditionsAlgConfig.OutputConditionsAlgCfg
def OutputConditionsAlgCfg(flags, name="OutputConditionsAlg", outputFile='condobjs.root', **kwargs)
Definition: OutputConditionsAlgConfig.py:5
python.TRT_PoolGenerator.TRTCondReaderCfg
def TRTCondReaderCfg(flags, name="TRTCondRead", rtTag="Textrt", t0Tag="Textt0", ReadCOOL=True, **kwargs)
Definition: TRT_PoolGenerator.py:55
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:312
python.IOVDbSvcConfig.IOVDbSvcCfg
def IOVDbSvcCfg(flags, **kwargs)
Definition: IOVDbSvcConfig.py:28
python.IOVDbSvcConfig.addOverride
def addOverride(flags, folder, tag, tagType="tag", db=None)
Definition: IOVDbSvcConfig.py:238
Trk::open
@ open
Definition: BinningType.h:40
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
python.TRT_PoolGenerator.TRTCondWriterCfg
def TRTCondWriterCfg(flags, name="TRTCondStoreText", rtTag="Textrt", t0Tag="Textt0", **kwargs)
Definition: TRT_PoolGenerator.py:13
python.GeoModelConfig.GeoModelCfg
def GeoModelCfg(flags)
Definition: GeoModelConfig.py:16
python.TRT_ConditionsServicesConfig.TRT_CalDbToolCfg
def TRT_CalDbToolCfg(flags, name="TRT_CalDbTool", **kwags)
Definition: TRT_ConditionsServicesConfig.py:9