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, str calibFile=None)

Public Attributes

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

Member Function Documentation

◆ instanceName()

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

Definition at line 72 of file TrackingAnalysisConfig.py.

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

◆ makeAlgs()

TrackingAnalysisConfig.InDetTrackCalibrationConfig.makeAlgs ( self,
config )

Definition at line 145 of file TrackingAnalysisConfig.py.

145 def makeAlgs (self, config) :
146 log = logging.getLogger('InDetTrackCalibrationConfig')
147
148 inputContainer = "InDetTrackParticles"
149 if self.inputContainer:
150 inputContainer = self.inputContainer
151 config.setSourceName (self.containerName, inputContainer)
152
153 # Set up a shallow copy to decorate
154 if config.wantCopy (self.containerName) :
155 alg = config.createAlgorithm( 'CP::AsgShallowCopyAlg', 'InDetTrackShallowCopyAlg' )
156 alg.input = config.readName (self.containerName)
157 alg.output = config.copyName (self.containerName)
158
159 # Set up the eta-cut on all tracks prior to everything else
160 alg = config.createAlgorithm( 'CP::AsgSelectionAlg', 'InDetTrackEtaCutAlg' )
161 alg.selectionDecoration = 'selectEta' + self.postfix + ',as_bits'
162 config.addPrivateTool( 'selectionTool', 'CP::AsgPtEtaSelectionTool' )
163 alg.selectionTool.maxEta = self.maxEta
164 alg.particles = config.readName (self.containerName)
165 alg.preselection = config.getPreselection (self.containerName, '')
166 config.addSelection (self.containerName, '', alg.selectionDecoration)
167
168 # Set up the biasing algorithm. The recommendations is to bias MC instead of unbiasing Data:
169 if config.dataType() is not DataType.Data:
170 if not self.runBiasing:
171 log.warning('Disabling the biasing tool for now. This should not '
172 'be used in an analysis.')
173 else:
174 alg = config.createAlgorithm( 'CP::InDetTrackBiasingAlg', 'InDetTrackBiasingAlg' )
175 self.makeTrackBiasingTool(config,
176 alg,
177 self.biasD0,
178 self.biasZ0,
179 self.biasQoverPsagitta,
180 self.customRunNumber,
181 self.applyD0Bias,
182 self.applyZ0Bias,
183 self.applyQoverPBias)
184 alg.inDetTracks = config.readName (self.containerName)
185 alg.inDetTracksOut = config.copyName (self.containerName)
186 alg.preselection = config.getPreselection (self.containerName, '')
187
188 # Set up the smearing algorithm:
189 if config.dataType() is not DataType.Data:
190 alg = config.createAlgorithm( 'CP::InDetTrackSmearingAlg', 'InDetTrackSmearingAlg' )
191 self.makeTrackSmearingTool(config,
192 alg,
193 self.calibFile)
194 alg.inDetTracks = config.readName (self.containerName)
195 alg.inDetTracksOut = config.copyName (self.containerName)
196 alg.preselection = config.getPreselection (self.containerName, '')
197
198 if self.minPt > 0 : # Set up the the pt selection
199 alg = config.createAlgorithm( 'CP::AsgSelectionAlg', 'InDetTrackPtCutAlg' )
200 alg.selectionDecoration = 'selectPt' + self.postfix + ',as_bits'
201 config.addPrivateTool( 'selectionTool', 'CP::AsgPtEtaSelectionTool' )
202 alg.selectionTool.minPt = self.minPt
203 alg.particles = config.readName (self.containerName)
204 alg.preselection = config.getPreselection (self.containerName, '')
205 config.addSelection (self.containerName, '', alg.selectionDecoration,
206 preselection=True)
207
208 # Multiple variables are not included in the SmartCollection (momentum, eta, charge)
209 alg = config.createAlgorithm( 'CP::InDetTrackExtraVarDecoratorAlg', 'ExtraVarDecorator' )
210 alg.inDetTracks = config.readName(self.containerName)
211
212 config.addOutputVar (self.containerName, 'pt_%SYS%', 'pt')
213 config.addOutputVar (self.containerName, 'eta_%SYS%', 'eta', noSys=True)
214 config.addOutputVar (self.containerName, 'phi', 'phi', noSys=True)
215 config.addOutputVar (self.containerName, 'charge_%SYS%', 'charge', noSys=True)
216 config.addOutputVar (self.containerName, 'qOverP', 'qOverP')
217 config.addOutputVar (self.containerName, 'd0', 'd0')
218 config.addOutputVar (self.containerName, 'z0', 'z0')
219 config.addOutputVar (self.containerName, 'vz', 'vz', noSys=True, auxType='float')
220
221 # decorate track summary information on the reconstructed object:
222 if self.outputTrackSummaryInfo:
223 config.addOutputVar (self.containerName, 'numberOfInnermostPixelLayerHits', 'numberOfInnermostPixelLayerHits', noSys=True, auxType='unsigned_char')
224 config.addOutputVar (self.containerName, 'numberOfPixelDeadSensors', 'numberOfPixelDeadSensors', noSys=True, auxType='unsigned_char')
225 config.addOutputVar (self.containerName, 'numberOfPixelHits', 'numberOfPixelHits', noSys=True, auxType='unsigned_char')
226 config.addOutputVar (self.containerName, 'numberOfPixelHoles', 'numberOfPixelHoles', noSys=True, auxType='unsigned_char')
227 config.addOutputVar (self.containerName, 'numberOfPixelSharedHits', 'numberOfPixelSharedHits', noSys=True, auxType='unsigned_char')
228 config.addOutputVar (self.containerName, 'numberOfSCTDeadSensors', 'numberOfSCTDeadSensors', noSys=True, auxType='unsigned_char')
229 config.addOutputVar (self.containerName, 'numberOfSCTHits', 'numberOfSCTHits', noSys=True, auxType='unsigned_char')
230 config.addOutputVar (self.containerName, 'numberOfSCTHoles', 'numberOfSCTHoles', noSys=True, auxType='unsigned_char')
231 config.addOutputVar (self.containerName, 'numberOfSCTSharedHits', 'numberOfSCTSharedHits', noSys=True, auxType='unsigned_char')
232 config.addOutputVar (self.containerName, 'numberOfTRTHits', 'numberOfTRTHits', noSys=True, auxType='unsigned_char')
233 config.addOutputVar (self.containerName, 'numberOfTRTOutliers', 'numberOfTRTOutliers', noSys=True, auxType='unsigned_char')
234
235

◆ 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 77 of file TrackingAnalysisConfig.py.

85 applyQoverPBias : bool=False) :
86 from InDetTrackSystematicsTools.InDetTrackSystematicsToolsConfig import (
87 InDetTrackBiasingCalibKwargs,
88 )
89 toolName = "biasingTool"
90 config.addPrivateTool(toolName, "InDet::InDetTrackBiasingTool")
91
92 calib = InDetTrackBiasingCalibKwargs(config.flags)
93 alg.biasingTool.calibFiles = calib['calibFiles']
94 if 'runNumberBounds' in calib:
95 alg.biasingTool.runNumberBounds = calib['runNumberBounds']
96
97 if biasD0:
98 alg.biasingTool.biasD0 = biasD0
99 if biasZ0:
100 alg.biasingTool.biasZ0 = biasZ0
101 if biasQoverPsagitta:
102 alg.biasingTool.biasQoverPsagitta = biasQoverPsagitta
103 if customRunNumber:
104 alg.biasingTool.runNumber = customRunNumber
105 # By default only the d0 bias is applied; z0 and q/p biasing can be enabled
106 # via the applyZ0Bias / applyQoverPBias options once those maps are validated.
107 alg.biasingTool.applyD0Bias = applyD0Bias
108 alg.biasingTool.applyZ0Bias = applyZ0Bias
109 alg.biasingTool.applyQoverPBias = applyQoverPBias
110 alg.biasingTool.isMC = config.dataType() is not DataType.Data
111 pass
112

◆ makeTrackSmearingTool()

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

Definition at line 114 of file TrackingAnalysisConfig.py.

116 calibFile : str=None) :
117 toolName = "smearingTool"
118 config.addPrivateTool(toolName, "InDet::InDetTrackSmearingTool")
119 if calibFile:
120 alg.tackSmearingTool.calibFileIP_CTIDE = calibFile
121 else:
122 if config.geometry() is LHCPeriod.Run2:
123 # Run 2 recommendations (MC20)
124 alg.smearingTool.calibFileIP_CTIDE = "InDetTrackSystematicsTools/CalibData_22.0_2022-v00/d0z0_smearing_factors_Run2_v2.root"
125 elif config.geometry() is LHCPeriod.Run3:
126 if config.campaign() is Campaign.MC23a:
127 # 2022 recommendations (MC23a)
128 alg.smearingTool.calibFileIP_CTIDE = "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2022_d0z0_smearing_factors_v2.root"
129 elif config.campaign() is Campaign.MC23d:
130 # 2023 recommendations (MC23d)
131 alg.smearingTool.calibFileIP_CTIDE = "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2023_d0z0_smearing_factors_v2.root"
132 elif config.campaign() is Campaign.MC23e:
133 # 2024 recommendations (MC23e)
134 alg.smearingTool.calibFileIP_CTIDE = "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2024_d0z0_smearing_factors.root"
135 else:
136 raise ValueError ('No recommendations found for campaign \"'
137 + config.campaign().value + '\" in Run 3. '
138 'Please check that the recommendations exist.')
139 else:
140 raise ValueError ('No recommendations found for geometry \"'
141 + config.geometry().value + '\". Please check '
142 'the configuration.')
143 pass
144

Member Data Documentation

◆ applyD0Bias

TrackingAnalysisConfig.InDetTrackCalibrationConfig.applyD0Bias

Definition at line 181 of file TrackingAnalysisConfig.py.

◆ applyQoverPBias

TrackingAnalysisConfig.InDetTrackCalibrationConfig.applyQoverPBias

Definition at line 183 of file TrackingAnalysisConfig.py.

◆ applyZ0Bias

TrackingAnalysisConfig.InDetTrackCalibrationConfig.applyZ0Bias

Definition at line 182 of file TrackingAnalysisConfig.py.

◆ biasD0

TrackingAnalysisConfig.InDetTrackCalibrationConfig.biasD0

Definition at line 177 of file TrackingAnalysisConfig.py.

◆ biasQoverPsagitta

TrackingAnalysisConfig.InDetTrackCalibrationConfig.biasQoverPsagitta

Definition at line 179 of file TrackingAnalysisConfig.py.

◆ biasZ0

TrackingAnalysisConfig.InDetTrackCalibrationConfig.biasZ0

Definition at line 178 of file TrackingAnalysisConfig.py.

◆ calibFile

TrackingAnalysisConfig.InDetTrackCalibrationConfig.calibFile

Definition at line 193 of file TrackingAnalysisConfig.py.

◆ containerName

TrackingAnalysisConfig.InDetTrackCalibrationConfig.containerName

Definition at line 151 of file TrackingAnalysisConfig.py.

◆ customRunNumber

TrackingAnalysisConfig.InDetTrackCalibrationConfig.customRunNumber

Definition at line 180 of file TrackingAnalysisConfig.py.

◆ inputContainer

TrackingAnalysisConfig.InDetTrackCalibrationConfig.inputContainer

Definition at line 149 of file TrackingAnalysisConfig.py.

◆ outputTrackSummaryInfo

TrackingAnalysisConfig.InDetTrackCalibrationConfig.outputTrackSummaryInfo

Definition at line 222 of file TrackingAnalysisConfig.py.

◆ runBiasing

TrackingAnalysisConfig.InDetTrackCalibrationConfig.runBiasing

Definition at line 170 of file TrackingAnalysisConfig.py.


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