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="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 ('customRunNumber', None, type=int,
46 info="manually sets the `runNumber` 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 of the calibration file to use for the CTIDE "
52 "calibration. Expert option to override the recommendations "
53 "based on the campaign.",
54 expertMode=True)
55 self.addOption ('smearingToolSeed', None, type=int,
56 info="random seed to be used by the `InDetTrackSmearingTool`.",
57 expertMode=True)
58 self.addOption ('minPt', 0.5*GeV, type=float,
59 info=r"the minimum $p_\mathrm{T}$ cut to apply to calibrated tracks.")
60 self.addOption ('maxEta', 2.5, type=float,
61 info=r"maximum track $\vert\eta\vert$.")
62 self.addOption ('outputTrackSummaryInfo', False, type=bool,
63 info="decorate track summary information on the reconstructed objects.")
64

Member Function Documentation

◆ instanceName()

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

Definition at line 65 of file TrackingAnalysisConfig.py.

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

◆ makeAlgs()

TrackingAnalysisConfig.InDetTrackCalibrationConfig.makeAlgs ( self,
config )

Definition at line 129 of file TrackingAnalysisConfig.py.

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

◆ makeTrackBiasingTool()

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

Definition at line 70 of file TrackingAnalysisConfig.py.

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

◆ makeTrackSmearingTool()

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

Definition at line 95 of file TrackingAnalysisConfig.py.

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

Member Data Documentation

◆ biasD0

TrackingAnalysisConfig.InDetTrackCalibrationConfig.biasD0

Definition at line 161 of file TrackingAnalysisConfig.py.

◆ biasQoverPsagitta

TrackingAnalysisConfig.InDetTrackCalibrationConfig.biasQoverPsagitta

Definition at line 163 of file TrackingAnalysisConfig.py.

◆ biasZ0

TrackingAnalysisConfig.InDetTrackCalibrationConfig.biasZ0

Definition at line 162 of file TrackingAnalysisConfig.py.

◆ calibFile

TrackingAnalysisConfig.InDetTrackCalibrationConfig.calibFile

Definition at line 175 of file TrackingAnalysisConfig.py.

◆ containerName

TrackingAnalysisConfig.InDetTrackCalibrationConfig.containerName

Definition at line 135 of file TrackingAnalysisConfig.py.

◆ customRunNumber

TrackingAnalysisConfig.InDetTrackCalibrationConfig.customRunNumber

Definition at line 164 of file TrackingAnalysisConfig.py.

◆ inputContainer

TrackingAnalysisConfig.InDetTrackCalibrationConfig.inputContainer

Definition at line 133 of file TrackingAnalysisConfig.py.

◆ outputTrackSummaryInfo

TrackingAnalysisConfig.InDetTrackCalibrationConfig.outputTrackSummaryInfo

Definition at line 204 of file TrackingAnalysisConfig.py.

◆ runBiasing

TrackingAnalysisConfig.InDetTrackCalibrationConfig.runBiasing

Definition at line 154 of file TrackingAnalysisConfig.py.

◆ smearingToolSeed

TrackingAnalysisConfig.InDetTrackCalibrationConfig.smearingToolSeed

Definition at line 174 of file TrackingAnalysisConfig.py.


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