ATLAS Offline Software
Loading...
Searching...
No Matches
TrackingAnalysisConfig.InDetTrackCalibrationConfig Class Reference
Inheritance diagram for TrackingAnalysisConfig.InDetTrackCalibrationConfig:
Collaboration diagram for TrackingAnalysisConfig.InDetTrackCalibrationConfig:

Public Member Functions

 __init__ (self)
 instanceName (self)
 makeAlgs (self, config)

Static Public Member Functions

 makeTrackBiasingTool (config, alg, float biasD0=None, float biasZ0=None, float biasQoverPsagitta=None, int customRunNumber=None, bool applyD0Bias=True, bool applyZ0Bias=False, bool applyQoverPBias=False)
 makeTrackSmearingTool (config, alg, int seed=None, str calibFile=None)

Public Attributes

 inputContainer
 containerName
 runBiasing
 biasD0
 biasZ0
 biasQoverPsagitta
 customRunNumber
 applyD0Bias
 applyZ0Bias
 applyQoverPBias
 smearingToolSeed
 calibFile
 outputTrackSummaryInfo

Detailed Description

the ConfigBlock for the track impact parameter correction

Definition at line 12 of file TrackingAnalysisConfig.py.

Constructor & Destructor Documentation

◆ __init__()

TrackingAnalysisConfig.InDetTrackCalibrationConfig.__init__ ( self)

Definition at line 15 of file TrackingAnalysisConfig.py.

15 def __init__ (self) :
16 super (InDetTrackCalibrationConfig, self).__init__ ()
17 self.setBlockName ('InDetTracks')
18 self.addOption ('inputContainer', '', type=str,
19 info="the name of the input track container.")
20 self.addOption ('containerName', '', type=str,
21 noneAction='error',
22 info="the name of the output container after calibration.")
23 self.addOption ('postfix', '', type=str,
24 info="a postfix to apply to decorations and algorithm names. Typically "
25 "not needed here since the calibration is common to all tracks.")
26 self.addOption ('runBiasing', True, type=bool,
27 info="whether to run the `InDetTrackBiasingTool`. Allows the user to "
28 "disable the tool if no recommendations are available. This should "
29 "not be used in an analysis.")
30 self.addOption ('biasD0', None, type=float,
31 info="a manual bias to $d_0$ (in mm). Will be applied by the "
32 "`InDetTrackBiasingTool`. Expert option in addition to the "
33 "recommendations.",
34 expertMode=True)
35 self.addOption ('biasZ0', None, type=float,
36 info="a manual bias to $z_0$ (in mm). Will be applied by the "
37 "`InDetTrackBiasingTool`. Expert option in addition to the "
38 "recommendations.",
39 expertMode=True)
40 self.addOption ('biasQoverPsagitta', None, type=float,
41 info="a manual bias to $Q/p$ in TeV$^{-1}$. Will be applied "
42 "by the `InDetTrackBiasingTool`. Expert option in addition to the "
43 "recommendations.",
44 expertMode=True)
45 self.addOption ('applyD0Bias', True, type=bool,
46 info=r"whether to apply the $d_0$ bias from the calibration map in the "
47 "`InDetTrackBiasingTool`. Overrides the default set by the configuration.")
48 self.addOption ('applyZ0Bias', False, type=bool,
49 info=r"whether to apply the $z_0$ bias from the calibration map in the "
50 "`InDetTrackBiasingTool`. Overrides the default set by the configuration.")
51 self.addOption ('applyQoverPBias', False, type=bool,
52 info=r"whether to apply the $q/p$ sagitta bias from the calibration map in the "
53 "`InDetTrackBiasingTool`. Overrides the default set by the configuration.")
54 self.addOption ('customRunNumber', None, type=int,
55 info="manually sets the `runNumber` in the `InDetTrackBiasingTool`. "
56 "Expert option leads to use of different recommendations. Default is "
57 "retrieved from `EventInfo`.",
58 expertMode=True)
59 self.addOption ('calibFile', None, type=str,
60 info="name of the calibration file to use for the CTIDE "
61 "calibration. Expert option to override the recommendations "
62 "based on the campaign.",
63 expertMode=True)
64 self.addOption ('smearingToolSeed', None, type=int,
65 info="random seed to be used by the `InDetTrackSmearingTool`.",
66 expertMode=True)
67 self.addOption ('minPt', 0.5*GeV, type=float,
68 info=r"the minimum $p_\mathrm{T}$ cut (in MeV) to apply to calibrated tracks.")
69 self.addOption ('maxEta', 2.5, type=float,
70 info=r"maximum track $\vert\eta\vert$.")
71 self.addOption ('outputTrackSummaryInfo', False, type=bool,
72 info="decorate track summary information on the reconstructed objects.")
73

Member Function Documentation

◆ instanceName()

TrackingAnalysisConfig.InDetTrackCalibrationConfig.instanceName ( self)
Return the instance name for this block

Definition at line 74 of file TrackingAnalysisConfig.py.

74 def instanceName (self) :
75 """Return the instance name for this block"""
76 return self.containerName + self.postfix
77

◆ makeAlgs()

TrackingAnalysisConfig.InDetTrackCalibrationConfig.makeAlgs ( self,
config )

Definition at line 197 of file TrackingAnalysisConfig.py.

197 def makeAlgs (self, config) :
198 log = logging.getLogger('InDetTrackCalibrationConfig')
199
200 inputContainer = "InDetTrackParticles"
201 if self.inputContainer:
202 inputContainer = self.inputContainer
203 config.setSourceName (self.containerName, inputContainer)
204
205 # Set up a shallow copy to decorate
206 if config.wantCopy (self.containerName) :
207 alg = config.createAlgorithm( 'CP::AsgShallowCopyAlg', 'InDetTrackShallowCopyAlg' )
208 alg.input = config.readName (self.containerName)
209 alg.output = config.copyName (self.containerName)
210
211 # Set up the eta-cut on all tracks prior to everything else
212 alg = config.createAlgorithm( 'CP::AsgSelectionAlg', 'InDetTrackEtaCutAlg' )
213 alg.selectionDecoration = 'selectEta' + self.postfix + ',as_bits'
214 config.addPrivateTool( 'selectionTool', 'CP::AsgPtEtaSelectionTool' )
215 alg.selectionTool.maxEta = self.maxEta
216 alg.particles = config.readName (self.containerName)
217 alg.preselection = config.getPreselection (self.containerName, '')
218 config.addSelection (self.containerName, '', alg.selectionDecoration)
219
220 # Set up the biasing algorithm. The recommendations is to bias MC instead of unbiasing Data:
221 if config.dataType() is not DataType.Data:
222 if not self.runBiasing:
223 log.warning('Disabling the biasing tool for now. This should not '
224 'be used in an analysis.')
225 else:
226 alg = config.createAlgorithm( 'CP::InDetTrackBiasingAlg', 'InDetTrackBiasingAlg' )
227 self.makeTrackBiasingTool(config,
228 alg,
229 self.biasD0,
230 self.biasZ0,
231 self.biasQoverPsagitta,
232 self.customRunNumber,
233 self.applyD0Bias,
234 self.applyZ0Bias,
235 self.applyQoverPBias)
236 alg.inDetTracks = config.readName (self.containerName)
237 alg.inDetTracksOut = config.copyName (self.containerName)
238 alg.preselection = config.getPreselection (self.containerName, '')
239
240 # Set up the smearing algorithm:
241 if config.dataType() is not DataType.Data:
242 alg = config.createAlgorithm( 'CP::InDetTrackSmearingAlg', 'InDetTrackSmearingAlg' )
243 self.makeTrackSmearingTool(config,
244 alg,
245 self.smearingToolSeed,
246 self.calibFile)
247 alg.inDetTracks = config.readName (self.containerName)
248 alg.inDetTracksOut = config.copyName (self.containerName)
249 alg.preselection = config.getPreselection (self.containerName, '')
250
251 if self.minPt > 0 : # Set up the the pt selection
252 alg = config.createAlgorithm( 'CP::AsgSelectionAlg', 'InDetTrackPtCutAlg' )
253 alg.selectionDecoration = 'selectPt' + self.postfix + ',as_bits'
254 config.addPrivateTool( 'selectionTool', 'CP::AsgPtEtaSelectionTool' )
255 alg.selectionTool.minPt = self.minPt
256 alg.particles = config.readName (self.containerName)
257 alg.preselection = config.getPreselection (self.containerName, '')
258 config.addSelection (self.containerName, '', alg.selectionDecoration,
259 preselection=True)
260
261 # Multiple variables are not included in the SmartCollection (momentum, eta, charge)
262 alg = config.createAlgorithm( 'CP::InDetTrackExtraVarDecoratorAlg', 'ExtraVarDecorator' )
263 alg.inDetTracks = config.readName(self.containerName)
264
265 config.addOutputVar (self.containerName, 'pt_%SYS%', 'pt')
266 config.addOutputVar (self.containerName, 'eta_%SYS%', 'eta', noSys=True)
267 config.addOutputVar (self.containerName, 'phi', 'phi', noSys=True)
268 config.addOutputVar (self.containerName, 'charge_%SYS%', 'charge', noSys=True)
269 config.addOutputVar (self.containerName, 'qOverP', 'qOverP')
270 config.addOutputVar (self.containerName, 'd0', 'd0')
271 config.addOutputVar (self.containerName, 'z0', 'z0')
272 config.addOutputVar (self.containerName, 'vz', 'vz', noSys=True, auxType='float')
273
274 # decorate track summary information on the reconstructed object:
275 if self.outputTrackSummaryInfo:
276 config.addOutputVar (self.containerName, 'numberOfInnermostPixelLayerHits', 'numberOfInnermostPixelLayerHits', noSys=True, auxType='unsigned_char')
277 config.addOutputVar (self.containerName, 'numberOfPixelDeadSensors', 'numberOfPixelDeadSensors', noSys=True, auxType='unsigned_char')
278 config.addOutputVar (self.containerName, 'numberOfPixelHits', 'numberOfPixelHits', noSys=True, auxType='unsigned_char')
279 config.addOutputVar (self.containerName, 'numberOfPixelHoles', 'numberOfPixelHoles', noSys=True, auxType='unsigned_char')
280 config.addOutputVar (self.containerName, 'numberOfPixelSharedHits', 'numberOfPixelSharedHits', noSys=True, auxType='unsigned_char')
281 config.addOutputVar (self.containerName, 'numberOfSCTDeadSensors', 'numberOfSCTDeadSensors', noSys=True, auxType='unsigned_char')
282 config.addOutputVar (self.containerName, 'numberOfSCTHits', 'numberOfSCTHits', noSys=True, auxType='unsigned_char')
283 config.addOutputVar (self.containerName, 'numberOfSCTHoles', 'numberOfSCTHoles', noSys=True, auxType='unsigned_char')
284 config.addOutputVar (self.containerName, 'numberOfSCTSharedHits', 'numberOfSCTSharedHits', noSys=True, auxType='unsigned_char')
285 config.addOutputVar (self.containerName, 'numberOfTRTHits', 'numberOfTRTHits', noSys=True, auxType='unsigned_char')
286 config.addOutputVar (self.containerName, 'numberOfTRTOutliers', 'numberOfTRTOutliers', noSys=True, auxType='unsigned_char')
287
288

◆ makeTrackBiasingTool()

TrackingAnalysisConfig.InDetTrackCalibrationConfig.makeTrackBiasingTool ( config,
alg,
float biasD0 = None,
float biasZ0 = None,
float biasQoverPsagitta = None,
int customRunNumber = None,
bool applyD0Bias = True,
bool applyZ0Bias = False,
bool applyQoverPBias = False )
static

Definition at line 79 of file TrackingAnalysisConfig.py.

87 applyQoverPBias : bool=False) :
88 toolName = "biasingTool"
89 config.addPrivateTool(toolName, "InDet::InDetTrackBiasingTool")
90
91 # Configure calibration files and run number ranges per MC campaign.
92 # Each calibration file corresponds to events with runNumberBounds[i] < runNumber <= runNumberBounds[i+1];
93 # the tool matches the event run number against these ranges at runtime.
94 if config.geometry() is LHCPeriod.Run2:
95 if config.campaign() is Campaign.MC20a:
96 # 2015 + 2016 recommendations (MC20a)
97 alg.biasingTool.calibFiles = [
98 "InDetTrackSystematicsTools/CalibData_22.0_2022-v00/REL22_REPRO_2015.root",
99 "InDetTrackSystematicsTools/CalibData_22.0_2022-v00/REL22_REPRO_2016_1stPart.root",
100 "InDetTrackSystematicsTools/CalibData_22.0_2022-v00/REL22_REPRO_2016_2ndPart.root",
101 ]
102 alg.biasingTool.runNumberBounds = [-1, 296938, 301912, 999999]
103 elif config.campaign() is Campaign.MC20d:
104 # 2017 recommendations (MC20d)
105 alg.biasingTool.calibFiles = [
106 "InDetTrackSystematicsTools/CalibData_22.0_2022-v00/REL22_REPRO_2017_1stPart.root",
107 "InDetTrackSystematicsTools/CalibData_22.0_2022-v00/REL22_REPRO_2017_2ndPart.root",
108 ]
109 alg.biasingTool.runNumberBounds = [-1, 334842, 999999]
110 elif config.campaign() is Campaign.MC20e:
111 # 2018 recommendations (MC20e)
112 alg.biasingTool.calibFiles = [
113 "InDetTrackSystematicsTools/CalibData_22.0_2022-v00/REL22_REPRO_2018_1stPart.root",
114 "InDetTrackSystematicsTools/CalibData_22.0_2022-v00/REL22_REPRO_2018_2ndPart.root",
115 ]
116 alg.biasingTool.runNumberBounds = [-1, 353000, 999999]
117 else:
118 raise ValueError ('No biasing recommendations found for campaign \"'
119 + config.campaign().value + '\" in Run 2. '
120 'Please check the configuration.')
121 elif config.geometry() is LHCPeriod.Run3:
122 if config.campaign() is Campaign.MC23a:
123 # 2022 recommendations (MC23a)
124 alg.biasingTool.calibFiles = [
125 "dev/InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2022_d0z0qoverp_biasing_factor.root",
126 ]
127 elif config.campaign() is Campaign.MC23d:
128 # 2023 recommendations (MC23d)
129 alg.biasingTool.calibFiles = [
130 "dev/InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2023_d0z0qoverp_biasing_factor.root",
131 ]
132 elif config.campaign() is Campaign.MC23e:
133 # 2024 recommendations (MC23e)
134 alg.biasingTool.calibFiles = [
135 "dev/InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2024_d0z0qoverp_biasing_factor.root",
136 ]
137 else:
138 raise ValueError ('No biasing recommendations found for campaign \"'
139 + config.campaign().value + '\" in Run 3. '
140 'Please check the configuration.')
141 else:
142 raise ValueError ('No biasing recommendations found for geometry \"'
143 + config.geometry().value + '\". Please check '
144 'the configuration.')
145
146 if biasD0:
147 alg.biasingTool.biasD0 = biasD0
148 if biasZ0:
149 alg.biasingTool.biasZ0 = biasZ0
150 if biasQoverPsagitta:
151 alg.biasingTool.biasQoverPsagitta = biasQoverPsagitta
152 if customRunNumber:
153 alg.biasingTool.runNumber = customRunNumber
154 # By default only the d0 bias is applied; z0 and q/p biasing can be enabled
155 # via the applyZ0Bias / applyQoverPBias options once those maps are validated.
156 alg.biasingTool.applyD0Bias = applyD0Bias
157 alg.biasingTool.applyZ0Bias = applyZ0Bias
158 alg.biasingTool.applyQoverPBias = applyQoverPBias
159 alg.biasingTool.isMC = config.dataType() is not DataType.Data
160 pass
161

◆ makeTrackSmearingTool()

TrackingAnalysisConfig.InDetTrackCalibrationConfig.makeTrackSmearingTool ( config,
alg,
int seed = None,
str calibFile = None )
static

Definition at line 163 of file TrackingAnalysisConfig.py.

166 calibFile : str=None) :
167 toolName = "smearingTool"
168 config.addPrivateTool(toolName, "InDet::InDetTrackSmearingTool")
169 if seed:
170 alg.smearingTool.Seed = seed
171 if calibFile:
172 alg.tackSmearingTool.calibFileIP_CTIDE = calibFile
173 else:
174 if config.geometry() is LHCPeriod.Run2:
175 # Run 2 recommendations (MC20)
176 alg.smearingTool.calibFileIP_CTIDE = "InDetTrackSystematicsTools/CalibData_22.0_2022-v00/d0z0_smearing_factors_Run2_v2.root"
177 elif config.geometry() is LHCPeriod.Run3:
178 if config.campaign() is Campaign.MC23a:
179 # 2022 recommendations (MC23a)
180 alg.smearingTool.calibFileIP_CTIDE = "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2022_d0z0_smearing_factors_v2.root"
181 elif config.campaign() is Campaign.MC23d:
182 # 2023 recommendations (MC23d)
183 alg.smearingTool.calibFileIP_CTIDE = "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2023_d0z0_smearing_factors_v2.root"
184 elif config.campaign() is Campaign.MC23e:
185 # 2024 recommendations (MC23e)
186 alg.smearingTool.calibFileIP_CTIDE = "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2024_d0z0_smearing_factors.root"
187 else:
188 raise ValueError ('No recommendations found for campaign \"'
189 + config.campaign().value + '\" in Run 3. '
190 'Please check that the recommendations exist.')
191 else:
192 raise ValueError ('No recommendations found for geometry \"'
193 + config.geometry().value + '\". Please check '
194 'the configuration.')
195 pass
196

Member Data Documentation

◆ applyD0Bias

TrackingAnalysisConfig.InDetTrackCalibrationConfig.applyD0Bias

Definition at line 233 of file TrackingAnalysisConfig.py.

◆ applyQoverPBias

TrackingAnalysisConfig.InDetTrackCalibrationConfig.applyQoverPBias

Definition at line 235 of file TrackingAnalysisConfig.py.

◆ applyZ0Bias

TrackingAnalysisConfig.InDetTrackCalibrationConfig.applyZ0Bias

Definition at line 234 of file TrackingAnalysisConfig.py.

◆ biasD0

TrackingAnalysisConfig.InDetTrackCalibrationConfig.biasD0

Definition at line 229 of file TrackingAnalysisConfig.py.

◆ biasQoverPsagitta

TrackingAnalysisConfig.InDetTrackCalibrationConfig.biasQoverPsagitta

Definition at line 231 of file TrackingAnalysisConfig.py.

◆ biasZ0

TrackingAnalysisConfig.InDetTrackCalibrationConfig.biasZ0

Definition at line 230 of file TrackingAnalysisConfig.py.

◆ calibFile

TrackingAnalysisConfig.InDetTrackCalibrationConfig.calibFile

Definition at line 246 of file TrackingAnalysisConfig.py.

◆ containerName

TrackingAnalysisConfig.InDetTrackCalibrationConfig.containerName

Definition at line 203 of file TrackingAnalysisConfig.py.

◆ customRunNumber

TrackingAnalysisConfig.InDetTrackCalibrationConfig.customRunNumber

Definition at line 232 of file TrackingAnalysisConfig.py.

◆ inputContainer

TrackingAnalysisConfig.InDetTrackCalibrationConfig.inputContainer

Definition at line 201 of file TrackingAnalysisConfig.py.

◆ outputTrackSummaryInfo

TrackingAnalysisConfig.InDetTrackCalibrationConfig.outputTrackSummaryInfo

Definition at line 275 of file TrackingAnalysisConfig.py.

◆ runBiasing

TrackingAnalysisConfig.InDetTrackCalibrationConfig.runBiasing

Definition at line 222 of file TrackingAnalysisConfig.py.

◆ smearingToolSeed

TrackingAnalysisConfig.InDetTrackCalibrationConfig.smearingToolSeed

Definition at line 245 of file TrackingAnalysisConfig.py.


The documentation for this class was generated from the following file: