122def InDetPhysValMonitoringToolCfg(flags, **kwargs):
123 from InDetPhysValMonitoring.InDetPhysValDecorationConfig import (
124 AddDecoratorIfNeededCfg)
125 acc = AddDecoratorIfNeededCfg(flags)
126 kwargs.setdefault("useTrackSelection", False)
127 kwargs.setdefault("EnableLumi", False)
128
129 acc.merge(HistogramDefinitionSvcCfg(flags))
130 kwargs.setdefault('VertexContainerName', flags.PhysVal.IDPVM.PrimaryVertexContainer)
131 hs_strategy = HardScatterStrategy(flags.PhysVal.IDPVM.hardScatterStrategy)
132
133
134 if hs_strategy in [HardScatterStrategy.SUM_PTW, HardScatterStrategy.GNN]:
135
136 from InDetPhysValMonitoring.addRecoJetsConfig import (
137 AddRecoJetsIfNotExistingCfg)
138 acc.merge(AddRecoJetsIfNotExistingCfg(
139 flags, flags.PhysVal.IDPVM.jetsNameForHardScatter))
140
141
142 if hs_strategy == HardScatterStrategy.GNN:
143 from InDetConfig.InDetGNNHardScatterSelectionConfig import (
144 GNNSequenceCfg)
145 acc.merge(GNNSequenceCfg(flags))
146
147
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))
153
154 if flags.PhysVal.IDPVM.GRL:
155 kwargs.setdefault("useGRL", True)
156 kwargs.setdefault('GoodRunsListSelectionTool', acc.popToolsAndMerge(
157 GoodRunsListSelectionToolCfg(flags)))
158
159 kwargs.setdefault("doIDTIDEPlots", flags.PhysVal.IDPVM.doIDTIDE)
160 kwargs.setdefault("setCSVName", flags.PhysVal.IDPVM.setCSVName)
161
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)
172 else:
173 kwargs.setdefault("JetContainerName", '')
174 kwargs.setdefault("FillTrackInJetPlots", False)
175
176 kwargs.setdefault("doPerAuthorPlots",
177 flags.PhysVal.IDPVM.doPerAuthorPlots)
178
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(
183 InDetRttTruthSelectionToolCfg(flags)))
184
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(
191 flags,
192 RedoHardScatter=not doHyyHSSelection,
193 SelectionMode=hs_strategy,
194
195 JetContainer=flags.PhysVal.IDPVM.jetsNameForHardScatter,
196 VertexContainer=flags.PhysVal.IDPVM.PrimaryVertexContainer
197 )))
198
199 if doHyyHSSelection:
200 assert flags.PhysVal.IDPVM.PrimaryVertexContainer == 'HggPrimaryVertices'
201
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)
210
211
212 if not flags.PhysVal.IDPVM.doIDTIDE:
213 kwargs.setdefault("useVertexTruthMatchTool", True)
214 kwargs.setdefault("VertexTruthMatchTool", acc.popToolsAndMerge(
215 InDetVertexTruthMatchToolCfg(flags)))
216
217 if "trackTruthOriginTool" not in kwargs:
218 from InDetTrackSystematicsTools.InDetTrackSystematicsToolsConfig import InDetTrackTruthOriginToolCfg
219 kwargs.setdefault("trackTruthOriginTool", acc.popToolsAndMerge(
220 InDetTrackTruthOriginToolCfg(flags)))
221
222
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)
228
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))
232
233 else:
234
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)
241
242 if flags.Detector.GeometryITk:
243
244 kwargs.setdefault("doTRTExtensionPlots", False)
245 kwargs.setdefault("isITk", True)
246
247 if flags.Reco.EnableHGTDExtension:
248 kwargs.setdefault("hasHGTDReco", True)
249
250 if flags.PhysVal.IDPVM.doTechnicalEfficiency:
251 kwargs.setdefault("fillTechnicalEfficiency", True)
252 kwargs.setdefault("EtaBins", flags.Tracking.ITkMainPass.etaBins if flags.Detector.GeometryITk
253 else [-1, 9999.])
254 kwargs.setdefault("MinNumberClusters", flags.Tracking.ITkMainPass.minClusters if flags.Detector.GeometryITk
255 else [flags.Tracking.MainPass.minClusters])
256
257
258 kwargs.setdefault("DetailLevel", 200 if flags.PhysVal.IDPVM.doExpertOutput else 100)
259
260
261 if flags.PhysVal.IDPVM.doIDTIDE:
262 kwargs.setdefault("doIDTIDEPlots", True)
263 kwargs.setdefault("JetContainerName", 'AntiKt4EMPFlowJets')
264 kwargs.setdefault("FillTrackInJetPlots", True)
265
266
267 kwargs.setdefault('JetAbsEtaMin', 0)
268 kwargs.setdefault('JetAbsEtaMax',
269 flags.PhysVal.IDPVM.JetAbsEtaMax)
270 kwargs.setdefault('maxTrkJetDR',
271 flags.PhysVal.IDPVM.maxTrkJetDR)
272
273 kwargs.setdefault('JetPtMin', 100)
274 kwargs.setdefault('JetPtMax', 5000)
275
276 kwargs.setdefault("doPRW", flags.PhysVal.IDPVM.doPRW)
277
278 acc.setPrivateTools(CompFactory.InDetPhysValMonitoringTool(**kwargs))
279 return acc
280
281
void print(char *figname, TCanvas *c1)