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 EventBookkeeperTools.EventBookkeeperToolsConfig
import CutFlowSvcCfg
150 acc.merge(CutFlowSvcCfg(flags))
151 from DerivationFrameworkHiggs.HIGG1D1CustomVertexConfig
import DiPhotonVertexCfg
152 acc.merge(DiPhotonVertexCfg(flags))
154 if flags.PhysVal.IDPVM.GRL:
155 kwargs.setdefault(
"useGRL",
True)
156 kwargs.setdefault(
'GoodRunsListSelectionTool', acc.popToolsAndMerge(
159 kwargs.setdefault(
"doIDTIDEPlots", flags.PhysVal.IDPVM.doIDTIDE)
160 kwargs.setdefault(
"setCSVName", flags.PhysVal.IDPVM.setCSVName)
162 if flags.PhysVal.IDPVM.doValidateTracksInJets:
163 kwargs.setdefault(
"JetContainerName", flags.PhysVal.IDPVM.jetCollection)
164 kwargs.setdefault(
"FillTrackInJetPlots",
True)
165 kwargs.setdefault(
'JetAbsEtaMin', 0)
166 kwargs.setdefault(
'JetAbsEtaMax', flags.PhysVal.IDPVM.JetAbsEtaMax)
167 kwargs.setdefault(
'JetPtMin', flags.PhysVal.IDPVM.JetPtMin)
168 kwargs.setdefault(
'JetPtMax', flags.PhysVal.IDPVM.JetPtMax)
169 kwargs.setdefault(
'maxTrkJetDR', flags.PhysVal.IDPVM.maxTrkJetDR)
170 kwargs.setdefault(
"FillTrackInBJetPlots",
171 flags.PhysVal.IDPVM.doValidateTracksInBJets)
173 kwargs.setdefault(
"JetContainerName",
'')
174 kwargs.setdefault(
"FillTrackInJetPlots",
False)
176 kwargs.setdefault(
"doPerAuthorPlots",
177 flags.PhysVal.IDPVM.doPerAuthorPlots)
179 if flags.Tracking.doTruth
and not flags.PhysVal.IDPVM.doRecoOnly:
180 kwargs.setdefault(
"TruthParticleContainerName",
"TruthParticles")
181 if 'TruthSelectionTool' not in kwargs:
182 kwargs.setdefault(
"TruthSelectionTool", acc.popToolsAndMerge(
185 doHyyHSSelection = hs_strategy == HardScatterStrategy.HYY
186 if 'hardScatterSelectionTool' not in kwargs:
187 from InDetConfig.InDetHardScatterSelectionToolConfig
import (
188 InDetHardScatterSelectionToolCfg)
189 kwargs.setdefault(
"hardScatterSelectionTool", acc.popToolsAndMerge(
190 InDetHardScatterSelectionToolCfg(
192 RedoHardScatter=
not doHyyHSSelection,
193 SelectionMode=hs_strategy,
195 JetContainer=flags.PhysVal.IDPVM.jetsNameForHardScatter,
196 VertexContainer=flags.PhysVal.IDPVM.PrimaryVertexContainer
200 assert flags.PhysVal.IDPVM.PrimaryVertexContainer ==
'HggPrimaryVertices'
202 kwargs.setdefault(
"FillTruthToRecoNtuple",
203 flags.PhysVal.IDPVM.doValidateTruthToRecoNtuple)
204 kwargs.setdefault(
"doTruthOriginPlots",
205 flags.PhysVal.IDPVM.doTruthOriginPlots)
206 kwargs.setdefault(
"doDuplicatePlots",
207 flags.PhysVal.IDPVM.doDuplicatePlots)
208 kwargs.setdefault(
"doHitLevelPlots",
209 flags.PhysVal.IDPVM.doHitLevelPlots)
212 if not flags.PhysVal.IDPVM.doIDTIDE:
213 kwargs.setdefault(
"useVertexTruthMatchTool",
True)
214 kwargs.setdefault(
"VertexTruthMatchTool", acc.popToolsAndMerge(
217 if "trackTruthOriginTool" not in kwargs:
218 from InDetTrackSystematicsTools.InDetTrackSystematicsToolsConfig
import InDetTrackTruthOriginToolCfg
219 kwargs.setdefault(
"trackTruthOriginTool", acc.popToolsAndMerge(
220 InDetTrackTruthOriginToolCfg(flags)))
223 if flags.PhysVal.IDPVM.setTruthStrategy
in [
'All',
'PileUp']:
224 if "xAOD::TruthPileupEventContainer#TruthPileupEvents" not in flags.Input.TypedCollections:
225 print(
'WARNING Truth Strategy for InDetPhysValMonitoring set to %s but TruthPileupEvents are missing in the input' % (flags.PhysVal.IDPVM.setTruthStrategy))
226 kwargs.setdefault(
"PileupSwitch",
227 flags.PhysVal.IDPVM.setTruthStrategy)
229 elif flags.PhysVal.IDPVM.setTruthStrategy !=
'HardScatter':
230 print(
'WARNING Truth Strategy for for InDetPhysValMonitoring set to invalid option %s; valid flags are ["HardScatter", "All", "PileUp"]' % (
231 flags.PhysVal.IDPVM.setTruthStrategy))
235 kwargs.setdefault(
"TruthParticleContainerName",
'')
236 kwargs.setdefault(
"TruthVertexContainerName",
'')
237 kwargs.setdefault(
"TruthEvents",
'')
238 kwargs.setdefault(
"TruthPileupEvents",
'')
239 kwargs.setdefault(
"TruthSelectionTool",
None)
240 kwargs.setdefault(
"FillTruthToRecoNtuple",
False)
242 if flags.Detector.GeometryITk:
244 kwargs.setdefault(
"doTRTExtensionPlots",
False)
245 kwargs.setdefault(
"isITk",
True)
247 if flags.Reco.EnableHGTDExtension:
248 kwargs.setdefault(
"hasHGTDReco",
True)
250 if flags.PhysVal.IDPVM.doTechnicalEfficiency:
251 kwargs.setdefault(
"fillTechnicalEfficiency",
True)
252 kwargs.setdefault(
"EtaBins", flags.Tracking.ITkMainPass.etaBins
if flags.Detector.GeometryITk
254 kwargs.setdefault(
"MinNumberClusters", flags.Tracking.ITkMainPass.minClusters
if flags.Detector.GeometryITk
255 else [flags.Tracking.MainPass.minClusters])
258 kwargs.setdefault(
"DetailLevel", 200
if flags.PhysVal.IDPVM.doExpertOutput
else 100)
261 if flags.PhysVal.IDPVM.doIDTIDE:
262 kwargs.setdefault(
"doIDTIDEPlots",
True)
263 kwargs.setdefault(
"JetContainerName",
'AntiKt4EMPFlowJets')
264 kwargs.setdefault(
"FillTrackInJetPlots",
True)
267 kwargs.setdefault(
'JetAbsEtaMin', 0)
268 kwargs.setdefault(
'JetAbsEtaMax',
269 flags.PhysVal.IDPVM.JetAbsEtaMax)
270 kwargs.setdefault(
'maxTrkJetDR',
271 flags.PhysVal.IDPVM.maxTrkJetDR)
273 kwargs.setdefault(
'JetPtMin', 100)
274 kwargs.setdefault(
'JetPtMax', 5000)
276 kwargs.setdefault(
"doPRW", flags.PhysVal.IDPVM.doPRW)
278 acc.setPrivateTools(CompFactory.InDetPhysValMonitoringTool(**kwargs))
422 acc = ComponentAccumulator()
424 if flags.PhysVal.IDPVM.doValidateMergedLargeD0Tracks:
425 from DerivationFrameworkInDet.InDetToolsConfig
import InDetLRTMergeCfg
426 acc.merge(InDetLRTMergeCfg(
428 InputTrackParticleLocations=[
429 "InDetTrackParticles",
430 flags.PhysVal.IDPVM.largeD0TrackCollection,
434 from ActsConfig.ActsAnalysisConfig
import PhysValActsCfg
437 InDetPhysValMonitoringToolCfg),
438 (flags.PhysVal.IDPVM.doValidateMuonMatchedTracks,
439 InDetPhysValMonitoringToolMuonsCfg),
440 (flags.PhysVal.IDPVM.doValidateElectronMatchedTracks,
441 InDetPhysValMonitoringToolElectronsCfg),
442 (flags.PhysVal.IDPVM.doValidateLargeD0Tracks,
443 InDetLargeD0PhysValMonitoringToolCfg),
444 (flags.PhysVal.IDPVM.doValidateMergedLargeD0Tracks,
445 InDetMergedLargeD0PhysValMonitoringToolCfg),
446 (flags.PhysVal.IDPVM.doValidateLowPtRoITracks,
447 InDetLowPtRoIPhysValMonitoringToolCfg),
448 (flags.PhysVal.IDPVM.doValidateLooseTracks,
449 InDetPhysValMonitoringToolLooseCfg),
450 (flags.PhysVal.IDPVM.doValidateTightPrimaryTracks,
451 InDetPhysValMonitoringToolTightPrimaryCfg),
452 (flags.PhysVal.IDPVM.doValidateHILoose,
453 InDetPhysValMonitoringToolHILooseCfg),
454 (flags.PhysVal.IDPVM.doValidateGSFTracks,
455 InDetPhysValMonitoringToolGSFCfg),
456 (flags.PhysVal.IDPVM.doActs,
461 for enabled, creator
in mons:
463 tools.append(acc.popToolsAndMerge(creator(flags)))
465 for col
in flags.PhysVal.IDPVM.validateExtraTrackCollections:
468 flags, name=
'InDetPhysValMonitoringTool'+prefix,
469 SubFolder=prefix+
'Tracks/',
470 TrackParticleContainerName=prefix+
'TrackParticles'
473 from PhysValMonitoring.PhysValMonitoringConfig
import PhysValMonitoringCfg
474 acc.merge(PhysValMonitoringCfg(flags, tools=tools))