112def InDetPhysValMonitoringToolCfg(flags, **kwargs):
113 from InDetPhysValMonitoring.InDetPhysValDecorationConfig import (
114 AddDecoratorIfNeededCfg)
115 acc = AddDecoratorIfNeededCfg(flags)
116 kwargs.setdefault("useTrackSelection", False)
117 kwargs.setdefault("EnableLumi", False)
118
119 acc.merge(HistogramDefinitionSvcCfg(flags))
120 kwargs.setdefault('VertexContainerName', flags.PhysVal.IDPVM.PrimaryVertexContainer)
121
122
123 if flags.PhysVal.IDPVM.hardScatterStrategy in [2, 3]:
124
125 from InDetPhysValMonitoring.addRecoJetsConfig import (
126 AddRecoJetsIfNotExistingCfg)
127 acc.merge(AddRecoJetsIfNotExistingCfg(
128 flags, flags.PhysVal.IDPVM.jetsNameForHardScatter))
129
130
131 if flags.PhysVal.IDPVM.hardScatterStrategy == 3:
132 from InDetConfig.InDetGNNHardScatterSelectionConfig import (
133 GNNSequenceCfg)
134 acc.merge(GNNSequenceCfg(flags))
135
136
137 if flags.PhysVal.IDPVM.hardScatterStrategy == 4:
138 from DerivationFrameworkHiggs.HIGG1D1CustomVertexConfig import DiPhotonVertexCfg
139 acc.merge(DiPhotonVertexCfg(flags))
140
141 if flags.PhysVal.IDPVM.GRL:
142 kwargs.setdefault("useGRL", True)
143 kwargs.setdefault('GoodRunsListSelectionTool', acc.popToolsAndMerge(
144 GoodRunsListSelectionToolCfg(flags)))
145
146 kwargs.setdefault("doIDTIDEPlots", flags.PhysVal.IDPVM.doIDTIDE)
147 kwargs.setdefault("setCSVName", flags.PhysVal.IDPVM.setCSVName)
148
149 if flags.PhysVal.IDPVM.doValidateTracksInJets:
150 kwargs.setdefault("JetContainerName", flags.PhysVal.IDPVM.jetCollection)
151 kwargs.setdefault("FillTrackInJetPlots", True)
152 kwargs.setdefault('JetAbsEtaMin', 0)
153 kwargs.setdefault('JetAbsEtaMax', flags.PhysVal.IDPVM.JetAbsEtaMax)
154 kwargs.setdefault('JetPtMin', flags.PhysVal.IDPVM.JetPtMin)
155 kwargs.setdefault('JetPtMax', flags.PhysVal.IDPVM.JetPtMax)
156 kwargs.setdefault('maxTrkJetDR', flags.PhysVal.IDPVM.maxTrkJetDR)
157 kwargs.setdefault("FillTrackInBJetPlots",
158 flags.PhysVal.IDPVM.doValidateTracksInBJets)
159 else:
160 kwargs.setdefault("JetContainerName", '')
161 kwargs.setdefault("FillTrackInJetPlots", False)
162
163 kwargs.setdefault("doPerAuthorPlots",
164 flags.PhysVal.IDPVM.doPerAuthorPlots)
165
166 if flags.Tracking.doTruth and not flags.PhysVal.IDPVM.doRecoOnly:
167 kwargs.setdefault("TruthParticleContainerName", "TruthParticles")
168 if 'TruthSelectionTool' not in kwargs:
169 kwargs.setdefault("TruthSelectionTool", acc.popToolsAndMerge(
170 InDetRttTruthSelectionToolCfg(flags)))
171
172 doHyyHSSelection = flags.PhysVal.IDPVM.hardScatterStrategy == 4
173 if 'hardScatterSelectionTool' not in kwargs:
174 from InDetConfig.InDetHardScatterSelectionToolConfig import (
175 InDetHardScatterSelectionToolCfg)
176 kwargs.setdefault("hardScatterSelectionTool", acc.popToolsAndMerge(
177 InDetHardScatterSelectionToolCfg(
178 flags,
179 RedoHardScatter=not doHyyHSSelection,
180 SelectionMode=flags.PhysVal.IDPVM.hardScatterStrategy,
181
182 JetContainer=flags.PhysVal.IDPVM.jetsNameForHardScatter,
183 VertexContainer=flags.PhysVal.IDPVM.PrimaryVertexContainer
184 )))
185
186 if doHyyHSSelection:
187 assert flags.PhysVal.IDPVM.PrimaryVertexContainer == 'HggPrimaryVertices'
188
189 kwargs.setdefault("FillTruthToRecoNtuple",
190 flags.PhysVal.IDPVM.doValidateTruthToRecoNtuple)
191 kwargs.setdefault("doTruthOriginPlots",
192 flags.PhysVal.IDPVM.doTruthOriginPlots)
193 kwargs.setdefault("doDuplicatePlots",
194 flags.PhysVal.IDPVM.doDuplicatePlots)
195 kwargs.setdefault("doHitLevelPlots",
196 flags.PhysVal.IDPVM.doHitLevelPlots)
197
198
199 if not flags.PhysVal.IDPVM.doIDTIDE:
200 kwargs.setdefault("useVertexTruthMatchTool", True)
201 kwargs.setdefault("VertexTruthMatchTool", acc.popToolsAndMerge(
202 InDetVertexTruthMatchToolCfg(flags)))
203
204 if "trackTruthOriginTool" not in kwargs:
205 from InDetTrackSystematicsTools.InDetTrackSystematicsToolsConfig import InDetTrackTruthOriginToolCfg
206 kwargs.setdefault("trackTruthOriginTool", acc.popToolsAndMerge(
207 InDetTrackTruthOriginToolCfg(flags)))
208
209
210 if flags.PhysVal.IDPVM.setTruthStrategy in ['All', 'PileUp']:
211 if "xAOD::TruthPileupEventContainer#TruthPileupEvents" not in flags.Input.TypedCollections:
212 print(
'WARNING Truth Strategy for InDetPhysValMonitoring set to %s but TruthPileupEvents are missing in the input' % (flags.PhysVal.IDPVM.setTruthStrategy))
213 kwargs.setdefault("PileupSwitch",
214 flags.PhysVal.IDPVM.setTruthStrategy)
215
216 elif flags.PhysVal.IDPVM.setTruthStrategy != 'HardScatter':
217 print(
'WARNING Truth Strategy for for InDetPhysValMonitoring set to invalid option %s; valid flags are ["HardScatter", "All", "PileUp"]' % (
218 flags.PhysVal.IDPVM.setTruthStrategy))
219
220 else:
221
222 kwargs.setdefault("TruthParticleContainerName", '')
223 kwargs.setdefault("TruthVertexContainerName", '')
224 kwargs.setdefault("TruthEvents", '')
225 kwargs.setdefault("TruthPileupEvents", '')
226 kwargs.setdefault("TruthSelectionTool", None)
227 kwargs.setdefault("FillTruthToRecoNtuple", False)
228
229 if flags.Detector.GeometryITk:
230
231 kwargs.setdefault("doTRTExtensionPlots", False)
232 kwargs.setdefault("isITk", True)
233
234 if flags.PhysVal.IDPVM.doTechnicalEfficiency:
235 kwargs.setdefault("fillTechnicalEfficiency", True)
236 kwargs.setdefault("EtaBins", flags.Tracking.ITkMainPass.etaBins if flags.Detector.GeometryITk
237 else [-1, 9999.])
238 kwargs.setdefault("MinNumberClusters", flags.Tracking.ITkMainPass.minClusters if flags.Detector.GeometryITk
239 else [flags.Tracking.MainPass.minClusters])
240
241
242 kwargs.setdefault("DetailLevel", 200 if flags.PhysVal.IDPVM.doExpertOutput else 100)
243
244
245 if flags.PhysVal.IDPVM.doIDTIDE:
246 kwargs.setdefault("doIDTIDEPlots", True)
247 kwargs.setdefault("JetContainerName", 'AntiKt4EMPFlowJets')
248 kwargs.setdefault("FillTrackInJetPlots", True)
249
250
251 kwargs.setdefault('JetAbsEtaMin', 0)
252 kwargs.setdefault('JetAbsEtaMax',
253 flags.PhysVal.IDPVM.JetAbsEtaMax)
254 kwargs.setdefault('maxTrkJetDR',
255 flags.PhysVal.IDPVM.maxTrkJetDR)
256
257 kwargs.setdefault('JetPtMin', 100)
258 kwargs.setdefault('JetPtMax', 5000)
259
260 kwargs.setdefault("doPRW", flags.PhysVal.IDPVM.doPRW)
261
262 acc.setPrivateTools(CompFactory.InDetPhysValMonitoringTool(**kwargs))
263 return acc
264
265
void print(char *figname, TCanvas *c1)