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