126def InDetPhysValMonitoringToolCfg(flags, **kwargs):
127 from InDetPhysValMonitoring.InDetPhysValDecorationConfig import (
128 AddDecoratorIfNeededCfg)
129 acc = AddDecoratorIfNeededCfg(flags)
130 kwargs.setdefault("useTrackSelection", False)
131 kwargs.setdefault("EnableLumi", False)
132
133 acc.merge(HistogramDefinitionSvcCfg(flags))
134 kwargs.setdefault('VertexContainerName', flags.PhysVal.IDPVM.PrimaryVertexContainer)
135 hs_strategy = HardScatterStrategy(flags.PhysVal.IDPVM.hardScatterStrategy)
136
137
138 if hs_strategy in [HardScatterStrategy.SUM_PTW, HardScatterStrategy.PVNN]:
139
140 from InDetPhysValMonitoring.addRecoJetsConfig import (
141 AddRecoJetsIfNotExistingCfg)
142 acc.merge(AddRecoJetsIfNotExistingCfg(
143 flags, flags.PhysVal.IDPVM.jetsNameForHardScatter))
144
145
146 if hs_strategy == HardScatterStrategy.PVNN:
147 from InDetConfig.InDetPVNNSelectionConfig import (
148 PVNNSequenceCfg)
149 acc.merge(PVNNSequenceCfg(flags))
150
151
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))
157
158 if flags.PhysVal.IDPVM.GRL:
159 kwargs.setdefault("useGRL", True)
160 kwargs.setdefault('GoodRunsListSelectionTool', acc.popToolsAndMerge(
161 GoodRunsListSelectionToolCfg(flags)))
162
163 kwargs.setdefault("doIDTIDEPlots", flags.PhysVal.IDPVM.doIDTIDE)
164 kwargs.setdefault("setCSVName", flags.PhysVal.IDPVM.setCSVName)
165
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)
176 else:
177 kwargs.setdefault("JetContainerName", '')
178 kwargs.setdefault("FillTrackInJetPlots", False)
179
180 kwargs.setdefault("doPerAuthorPlots",
181 flags.PhysVal.IDPVM.doPerAuthorPlots)
182
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(
187 InDetRttTruthSelectionToolCfg(flags)))
188
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(
196 flags,
197 RedoHardScatter=not doHyyHSSelection,
198 SelectionMode=hs_strategy,
199
200 JetContainer=flags.PhysVal.IDPVM.jetsNameForHardScatter,
201 VertexContainer=flags.PhysVal.IDPVM.PrimaryVertexContainer
202 )))
203
204 if doHyyHSSelection:
205 assert flags.PhysVal.IDPVM.PrimaryVertexContainer == 'HggPrimaryVertices'
206
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)
215
216
217 if not flags.PhysVal.IDPVM.doIDTIDE:
218 kwargs.setdefault("useVertexTruthMatchTool", True)
219 kwargs.setdefault("VertexTruthMatchTool", acc.popToolsAndMerge(
220 InDetVertexTruthMatchToolCfg(flags)))
221
222 if "trackTruthOriginTool" not in kwargs:
223 from InDetTrackSystematicsTools.InDetTrackSystematicsToolsConfig import InDetTrackTruthOriginToolCfg
224 kwargs.setdefault("trackTruthOriginTool", acc.popToolsAndMerge(
225 InDetTrackTruthOriginToolCfg(flags)))
226
227
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)
233
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))
237
238 else:
239
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)
246
247 if flags.Detector.GeometryITk:
248
249 kwargs.setdefault("doTRTExtensionPlots", False)
250 kwargs.setdefault("isITk", True)
251
252 if flags.Reco.EnableHGTDExtension:
253 kwargs.setdefault("hasHGTDReco", True)
254
255 if flags.PhysVal.IDPVM.doTechnicalEfficiency:
256 kwargs.setdefault("fillTechnicalEfficiency", True)
257 kwargs.setdefault("EtaBins", flags.Tracking.ITkMainPass.etaBins if flags.Detector.GeometryITk
258 else [-1, 9999.])
259 kwargs.setdefault("MinNumberClusters", flags.Tracking.ITkMainPass.minClusters if flags.Detector.GeometryITk
260 else [flags.Tracking.MainPass.minClusters])
261
262
263 kwargs.setdefault("DetailLevel", 200 if flags.PhysVal.IDPVM.doExpertOutput else 100)
264
265
266 if flags.PhysVal.IDPVM.doIDTIDE:
267 kwargs.setdefault("doIDTIDEPlots", True)
268 kwargs.setdefault("JetContainerName", 'AntiKt4EMPFlowJets')
269 kwargs.setdefault("FillTrackInJetPlots", True)
270
271
272 kwargs.setdefault('JetAbsEtaMin', 0)
273 kwargs.setdefault('JetAbsEtaMax',
274 flags.PhysVal.IDPVM.JetAbsEtaMax)
275 kwargs.setdefault('maxTrkJetDR',
276 flags.PhysVal.IDPVM.maxTrkJetDR)
277
278 kwargs.setdefault('JetPtMin', 100)
279 kwargs.setdefault('JetPtMax', 5000)
280
281 kwargs.setdefault("doPRW", flags.PhysVal.IDPVM.doPRW)
282 kwargs.setdefault("doVertexTrackPlots", flags.Tracking.perigeeExpression is
283 not PerigeeExpression.Vertex)
284
285 acc.setPrivateTools(CompFactory.InDetPhysValMonitoringTool(**kwargs))
286 return acc
287
288
void print(char *figname, TCanvas *c1)