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
196 acc.merge( TruthDecoratorAlgCfg( flags ) )
197
198
199 if ( ( flags.PhysVal.IDTPM.currentTrkAna.SelectOfflineObject ) and
200 ( "Truth" not in flags.PhysVal.IDTPM.currentTrkAna.SelectOfflineObject ) ):
201 from InDetTrackPerfMon.InDetAlgorithmConfig import OfflineObjectDecoratorAlgCfg
202 acc.merge( OfflineObjectDecoratorAlgCfg( flags ) )
203
204
205 if "TrackQualitySelectionTool" not in kwargs:
206 from InDetTrackPerfMon.InDetSelectionConfig import TrackQualitySelectionToolCfg
207 kwargs.setdefault( "TrackQualitySelectionTool", acc.popToolsAndMerge(
208 TrackQualitySelectionToolCfg( flags,
209 name="TrackQualitySelectionTool"+flags.PhysVal.IDTPM.currentTrkAna.anaTag ) ) )
210
211 if "VertexQualitySelectionTool" not in kwargs:
212 from InDetTrackPerfMon.InDetSelectionConfig import VertexQualitySelectionToolCfg
213 kwargs.setdefault( "VertexQualitySelectionTool", acc.popToolsAndMerge(
214 VertexQualitySelectionToolCfg( flags,
215 name="VertexQualitySelectionTool"+flags.PhysVal.IDTPM.currentTrkAna.anaTag ) ) )
216
217 if flags.PhysVal.IDTPM.currentTrkAna.doTrigNavigation:
218
219 if "TrigDecisionTool" not in kwargs:
220 from TrigDecisionTool.TrigDecisionToolConfig import TrigDecisionToolCfg
221 kwargs.setdefault( "TrigDecisionTool",
222 acc.getPrimaryAndMerge( TrigDecisionToolCfg( flags ) ) )
223
224 if "RoiSelectionTool" not in kwargs:
225 from InDetTrackPerfMon.InDetSelectionConfig import RoiSelectionToolCfg
226 kwargs.setdefault( "RoiSelectionTool", acc.popToolsAndMerge(
227 RoiSelectionToolCfg( flags,
228 name="RoiSelectionTool"+flags.PhysVal.IDTPM.currentTrkAna.anaTag ) ) )
229
230 if "TrackRoiSelectionTool" not in kwargs:
231 from InDetTrackPerfMon.InDetSelectionConfig import TrackRoiSelectionToolCfg
232 kwargs.setdefault( "TrackRoiSelectionTool", acc.popToolsAndMerge(
233 TrackRoiSelectionToolCfg( flags,
234 name="TrackRoiSelectionTool"+flags.PhysVal.IDTPM.currentTrkAna.anaTag ) ) )
235
236 if "VertexRoiSelectionTool" not in kwargs:
237 from InDetTrackPerfMon.InDetSelectionConfig import VertexRoiSelectionToolCfg
238 kwargs.setdefault( "VertexRoiSelectionTool", acc.popToolsAndMerge(
239 VertexRoiSelectionToolCfg( flags,
240 name="VertexRoiSelectionTool"+flags.PhysVal.IDTPM.currentTrkAna.anaTag ) ) )
241
242 if "TrackMatchingTool" not in kwargs:
243 from InDetTrackPerfMon.InDetMatchingConfig import TrackMatchingToolCfg
244 matchToolCfg = TrackMatchingToolCfg( flags )
245 if matchToolCfg is not None :
246 kwargs.setdefault( "doMatch", True )
247 kwargs.setdefault( "TrackMatchingTool", acc.popToolsAndMerge( matchToolCfg ) )
248
249 acc.setPrivateTools( CompFactory.InDetTrackPerfMonTool( name, **kwargs ) )
250 return acc
251
252