5 '''@file InDetTrackPerfMonConfig.py
8 @brief Main CA-based python configuration for InDetTrackPerfMonTool
11 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
12 from AthenaConfiguration.ComponentFactory
import CompFactory
13 from AthenaCommon.Logging
import logging
18 Tool to read the plots definitions from an input file in JSON format
20 log = logging.getLogger(
"JsonPlotsDefReadTool" )
24 from InDetTrackPerfMon.ConfigUtils
import getPlotsDefList
26 log.debug(
"Loading the following plot definitions:" )
27 for plotDef
in plotsDefList : log.debug(
"\t-> %s", plotDef )
29 kwargs.setdefault(
"PlotsDefs", plotsDefList )
32 CompFactory.IDTPM.JsonPlotsDefReadTool( name, **kwargs ) )
38 CA-based configuration for the Tool to read the plots definition
40 log = logging.getLogger(
"PlotsDefReadTool" )
42 if flags.PhysVal.IDTPM.plotsDefFormat ==
"JSON" :
44 flags, name =
"JsonPlotsDefReadTool" +
45 flags.PhysVal.IDTPM.currentTrkAna.anaTag, **kwargs )
47 log.error(
"Non supported plots definition file type %s",
48 flags.PhysVal.IDTPM.plotsDefFormat )
54 CA-based configuration for the PlotsDefinition Service
58 if "PlotsDefReadTool" not in kwargs:
59 kwargs.setdefault(
"PlotsDefReadTool", acc.popToolsAndMerge(
63 CompFactory.PlotsDefinitionSvc( name, **kwargs ) )
69 CA-based configuration for the TrackAnalysisDefinition Service
73 kwargs.setdefault(
"DirName", flags.PhysVal.IDTPM.DirName )
74 kwargs.setdefault(
"sortPlotsByChain", flags.PhysVal.IDTPM.sortPlotsByChain )
75 kwargs.setdefault(
"SubFolder", flags.PhysVal.IDTPM.currentTrkAna.SubFolder )
76 kwargs.setdefault(
"TrkAnaTag", flags.PhysVal.IDTPM.currentTrkAna.anaTag )
78 kwargs.setdefault(
"TestType", flags.PhysVal.IDTPM.currentTrkAna.TestType )
79 kwargs.setdefault(
"RefType", flags.PhysVal.IDTPM.currentTrkAna.RefType )
81 from InDetTrackPerfMon.ConfigUtils
import getTag
82 kwargs.setdefault(
"TestTag",
getTag( flags, flags.PhysVal.IDTPM.currentTrkAna.TestType ) )
83 kwargs.setdefault(
"RefTag",
getTag( flags, flags.PhysVal.IDTPM.currentTrkAna.RefType ) )
85 kwargs.setdefault(
"MatchingType", flags.PhysVal.IDTPM.currentTrkAna.MatchingType )
87 if ( (
"Trigger" in flags.PhysVal.IDTPM.currentTrkAna.TestType
and "EFTrigger" not in flags.PhysVal.IDTPM.currentTrkAna.TestType)
or
88 (
"Trigger" in flags.PhysVal.IDTPM.currentTrkAna.RefType
and "EFTrigger" not in flags.PhysVal.IDTPM.currentTrkAna.RefType ) ):
89 kwargs.setdefault(
"ChainNames", flags.PhysVal.IDTPM.currentTrkAna.ChainNames )
91 kwargs.setdefault(
"plotTrackParameters", flags.PhysVal.IDTPM.currentTrkAna.plotTrackParameters )
92 kwargs.setdefault(
"plotEfficiencies", flags.PhysVal.IDTPM.currentTrkAna.plotEfficiencies )
93 kwargs.setdefault(
"plotOfflineElectrons", flags.PhysVal.IDTPM.currentTrkAna.plotOfflineElectrons )
95 trkAnaSvc = CompFactory.TrackAnalysisDefinitionSvc( name, **kwargs )
96 acc.addService( trkAnaSvc )
102 Main IDTPM tool instance CA-based configuration
106 kwargs.setdefault(
"OfflineTrkParticleContainerName",
107 flags.PhysVal.IDTPM.currentTrkAna.OfflineTrkKey )
108 kwargs.setdefault(
"TruthParticleContainerName",
109 flags.PhysVal.IDTPM.currentTrkAna.TruthPartKey )
111 kwargs.setdefault(
"AnaTag", flags.PhysVal.IDTPM.currentTrkAna.anaTag )
115 name=
"TrkAnaDefSvc"+flags.PhysVal.IDTPM.currentTrkAna.anaTag ) )
119 name=
"PlotsDefSvc"+flags.PhysVal.IDTPM.currentTrkAna.anaTag ) )
122 if "TrackQualitySelectionTool" not in kwargs:
123 from InDetTrackPerfMon.InDetSelectionConfig
import TrackQualitySelectionToolCfg
124 kwargs.setdefault(
"TrackQualitySelectionTool", acc.popToolsAndMerge(
126 name=
"TrackQualitySelectionTool"+flags.PhysVal.IDTPM.currentTrkAna.anaTag ) ) )
128 if "Truth" in flags.PhysVal.IDTPM.currentTrkAna.RefType
or "Truth" in flags.PhysVal.IDTPM.currentTrkAna.TestType:
129 from InDetTrackPerfMon.InDetAlgorithmConfig
import TruthHitDecoratorAlgCfg
132 if ( (
"Trigger" in flags.PhysVal.IDTPM.currentTrkAna.TestType )
or
133 (
"Trigger" in flags.PhysVal.IDTPM.currentTrkAna.RefType ) ):
135 kwargs.setdefault(
"TriggerTrkParticleContainerName",
136 flags.PhysVal.IDTPM.currentTrkAna.TrigTrkKey )
138 if (
"EFTrigger" not in flags.PhysVal.IDTPM.currentTrkAna.TestType
and "EFTrigger" not in flags.PhysVal.IDTPM.currentTrkAna.RefType ):
139 if "TrigDecisionTool" not in kwargs:
140 from TrigDecisionTool.TrigDecisionToolConfig
import TrigDecisionToolCfg
141 kwargs.setdefault(
"TrigDecisionTool",
144 if "RoiSelectionTool" not in kwargs:
145 from InDetTrackPerfMon.InDetSelectionConfig
import RoiSelectionToolCfg
146 kwargs.setdefault(
"RoiSelectionTool", acc.popToolsAndMerge(
148 name=
"RoiSelectionTool"+flags.PhysVal.IDTPM.currentTrkAna.anaTag ) ) )
150 if "TrackRoiSelectionTool" not in kwargs:
151 from InDetTrackPerfMon.InDetSelectionConfig
import TrackRoiSelectionToolCfg
152 kwargs.setdefault(
"TrackRoiSelectionTool", acc.popToolsAndMerge(
154 name=
"TrackRoiSelectionTool"+flags.PhysVal.IDTPM.currentTrkAna.anaTag ) ) )
156 if "TrackMatchingTool" not in kwargs:
157 from InDetTrackPerfMon.InDetMatchingConfig
import TrackMatchingToolCfg
159 if matchToolCfg
is not None :
160 kwargs.setdefault(
"doMatch",
True )
161 kwargs.setdefault(
"TrackMatchingTool", acc.popToolsAndMerge( matchToolCfg ) )
163 acc.setPrivateTools( CompFactory.InDetTrackPerfMonTool( name, **kwargs ) )
169 CA-based configuration of all tool instances (= TrackAnalyses)
171 log = logging.getLogger(
"InDetTrackPerfMonCfg" )
175 useOfflineObject =
False
176 for trkAnaName
in flags.PhysVal.IDTPM.trkAnaNames :
177 obj = getattr( flags.PhysVal.IDTPM, trkAnaName+
".SelectOfflineObject" )
178 if (
not obj
or "Truth" in obj ) :
183 useOfflineObject =
True
187 from InDetTrackPerfMon.InDetAlgorithmConfig
import OfflineObjectDecoratorAlgCfg
193 for trkAnaName
in flags.PhysVal.IDTPM.trkAnaNames :
195 flags_thisTrkAna = flags.cloneAndReplace(
"PhysVal.IDTPM.currentTrkAna",
196 "PhysVal.IDTPM."+trkAnaName )
198 if flags_thisTrkAna.PhysVal.IDTPM.currentTrkAna.enabled:
199 log.debug(
"Scheduling TrackAnalysis: %s",
200 flags_thisTrkAna.PhysVal.IDTPM.currentTrkAna.anaTag )
204 name=
"InDetTrackPerfMonTool"+
205 flags_thisTrkAna.PhysVal.IDTPM.currentTrkAna.anaTag ) ) )
207 from PhysValMonitoring.PhysValMonitoringConfig
import PhysValMonitoringCfg
211 if flags.Output.doWriteAOD_IDTPM :
212 from InDetTrackPerfMon.InDetOutputConfig
import InDetOutputCfg