48 flags, name="InDetRttTruthSelectionTool", **kwargs):
49 acc = ComponentAccumulator()
51 kwargs.setdefault(
"requireStable",
True)
52 kwargs.setdefault(
"requireCharged",
True)
53 kwargs.setdefault(
"selectedCharge", flags.PhysVal.IDPVM.selectedCharge)
54 kwargs.setdefault(
"requireOnlyPrimary",
55 True if kwargs.pop(
"OnlyDressPrimaryTracks",
True)
57 kwargs.setdefault(
"maxProdVertRadius",
58 flags.PhysVal.IDPVM.maxProdVertRadius)
59 kwargs.setdefault(
"minProdVertRadius",
60 flags.PhysVal.IDPVM.minProdVertRadius)
61 kwargs.setdefault(
"minAbsD0",
62 flags.PhysVal.IDPVM.minAbsD0)
64 if flags.Detector.GeometryID:
65 if flags.PhysVal.IDPVM.doValidateLargeD0Tracks
or flags.PhysVal.IDPVM.doValidateMergedLargeD0Tracks:
66 kwargs.setdefault(
"maxEta", 3.0)
68 kwargs.setdefault(
"maxEta", 2.5)
69 elif flags.Detector.GeometryITk:
70 kwargs.setdefault(
"maxEta", 4.0)
72 kwargs.setdefault(
"minPt", flags.PhysVal.IDPVM.truthMinPt)
73 kwargs.setdefault(
"ancestorList", flags.PhysVal.IDPVM.ancestorIDs)
74 kwargs.setdefault(
"requireSiHit", flags.PhysVal.IDPVM.requiredSiHits)
75 kwargs.setdefault(
"vetoPdgId", flags.PhysVal.IDPVM.vetoPdgId)
76 kwargs.setdefault(
"pdgId", flags.PhysVal.IDPVM.pdgId)
78 if "radiusCylinder" in kwargs
or "zDisc" in kwargs:
79 from TrkConfig.AtlasExtrapolatorConfig
import AtlasExtrapolatorCfg
80 extrapolator = acc.popToolsAndMerge(AtlasExtrapolatorCfg(flags))
81 acc.addPublicTool(extrapolator)
82 kwargs.setdefault(
"Extrapolator", extrapolator)
84 kwargs.setdefault(
"Extrapolator",
None)
86 acc.setPrivateTools(CompFactory.AthTruthSelectionTool(name, **kwargs))
123 from InDetPhysValMonitoring.InDetPhysValDecorationConfig
import (
124 AddDecoratorIfNeededCfg)
125 acc = AddDecoratorIfNeededCfg(flags)
126 kwargs.setdefault(
"useTrackSelection",
False)
127 kwargs.setdefault(
"EnableLumi",
False)
130 kwargs.setdefault(
'VertexContainerName', flags.PhysVal.IDPVM.PrimaryVertexContainer)
134 if hs_strategy
in [HardScatterStrategy.SUM_PTW, HardScatterStrategy.GNN]:
136 from InDetPhysValMonitoring.addRecoJetsConfig
import (
137 AddRecoJetsIfNotExistingCfg)
138 acc.merge(AddRecoJetsIfNotExistingCfg(
139 flags, flags.PhysVal.IDPVM.jetsNameForHardScatter))
142 if hs_strategy == HardScatterStrategy.GNN:
143 from InDetConfig.InDetGNNHardScatterSelectionConfig
import (
145 acc.merge(GNNSequenceCfg(flags))
148 if hs_strategy == HardScatterStrategy.HYY:
149 from DerivationFrameworkHiggs.HIGG1D1CustomVertexConfig
import DiPhotonVertexCfg
150 acc.merge(DiPhotonVertexCfg(flags))
152 if flags.PhysVal.IDPVM.GRL:
153 kwargs.setdefault(
"useGRL",
True)
154 kwargs.setdefault(
'GoodRunsListSelectionTool', acc.popToolsAndMerge(
157 kwargs.setdefault(
"doIDTIDEPlots", flags.PhysVal.IDPVM.doIDTIDE)
158 kwargs.setdefault(
"setCSVName", flags.PhysVal.IDPVM.setCSVName)
160 if flags.PhysVal.IDPVM.doValidateTracksInJets:
161 kwargs.setdefault(
"JetContainerName", flags.PhysVal.IDPVM.jetCollection)
162 kwargs.setdefault(
"FillTrackInJetPlots",
True)
163 kwargs.setdefault(
'JetAbsEtaMin', 0)
164 kwargs.setdefault(
'JetAbsEtaMax', flags.PhysVal.IDPVM.JetAbsEtaMax)
165 kwargs.setdefault(
'JetPtMin', flags.PhysVal.IDPVM.JetPtMin)
166 kwargs.setdefault(
'JetPtMax', flags.PhysVal.IDPVM.JetPtMax)
167 kwargs.setdefault(
'maxTrkJetDR', flags.PhysVal.IDPVM.maxTrkJetDR)
168 kwargs.setdefault(
"FillTrackInBJetPlots",
169 flags.PhysVal.IDPVM.doValidateTracksInBJets)
171 kwargs.setdefault(
"JetContainerName",
'')
172 kwargs.setdefault(
"FillTrackInJetPlots",
False)
174 kwargs.setdefault(
"doPerAuthorPlots",
175 flags.PhysVal.IDPVM.doPerAuthorPlots)
177 if flags.Tracking.doTruth
and not flags.PhysVal.IDPVM.doRecoOnly:
178 kwargs.setdefault(
"TruthParticleContainerName",
"TruthParticles")
179 if 'TruthSelectionTool' not in kwargs:
180 kwargs.setdefault(
"TruthSelectionTool", acc.popToolsAndMerge(
183 doHyyHSSelection = hs_strategy == HardScatterStrategy.HYY
184 if 'hardScatterSelectionTool' not in kwargs:
185 from InDetConfig.InDetHardScatterSelectionToolConfig
import (
186 InDetHardScatterSelectionToolCfg)
187 kwargs.setdefault(
"hardScatterSelectionTool", acc.popToolsAndMerge(
188 InDetHardScatterSelectionToolCfg(
190 RedoHardScatter=
not doHyyHSSelection,
191 SelectionMode=hs_strategy,
193 JetContainer=flags.PhysVal.IDPVM.jetsNameForHardScatter,
194 VertexContainer=flags.PhysVal.IDPVM.PrimaryVertexContainer
198 assert flags.PhysVal.IDPVM.PrimaryVertexContainer ==
'HggPrimaryVertices'
200 kwargs.setdefault(
"FillTruthToRecoNtuple",
201 flags.PhysVal.IDPVM.doValidateTruthToRecoNtuple)
202 kwargs.setdefault(
"doTruthOriginPlots",
203 flags.PhysVal.IDPVM.doTruthOriginPlots)
204 kwargs.setdefault(
"doDuplicatePlots",
205 flags.PhysVal.IDPVM.doDuplicatePlots)
206 kwargs.setdefault(
"doHitLevelPlots",
207 flags.PhysVal.IDPVM.doHitLevelPlots)
210 if not flags.PhysVal.IDPVM.doIDTIDE:
211 kwargs.setdefault(
"useVertexTruthMatchTool",
True)
212 kwargs.setdefault(
"VertexTruthMatchTool", acc.popToolsAndMerge(
215 if "trackTruthOriginTool" not in kwargs:
216 from InDetTrackSystematicsTools.InDetTrackSystematicsToolsConfig
import InDetTrackTruthOriginToolCfg
217 kwargs.setdefault(
"trackTruthOriginTool", acc.popToolsAndMerge(
218 InDetTrackTruthOriginToolCfg(flags)))
221 if flags.PhysVal.IDPVM.setTruthStrategy
in [
'All',
'PileUp']:
222 if "xAOD::TruthPileupEventContainer#TruthPileupEvents" not in flags.Input.TypedCollections:
223 print(
'WARNING Truth Strategy for InDetPhysValMonitoring set to %s but TruthPileupEvents are missing in the input' % (flags.PhysVal.IDPVM.setTruthStrategy))
224 kwargs.setdefault(
"PileupSwitch",
225 flags.PhysVal.IDPVM.setTruthStrategy)
227 elif flags.PhysVal.IDPVM.setTruthStrategy !=
'HardScatter':
228 print(
'WARNING Truth Strategy for for InDetPhysValMonitoring set to invalid option %s; valid flags are ["HardScatter", "All", "PileUp"]' % (
229 flags.PhysVal.IDPVM.setTruthStrategy))
233 kwargs.setdefault(
"TruthParticleContainerName",
'')
234 kwargs.setdefault(
"TruthVertexContainerName",
'')
235 kwargs.setdefault(
"TruthEvents",
'')
236 kwargs.setdefault(
"TruthPileupEvents",
'')
237 kwargs.setdefault(
"TruthSelectionTool",
None)
238 kwargs.setdefault(
"FillTruthToRecoNtuple",
False)
240 if flags.Detector.GeometryITk:
242 kwargs.setdefault(
"doTRTExtensionPlots",
False)
243 kwargs.setdefault(
"isITk",
True)
245 if flags.Reco.EnableHGTDExtension:
246 kwargs.setdefault(
"hasHGTDReco",
True)
248 if flags.PhysVal.IDPVM.doTechnicalEfficiency:
249 kwargs.setdefault(
"fillTechnicalEfficiency",
True)
250 kwargs.setdefault(
"EtaBins", flags.Tracking.ITkMainPass.etaBins
if flags.Detector.GeometryITk
252 kwargs.setdefault(
"MinNumberClusters", flags.Tracking.ITkMainPass.minClusters
if flags.Detector.GeometryITk
253 else [flags.Tracking.MainPass.minClusters])
256 kwargs.setdefault(
"DetailLevel", 200
if flags.PhysVal.IDPVM.doExpertOutput
else 100)
259 if flags.PhysVal.IDPVM.doIDTIDE:
260 kwargs.setdefault(
"doIDTIDEPlots",
True)
261 kwargs.setdefault(
"JetContainerName",
'AntiKt4EMPFlowJets')
262 kwargs.setdefault(
"FillTrackInJetPlots",
True)
265 kwargs.setdefault(
'JetAbsEtaMin', 0)
266 kwargs.setdefault(
'JetAbsEtaMax',
267 flags.PhysVal.IDPVM.JetAbsEtaMax)
268 kwargs.setdefault(
'maxTrkJetDR',
269 flags.PhysVal.IDPVM.maxTrkJetDR)
271 kwargs.setdefault(
'JetPtMin', 100)
272 kwargs.setdefault(
'JetPtMax', 5000)
274 kwargs.setdefault(
"doPRW", flags.PhysVal.IDPVM.doPRW)
276 acc.setPrivateTools(CompFactory.InDetPhysValMonitoringTool(**kwargs))
420 acc = ComponentAccumulator()
422 if flags.PhysVal.IDPVM.doValidateMergedLargeD0Tracks:
423 from DerivationFrameworkInDet.InDetToolsConfig
import InDetLRTMergeCfg
424 acc.merge(InDetLRTMergeCfg(
426 InputTrackParticleLocations=[
427 "InDetTrackParticles",
428 flags.PhysVal.IDPVM.largeD0TrackCollection,
432 from ActsConfig.ActsAnalysisConfig
import PhysValActsCfg
435 InDetPhysValMonitoringToolCfg),
436 (flags.PhysVal.IDPVM.doValidateMuonMatchedTracks,
437 InDetPhysValMonitoringToolMuonsCfg),
438 (flags.PhysVal.IDPVM.doValidateElectronMatchedTracks,
439 InDetPhysValMonitoringToolElectronsCfg),
440 (flags.PhysVal.IDPVM.doValidateLargeD0Tracks,
441 InDetLargeD0PhysValMonitoringToolCfg),
442 (flags.PhysVal.IDPVM.doValidateMergedLargeD0Tracks,
443 InDetMergedLargeD0PhysValMonitoringToolCfg),
444 (flags.PhysVal.IDPVM.doValidateLowPtRoITracks,
445 InDetLowPtRoIPhysValMonitoringToolCfg),
446 (flags.PhysVal.IDPVM.doValidateLooseTracks,
447 InDetPhysValMonitoringToolLooseCfg),
448 (flags.PhysVal.IDPVM.doValidateTightPrimaryTracks,
449 InDetPhysValMonitoringToolTightPrimaryCfg),
450 (flags.PhysVal.IDPVM.doValidateHILoose,
451 InDetPhysValMonitoringToolHILooseCfg),
452 (flags.PhysVal.IDPVM.doValidateGSFTracks,
453 InDetPhysValMonitoringToolGSFCfg),
454 (flags.PhysVal.IDPVM.doActs,
459 for enabled, creator
in mons:
461 tools.append(acc.popToolsAndMerge(creator(flags)))
463 for col
in flags.PhysVal.IDPVM.validateExtraTrackCollections:
466 flags, name=
'InDetPhysValMonitoringTool'+prefix,
467 SubFolder=prefix+
'Tracks/',
468 TrackParticleContainerName=prefix+
'TrackParticles'
471 from PhysValMonitoring.PhysValMonitoringConfig
import PhysValMonitoringCfg
472 acc.merge(PhysValMonitoringCfg(flags, tools=tools))