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))
113 from InDetPhysValMonitoring.InDetPhysValDecorationConfig
import (
114 AddDecoratorIfNeededCfg)
115 acc = AddDecoratorIfNeededCfg(flags)
116 kwargs.setdefault(
"useTrackSelection",
False)
117 kwargs.setdefault(
"EnableLumi",
False)
120 kwargs.setdefault(
'VertexContainerName', flags.PhysVal.IDPVM.PrimaryVertexContainer)
123 if flags.PhysVal.IDPVM.hardScatterStrategy
in [2, 3]:
125 from InDetPhysValMonitoring.addRecoJetsConfig
import (
126 AddRecoJetsIfNotExistingCfg)
127 acc.merge(AddRecoJetsIfNotExistingCfg(
128 flags, flags.PhysVal.IDPVM.jetsNameForHardScatter))
131 if flags.PhysVal.IDPVM.hardScatterStrategy == 3:
132 from InDetConfig.InDetGNNHardScatterSelectionConfig
import (
134 acc.merge(GNNSequenceCfg(flags))
137 if flags.PhysVal.IDPVM.hardScatterStrategy == 4:
138 from DerivationFrameworkHiggs.HIGG1D1CustomVertexConfig
import DiPhotonVertexCfg
139 acc.merge(DiPhotonVertexCfg(flags))
141 if flags.PhysVal.IDPVM.GRL:
142 kwargs.setdefault(
"useGRL",
True)
143 kwargs.setdefault(
'GoodRunsListSelectionTool', acc.popToolsAndMerge(
146 kwargs.setdefault(
"doIDTIDEPlots", flags.PhysVal.IDPVM.doIDTIDE)
147 kwargs.setdefault(
"setCSVName", flags.PhysVal.IDPVM.setCSVName)
149 if flags.PhysVal.IDPVM.doValidateTracksInJets:
150 kwargs.setdefault(
"JetContainerName", flags.PhysVal.IDPVM.jetCollection)
151 kwargs.setdefault(
"FillTrackInJetPlots",
True)
152 kwargs.setdefault(
'JetAbsEtaMin', 0)
153 kwargs.setdefault(
'JetAbsEtaMax', flags.PhysVal.IDPVM.JetAbsEtaMax)
154 kwargs.setdefault(
'JetPtMin', flags.PhysVal.IDPVM.JetPtMin)
155 kwargs.setdefault(
'JetPtMax', flags.PhysVal.IDPVM.JetPtMax)
156 kwargs.setdefault(
'maxTrkJetDR', flags.PhysVal.IDPVM.maxTrkJetDR)
157 kwargs.setdefault(
"FillTrackInBJetPlots",
158 flags.PhysVal.IDPVM.doValidateTracksInBJets)
160 kwargs.setdefault(
"JetContainerName",
'')
161 kwargs.setdefault(
"FillTrackInJetPlots",
False)
163 kwargs.setdefault(
"doPerAuthorPlots",
164 flags.PhysVal.IDPVM.doPerAuthorPlots)
166 if flags.Tracking.doTruth
and not flags.PhysVal.IDPVM.doRecoOnly:
167 kwargs.setdefault(
"TruthParticleContainerName",
"TruthParticles")
168 if 'TruthSelectionTool' not in kwargs:
169 kwargs.setdefault(
"TruthSelectionTool", acc.popToolsAndMerge(
172 doHyyHSSelection = flags.PhysVal.IDPVM.hardScatterStrategy == 4
173 if 'hardScatterSelectionTool' not in kwargs:
174 from InDetConfig.InDetHardScatterSelectionToolConfig
import (
175 InDetHardScatterSelectionToolCfg)
176 kwargs.setdefault(
"hardScatterSelectionTool", acc.popToolsAndMerge(
177 InDetHardScatterSelectionToolCfg(
179 RedoHardScatter=
not doHyyHSSelection,
180 SelectionMode=flags.PhysVal.IDPVM.hardScatterStrategy,
182 JetContainer=flags.PhysVal.IDPVM.jetsNameForHardScatter,
183 VertexContainer=flags.PhysVal.IDPVM.PrimaryVertexContainer
187 assert flags.PhysVal.IDPVM.PrimaryVertexContainer ==
'HggPrimaryVertices'
189 kwargs.setdefault(
"FillTruthToRecoNtuple",
190 flags.PhysVal.IDPVM.doValidateTruthToRecoNtuple)
191 kwargs.setdefault(
"doTruthOriginPlots",
192 flags.PhysVal.IDPVM.doTruthOriginPlots)
193 kwargs.setdefault(
"doDuplicatePlots",
194 flags.PhysVal.IDPVM.doDuplicatePlots)
195 kwargs.setdefault(
"doHitLevelPlots",
196 flags.PhysVal.IDPVM.doHitLevelPlots)
199 if not flags.PhysVal.IDPVM.doIDTIDE:
200 kwargs.setdefault(
"useVertexTruthMatchTool",
True)
201 kwargs.setdefault(
"VertexTruthMatchTool", acc.popToolsAndMerge(
204 if "trackTruthOriginTool" not in kwargs:
205 from InDetTrackSystematicsTools.InDetTrackSystematicsToolsConfig
import InDetTrackTruthOriginToolCfg
206 kwargs.setdefault(
"trackTruthOriginTool", acc.popToolsAndMerge(
207 InDetTrackTruthOriginToolCfg(flags)))
210 if flags.PhysVal.IDPVM.setTruthStrategy
in [
'All',
'PileUp']:
211 if "xAOD::TruthPileupEventContainer#TruthPileupEvents" not in flags.Input.TypedCollections:
212 print(
'WARNING Truth Strategy for InDetPhysValMonitoring set to %s but TruthPileupEvents are missing in the input' % (flags.PhysVal.IDPVM.setTruthStrategy))
213 kwargs.setdefault(
"PileupSwitch",
214 flags.PhysVal.IDPVM.setTruthStrategy)
216 elif flags.PhysVal.IDPVM.setTruthStrategy !=
'HardScatter':
217 print(
'WARNING Truth Strategy for for InDetPhysValMonitoring set to invalid option %s; valid flags are ["HardScatter", "All", "PileUp"]' % (
218 flags.PhysVal.IDPVM.setTruthStrategy))
222 kwargs.setdefault(
"TruthParticleContainerName",
'')
223 kwargs.setdefault(
"TruthVertexContainerName",
'')
224 kwargs.setdefault(
"TruthEvents",
'')
225 kwargs.setdefault(
"TruthPileupEvents",
'')
226 kwargs.setdefault(
"TruthSelectionTool",
None)
227 kwargs.setdefault(
"FillTruthToRecoNtuple",
False)
229 if flags.Detector.GeometryITk:
231 kwargs.setdefault(
"doTRTExtensionPlots",
False)
232 kwargs.setdefault(
"isITk",
True)
234 if flags.PhysVal.IDPVM.doTechnicalEfficiency:
235 kwargs.setdefault(
"fillTechnicalEfficiency",
True)
236 kwargs.setdefault(
"EtaBins", flags.Tracking.ITkMainPass.etaBins
if flags.Detector.GeometryITk
238 kwargs.setdefault(
"MinNumberClusters", flags.Tracking.ITkMainPass.minClusters
if flags.Detector.GeometryITk
239 else [flags.Tracking.MainPass.minClusters])
242 kwargs.setdefault(
"DetailLevel", 200
if flags.PhysVal.IDPVM.doExpertOutput
else 100)
245 if flags.PhysVal.IDPVM.doIDTIDE:
246 kwargs.setdefault(
"doIDTIDEPlots",
True)
247 kwargs.setdefault(
"JetContainerName",
'AntiKt4EMPFlowJets')
248 kwargs.setdefault(
"FillTrackInJetPlots",
True)
251 kwargs.setdefault(
'JetAbsEtaMin', 0)
252 kwargs.setdefault(
'JetAbsEtaMax',
253 flags.PhysVal.IDPVM.JetAbsEtaMax)
254 kwargs.setdefault(
'maxTrkJetDR',
255 flags.PhysVal.IDPVM.maxTrkJetDR)
257 kwargs.setdefault(
'JetPtMin', 100)
258 kwargs.setdefault(
'JetPtMax', 5000)
260 kwargs.setdefault(
"doPRW", flags.PhysVal.IDPVM.doPRW)
262 acc.setPrivateTools(CompFactory.InDetPhysValMonitoringTool(**kwargs))
406 acc = ComponentAccumulator()
408 if flags.PhysVal.IDPVM.doValidateMergedLargeD0Tracks:
409 from DerivationFrameworkInDet.InDetToolsConfig
import InDetLRTMergeCfg
410 acc.merge(InDetLRTMergeCfg(
412 InputTrackParticleLocations=[
413 "InDetTrackParticles",
414 flags.PhysVal.IDPVM.largeD0TrackCollection,
418 from ActsConfig.ActsAnalysisConfig
import PhysValActsCfg
421 InDetPhysValMonitoringToolCfg),
422 (flags.PhysVal.IDPVM.doValidateMuonMatchedTracks,
423 InDetPhysValMonitoringToolMuonsCfg),
424 (flags.PhysVal.IDPVM.doValidateElectronMatchedTracks,
425 InDetPhysValMonitoringToolElectronsCfg),
426 (flags.PhysVal.IDPVM.doValidateLargeD0Tracks,
427 InDetLargeD0PhysValMonitoringToolCfg),
428 (flags.PhysVal.IDPVM.doValidateMergedLargeD0Tracks,
429 InDetMergedLargeD0PhysValMonitoringToolCfg),
430 (flags.PhysVal.IDPVM.doValidateLowPtRoITracks,
431 InDetLowPtRoIPhysValMonitoringToolCfg),
432 (flags.PhysVal.IDPVM.doValidateLooseTracks,
433 InDetPhysValMonitoringToolLooseCfg),
434 (flags.PhysVal.IDPVM.doValidateTightPrimaryTracks,
435 InDetPhysValMonitoringToolTightPrimaryCfg),
436 (flags.PhysVal.IDPVM.doValidateHILoose,
437 InDetPhysValMonitoringToolHILooseCfg),
438 (flags.PhysVal.IDPVM.doValidateGSFTracks,
439 InDetPhysValMonitoringToolGSFCfg),
440 (flags.PhysVal.IDPVM.doActs,
445 for enabled, creator
in mons:
447 tools.append(acc.popToolsAndMerge(creator(flags)))
449 for col
in flags.PhysVal.IDPVM.validateExtraTrackCollections:
452 flags, name=
'InDetPhysValMonitoringTool'+prefix,
453 SubFolder=prefix+
'Tracks/',
454 TrackParticleContainerName=prefix+
'TrackParticles'
457 from PhysValMonitoring.PhysValMonitoringConfig
import PhysValMonitoringCfg
458 acc.merge(PhysValMonitoringCfg(flags, tools=tools))