141def InDetTrackPerfMonToolCfg( flags, name="InDetTrackPerfMonTool", **kwargs ):
142 '''
143 Main IDTPM tool instance CA-based configuration
144 '''
145 log = logging.getLogger( "InDetTrackPerfMonTool"+flags.PhysVal.IDTPM.currentTrkAna.anaTag )
146 acc = ComponentAccumulator()
147
148 kwargs.setdefault( "AnaTag", flags.PhysVal.IDTPM.currentTrkAna.anaTag )
149
150
151 kwargs.setdefault( "OfflineTrkParticleContainerName",
152 flags.PhysVal.IDTPM.currentTrkAna.OfflineTrkKey )
153 kwargs.setdefault( "OfflineVertexContainerName",
154 flags.PhysVal.IDTPM.currentTrkAna.OfflineVtxKey )
155
156 kwargs.setdefault( "TruthParticleContainerName",
157 flags.PhysVal.IDTPM.currentTrkAna.TruthPartKey )
158 kwargs.setdefault( "TruthVertexContainerName",
159 flags.PhysVal.IDTPM.currentTrkAna.TruthVtxKey )
160
161 kwargs.setdefault( "TriggerTrkParticleContainerName",
162 flags.PhysVal.IDTPM.currentTrkAna.TrigTrkKey )
163 kwargs.setdefault( "TriggerVertexContainerName",
164 flags.PhysVal.IDTPM.currentTrkAna.TrigVtxKey )
165
166
167 if flags.Output.doWriteAOD_IDTPM :
168 kwargs.setdefault( "writeOut", True )
169 kwargs.setdefault( "TrkAnaInfoKey",
170 "TrkAnaInfo"+flags.PhysVal.IDTPM.currentTrkAna.anaTag )
171
172 if "TrackAnalysisInfoWriteTool" not in kwargs :
173 kwargs.setdefault( "TrackAnalysisInfoWriteTool", acc.popToolsAndMerge(
174 TrackAnalysisInfoWriteToolCfg( flags,
175 name="TrackAnalysisInfoWriteTool"+flags.PhysVal.IDTPM.currentTrkAna.anaTag ) ) )
176
177
178 acc.merge( TrackAnalysisDefinitionSvcCfg( flags,
179 name="TrkAnaDefSvc"+flags.PhysVal.IDTPM.currentTrkAna.anaTag ) )
180
181
182 acc.merge( PlotsDefinitionSvcCfg( flags,
183 name="PlotsDefSvc"+flags.PhysVal.IDTPM.currentTrkAna.anaTag ) )
184
185
187 if ( ( "Truth" in flags.PhysVal.IDTPM.currentTrkAna.RefType ) or
188 ( "Truth" in flags.PhysVal.IDTPM.currentTrkAna.TestType ) ):
189 if not flags.Input.isMC:
190 log.error( "Trying to use Truth collections with non-MC sample." )
191 return None
192
193 from InDetTrackPerfMon.InDetAlgorithmConfig import TruthHitDecoratorAlgCfg, TruthDecoratorAlgCfg
194 acc.merge( TruthHitDecoratorAlgCfg( flags ) )
195 acc.merge( TruthDecoratorAlgCfg( flags ) )
196
197
198 if ( ( flags.PhysVal.IDTPM.currentTrkAna.SelectOfflineObject ) and
199 ( "Truth" not in flags.PhysVal.IDTPM.currentTrkAna.SelectOfflineObject ) ):
200 from InDetTrackPerfMon.InDetAlgorithmConfig import OfflineObjectDecoratorAlgCfg
201 acc.merge( OfflineObjectDecoratorAlgCfg( flags ) )
202
203
204 if "TrackQualitySelectionTool" not in kwargs:
205 from InDetTrackPerfMon.InDetSelectionConfig import TrackQualitySelectionToolCfg
206 kwargs.setdefault( "TrackQualitySelectionTool", acc.popToolsAndMerge(
207 TrackQualitySelectionToolCfg( flags,
208 name="TrackQualitySelectionTool"+flags.PhysVal.IDTPM.currentTrkAna.anaTag ) ) )
209
210 if "VertexQualitySelectionTool" not in kwargs:
211 from InDetTrackPerfMon.InDetSelectionConfig import VertexQualitySelectionToolCfg
212 kwargs.setdefault( "VertexQualitySelectionTool", acc.popToolsAndMerge(
213 VertexQualitySelectionToolCfg( flags,
214 name="VertexQualitySelectionTool"+flags.PhysVal.IDTPM.currentTrkAna.anaTag ) ) )
215
216 if flags.PhysVal.IDTPM.currentTrkAna.doTrigNavigation:
217
218 if "TrigDecisionTool" not in kwargs:
219 from TrigDecisionTool.TrigDecisionToolConfig import TrigDecisionToolCfg
220 kwargs.setdefault( "TrigDecisionTool",
221 acc.getPrimaryAndMerge( TrigDecisionToolCfg( flags ) ) )
222
223 if "RoiSelectionTool" not in kwargs:
224 from InDetTrackPerfMon.InDetSelectionConfig import RoiSelectionToolCfg
225 kwargs.setdefault( "RoiSelectionTool", acc.popToolsAndMerge(
226 RoiSelectionToolCfg( flags,
227 name="RoiSelectionTool"+flags.PhysVal.IDTPM.currentTrkAna.anaTag ) ) )
228
229 if "TrackRoiSelectionTool" not in kwargs:
230 from InDetTrackPerfMon.InDetSelectionConfig import TrackRoiSelectionToolCfg
231 kwargs.setdefault( "TrackRoiSelectionTool", acc.popToolsAndMerge(
232 TrackRoiSelectionToolCfg( flags,
233 name="TrackRoiSelectionTool"+flags.PhysVal.IDTPM.currentTrkAna.anaTag ) ) )
234
235 if "VertexRoiSelectionTool" not in kwargs:
236 from InDetTrackPerfMon.InDetSelectionConfig import VertexRoiSelectionToolCfg
237 kwargs.setdefault( "VertexRoiSelectionTool", acc.popToolsAndMerge(
238 VertexRoiSelectionToolCfg( flags,
239 name="VertexRoiSelectionTool"+flags.PhysVal.IDTPM.currentTrkAna.anaTag ) ) )
240
241 if "TrackMatchingTool" not in kwargs:
242 from InDetTrackPerfMon.InDetMatchingConfig import TrackMatchingToolCfg
243 matchToolCfg = TrackMatchingToolCfg( flags )
244 if matchToolCfg is not None :
245 kwargs.setdefault( "doMatch", True )
246 kwargs.setdefault( "TrackMatchingTool", acc.popToolsAndMerge( matchToolCfg ) )
247
248 acc.setPrivateTools( CompFactory.InDetTrackPerfMonTool( name, **kwargs ) )
249 return acc
250
251