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