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 DerivationFrameworkHiggs.HIGG1D1CustomVertexConfig import DiPhotonVertexCfg
150 acc.merge(DiPhotonVertexCfg(flags))
151
152 if flags.PhysVal.IDPVM.GRL:
153 kwargs.setdefault("useGRL", True)
154 kwargs.setdefault('GoodRunsListSelectionTool', acc.popToolsAndMerge(
155 GoodRunsListSelectionToolCfg(flags)))
156
157 kwargs.setdefault("doIDTIDEPlots", flags.PhysVal.IDPVM.doIDTIDE)
158 kwargs.setdefault("setCSVName", flags.PhysVal.IDPVM.setCSVName)
159
160 if flags.PhysVal.IDPVM.doValidateTracksInJets:
161 kwargs.setdefault("JetContainerName", flags.PhysVal.IDPVM.jetCollection)
162 kwargs.setdefault("FillTrackInJetPlots", True)
163 kwargs.setdefault('JetAbsEtaMin', 0)
164 kwargs.setdefault('JetAbsEtaMax', flags.PhysVal.IDPVM.JetAbsEtaMax)
165 kwargs.setdefault('JetPtMin', flags.PhysVal.IDPVM.JetPtMin)
166 kwargs.setdefault('JetPtMax', flags.PhysVal.IDPVM.JetPtMax)
167 kwargs.setdefault('maxTrkJetDR', flags.PhysVal.IDPVM.maxTrkJetDR)
168 kwargs.setdefault("FillTrackInBJetPlots",
169 flags.PhysVal.IDPVM.doValidateTracksInBJets)
170 else:
171 kwargs.setdefault("JetContainerName", '')
172 kwargs.setdefault("FillTrackInJetPlots", False)
173
174 kwargs.setdefault("doPerAuthorPlots",
175 flags.PhysVal.IDPVM.doPerAuthorPlots)
176
177 if flags.Tracking.doTruth and not flags.PhysVal.IDPVM.doRecoOnly:
178 kwargs.setdefault("TruthParticleContainerName", "TruthParticles")
179 if 'TruthSelectionTool' not in kwargs:
180 kwargs.setdefault("TruthSelectionTool", acc.popToolsAndMerge(
181 InDetRttTruthSelectionToolCfg(flags)))
182
183 doHyyHSSelection = hs_strategy == HardScatterStrategy.HYY
184 if 'hardScatterSelectionTool' not in kwargs:
185 from InDetConfig.InDetHardScatterSelectionToolConfig import (
186 InDetHardScatterSelectionToolCfg)
187 kwargs.setdefault("hardScatterSelectionTool", acc.popToolsAndMerge(
188 InDetHardScatterSelectionToolCfg(
189 flags,
190 RedoHardScatter=not doHyyHSSelection,
191 SelectionMode=hs_strategy,
192
193 JetContainer=flags.PhysVal.IDPVM.jetsNameForHardScatter,
194 VertexContainer=flags.PhysVal.IDPVM.PrimaryVertexContainer
195 )))
196
197 if doHyyHSSelection:
198 assert flags.PhysVal.IDPVM.PrimaryVertexContainer == 'HggPrimaryVertices'
199
200 kwargs.setdefault("FillTruthToRecoNtuple",
201 flags.PhysVal.IDPVM.doValidateTruthToRecoNtuple)
202 kwargs.setdefault("doTruthOriginPlots",
203 flags.PhysVal.IDPVM.doTruthOriginPlots)
204 kwargs.setdefault("doDuplicatePlots",
205 flags.PhysVal.IDPVM.doDuplicatePlots)
206 kwargs.setdefault("doHitLevelPlots",
207 flags.PhysVal.IDPVM.doHitLevelPlots)
208
209
210 if not flags.PhysVal.IDPVM.doIDTIDE:
211 kwargs.setdefault("useVertexTruthMatchTool", True)
212 kwargs.setdefault("VertexTruthMatchTool", acc.popToolsAndMerge(
213 InDetVertexTruthMatchToolCfg(flags)))
214
215 if "trackTruthOriginTool" not in kwargs:
216 from InDetTrackSystematicsTools.InDetTrackSystematicsToolsConfig import InDetTrackTruthOriginToolCfg
217 kwargs.setdefault("trackTruthOriginTool", acc.popToolsAndMerge(
218 InDetTrackTruthOriginToolCfg(flags)))
219
220
221 if flags.PhysVal.IDPVM.setTruthStrategy in ['All', 'PileUp']:
222 if "xAOD::TruthPileupEventContainer#TruthPileupEvents" not in flags.Input.TypedCollections:
223 print(
'WARNING Truth Strategy for InDetPhysValMonitoring set to %s but TruthPileupEvents are missing in the input' % (flags.PhysVal.IDPVM.setTruthStrategy))
224 kwargs.setdefault("PileupSwitch",
225 flags.PhysVal.IDPVM.setTruthStrategy)
226
227 elif flags.PhysVal.IDPVM.setTruthStrategy != 'HardScatter':
228 print(
'WARNING Truth Strategy for for InDetPhysValMonitoring set to invalid option %s; valid flags are ["HardScatter", "All", "PileUp"]' % (
229 flags.PhysVal.IDPVM.setTruthStrategy))
230
231 else:
232
233 kwargs.setdefault("TruthParticleContainerName", '')
234 kwargs.setdefault("TruthVertexContainerName", '')
235 kwargs.setdefault("TruthEvents", '')
236 kwargs.setdefault("TruthPileupEvents", '')
237 kwargs.setdefault("TruthSelectionTool", None)
238 kwargs.setdefault("FillTruthToRecoNtuple", False)
239
240 if flags.Detector.GeometryITk:
241
242 kwargs.setdefault("doTRTExtensionPlots", False)
243 kwargs.setdefault("isITk", True)
244
245 if flags.Reco.EnableHGTDExtension:
246 kwargs.setdefault("hasHGTDReco", True)
247
248 if flags.PhysVal.IDPVM.doTechnicalEfficiency:
249 kwargs.setdefault("fillTechnicalEfficiency", True)
250 kwargs.setdefault("EtaBins", flags.Tracking.ITkMainPass.etaBins if flags.Detector.GeometryITk
251 else [-1, 9999.])
252 kwargs.setdefault("MinNumberClusters", flags.Tracking.ITkMainPass.minClusters if flags.Detector.GeometryITk
253 else [flags.Tracking.MainPass.minClusters])
254
255
256 kwargs.setdefault("DetailLevel", 200 if flags.PhysVal.IDPVM.doExpertOutput else 100)
257
258
259 if flags.PhysVal.IDPVM.doIDTIDE:
260 kwargs.setdefault("doIDTIDEPlots", True)
261 kwargs.setdefault("JetContainerName", 'AntiKt4EMPFlowJets')
262 kwargs.setdefault("FillTrackInJetPlots", True)
263
264
265 kwargs.setdefault('JetAbsEtaMin', 0)
266 kwargs.setdefault('JetAbsEtaMax',
267 flags.PhysVal.IDPVM.JetAbsEtaMax)
268 kwargs.setdefault('maxTrkJetDR',
269 flags.PhysVal.IDPVM.maxTrkJetDR)
270
271 kwargs.setdefault('JetPtMin', 100)
272 kwargs.setdefault('JetPtMax', 5000)
273
274 kwargs.setdefault("doPRW", flags.PhysVal.IDPVM.doPRW)
275
276 acc.setPrivateTools(CompFactory.InDetPhysValMonitoringTool(**kwargs))
277 return acc
278
279
void print(char *figname, TCanvas *c1)