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 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 ('minPt', 0.5*GeV, type=float,
65 info=r"the minimum $p_\mathrm{T}$ cut (in MeV) to apply to calibrated tracks.")
66 self.addOption ('maxEta', 2.5, type=float,
67 info=r"maximum track $\vert\eta\vert$.")
68 self.addOption ('outputTrackSummaryInfo', False, type=bool,
69 info="decorate track summary information on the reconstructed objects.")
70

Member Function Documentation

◆ instanceName()

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

Definition at line 71 of file TrackingAnalysisConfig.py.

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

◆ makeAlgs()

TrackingAnalysisConfig.InDetTrackCalibrationConfig.makeAlgs ( self,
config )

Definition at line 144 of file TrackingAnalysisConfig.py.

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

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

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

◆ makeTrackSmearingTool()

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

Definition at line 113 of file TrackingAnalysisConfig.py.

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

Member Data Documentation

◆ applyD0Bias

TrackingAnalysisConfig.InDetTrackCalibrationConfig.applyD0Bias

Definition at line 180 of file TrackingAnalysisConfig.py.

◆ applyQoverPBias

TrackingAnalysisConfig.InDetTrackCalibrationConfig.applyQoverPBias

Definition at line 182 of file TrackingAnalysisConfig.py.

◆ applyZ0Bias

TrackingAnalysisConfig.InDetTrackCalibrationConfig.applyZ0Bias

Definition at line 181 of file TrackingAnalysisConfig.py.

◆ biasD0

TrackingAnalysisConfig.InDetTrackCalibrationConfig.biasD0

Definition at line 176 of file TrackingAnalysisConfig.py.

◆ biasQoverPsagitta

TrackingAnalysisConfig.InDetTrackCalibrationConfig.biasQoverPsagitta

Definition at line 178 of file TrackingAnalysisConfig.py.

◆ biasZ0

TrackingAnalysisConfig.InDetTrackCalibrationConfig.biasZ0

Definition at line 177 of file TrackingAnalysisConfig.py.

◆ calibFile

TrackingAnalysisConfig.InDetTrackCalibrationConfig.calibFile

Definition at line 192 of file TrackingAnalysisConfig.py.

◆ containerName

TrackingAnalysisConfig.InDetTrackCalibrationConfig.containerName

Definition at line 150 of file TrackingAnalysisConfig.py.

◆ customRunNumber

TrackingAnalysisConfig.InDetTrackCalibrationConfig.customRunNumber

Definition at line 179 of file TrackingAnalysisConfig.py.

◆ inputContainer

TrackingAnalysisConfig.InDetTrackCalibrationConfig.inputContainer

Definition at line 148 of file TrackingAnalysisConfig.py.

◆ outputTrackSummaryInfo

TrackingAnalysisConfig.InDetTrackCalibrationConfig.outputTrackSummaryInfo

Definition at line 221 of file TrackingAnalysisConfig.py.

◆ runBiasing

TrackingAnalysisConfig.InDetTrackCalibrationConfig.runBiasing

Definition at line 169 of file TrackingAnalysisConfig.py.


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