39 flags, name="InDetRttTruthSelectionTool", **kwargs):
40 acc = ComponentAccumulator()
42 kwargs.setdefault(
"requireStable",
True)
43 kwargs.setdefault(
"requireCharged",
True)
44 kwargs.setdefault(
"selectedCharge", flags.PhysVal.IDPVM.selectedCharge)
45 kwargs.setdefault(
"requireOnlyPrimary",
46 True if kwargs.pop(
"OnlyDressPrimaryTracks",
True)
48 kwargs.setdefault(
"maxProdVertRadius",
49 flags.PhysVal.IDPVM.maxProdVertRadius)
50 kwargs.setdefault(
"minProdVertRadius",
51 flags.PhysVal.IDPVM.minProdVertRadius)
52 kwargs.setdefault(
"minAbsD0",
53 flags.PhysVal.IDPVM.minAbsD0)
55 if flags.Detector.GeometryID:
56 if flags.PhysVal.IDPVM.doValidateLargeD0Tracks
or flags.PhysVal.IDPVM.doValidateMergedLargeD0Tracks:
57 kwargs.setdefault(
"maxEta", 3.0)
59 kwargs.setdefault(
"maxEta", 2.5)
60 elif flags.Detector.GeometryITk:
61 kwargs.setdefault(
"maxEta", 4.0)
63 kwargs.setdefault(
"minPt", flags.PhysVal.IDPVM.truthMinPt)
64 kwargs.setdefault(
"ancestorList", flags.PhysVal.IDPVM.ancestorIDs)
65 kwargs.setdefault(
"requireSiHit", flags.PhysVal.IDPVM.requiredSiHits)
66 kwargs.setdefault(
"vetoPdgId", flags.PhysVal.IDPVM.vetoPdgId)
67 kwargs.setdefault(
"pdgId", flags.PhysVal.IDPVM.pdgId)
69 if "radiusCylinder" in kwargs
or "zDisc" in kwargs:
70 from TrkConfig.AtlasExtrapolatorConfig
import AtlasExtrapolatorCfg
71 extrapolator = acc.popToolsAndMerge(AtlasExtrapolatorCfg(flags))
72 acc.addPublicTool(extrapolator)
73 kwargs.setdefault(
"Extrapolator", extrapolator)
75 kwargs.setdefault(
"Extrapolator",
None)
77 acc.setPrivateTools(CompFactory.AthTruthSelectionTool(name, **kwargs))
114 from InDetPhysValMonitoring.InDetPhysValDecorationConfig
import (
115 AddDecoratorIfNeededCfg)
116 acc = AddDecoratorIfNeededCfg(flags)
117 kwargs.setdefault(
"useTrackSelection",
False)
118 kwargs.setdefault(
"EnableLumi",
False)
121 kwargs.setdefault(
'VertexContainerName', flags.PhysVal.IDPVM.PrimaryVertexContainer)
124 if flags.PhysVal.IDPVM.hardScatterStrategy
in [2, 3]:
126 from InDetPhysValMonitoring.addRecoJetsConfig
import (
127 AddRecoJetsIfNotExistingCfg)
128 acc.merge(AddRecoJetsIfNotExistingCfg(
129 flags, flags.PhysVal.IDPVM.jetsNameForHardScatter))
132 if flags.PhysVal.IDPVM.hardScatterStrategy == 3:
133 from InDetConfig.InDetGNNHardScatterSelectionConfig
import (
135 acc.merge(GNNSequenceCfg(flags))
138 if flags.PhysVal.IDPVM.hardScatterStrategy == 4:
139 from DerivationFrameworkHiggs.HIGG1D1CustomVertexConfig
import DiPhotonVertexCfg
140 acc.merge(DiPhotonVertexCfg(flags))
142 if flags.PhysVal.IDPVM.GRL:
143 kwargs.setdefault(
"useGRL",
True)
144 kwargs.setdefault(
'GoodRunsListSelectionTool', acc.popToolsAndMerge(
147 kwargs.setdefault(
"doIDTIDEPlots", flags.PhysVal.IDPVM.doIDTIDE)
148 kwargs.setdefault(
"setCSVName", flags.PhysVal.IDPVM.setCSVName)
150 if flags.PhysVal.IDPVM.doValidateTracksInJets:
151 kwargs.setdefault(
"JetContainerName", flags.PhysVal.IDPVM.jetCollection)
152 kwargs.setdefault(
"FillTrackInJetPlots",
True)
153 kwargs.setdefault(
'JetAbsEtaMin', 0)
154 kwargs.setdefault(
'JetAbsEtaMax', flags.PhysVal.IDPVM.JetAbsEtaMax)
155 kwargs.setdefault(
'JetPtMin', flags.PhysVal.IDPVM.JetPtMin)
156 kwargs.setdefault(
'JetPtMax', flags.PhysVal.IDPVM.JetPtMax)
157 kwargs.setdefault(
'maxTrkJetDR', flags.PhysVal.IDPVM.maxTrkJetDR)
158 kwargs.setdefault(
"FillTrackInBJetPlots",
159 flags.PhysVal.IDPVM.doValidateTracksInBJets)
161 kwargs.setdefault(
"JetContainerName",
'')
162 kwargs.setdefault(
"FillTrackInJetPlots",
False)
164 kwargs.setdefault(
"doPerAuthorPlots",
165 flags.PhysVal.IDPVM.doPerAuthorPlots)
167 if flags.Tracking.doTruth
and not flags.PhysVal.IDPVM.doRecoOnly:
168 kwargs.setdefault(
"TruthParticleContainerName",
"TruthParticles")
169 if 'TruthSelectionTool' not in kwargs:
170 kwargs.setdefault(
"TruthSelectionTool", acc.popToolsAndMerge(
173 doHyyHSSelection = flags.PhysVal.IDPVM.hardScatterStrategy == 4
174 if 'hardScatterSelectionTool' not in kwargs:
175 from InDetConfig.InDetHardScatterSelectionToolConfig
import (
176 InDetHardScatterSelectionToolCfg)
177 kwargs.setdefault(
"hardScatterSelectionTool", acc.popToolsAndMerge(
178 InDetHardScatterSelectionToolCfg(
180 RedoHardScatter=
not doHyyHSSelection,
181 SelectionMode=flags.PhysVal.IDPVM.hardScatterStrategy,
183 JetContainer=flags.PhysVal.IDPVM.jetsNameForHardScatter,
184 VertexContainer=flags.PhysVal.IDPVM.PrimaryVertexContainer
188 assert flags.PhysVal.IDPVM.PrimaryVertexContainer ==
'HggPrimaryVertices'
190 kwargs.setdefault(
"FillTruthToRecoNtuple",
191 flags.PhysVal.IDPVM.doValidateTruthToRecoNtuple)
192 kwargs.setdefault(
"doTruthOriginPlots",
193 flags.PhysVal.IDPVM.doTruthOriginPlots)
194 kwargs.setdefault(
"doDuplicatePlots",
195 flags.PhysVal.IDPVM.doDuplicatePlots)
196 kwargs.setdefault(
"doHitLevelPlots",
197 flags.PhysVal.IDPVM.doHitLevelPlots)
200 if not flags.PhysVal.IDPVM.doIDTIDE:
201 kwargs.setdefault(
"useVertexTruthMatchTool",
True)
202 kwargs.setdefault(
"VertexTruthMatchTool", acc.popToolsAndMerge(
205 if "trackTruthOriginTool" not in kwargs:
206 from InDetTrackSystematicsTools.InDetTrackSystematicsToolsConfig
import InDetTrackTruthOriginToolCfg
207 kwargs.setdefault(
"trackTruthOriginTool", acc.popToolsAndMerge(
208 InDetTrackTruthOriginToolCfg(flags)))
211 if flags.PhysVal.IDPVM.setTruthStrategy
in [
'All',
'PileUp']:
212 if "xAOD::TruthPileupEventContainer#TruthPileupEvents" not in flags.Input.TypedCollections:
213 print(
'WARNING Truth Strategy for InDetPhysValMonitoring set to %s but TruthPileupEvents are missing in the input' % (flags.PhysVal.IDPVM.setTruthStrategy))
214 kwargs.setdefault(
"PileupSwitch",
215 flags.PhysVal.IDPVM.setTruthStrategy)
217 elif flags.PhysVal.IDPVM.setTruthStrategy !=
'HardScatter':
218 print(
'WARNING Truth Strategy for for InDetPhysValMonitoring set to invalid option %s; valid flags are ["HardScatter", "All", "PileUp"]' % (
219 flags.PhysVal.IDPVM.setTruthStrategy))
223 kwargs.setdefault(
"TruthParticleContainerName",
'')
224 kwargs.setdefault(
"TruthVertexContainerName",
'')
225 kwargs.setdefault(
"TruthEvents",
'')
226 kwargs.setdefault(
"TruthPileupEvents",
'')
227 kwargs.setdefault(
"TruthSelectionTool",
None)
228 kwargs.setdefault(
"FillTruthToRecoNtuple",
False)
230 if flags.Detector.GeometryITk:
232 kwargs.setdefault(
"doTRTExtensionPlots",
False)
233 kwargs.setdefault(
"isITk",
True)
235 if flags.Reco.EnableHGTDExtension:
236 kwargs.setdefault(
"hasHGTDReco",
True)
238 if flags.PhysVal.IDPVM.doTechnicalEfficiency:
239 kwargs.setdefault(
"fillTechnicalEfficiency",
True)
240 kwargs.setdefault(
"EtaBins", flags.Tracking.ITkMainPass.etaBins
if flags.Detector.GeometryITk
242 kwargs.setdefault(
"MinNumberClusters", flags.Tracking.ITkMainPass.minClusters
if flags.Detector.GeometryITk
243 else [flags.Tracking.MainPass.minClusters])
246 kwargs.setdefault(
"DetailLevel", 200
if flags.PhysVal.IDPVM.doExpertOutput
else 100)
249 if flags.PhysVal.IDPVM.doIDTIDE:
250 kwargs.setdefault(
"doIDTIDEPlots",
True)
251 kwargs.setdefault(
"JetContainerName",
'AntiKt4EMPFlowJets')
252 kwargs.setdefault(
"FillTrackInJetPlots",
True)
255 kwargs.setdefault(
'JetAbsEtaMin', 0)
256 kwargs.setdefault(
'JetAbsEtaMax',
257 flags.PhysVal.IDPVM.JetAbsEtaMax)
258 kwargs.setdefault(
'maxTrkJetDR',
259 flags.PhysVal.IDPVM.maxTrkJetDR)
261 kwargs.setdefault(
'JetPtMin', 100)
262 kwargs.setdefault(
'JetPtMax', 5000)
264 kwargs.setdefault(
"doPRW", flags.PhysVal.IDPVM.doPRW)
266 acc.setPrivateTools(CompFactory.InDetPhysValMonitoringTool(**kwargs))
410 acc = ComponentAccumulator()
412 if flags.PhysVal.IDPVM.doValidateMergedLargeD0Tracks:
413 from DerivationFrameworkInDet.InDetToolsConfig
import InDetLRTMergeCfg
414 acc.merge(InDetLRTMergeCfg(
416 InputTrackParticleLocations=[
417 "InDetTrackParticles",
418 flags.PhysVal.IDPVM.largeD0TrackCollection,
422 from ActsConfig.ActsAnalysisConfig
import PhysValActsCfg
425 InDetPhysValMonitoringToolCfg),
426 (flags.PhysVal.IDPVM.doValidateMuonMatchedTracks,
427 InDetPhysValMonitoringToolMuonsCfg),
428 (flags.PhysVal.IDPVM.doValidateElectronMatchedTracks,
429 InDetPhysValMonitoringToolElectronsCfg),
430 (flags.PhysVal.IDPVM.doValidateLargeD0Tracks,
431 InDetLargeD0PhysValMonitoringToolCfg),
432 (flags.PhysVal.IDPVM.doValidateMergedLargeD0Tracks,
433 InDetMergedLargeD0PhysValMonitoringToolCfg),
434 (flags.PhysVal.IDPVM.doValidateLowPtRoITracks,
435 InDetLowPtRoIPhysValMonitoringToolCfg),
436 (flags.PhysVal.IDPVM.doValidateLooseTracks,
437 InDetPhysValMonitoringToolLooseCfg),
438 (flags.PhysVal.IDPVM.doValidateTightPrimaryTracks,
439 InDetPhysValMonitoringToolTightPrimaryCfg),
440 (flags.PhysVal.IDPVM.doValidateHILoose,
441 InDetPhysValMonitoringToolHILooseCfg),
442 (flags.PhysVal.IDPVM.doValidateGSFTracks,
443 InDetPhysValMonitoringToolGSFCfg),
444 (flags.PhysVal.IDPVM.doActs,
449 for enabled, creator
in mons:
451 tools.append(acc.popToolsAndMerge(creator(flags)))
453 for col
in flags.PhysVal.IDPVM.validateExtraTrackCollections:
456 flags, name=
'InDetPhysValMonitoringTool'+prefix,
457 SubFolder=prefix+
'Tracks/',
458 TrackParticleContainerName=prefix+
'TrackParticles'
461 from PhysValMonitoring.PhysValMonitoringConfig
import PhysValMonitoringCfg
462 acc.merge(PhysValMonitoringCfg(flags, tools=tools))