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)
 makeTrackSmearingTool (config, alg, int seed=None, str calibFile=None)

Public Attributes

 inputContainer
 containerName
 runBiasing
 biasD0
 biasZ0
 biasQoverPsagitta
 customRunNumber
 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="select track input container, by default set to InDetTrackParticles")
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. The default is True.")
30 self.addOption ('biasD0', None, type=float,
31 info="a manual bias (float) to d0 in mm. Will be applied by the "
32 "InDetTrackBiasingTool. Expert option in addition to the "
33 "recommendations. The default is 0.",
34 expertMode=True)
35 self.addOption ('biasZ0', None, type=float,
36 info="a manual bias (float) to z0 in mm. Will be applied by the "
37 "InDetTrackBiasingTool. Expert option in addition to the "
38 "recommendations. The default is 0.",
39 expertMode=True)
40 self.addOption ('biasQoverPsagitta', None, type=float,
41 info="a manual bias (float) to QoverP in TeV^-1. Will be applied "
42 "by the InDetTrackBiasingTool. Expert option in addition to the "
43 "recommendations. The default is 0.",
44 expertMode=True)
45 self.addOption ('customRunNumber', None, type=int,
46 info="manually sets the runNumber (int) in the InDetTrackBiasingTool. "
47 "Expert option leads to use of different recommendations. Default is "
48 "retrieved from EventInfo",
49 expertMode=True)
50 self.addOption ('calibFile', None, type=str,
51 info="name (str) of the calibration file to use for the CTIDE "
52 "calibration. Expert option to override the recommendations "
53 "based on the campaign. The default is None.",
54 expertMode=True)
55 self.addOption ('smearingToolSeed', None, type=int,
56 info="random seed (int) to be used by the InDetTrackSmearingTool. "
57 "Expert option. The default is 0.",
58 expertMode=True)
59 self.addOption ('minPt', 0.5*GeV, type=float,
60 info="the minimum pT cut to apply to calibrated tracks. "
61 "The default is 0.5 GeV.")
62 self.addOption ('maxEta', 2.5, type=float,
63 info="maximum track |eta| (float). The default is 2.5.")
64 self.addOption ('outputTrackSummaryInfo', False, type=bool,
65 info="decorate track summary information on the reconstructed object")
66

Member Function Documentation

◆ instanceName()

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

Definition at line 67 of file TrackingAnalysisConfig.py.

67 def instanceName (self) :
68 """Return the instance name for this block"""
69 return self.containerName + self.postfix
70

◆ makeAlgs()

TrackingAnalysisConfig.InDetTrackCalibrationConfig.makeAlgs ( self,
config )

Definition at line 131 of file TrackingAnalysisConfig.py.

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

◆ makeTrackBiasingTool()

TrackingAnalysisConfig.InDetTrackCalibrationConfig.makeTrackBiasingTool ( config,
alg,
float biasD0 = None,
float biasZ0 = None,
float biasQoverPsagitta = None,
int customRunNumber = None )
static

Definition at line 72 of file TrackingAnalysisConfig.py.

77 customRunNumber : int=None) :
78 toolName = "biasingTool"
79 config.addPrivateTool(toolName, "InDet::InDetTrackBiasingTool")
80 if config.geometry() is LHCPeriod.Run3:
81 raise ValueError ('Recommendations are not yet available in Run 3.')
82 elif config.geometry() is not LHCPeriod.Run2:
83 raise ValueError ('No recommendations found for geometry \"'
84 + config.geometry().value + '\". Please check '
85 'the configuration.')
86 if biasD0:
87 alg.biasingTool.biasD0 = biasD0
88 if biasZ0:
89 alg.biasingTool.biasZ0 = biasZ0
90 if biasQoverPsagitta:
91 alg.biasingTool.biasQoverPsagitta = biasQoverPsagitta
92 if customRunNumber:
93 alg.biasingTool.runNumber = customRunNumber
94 pass
95

◆ makeTrackSmearingTool()

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

Definition at line 97 of file TrackingAnalysisConfig.py.

100 calibFile : str=None) :
101 toolName = "smearingTool"
102 config.addPrivateTool(toolName, "InDet::InDetTrackSmearingTool")
103 if seed:
104 alg.smearingTool.Seed = seed
105 if calibFile:
106 alg.tackSmearingTool.calibFileIP_CTIDE = calibFile
107 else:
108 if config.geometry() is LHCPeriod.Run2:
109 # Run 2 recommendations (MC20)
110 alg.smearingTool.calibFileIP_CTIDE = "InDetTrackSystematicsTools/CalibData_22.0_2022-v00/d0z0_smearing_factors_Run2_v2.root"
111 elif config.geometry() is LHCPeriod.Run3:
112 if config.campaign() is Campaign.MC23a:
113 # 2022 recommendations (MC23a)
114 alg.smearingTool.calibFileIP_CTIDE = "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2022_d0z0_smearing_factors_v2.root"
115 elif config.campaign() is Campaign.MC23d:
116 # 2023 recommendations (MC23d)
117 alg.smearingTool.calibFileIP_CTIDE = "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2023_d0z0_smearing_factors_v2.root"
118 elif config.campaign() is Campaign.MC23e:
119 # 2024 recommendations (MC23e)
120 alg.smearingTool.calibFileIP_CTIDE = "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2024_d0z0_smearing_factors.root"
121 else:
122 raise ValueError ('No recommendations found for campaign \"'
123 + config.campaign().value + '\" in Run 3. '
124 'Please check that the recommendations exist.')
125 else:
126 raise ValueError ('No recommendations found for geometry \"'
127 + config.geometry().value + '\". Please check '
128 'the configuration.')
129 pass
130

Member Data Documentation

◆ biasD0

TrackingAnalysisConfig.InDetTrackCalibrationConfig.biasD0

Definition at line 163 of file TrackingAnalysisConfig.py.

◆ biasQoverPsagitta

TrackingAnalysisConfig.InDetTrackCalibrationConfig.biasQoverPsagitta

Definition at line 165 of file TrackingAnalysisConfig.py.

◆ biasZ0

TrackingAnalysisConfig.InDetTrackCalibrationConfig.biasZ0

Definition at line 164 of file TrackingAnalysisConfig.py.

◆ calibFile

TrackingAnalysisConfig.InDetTrackCalibrationConfig.calibFile

Definition at line 177 of file TrackingAnalysisConfig.py.

◆ containerName

TrackingAnalysisConfig.InDetTrackCalibrationConfig.containerName

Definition at line 137 of file TrackingAnalysisConfig.py.

◆ customRunNumber

TrackingAnalysisConfig.InDetTrackCalibrationConfig.customRunNumber

Definition at line 166 of file TrackingAnalysisConfig.py.

◆ inputContainer

TrackingAnalysisConfig.InDetTrackCalibrationConfig.inputContainer

Definition at line 135 of file TrackingAnalysisConfig.py.

◆ outputTrackSummaryInfo

TrackingAnalysisConfig.InDetTrackCalibrationConfig.outputTrackSummaryInfo

Definition at line 206 of file TrackingAnalysisConfig.py.

◆ runBiasing

TrackingAnalysisConfig.InDetTrackCalibrationConfig.runBiasing

Definition at line 156 of file TrackingAnalysisConfig.py.

◆ smearingToolSeed

TrackingAnalysisConfig.InDetTrackCalibrationConfig.smearingToolSeed

Definition at line 176 of file TrackingAnalysisConfig.py.


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