ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
HighGranularityTimingDetector
HGTD_Analysis
python
HGTD_AnalysisConfig.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2
3
from
AthenaConfiguration.ComponentAccumulator
import
ComponentAccumulator
4
from
AthenaConfiguration.ComponentFactory
import
CompFactory
5
6
7
def
OutputCfg
(flags, output_name='HGTD_PerformanceStudies_output'):
8
acc = ComponentAccumulator()
9
10
svc = CompFactory.THistSvc(name=
"THistSvc"
)
11
svc.Output = [f
"HGTD_ANA DATAFILE='{output_name}.root' OPT='RECREATE'"
]
12
acc.addService(svc)
13
14
return
acc
15
16
17
#
18
# Expert-only track-time accessor tools. These were previously provided by the
19
# standalone HGTDTrackTimeInterface package and are now part of HGTD_Analysis.
20
#
21
# All of them are for HGTD expert studies and internal validation only, and
22
# must not be scheduled in standard reconstruction jobs -- reconstruction and
23
# analysis code takes the track time from the xAOD::TrackParticle EDM.
24
#
25
26
def
HGTD_ExpertTrackTimeFromClustersToolCfg
(flags, name='ExpertTrackTimeFromClusters',
27
**kwargs):
28
"""Re-derives the track time from the per-layer HGTD cluster decorations."""
29
acc = ComponentAccumulator()
30
kwargs.setdefault(
"UseLastHitCut"
,
True
)
31
kwargs.setdefault(
"UseTimeConsistency"
,
True
)
32
kwargs.setdefault(
"DeltaTCut"
, 2.0)
33
kwargs.setdefault(
"TimeChi2Cut"
, 1.5)
34
acc.setPrivateTools(CompFactory.HGTD.ExpertTrackTimeFromClustersTool(name, **kwargs))
35
36
return
acc
37
38
39
def
HGTD_ExpertTrackTimeFromClustersNoSelectionToolCfg
(
40
flags, name='ExpertTrackTimeFromClustersNoSelection', **kwargs):
41
"""As above, but with the last-hit, time-consistency and minimum-hit cuts off."""
42
acc = ComponentAccumulator()
43
kwargs.setdefault(
"UseLastHitCut"
,
False
)
44
kwargs.setdefault(
"UseTimeConsistency"
,
False
)
45
kwargs.setdefault(
"DeltaTCut"
, 2.0)
46
kwargs.setdefault(
"TimeChi2Cut"
, 1.5)
47
kwargs.setdefault(
"UseMinNHits"
,
False
)
48
acc.setPrivateTools(CompFactory.HGTD.ExpertTrackTimeFromClustersTool(name, **kwargs))
49
50
return
acc
51
52
53
def
HGTD_ExpertTrackTimeFromEDMToolCfg
(flags, name='ExpertTrackTimeFromEDM', **kwargs):
54
"""Hands back xAOD::TrackParticle::time() unchanged, as a reference point."""
55
acc = ComponentAccumulator()
56
acc.setPrivateTools(CompFactory.HGTD.ExpertTrackTimeFromEDMTool(name, **kwargs))
57
58
return
acc
59
60
61
def
HGTD_ExpertTrackTimeFromSummaryToolCfg
(flags, name='ExpertTrackTimeFromSummary',
62
**kwargs):
63
"""Re-applies the HGTD selection by decoding the persisted HGTD_summaryinfo."""
64
acc = ComponentAccumulator()
65
kwargs.setdefault(
"UseLastHitCut"
,
True
)
66
kwargs.setdefault(
"UseMinNHits"
,
True
)
67
acc.setPrivateTools(CompFactory.HGTD.ExpertTrackTimeFromSummaryTool(name, **kwargs))
68
69
return
acc
70
71
72
#
73
# Track selection tools.
74
#
75
76
def
HGTD_NoEarlyDecayTracksSelectionToolCfg
(flags, name='NoEarlyDecayTracksSelection', **kwargs):
77
acc = ComponentAccumulator()
78
kwargs.setdefault(
"MinRadiusProduction"
, 0.)
79
kwargs.setdefault(
"MazRadiusProduction"
, 10.)
80
kwargs.setdefault(
"MinZProduction"
, 0.)
81
kwargs.setdefault(
"MaxZProduction"
, 100.)
82
kwargs.setdefault(
"MinRadiusDecay"
, 0.)
83
kwargs.setdefault(
"MazRadiusDecay"
, 99999999999.)
84
kwargs.setdefault(
"MinZDecay"
, 3479.)
# just after last HGTD layer
85
kwargs.setdefault(
"MaxZDecay"
, 99999999999.)
86
acc.setPrivateTools(CompFactory.HGTD_TrackDecaySelectionTool(name, **kwargs))
87
88
return
acc
89
90
91
def
HGTD_AllTracksSelectionToolCfg
(flags, name='AllTracksSelection', **kwargs):
92
acc = ComponentAccumulator()
93
acc.setPrivateTools(CompFactory.HGTD_AllTracksSelectionTool(name, **kwargs))
94
95
return
acc
96
97
98
#
99
# The performance-study algorithm.
100
#
101
102
def
HGTD_TrkTimePerformanceStudiesCfg
(flags, name='HGTD_TrkTimePerformanceStudies',
103
output_name='HGTD_PerformanceStudies_output', **kwargs):
104
acc = ComponentAccumulator()
105
106
time_from_clusters = acc.popToolsAndMerge(
107
HGTD_ExpertTrackTimeFromClustersToolCfg
(flags))
108
time_from_clusters_no_sel = acc.popToolsAndMerge(
109
HGTD_ExpertTrackTimeFromClustersNoSelectionToolCfg
(flags))
110
time_from_summary = acc.popToolsAndMerge(
111
HGTD_ExpertTrackTimeFromSummaryToolCfg
(flags))
112
113
all_tracks_sel_tool = acc.popToolsAndMerge(
114
HGTD_AllTracksSelectionToolCfg
(flags))
115
no_early_decay_tracks_sel_tool = acc.popToolsAndMerge(
116
HGTD_NoEarlyDecayTracksSelectionToolCfg
(flags))
117
118
kwargs.setdefault(
"DirectoryName"
,
"/HGTD_ANA/"
)
119
kwargs.setdefault(
"TrackTimeTools"
,
120
[time_from_clusters, time_from_clusters_no_sel, time_from_summary])
121
kwargs.setdefault(
"TrackSelectionTools"
,
122
[all_tracks_sel_tool, no_early_decay_tracks_sel_tool])
123
124
# Note! change the below if you have a use case where you put a specific
125
# selection into SG and schedule the performance algo afterwards!
126
kwargs.setdefault(
"TrackParticleContainerName"
,
"InDetTrackParticles"
)
127
128
acc.addEventAlgo(CompFactory.HGTD_TrkTimePerformanceStudies(name, **kwargs))
129
130
acc.merge(
OutputCfg
(flags, output_name=output_name))
131
132
return
acc
133
134
135
def
main
():
136
"""Run HGTD_TrkTimePerformanceStudies over an AOD.
137
138
This is the single entry point shared with share/JO_Performance_Studies.py.
139
140
The input AOD must have been produced with
141
--preExec 'all:flags.Tracking.writeExtendedHGTDInfo=True'
142
otherwise the extended HGTD track decorations the track-time accessor
143
tools read (HGTD_cluster_time, HGTD_primary_expected, HGTD_summaryinfo,
144
...) are stripped from the AOD and all histograms come out empty.
145
"""
146
from
AthenaConfiguration.AllConfigFlags
import
initConfigFlags
147
flags = initConfigFlags()
148
flags.Exec.MaxEvents = -1
149
flags.fillFromArgs()
# set the input with: --filesInput=...
150
151
if
not
flags.Input.Files:
152
raise
SystemExit(
"ERROR: no input file given, use --filesInput=<AOD.pool.root>"
)
153
154
flags.lock()
155
156
from
AthenaConfiguration.MainServicesConfig
import
MainServicesCfg
157
cfg = MainServicesCfg(flags)
158
159
from
AthenaPoolCnvSvc.PoolReadConfig
import
PoolReadCfg
160
cfg.merge(PoolReadCfg(flags))
161
162
cfg.merge(
HGTD_TrkTimePerformanceStudiesCfg
(flags))
163
164
return
cfg.run().isFailure()
165
166
167
if
__name__ ==
"__main__"
:
168
import
sys
169
sys.exit(
main
())
HGTD_AnalysisConfig.HGTD_ExpertTrackTimeFromEDMToolCfg
HGTD_ExpertTrackTimeFromEDMToolCfg(flags, name='ExpertTrackTimeFromEDM', **kwargs)
Definition
HGTD_AnalysisConfig.py:53
HGTD_AnalysisConfig.HGTD_ExpertTrackTimeFromSummaryToolCfg
HGTD_ExpertTrackTimeFromSummaryToolCfg(flags, name='ExpertTrackTimeFromSummary', **kwargs)
Definition
HGTD_AnalysisConfig.py:62
HGTD_AnalysisConfig.HGTD_TrkTimePerformanceStudiesCfg
HGTD_TrkTimePerformanceStudiesCfg(flags, name='HGTD_TrkTimePerformanceStudies', output_name='HGTD_PerformanceStudies_output', **kwargs)
Definition
HGTD_AnalysisConfig.py:103
HGTD_AnalysisConfig.OutputCfg
OutputCfg(flags, output_name='HGTD_PerformanceStudies_output')
Definition
HGTD_AnalysisConfig.py:7
HGTD_AnalysisConfig.main
main()
Definition
HGTD_AnalysisConfig.py:135
HGTD_AnalysisConfig.HGTD_NoEarlyDecayTracksSelectionToolCfg
HGTD_NoEarlyDecayTracksSelectionToolCfg(flags, name='NoEarlyDecayTracksSelection', **kwargs)
Definition
HGTD_AnalysisConfig.py:76
HGTD_AnalysisConfig.HGTD_AllTracksSelectionToolCfg
HGTD_AllTracksSelectionToolCfg(flags, name='AllTracksSelection', **kwargs)
Definition
HGTD_AnalysisConfig.py:91
HGTD_AnalysisConfig.HGTD_ExpertTrackTimeFromClustersNoSelectionToolCfg
HGTD_ExpertTrackTimeFromClustersNoSelectionToolCfg(flags, name='ExpertTrackTimeFromClustersNoSelection', **kwargs)
Definition
HGTD_AnalysisConfig.py:40
HGTD_AnalysisConfig.HGTD_ExpertTrackTimeFromClustersToolCfg
HGTD_ExpertTrackTimeFromClustersToolCfg(flags, name='ExpertTrackTimeFromClusters', **kwargs)
Definition
HGTD_AnalysisConfig.py:27
Generated on
for ATLAS Offline Software by
1.17.0