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.Reco.EnableHGTDExtension:
235 kwargs.setdefault("hasHGTDReco", True)
236
237 if flags.PhysVal.IDPVM.doTechnicalEfficiency:
238 kwargs.setdefault("fillTechnicalEfficiency", True)
239 kwargs.setdefault("EtaBins", flags.Tracking.ITkMainPass.etaBins if flags.Detector.GeometryITk
240 else [-1, 9999.])
241 kwargs.setdefault("MinNumberClusters", flags.Tracking.ITkMainPass.minClusters if flags.Detector.GeometryITk
242 else [flags.Tracking.MainPass.minClusters])
243
244
245 kwargs.setdefault("DetailLevel", 200 if flags.PhysVal.IDPVM.doExpertOutput else 100)
246
247
248 if flags.PhysVal.IDPVM.doIDTIDE:
249 kwargs.setdefault("doIDTIDEPlots", True)
250 kwargs.setdefault("JetContainerName", 'AntiKt4EMPFlowJets')
251 kwargs.setdefault("FillTrackInJetPlots", True)
252
253
254 kwargs.setdefault('JetAbsEtaMin', 0)
255 kwargs.setdefault('JetAbsEtaMax',
256 flags.PhysVal.IDPVM.JetAbsEtaMax)
257 kwargs.setdefault('maxTrkJetDR',
258 flags.PhysVal.IDPVM.maxTrkJetDR)
259
260 kwargs.setdefault('JetPtMin', 100)
261 kwargs.setdefault('JetPtMax', 5000)
262
263 kwargs.setdefault("doPRW", flags.PhysVal.IDPVM.doPRW)
264
265 acc.setPrivateTools(CompFactory.InDetPhysValMonitoringTool(**kwargs))
266 return acc
267
268
void print(char *figname, TCanvas *c1)