51 flags, name="InDetRttTruthSelectionTool", **kwargs):
52 acc = ComponentAccumulator()
54 kwargs.setdefault(
"requireStable",
True)
55 kwargs.setdefault(
"requireCharged",
True)
56 kwargs.setdefault(
"selectedCharge", flags.PhysVal.IDPVM.selectedCharge)
57 kwargs.setdefault(
"requireOnlyPrimary",
58 True if kwargs.pop(
"OnlyDressPrimaryTracks",
True)
60 kwargs.setdefault(
"maxProdVertRadius",
61 flags.PhysVal.IDPVM.maxProdVertRadius)
62 kwargs.setdefault(
"minProdVertRadius",
63 flags.PhysVal.IDPVM.minProdVertRadius)
64 kwargs.setdefault(
"minAbsD0",
65 flags.PhysVal.IDPVM.minAbsD0)
67 if flags.Detector.GeometryID:
68 if flags.PhysVal.IDPVM.doValidateLargeD0Tracks
or flags.PhysVal.IDPVM.doValidateMergedLargeD0Tracks:
69 kwargs.setdefault(
"maxEta", 3.0)
71 kwargs.setdefault(
"maxEta", 2.5)
72 elif flags.Detector.GeometryITk:
73 kwargs.setdefault(
"maxEta", 4.0)
75 kwargs.setdefault(
"minPt", flags.PhysVal.IDPVM.truthMinPt)
76 kwargs.setdefault(
"ancestorList", flags.PhysVal.IDPVM.ancestorIDs)
77 kwargs.setdefault(
"requireSiHit", flags.PhysVal.IDPVM.requiredSiHits)
78 kwargs.setdefault(
"vetoPdgId", flags.PhysVal.IDPVM.vetoPdgId)
79 kwargs.setdefault(
"pdgId", flags.PhysVal.IDPVM.pdgId)
81 if "radiusCylinder" in kwargs
or "zDisc" in kwargs:
82 from TrkConfig.AtlasExtrapolatorConfig
import AtlasExtrapolatorCfg
83 extrapolator = acc.popToolsAndMerge(AtlasExtrapolatorCfg(flags))
84 acc.addPublicTool(extrapolator)
85 kwargs.setdefault(
"Extrapolator", extrapolator)
87 kwargs.setdefault(
"Extrapolator",
None)
89 acc.setPrivateTools(CompFactory.AthTruthSelectionTool(name, **kwargs))
126 from InDetPhysValMonitoring.InDetPhysValDecorationConfig
import (
127 AddDecoratorIfNeededCfg)
128 acc = AddDecoratorIfNeededCfg(flags)
129 kwargs.setdefault(
"useTrackSelection",
False)
130 kwargs.setdefault(
"EnableLumi",
False)
133 kwargs.setdefault(
'VertexContainerName', flags.PhysVal.IDPVM.PrimaryVertexContainer)
137 if hs_strategy
in [HardScatterStrategy.SUM_PTW, HardScatterStrategy.GNN]:
139 from InDetPhysValMonitoring.addRecoJetsConfig
import (
140 AddRecoJetsIfNotExistingCfg)
141 acc.merge(AddRecoJetsIfNotExistingCfg(
142 flags, flags.PhysVal.IDPVM.jetsNameForHardScatter))
145 if hs_strategy == HardScatterStrategy.GNN:
146 from InDetConfig.InDetGNNHardScatterSelectionConfig
import (
148 acc.merge(GNNSequenceCfg(flags))
151 if hs_strategy == HardScatterStrategy.HYY:
152 from EventBookkeeperTools.EventBookkeeperToolsConfig
import CutFlowSvcCfg
153 acc.merge(CutFlowSvcCfg(flags))
154 from DerivationFrameworkHiggs.HIGG1D1CustomVertexConfig
import DiPhotonVertexCfg
155 acc.merge(DiPhotonVertexCfg(flags))
157 if flags.PhysVal.IDPVM.GRL:
158 kwargs.setdefault(
"useGRL",
True)
159 kwargs.setdefault(
'GoodRunsListSelectionTool', acc.popToolsAndMerge(
162 kwargs.setdefault(
"doIDTIDEPlots", flags.PhysVal.IDPVM.doIDTIDE)
163 kwargs.setdefault(
"setCSVName", flags.PhysVal.IDPVM.setCSVName)
165 if flags.PhysVal.IDPVM.doValidateTracksInJets:
166 kwargs.setdefault(
"JetContainerName", flags.PhysVal.IDPVM.jetCollection)
167 kwargs.setdefault(
"FillTrackInJetPlots",
True)
168 kwargs.setdefault(
'JetAbsEtaMin', 0)
169 kwargs.setdefault(
'JetAbsEtaMax', flags.PhysVal.IDPVM.JetAbsEtaMax)
170 kwargs.setdefault(
'JetPtMin', flags.PhysVal.IDPVM.JetPtMin)
171 kwargs.setdefault(
'JetPtMax', flags.PhysVal.IDPVM.JetPtMax)
172 kwargs.setdefault(
'maxTrkJetDR', flags.PhysVal.IDPVM.maxTrkJetDR)
173 kwargs.setdefault(
"FillTrackInBJetPlots",
174 flags.PhysVal.IDPVM.doValidateTracksInBJets)
176 kwargs.setdefault(
"JetContainerName",
'')
177 kwargs.setdefault(
"FillTrackInJetPlots",
False)
179 kwargs.setdefault(
"doPerAuthorPlots",
180 flags.PhysVal.IDPVM.doPerAuthorPlots)
182 if flags.Tracking.doTruth
and not flags.PhysVal.IDPVM.doRecoOnly:
183 kwargs.setdefault(
"TruthParticleContainerName",
"TruthParticles")
184 if 'TruthSelectionTool' not in kwargs:
185 kwargs.setdefault(
"TruthSelectionTool", acc.popToolsAndMerge(
188 if hs_strategy
is not HardScatterStrategy.DEFAULT:
189 doHyyHSSelection = hs_strategy == HardScatterStrategy.HYY
190 if 'hardScatterSelectionTool' not in kwargs:
191 from InDetConfig.InDetHardScatterSelectionToolConfig
import (
192 InDetHardScatterSelectionToolCfg)
193 kwargs.setdefault(
"hardScatterSelectionTool", acc.popToolsAndMerge(
194 InDetHardScatterSelectionToolCfg(
196 RedoHardScatter=
not doHyyHSSelection,
197 SelectionMode=hs_strategy,
199 JetContainer=flags.PhysVal.IDPVM.jetsNameForHardScatter,
200 VertexContainer=flags.PhysVal.IDPVM.PrimaryVertexContainer
204 assert flags.PhysVal.IDPVM.PrimaryVertexContainer ==
'HggPrimaryVertices'
206 kwargs.setdefault(
"FillTruthToRecoNtuple",
207 flags.PhysVal.IDPVM.doValidateTruthToRecoNtuple)
208 kwargs.setdefault(
"doTruthOriginPlots",
209 flags.PhysVal.IDPVM.doTruthOriginPlots)
210 kwargs.setdefault(
"doDuplicatePlots",
211 flags.PhysVal.IDPVM.doDuplicatePlots)
212 kwargs.setdefault(
"doHitLevelPlots",
213 flags.PhysVal.IDPVM.doHitLevelPlots)
216 if not flags.PhysVal.IDPVM.doIDTIDE:
217 kwargs.setdefault(
"useVertexTruthMatchTool",
True)
218 kwargs.setdefault(
"VertexTruthMatchTool", acc.popToolsAndMerge(
221 if "trackTruthOriginTool" not in kwargs:
222 from InDetTrackSystematicsTools.InDetTrackSystematicsToolsConfig
import InDetTrackTruthOriginToolCfg
223 kwargs.setdefault(
"trackTruthOriginTool", acc.popToolsAndMerge(
224 InDetTrackTruthOriginToolCfg(flags)))
227 if flags.PhysVal.IDPVM.setTruthStrategy
in [
'All',
'PileUp']:
228 if "xAOD::TruthPileupEventContainer#TruthPileupEvents" not in flags.Input.TypedCollections:
229 print(
'WARNING Truth Strategy for InDetPhysValMonitoring set to %s but TruthPileupEvents are missing in the input' % (flags.PhysVal.IDPVM.setTruthStrategy))
230 kwargs.setdefault(
"PileupSwitch",
231 flags.PhysVal.IDPVM.setTruthStrategy)
233 elif flags.PhysVal.IDPVM.setTruthStrategy !=
'HardScatter':
234 print(
'WARNING Truth Strategy for for InDetPhysValMonitoring set to invalid option %s; valid flags are ["HardScatter", "All", "PileUp"]' % (
235 flags.PhysVal.IDPVM.setTruthStrategy))
239 kwargs.setdefault(
"TruthParticleContainerName",
'')
240 kwargs.setdefault(
"TruthVertexContainerName",
'')
241 kwargs.setdefault(
"TruthEvents",
'')
242 kwargs.setdefault(
"TruthPileupEvents",
'')
243 kwargs.setdefault(
"TruthSelectionTool",
None)
244 kwargs.setdefault(
"FillTruthToRecoNtuple",
False)
246 if flags.Detector.GeometryITk:
248 kwargs.setdefault(
"doTRTExtensionPlots",
False)
249 kwargs.setdefault(
"isITk",
True)
251 if flags.Reco.EnableHGTDExtension:
252 kwargs.setdefault(
"hasHGTDReco",
True)
254 if flags.PhysVal.IDPVM.doTechnicalEfficiency:
255 kwargs.setdefault(
"fillTechnicalEfficiency",
True)
256 kwargs.setdefault(
"EtaBins", flags.Tracking.ITkMainPass.etaBins
if flags.Detector.GeometryITk
258 kwargs.setdefault(
"MinNumberClusters", flags.Tracking.ITkMainPass.minClusters
if flags.Detector.GeometryITk
259 else [flags.Tracking.MainPass.minClusters])
262 kwargs.setdefault(
"DetailLevel", 200
if flags.PhysVal.IDPVM.doExpertOutput
else 100)
265 if flags.PhysVal.IDPVM.doIDTIDE:
266 kwargs.setdefault(
"doIDTIDEPlots",
True)
267 kwargs.setdefault(
"JetContainerName",
'AntiKt4EMPFlowJets')
268 kwargs.setdefault(
"FillTrackInJetPlots",
True)
271 kwargs.setdefault(
'JetAbsEtaMin', 0)
272 kwargs.setdefault(
'JetAbsEtaMax',
273 flags.PhysVal.IDPVM.JetAbsEtaMax)
274 kwargs.setdefault(
'maxTrkJetDR',
275 flags.PhysVal.IDPVM.maxTrkJetDR)
277 kwargs.setdefault(
'JetPtMin', 100)
278 kwargs.setdefault(
'JetPtMax', 5000)
280 kwargs.setdefault(
"doPRW", flags.PhysVal.IDPVM.doPRW)
282 acc.setPrivateTools(CompFactory.InDetPhysValMonitoringTool(**kwargs))
426 acc = ComponentAccumulator()
428 if flags.PhysVal.IDPVM.doValidateMergedLargeD0Tracks:
429 from DerivationFrameworkInDet.InDetToolsConfig
import InDetLRTMergeCfg
430 acc.merge(InDetLRTMergeCfg(
432 InputTrackParticleLocations=[
433 "InDetTrackParticles",
434 flags.PhysVal.IDPVM.largeD0TrackCollection,
438 from ActsConfig.ActsAnalysisConfig
import PhysValActsCfg
441 InDetPhysValMonitoringToolCfg),
442 (flags.PhysVal.IDPVM.doValidateMuonMatchedTracks,
443 InDetPhysValMonitoringToolMuonsCfg),
444 (flags.PhysVal.IDPVM.doValidateElectronMatchedTracks,
445 InDetPhysValMonitoringToolElectronsCfg),
446 (flags.PhysVal.IDPVM.doValidateLargeD0Tracks,
447 InDetLargeD0PhysValMonitoringToolCfg),
448 (flags.PhysVal.IDPVM.doValidateMergedLargeD0Tracks,
449 InDetMergedLargeD0PhysValMonitoringToolCfg),
450 (flags.PhysVal.IDPVM.doValidateLowPtRoITracks,
451 InDetLowPtRoIPhysValMonitoringToolCfg),
452 (flags.PhysVal.IDPVM.doValidateLooseTracks,
453 InDetPhysValMonitoringToolLooseCfg),
454 (flags.PhysVal.IDPVM.doValidateTightPrimaryTracks,
455 InDetPhysValMonitoringToolTightPrimaryCfg),
456 (flags.PhysVal.IDPVM.doValidateHILoose,
457 InDetPhysValMonitoringToolHILooseCfg),
458 (flags.PhysVal.IDPVM.doValidateGSFTracks,
459 InDetPhysValMonitoringToolGSFCfg),
460 (flags.PhysVal.IDPVM.doActs,
465 for enabled, creator
in mons:
467 tools.append(acc.popToolsAndMerge(creator(flags)))
469 for col
in flags.PhysVal.IDPVM.validateExtraTrackCollections:
472 flags, name=
'InDetPhysValMonitoringTool'+prefix,
473 SubFolder=prefix+
'Tracks/',
474 TrackParticleContainerName=prefix+
'TrackParticles'
477 from PhysValMonitoring.PhysValMonitoringConfig
import PhysValMonitoringCfg
478 acc.merge(PhysValMonitoringCfg(flags, tools=tools))