ATLAS Offline Software
TRTCalibrationMgrConfig.py
Go to the documentation of this file.
1 """Define methods to construct a configured TRT R-t calibration algorithm
2 
3 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
4 """
5 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6 from AthenaConfiguration.ComponentFactory import CompFactory
7 
8 # Tool to process R-t ntuple. Produces histograms and calibration text files.
9 def TRTCalibratorCfg(flags, name="TRTCalibrator", **kwargs) :
10  acc = ComponentAccumulator()
11  kwargs.setdefault("MinRt",10000)
12  kwargs.setdefault("MinT0",500)
13  kwargs.setdefault("Hittuple","merged.root")
14  kwargs.setdefault("RtRelation","basic")
15  kwargs.setdefault("RtBinning","t")
16  kwargs.setdefault("FloatP3",True)
17  kwargs.setdefault("T0Offset",0.0)
18  kwargs.setdefault("DoShortStrawCorrection",False)
19  kwargs.setdefault("DoArgonXenonSep",True)
20  if "TRTStrawSummaryTool" not in kwargs:
21  from TRT_ConditionsServices.TRT_ConditionsServicesConfig import (
22  TRT_StrawStatusSummaryToolCfg)
23  kwargs.setdefault("TRTStrawSummaryTool", acc.popToolsAndMerge(
25  if "NeighbourSvc" not in kwargs:
26  from TRT_ConditionsServices.TRT_ConditionsServicesConfig import (
27  TRT_StrawNeighbourSvcCfg)
28  kwargs.setdefault("NeighbourSvc", acc.getPrimaryAndMerge(
30  if "TRTCalDbTool" not in kwargs:
31  from TRT_ConditionsServices.TRT_ConditionsServicesConfig import TRT_CalDbToolCfg
32  kwargs.setdefault("TRT_CalDbTool", acc.popToolsAndMerge(TRT_CalDbToolCfg(flags)))
33 
34  acc.setPrivateTools(CompFactory.TRTCalibrator(name, **kwargs))
35 
36  return acc
37 
38 
39 
40 # Steering algorithm. Either it fills track and hit ntuples, or it calls TRTCalibrator
41 def TRT_CalibrationMgrCfg(flags,name='TRT_CalibrationMgr',calibconstants='',**kwargs) :
42  acc = ComponentAccumulator()
43 
44  kwargs.setdefault("DoCalibrate",False)
45  kwargs.setdefault("DoRefit",False)
46 
47  if "AlignTrkTools" not in kwargs:
48  from TRT_CalibTools.TRTCalibToolsConfig import (
49  FillAlignTrkInfoCfg, FillAlignTRTHitsCfg)
50  kwargs.setdefault("AlignTrkTools", [
51  acc.addPublicTool(acc.popToolsAndMerge(FillAlignTrkInfoCfg(flags))),
52  acc.addPublicTool(acc.popToolsAndMerge(FillAlignTRTHitsCfg(flags))) ] )
53 
54  if "FitTools" not in kwargs:
55  from TRT_CalibTools.TRTCalibToolsConfig import FitToolCfg
56  kwargs.setdefault("FitTools", [acc.popToolsAndMerge(FitToolCfg(flags))])
57 
58  if "TrackFitter" not in kwargs:
59  from TrkConfig.CommonTrackFitterConfig import InDetTrackFitterCfg
60  kwargs.setdefault("TrackFitter", acc.popToolsAndMerge(InDetTrackFitterCfg(flags)))
61 
62  if "TrackSelectorTool" not in kwargs:
63  from InDetConfig.InDetTrackSelectorToolConfig import TRT_InDetDetailedTrackSelectorToolCfg
64  kwargs.setdefault("TrackSelectorTool", acc.popToolsAndMerge(TRT_InDetDetailedTrackSelectorToolCfg(flags)))
65 
66  # FIXME! Let all straws participate in trackfinding as default - SERGI This is wrong and needs to be UPDATED @peter
67  # acc.merge(addOverride('/TRT/Cond/Status','TRTCondStatus-empty-00-00'))
68  # TypeError: addOverride() missing 1 required positional argument: 'tag'
69 
70  # acc.merge(addOverride('/TRT/Cond/Status','TRTCondStatus-empty-00-00'))
71 
72  # if a text file is in the arguments, use the constants in that instead of the DB
73  if not calibconstants=="":
74 
75  from TRT_ConditionsAlgs.TRT_ConditionsAlgsConfig import TRTCondWriteCfg
76  acc.merge(TRTCondWriteCfg(flags,calibconstants))
77 
78  # add this algorithm to the configuration accumulator
79  acc.addEventAlgo(CompFactory.TRTCalibrationMgr(name, **kwargs))
80 
81  return acc
82 
83 
84 def TRT_StrawStatusCfg(flags,name='InDet_TRT_StrawStatus',**kwargs) :
85 
86  acc = ComponentAccumulator()
87 
88  from TRT_ConditionsServices.TRT_ConditionsServicesConfig import (
89  TRT_StrawStatusSummaryToolCfg)
90  kwargs.setdefault("TRT_StrawStatusSummaryTool", acc.popToolsAndMerge(
92 
93  from InDetConfig.TRT_TrackHoleSearchConfig import TRTTrackHoleSearchToolCfg
94  kwargs.setdefault("trt_hole_finder", acc.popToolsAndMerge(
96 
97  acc.addEventAlgo(CompFactory.InDet.TRT_StrawStatus(name,**kwargs))
98  return acc
99 
100 
101 def CalibConfig(flags):
102 
103  from AthenaConfiguration.DetectorConfigFlags import setupDetectorFlags
104  setupDetectorFlags(flags, ['ID'], toggle_geometry=True)
105 
106  # Reco
107  flags.Reco.EnableTau=False
108  flags.Reco.EnableCombinedMuon=False
109  flags.Reco.EnableMet=False
110  flags.Reco.EnableTrigger = False
111  flags.Reco.EnableEgamma=False
112  flags.Reco.EnableCaloRinger=False
113  flags.Reco.EnableCaloExtension=False
114 
115  # Detector
116  flags.Detector.EnableMuon=False
117  flags.Detector.EnableCalo=False
118 
119  # DQ
120  flags.DQ.doMonitoring=False
121  flags.DQ.Steering.InDet.doPerfMon=False
122  flags.DQ.Steering.InDet.doGlobalMon=False
123  flags.DQ.Steering.doPixelMon=False
124  flags.DQ.Steering.doSCTMon=False
125 
126  # Tracking
127  flags.Tracking.doCaloSeededBrem=False
128  flags.Tracking.doCaloSeededAmbi=False
129  flags.Tracking.doTRTSegments=False
130  flags.Tracking.doTRTStandalone=False
131  flags.Tracking.doBackTracking=False
132 
133 
134 
135 
136 
137 if __name__ == '__main__':
138 
139  import glob, argparse
140  parser = argparse.ArgumentParser(prog='python -m TRT_CalibAlgs.TRTCalibrationMgrConfig',
141  description="""Run R-t TRT calibration.\n\n
142  Example: python -m TRT_CalibAlgs.TRTCalibrationMgrConfig --filesInput "/path/to/files/data22*" --evtMax 10""")
143 
144  parser.add_argument('--evtMax',type=int,default=10,help="Number of events. Default 10 (Run all events)")
145  parser.add_argument('--filesInput', nargs='+', default=[],help="Input files. RAW data")
146  parser.add_argument('--fileOutput', default="basic.root" ,help="Output file name. Flat Ntuple")
147  args = parser.parse_args()
148 
149  from AthenaConfiguration.AllConfigFlags import initConfigFlags
150  flags = initConfigFlags()
151 
152  from AthenaConfiguration.TestDefaults import defaultGeometryTags, defaultTestFiles
153  if not args.filesInput:
154  flags.Input.Files = defaultTestFiles.RAW_RUN3
155  else:
156  flags.Input.Files = [file for x in args.filesInput for file in glob.glob(x)]
157 
158  flags.Output.HISTFileName = args.fileOutput
159  flags.Exec.MaxEvents = args.evtMax
160 
161  flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN3
162  flags.IOVDb.GlobalTag = "CONDBR2-BLKPA-2023-03"
163 
164  flags.fillFromArgs()
165 
166  CalibConfig(flags)
167 
168  # Reason why we need to clone and replace: https://gitlab.cern.ch/atlas/athena/-/merge_requests/68616#note_7614858
169  flags = flags.cloneAndReplace(
170  "Tracking.ActiveConfig",
171  f"Tracking.{flags.Tracking.PrimaryPassConfig.value}Pass",
172  # Keep original flags as some of the subsequent passes use
173  # lambda functions relying on them
174  keepOriginal=True)
175  flags.lock()
176 
177  flags.dump()
178 
179  # Set up the main service "acc"
180  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
181  acc = MainServicesCfg(flags)
182 
183  from ByteStreamCnvSvc.ByteStreamConfig import ByteStreamReadCfg
184  acc.merge(ByteStreamReadCfg(flags))
185 
186  from InDetConfig.TrackRecoConfig import InDetTrackRecoCfg
187  acc.merge(InDetTrackRecoCfg(flags))
188 
189  # Algorithm to create the basic.root ntuple file
190  acc.merge(TRT_CalibrationMgrCfg(flags))
191 
192  # Algorithm to generate the straw masking file
193  acc.merge(TRT_StrawStatusCfg(flags))
194 
195  with open("TRTCalibConfigCA.pkl", "wb") as f:
196  acc.store(f)
197  f.close()
198 
199 
200  import sys
201  sys.exit(not acc.run().isSuccess())
202 
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
TRTCalibrationMgrConfig.TRTCalibratorCfg
def TRTCalibratorCfg(flags, name="TRTCalibrator", **kwargs)
Definition: TRTCalibrationMgrConfig.py:9
TRTCalibToolsConfig.FillAlignTRTHitsCfg
def FillAlignTRTHitsCfg(flags, name='FillAlignTRTHits', **kwargs)
Definition: TRTCalibToolsConfig.py:20
python.TRT_ConditionsServicesConfig.TRT_StrawStatusSummaryToolCfg
def TRT_StrawStatusSummaryToolCfg(flags, name="TRT_StrawStatusSummaryTool", forceLegacyAccess=False, **kwargs)
Definition: TRT_ConditionsServicesConfig.py:23
python.ByteStreamConfig.ByteStreamReadCfg
def ByteStreamReadCfg(flags, type_names=None)
Definition: Event/ByteStreamCnvSvc/python/ByteStreamConfig.py:25
python.CommonTrackFitterConfig.InDetTrackFitterCfg
def InDetTrackFitterCfg(flags, name='InDetTrackFitter', **kwargs)
InDet configs #####.
Definition: CommonTrackFitterConfig.py:10
TRTCalibrationMgrConfig.TRT_StrawStatusCfg
def TRT_StrawStatusCfg(flags, name='InDet_TRT_StrawStatus', **kwargs)
Definition: TRTCalibrationMgrConfig.py:84
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:256
python.DetectorConfigFlags.setupDetectorFlags
def setupDetectorFlags(flags, custom_list=None, use_metadata=False, toggle_geometry=False, validate_only=False, keep_beampipe=False)
Definition: DetectorConfigFlags.py:286
python.TrackRecoConfig.InDetTrackRecoCfg
def InDetTrackRecoCfg(flags)
Main ID tracking config #####################.
Definition: TrackRecoConfig.py:777
TRTCalibrationMgrConfig.CalibConfig
def CalibConfig(flags)
Definition: TRTCalibrationMgrConfig.py:101
Trk::open
@ open
Definition: BinningType.h:40
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
python.TRT_ConditionsServicesConfig.TRT_StrawNeighbourSvcCfg
def TRT_StrawNeighbourSvcCfg(flags, name="TRT_StrawNeighbourSvc", **kwargs)
Definition: TRT_ConditionsServicesConfig.py:42
TRTCalibToolsConfig.FitToolCfg
def FitToolCfg(flags, name="FitToolCfg", **kwargs)
Definition: TRTCalibToolsConfig.py:39
TRTCalibrationMgrConfig.TRT_CalibrationMgrCfg
def TRT_CalibrationMgrCfg(flags, name='TRT_CalibrationMgr', calibconstants='', **kwargs)
Definition: TRTCalibrationMgrConfig.py:41
python.InDetTrackSelectorToolConfig.TRT_InDetDetailedTrackSelectorToolCfg
def TRT_InDetDetailedTrackSelectorToolCfg(flags, name="TRT_InDetDetailedTrackSelectorTool", **kwargs)
Definition: InDetTrackSelectorToolConfig.py:269
TRTCalibToolsConfig.FillAlignTrkInfoCfg
def FillAlignTrkInfoCfg(flags, name='FillAlignTrkInfo', **kwargs)
Definition: TRTCalibToolsConfig.py:9
python.TRT_TrackHoleSearchConfig.TRTTrackHoleSearchToolCfg
def TRTTrackHoleSearchToolCfg(flags, name="TRTTrackHoleSearchTool", **kwargs)
Definition: TRT_TrackHoleSearchConfig.py:7
python.TRT_ConditionsServicesConfig.TRT_CalDbToolCfg
def TRT_CalDbToolCfg(flags, name="TRT_CalDbTool", **kwags)
Definition: TRT_ConditionsServicesConfig.py:9