ATLAS Offline Software
Public Member Functions | List of all members
TrackingAnalysisConfig.InDetTrackCalibrationConfig Class Reference
Inheritance diagram for TrackingAnalysisConfig.InDetTrackCalibrationConfig:
Collaboration diagram for TrackingAnalysisConfig.InDetTrackCalibrationConfig:

Public Member Functions

def __init__ (self)
 
def instanceName (self)
 
def makeAlgs (self, config)
 

Detailed Description

the ConfigBlock for the track impact parameter correction

Definition at line 12 of file TrackingAnalysisConfig.py.

Constructor & Destructor Documentation

◆ __init__()

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

Member Function Documentation

◆ instanceName()

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

Definition at line 61 of file TrackingAnalysisConfig.py.

61  def instanceName (self) :
62  """Return the instance name for this block"""
63  return self.containerName + self.postfix
64 

◆ makeAlgs()

def TrackingAnalysisConfig.InDetTrackCalibrationConfig.makeAlgs (   self,
  config 
)

Definition at line 65 of file TrackingAnalysisConfig.py.

65  def makeAlgs (self, config) :
66  log = logging.getLogger('InDetTrackCalibrationConfig')
67 
68  inputContainer = "InDetTrackParticles"
69  if self.inputContainer:
70  inputContainer = self.inputContainer
71  config.setSourceName (self.containerName, inputContainer)
72 
73  # Set up a shallow copy to decorate
74  if config.wantCopy (self.containerName) :
75  alg = config.createAlgorithm( 'CP::AsgShallowCopyAlg', 'InDetTrackShallowCopyAlg' )
76  alg.input = config.readName (self.containerName)
77  alg.output = config.copyName (self.containerName)
78 
79  # Set up the eta-cut on all tracks prior to everything else
80  alg = config.createAlgorithm( 'CP::AsgSelectionAlg', 'InDetTrackEtaCutAlg' )
81  alg.selectionDecoration = 'selectEta' + self.postfix + ',as_bits'
82  config.addPrivateTool( 'selectionTool', 'CP::AsgPtEtaSelectionTool' )
83  alg.selectionTool.maxEta = self.maxEta
84  alg.particles = config.readName (self.containerName)
85  alg.preselection = config.getPreselection (self.containerName, '')
86  config.addSelection (self.containerName, '', alg.selectionDecoration)
87 
88  # Set up the biasing algorithm. The recommendations is to bias MC instead of unbiasing Data:
89  if config.dataType() is not DataType.Data:
90  if not self.runBiasing:
91  log.warning('Disabling the biasing tool for now. This should not '
92  'be used in an analysis.')
93  else:
94  if config.geometry() is LHCPeriod.Run3:
95  raise ValueError ('Recommendations are not yet available in Run 3.')
96  elif config.geometry() is not LHCPeriod.Run2:
97  raise ValueError ('No recommendations found for geometry \"'
98  + config.geometry().value + '\". Please check '
99  'the configuration.')
100  alg = config.createAlgorithm( 'CP::InDetTrackBiasingAlg', 'InDetTrackBiasingAlg' )
101  config.addPrivateTool( 'biasingTool', 'InDet::InDetTrackBiasingTool' )
102  if self.biasD0:
103  alg.biasingTool.biasD0 = self.biasD0
104  if self.biasZ0:
105  alg.biasingTool.biasZ0 = self.biasZ0
106  if self.biasQoverPsagitta:
107  alg.biasingTool.biasQoverPsagitta = self.biasQoverPsagitta
108  if self.customRunNumber:
109  alg.biasingTool.runNumber = self.customRunNumber
110  alg.inDetTracks = config.readName (self.containerName)
111  alg.inDetTracksOut = config.copyName (self.containerName)
112  alg.preselection = config.getPreselection (self.containerName, '')
113 
114  # Set up the smearing algorithm:
115  if config.dataType() is not DataType.Data:
116  alg = config.createAlgorithm( 'CP::InDetTrackSmearingAlg', 'InDetTrackSmearingAlg' )
117  config.addPrivateTool( 'smearingTool', 'InDet::InDetTrackSmearingTool' )
118  if self.smearingToolSeed:
119  alg.smearingTool.Seed = self.smearingToolSeed
120  if self.calibFile:
121  alg.smearingTool.calibFileIP_CTIDE = self.calibFile
122  else:
123  if config.geometry() is LHCPeriod.Run2:
124  # Run 2 recommendations (MC20)
125  alg.smearingTool.calibFileIP_CTIDE = "InDetTrackSystematicsTools/CalibData_22.0_2022-v00/d0z0_smearing_factors_Run2_v2.root"
126  elif config.geometry() is LHCPeriod.Run3:
127  if config.campaign() is Campaign.MC23a:
128  # 2022 recommendations (MC23a)
129  alg.smearingTool.calibFileIP_CTIDE = "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2022_d0z0_smearing_factors_v2.root"
130  elif config.campaign() is Campaign.MC23d:
131  # 2023 recommendations (MC23d)
132  alg.smearingTool.calibFileIP_CTIDE = "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2023_d0z0_smearing_factors_v2.root"
133  elif config.campaign() is Campaign.MC23e:
134  # 2024 recommendations (MC23e)
135  alg.smearingTool.calibFileIP_CTIDE = "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2024_d0z0_smearing_factors.root"
136  else:
137  raise ValueError ('No recommendations found for capaign \"'
138  + config.campaign().value + '\" in Run 3. '
139  'Please check that the recommendations exist.')
140  else:
141  raise ValueError ('No recommendations found for geometry \"'
142  + config.geometry().value + '\". Please check '
143  'the configuration.')
144  alg.inDetTracks = config.readName (self.containerName)
145  alg.inDetTracksOut = config.copyName (self.containerName)
146  alg.preselection = config.getPreselection (self.containerName, '')
147 
148  if self.minPt > 0 : # Set up the the pt selection
149  alg = config.createAlgorithm( 'CP::AsgSelectionAlg', 'InDetTrackPtCutAlg' )
150  alg.selectionDecoration = 'selectPt' + self.postfix + ',as_bits'
151  config.addPrivateTool( 'selectionTool', 'CP::AsgPtEtaSelectionTool' )
152  alg.selectionTool.minPt = self.minPt
153  alg.particles = config.readName (self.containerName)
154  alg.preselection = config.getPreselection (self.containerName, '')
155  config.addSelection (self.containerName, '', alg.selectionDecoration,
156  preselection=True)
157 
158  alg = config.createAlgorithm( 'CP::InDetTrackMomentumDecoratorAlg', 'MomentumDecorator' )
159  alg.inDetTracks = config.readName(self.containerName)
160 
161  config.addOutputVar (self.containerName, 'pt_%SYS%', 'pt')
162  config.addOutputVar (self.containerName, 'eta', 'eta', noSys=True)
163  config.addOutputVar (self.containerName, 'phi', 'phi', noSys=True)
164  config.addOutputVar (self.containerName, 'charge', 'charge', noSys=True)
165  config.addOutputVar (self.containerName, 'qOverP', 'qOverP')
166  config.addOutputVar (self.containerName, 'd0', 'd0')
167  config.addOutputVar (self.containerName, 'z0', 'z0')
168  config.addOutputVar (self.containerName, 'vz', 'vz', noSys=True)
169 
170  # decorate track summary information on the reconstructed object:
171  if self.outputTrackSummaryInfo and config.dataType() is not DataType.Data:
172  config.addOutputVar (self.containerName, 'numberOfInnermostPixelLayerHits', 'numberOfInnermostPixelLayerHits', noSys=True)
173  config.addOutputVar (self.containerName, 'numberOfPixelDeadSensors', 'numberOfPixelDeadSensors', noSys=True)
174  config.addOutputVar (self.containerName, 'numberOfPixelHits', 'numberOfPixelHits', noSys=True)
175  config.addOutputVar (self.containerName, 'numberOfPixelHoles', 'numberOfPixelHoles', noSys=True)
176  config.addOutputVar (self.containerName, 'numberOfPixelSharedHits', 'numberOfPixelSharedHits', noSys=True)
177  config.addOutputVar (self.containerName, 'numberOfSCTDeadSensors', 'numberOfSCTDeadSensors', noSys=True)
178  config.addOutputVar (self.containerName, 'numberOfSCTHits', 'numberOfSCTHits', noSys=True)
179  config.addOutputVar (self.containerName, 'numberOfSCTHoles', 'numberOfSCTHoles', noSys=True)
180  config.addOutputVar (self.containerName, 'numberOfSCTSharedHits', 'numberOfSCTSharedHits', noSys=True)
181  config.addOutputVar (self.containerName, 'numberOfTRTHits', 'numberOfTRTHits', noSys=True)
182  config.addOutputVar (self.containerName, 'numberOfTRTOutliers', 'numberOfTRTOutliers', noSys=True)
183 
184 

The documentation for this class was generated from the following file:
python.processes.powheg.ZZ.ZZ.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZ.py:18