52 flags, name="InDetRttTruthSelectionTool", **kwargs):
53 acc = ComponentAccumulator()
55 kwargs.setdefault(
"requireStable",
True)
56 kwargs.setdefault(
"requireCharged",
True)
57 kwargs.setdefault(
"selectedCharge", flags.PhysVal.IDPVM.selectedCharge)
58 kwargs.setdefault(
"requireOnlyPrimary",
59 True if kwargs.pop(
"OnlyDressPrimaryTracks",
True)
61 kwargs.setdefault(
"maxProdVertRadius",
62 flags.PhysVal.IDPVM.maxProdVertRadius)
63 kwargs.setdefault(
"minProdVertRadius",
64 flags.PhysVal.IDPVM.minProdVertRadius)
65 kwargs.setdefault(
"minAbsD0",
66 flags.PhysVal.IDPVM.minAbsD0)
68 if flags.Detector.GeometryID:
69 if flags.PhysVal.IDPVM.doValidateLargeD0Tracks
or flags.PhysVal.IDPVM.doValidateMergedLargeD0Tracks:
70 kwargs.setdefault(
"maxEta", 3.0)
72 kwargs.setdefault(
"maxEta", 2.5)
73 elif flags.Detector.GeometryITk:
74 kwargs.setdefault(
"maxEta", 4.0)
76 kwargs.setdefault(
"minPt", flags.PhysVal.IDPVM.truthMinPt)
77 kwargs.setdefault(
"ancestorList", flags.PhysVal.IDPVM.ancestorIDs)
78 kwargs.setdefault(
"requireSiHit", flags.PhysVal.IDPVM.requiredSiHits)
79 kwargs.setdefault(
"vetoPdgId", flags.PhysVal.IDPVM.vetoPdgId)
80 kwargs.setdefault(
"pdgId", flags.PhysVal.IDPVM.pdgId)
82 if "radiusCylinder" in kwargs
or "zDisc" in kwargs:
83 from TrkConfig.AtlasExtrapolatorConfig
import AtlasExtrapolatorCfg
84 extrapolator = acc.popToolsAndMerge(AtlasExtrapolatorCfg(flags))
85 acc.addPublicTool(extrapolator)
86 kwargs.setdefault(
"Extrapolator", extrapolator)
88 kwargs.setdefault(
"Extrapolator",
None)
90 acc.setPrivateTools(CompFactory.AthTruthSelectionTool(name, **kwargs))
127 from InDetPhysValMonitoring.InDetPhysValDecorationConfig
import (
128 AddDecoratorIfNeededCfg)
129 acc = AddDecoratorIfNeededCfg(flags)
130 kwargs.setdefault(
"useTrackSelection",
False)
131 kwargs.setdefault(
"EnableLumi",
False)
134 kwargs.setdefault(
'VertexContainerName', flags.PhysVal.IDPVM.PrimaryVertexContainer)
138 if hs_strategy
in [HardScatterStrategy.SUM_PTW, HardScatterStrategy.PVNN]:
140 from InDetPhysValMonitoring.addRecoJetsConfig
import (
141 AddRecoJetsIfNotExistingCfg)
142 acc.merge(AddRecoJetsIfNotExistingCfg(
143 flags, flags.PhysVal.IDPVM.jetsNameForHardScatter))
146 if hs_strategy == HardScatterStrategy.PVNN:
147 from InDetConfig.InDetPVNNSelectionConfig
import (
149 acc.merge(PVNNSequenceCfg(flags))
152 if hs_strategy == HardScatterStrategy.HYY:
153 from EventBookkeeperTools.EventBookkeeperToolsConfig
import CutFlowSvcCfg
154 acc.merge(CutFlowSvcCfg(flags))
155 from DerivationFrameworkHiggs.HIGG1D1CustomVertexConfig
import DiPhotonVertexCfg
156 acc.merge(DiPhotonVertexCfg(flags))
158 if flags.PhysVal.IDPVM.GRL:
159 kwargs.setdefault(
"useGRL",
True)
160 kwargs.setdefault(
'GoodRunsListSelectionTool', acc.popToolsAndMerge(
163 kwargs.setdefault(
"doIDTIDEPlots", flags.PhysVal.IDPVM.doIDTIDE)
164 kwargs.setdefault(
"setCSVName", flags.PhysVal.IDPVM.setCSVName)
166 if flags.PhysVal.IDPVM.doValidateTracksInJets:
167 kwargs.setdefault(
"JetContainerName", flags.PhysVal.IDPVM.jetCollection)
168 kwargs.setdefault(
"FillTrackInJetPlots",
True)
169 kwargs.setdefault(
'JetAbsEtaMin', 0)
170 kwargs.setdefault(
'JetAbsEtaMax', flags.PhysVal.IDPVM.JetAbsEtaMax)
171 kwargs.setdefault(
'JetPtMin', flags.PhysVal.IDPVM.JetPtMin)
172 kwargs.setdefault(
'JetPtMax', flags.PhysVal.IDPVM.JetPtMax)
173 kwargs.setdefault(
'maxTrkJetDR', flags.PhysVal.IDPVM.maxTrkJetDR)
174 kwargs.setdefault(
"FillTrackInBJetPlots",
175 flags.PhysVal.IDPVM.doValidateTracksInBJets)
177 kwargs.setdefault(
"JetContainerName",
'')
178 kwargs.setdefault(
"FillTrackInJetPlots",
False)
180 kwargs.setdefault(
"doPerAuthorPlots",
181 flags.PhysVal.IDPVM.doPerAuthorPlots)
183 if flags.Tracking.doTruth
and not flags.PhysVal.IDPVM.doRecoOnly:
184 kwargs.setdefault(
"TruthParticleContainerName",
"TruthParticles")
185 if 'TruthSelectionTool' not in kwargs:
186 kwargs.setdefault(
"TruthSelectionTool", acc.popToolsAndMerge(
189 if hs_strategy
is not HardScatterStrategy.DEFAULT:
190 doHyyHSSelection = hs_strategy == HardScatterStrategy.HYY
191 if 'hardScatterSelectionTool' not in kwargs:
192 from InDetConfig.InDetHardScatterSelectionToolConfig
import (
193 InDetHardScatterSelectionToolCfg)
194 kwargs.setdefault(
"hardScatterSelectionTool", acc.popToolsAndMerge(
195 InDetHardScatterSelectionToolCfg(
197 RedoHardScatter=
not doHyyHSSelection,
198 SelectionMode=hs_strategy,
200 JetContainer=flags.PhysVal.IDPVM.jetsNameForHardScatter,
201 VertexContainer=flags.PhysVal.IDPVM.PrimaryVertexContainer
205 assert flags.PhysVal.IDPVM.PrimaryVertexContainer ==
'HggPrimaryVertices'
207 kwargs.setdefault(
"FillTruthToRecoNtuple",
208 flags.PhysVal.IDPVM.doValidateTruthToRecoNtuple)
209 kwargs.setdefault(
"doTruthOriginPlots",
210 flags.PhysVal.IDPVM.doTruthOriginPlots)
211 kwargs.setdefault(
"doDuplicatePlots",
212 flags.PhysVal.IDPVM.doDuplicatePlots)
213 kwargs.setdefault(
"doHitLevelPlots",
214 flags.PhysVal.IDPVM.doHitLevelPlots)
217 if not flags.PhysVal.IDPVM.doIDTIDE:
218 kwargs.setdefault(
"useVertexTruthMatchTool",
True)
219 kwargs.setdefault(
"VertexTruthMatchTool", acc.popToolsAndMerge(
222 if "trackTruthOriginTool" not in kwargs:
223 from InDetTrackSystematicsTools.InDetTrackSystematicsToolsConfig
import InDetTrackTruthOriginToolCfg
224 kwargs.setdefault(
"trackTruthOriginTool", acc.popToolsAndMerge(
225 InDetTrackTruthOriginToolCfg(flags)))
228 if flags.PhysVal.IDPVM.setTruthStrategy
in [
'All',
'PileUp']:
229 if "xAOD::TruthPileupEventContainer#TruthPileupEvents" not in flags.Input.TypedCollections:
230 print(
'WARNING Truth Strategy for InDetPhysValMonitoring set to %s but TruthPileupEvents are missing in the input' % (flags.PhysVal.IDPVM.setTruthStrategy))
231 kwargs.setdefault(
"PileupSwitch",
232 flags.PhysVal.IDPVM.setTruthStrategy)
234 elif flags.PhysVal.IDPVM.setTruthStrategy !=
'HardScatter':
235 print(
'WARNING Truth Strategy for for InDetPhysValMonitoring set to invalid option %s; valid flags are ["HardScatter", "All", "PileUp"]' % (
236 flags.PhysVal.IDPVM.setTruthStrategy))
240 kwargs.setdefault(
"TruthParticleContainerName",
'')
241 kwargs.setdefault(
"TruthVertexContainerName",
'')
242 kwargs.setdefault(
"TruthEvents",
'')
243 kwargs.setdefault(
"TruthPileupEvents",
'')
244 kwargs.setdefault(
"TruthSelectionTool",
None)
245 kwargs.setdefault(
"FillTruthToRecoNtuple",
False)
247 if flags.Detector.GeometryITk:
249 kwargs.setdefault(
"doTRTExtensionPlots",
False)
250 kwargs.setdefault(
"isITk",
True)
252 if flags.Reco.EnableHGTDExtension:
253 kwargs.setdefault(
"hasHGTDReco",
True)
255 if flags.PhysVal.IDPVM.doTechnicalEfficiency:
256 kwargs.setdefault(
"fillTechnicalEfficiency",
True)
257 kwargs.setdefault(
"EtaBins", flags.Tracking.ITkMainPass.etaBins
if flags.Detector.GeometryITk
259 kwargs.setdefault(
"MinNumberClusters", flags.Tracking.ITkMainPass.minClusters
if flags.Detector.GeometryITk
260 else [flags.Tracking.MainPass.minClusters])
263 kwargs.setdefault(
"DetailLevel", 200
if flags.PhysVal.IDPVM.doExpertOutput
else 100)
266 if flags.PhysVal.IDPVM.doIDTIDE:
267 kwargs.setdefault(
"doIDTIDEPlots",
True)
268 kwargs.setdefault(
"JetContainerName",
'AntiKt4EMPFlowJets')
269 kwargs.setdefault(
"FillTrackInJetPlots",
True)
272 kwargs.setdefault(
'JetAbsEtaMin', 0)
273 kwargs.setdefault(
'JetAbsEtaMax',
274 flags.PhysVal.IDPVM.JetAbsEtaMax)
275 kwargs.setdefault(
'maxTrkJetDR',
276 flags.PhysVal.IDPVM.maxTrkJetDR)
278 kwargs.setdefault(
'JetPtMin', 100)
279 kwargs.setdefault(
'JetPtMax', 5000)
281 kwargs.setdefault(
"doPRW", flags.PhysVal.IDPVM.doPRW)
282 kwargs.setdefault(
"doVertexTrackPlots", flags.Tracking.perigeeExpression
is
283 not PerigeeExpression.Vertex)
285 acc.setPrivateTools(CompFactory.InDetPhysValMonitoringTool(**kwargs))
429 acc = ComponentAccumulator()
431 if flags.PhysVal.IDPVM.doValidateMergedLargeD0Tracks:
432 from DerivationFrameworkInDet.InDetToolsConfig
import InDetLRTMergeCfg
433 acc.merge(InDetLRTMergeCfg(
435 InputTrackParticleLocations=[
436 "InDetTrackParticles",
437 flags.PhysVal.IDPVM.largeD0TrackCollection,
441 from ActsConfig.ActsAnalysisConfig
import PhysValActsCfg
444 InDetPhysValMonitoringToolCfg),
445 (flags.PhysVal.IDPVM.doValidateMuonMatchedTracks,
446 InDetPhysValMonitoringToolMuonsCfg),
447 (flags.PhysVal.IDPVM.doValidateElectronMatchedTracks,
448 InDetPhysValMonitoringToolElectronsCfg),
449 (flags.PhysVal.IDPVM.doValidateLargeD0Tracks,
450 InDetLargeD0PhysValMonitoringToolCfg),
451 (flags.PhysVal.IDPVM.doValidateMergedLargeD0Tracks,
452 InDetMergedLargeD0PhysValMonitoringToolCfg),
453 (flags.PhysVal.IDPVM.doValidateLowPtRoITracks,
454 InDetLowPtRoIPhysValMonitoringToolCfg),
455 (flags.PhysVal.IDPVM.doValidateLooseTracks,
456 InDetPhysValMonitoringToolLooseCfg),
457 (flags.PhysVal.IDPVM.doValidateTightPrimaryTracks,
458 InDetPhysValMonitoringToolTightPrimaryCfg),
459 (flags.PhysVal.IDPVM.doValidateHILoose,
460 InDetPhysValMonitoringToolHILooseCfg),
461 (flags.PhysVal.IDPVM.doValidateGSFTracks,
462 InDetPhysValMonitoringToolGSFCfg),
463 (flags.PhysVal.IDPVM.doActs,
468 for enabled, creator
in mons:
470 tools.append(acc.popToolsAndMerge(creator(flags)))
472 for col
in flags.PhysVal.IDPVM.validateExtraTrackCollections:
475 flags, name=
'InDetPhysValMonitoringTool'+prefix,
476 SubFolder=prefix+
'Tracks/',
477 TrackParticleContainerName=prefix+
'TrackParticles'
480 from PhysValMonitoring.PhysValMonitoringConfig
import PhysValMonitoringCfg
481 acc.merge(PhysValMonitoringCfg(flags, tools=tools))