76 biasQoverPsagitta : float=
None,
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 '
87 alg.biasingTool.biasD0 = biasD0
89 alg.biasingTool.biasZ0 = biasZ0
91 alg.biasingTool.biasQoverPsagitta = biasQoverPsagitta
93 alg.biasingTool.runNumber = customRunNumber
100 calibFile : str=
None) :
101 toolName =
"smearingTool"
102 config.addPrivateTool(toolName,
"InDet::InDetTrackSmearingTool")
104 alg.smearingTool.Seed = seed
106 alg.tackSmearingTool.calibFileIP_CTIDE = calibFile
108 if config.geometry()
is LHCPeriod.Run2:
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:
114 alg.smearingTool.calibFileIP_CTIDE =
"InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2022_d0z0_smearing_factors_v2.root"
115 elif config.campaign()
is Campaign.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:
120 alg.smearingTool.calibFileIP_CTIDE =
"InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2024_d0z0_smearing_factors.root"
122 raise ValueError (
'No recommendations found for campaign \"'
123 + config.campaign().value +
'\" in Run 3. '
124 'Please check that the recommendations exist.')
126 raise ValueError (
'No recommendations found for geometry \"'
127 + config.geometry().value +
'\". Please check '
128 'the configuration.')
132 log = logging.getLogger(
'InDetTrackCalibrationConfig')
134 inputContainer =
"InDetTrackParticles"
141 alg = config.createAlgorithm(
'CP::AsgShallowCopyAlg',
'InDetTrackShallowCopyAlg' )
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
151 alg.preselection = config.getPreselection (self.
containerName,
'')
152 config.addSelection (self.
containerName,
'', alg.selectionDecoration)
155 if config.dataType()
is not DataType.Data:
157 log.warning(
'Disabling the biasing tool for now. This should not '
158 'be used in an analysis.')
160 alg = config.createAlgorithm(
'CP::InDetTrackBiasingAlg',
'InDetTrackBiasingAlg' )
169 alg.preselection = config.getPreselection (self.
containerName,
'')
172 if config.dataType()
is not DataType.Data:
173 alg = config.createAlgorithm(
'CP::InDetTrackSmearingAlg',
'InDetTrackSmearingAlg' )
180 alg.preselection = config.getPreselection (self.
containerName,
'')
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
188 alg.preselection = config.getPreselection (self.
containerName,
'')
189 config.addSelection (self.
containerName,
'', alg.selectionDecoration,
193 alg = config.createAlgorithm(
'CP::InDetTrackExtraVarDecoratorAlg',
'ExtraVarDecorator' )
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)
203 config.addOutputVar (self.
containerName,
'vz',
'vz', noSys=
True)
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)