ATLAS Offline Software
Loading...
Searching...
No Matches
python.TauAnalysisConfig.TauCalibrationConfig Class Reference
Inheritance diagram for python.TauAnalysisConfig.TauCalibrationConfig:
Collaboration diagram for python.TauAnalysisConfig.TauCalibrationConfig:

Public Member Functions

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

Public Attributes

 inputContainer
 containerName
 addGlobalFELinksDep
 decorateExtraVariables

Detailed Description

the ConfigBlock for the tau four-momentum correction

Definition at line 14 of file TauAnalysisConfig.py.

Constructor & Destructor Documentation

◆ __init__()

python.TauAnalysisConfig.TauCalibrationConfig.__init__ ( self)

Definition at line 17 of file TauAnalysisConfig.py.

17 def __init__ (self) :
18 super (TauCalibrationConfig, self).__init__ ()
19 self.setBlockName('Taus')
20 self.addOption ('inputContainer', '', type=str,
21 info="the name of the input tau-jet container. If left empty, automatically defaults "
22 "to `'AnalysisTauJets'` for PHYSLITE and `'TauJets'` otherwise.")
23 self.addOption ('containerName', '', type=str,
24 noneAction='error',
25 info="the name of the output container after calibration.")
26 self.addOption ('postfix', '', type=str,
27 info="a postfix to apply to decorations and algorithm names. "
28 "Typically not needed here since the calibration is common to "
29 "all tau-jets.")
30 self.addOption ('rerunTruthMatching', True, type=bool,
31 info="whether to rerun truth matching (sets up an instance of "
32 "`CP::TauTruthMatchingAlg`).")
33 self.addOption ('decorateTruth', False, type=bool,
34 info="decorate the truth particle information on the reconstructed one.")
35 self.addOption ('decorateExtraVariables', True, type=bool,
36 info="decorate extra variables for the reconstructed tau-jet.")
37 self.addOption ('addGlobalFELinksDep', False, type=bool,
38 info="whether to add dependencies for the global FE links (needed for PHYSLITE production)",
39 expertMode=True)
40

Member Function Documentation

◆ instanceName()

python.TauAnalysisConfig.TauCalibrationConfig.instanceName ( self)
Return the instance name for this block

Definition at line 41 of file TauAnalysisConfig.py.

41 def instanceName (self) :
42 """Return the instance name for this block"""
43 return self.containerName + self.postfix
44

◆ makeAlgs()

python.TauAnalysisConfig.TauCalibrationConfig.makeAlgs ( self,
config )

Definition at line 45 of file TauAnalysisConfig.py.

45 def makeAlgs (self, config) :
46
47 # protection for EleRM taus, which are available only from 2024 onward
48 if 'EleRM' in self.inputContainer:
49 if config.dataType() is DataType.Data and config.dataYear() <= 2023:
50 raise RuntimeError("EleRM taus are only available from 2024 dataset onward")
51 elif config.dataType() is not DataType.Data and config.campaign() <= Campaign.MC23d:
52 raise RuntimeError("EleRM taus are only available from 2024 dataset onward")
53
54 postfix = self.postfix
55 if postfix != '' and postfix[0] != '_' :
56 postfix = '_' + postfix
57
58 inputContainer = "AnalysisTauJets" if config.isPhyslite() else "TauJets"
59 if self.inputContainer:
60 inputContainer = self.inputContainer
61 config.setSourceName (self.containerName, inputContainer)
62
63 # Set up a shallow copy to decorate
64 if config.wantCopy (self.containerName) :
65 alg = config.createAlgorithm( 'CP::AsgShallowCopyAlg', 'TauShallowCopyAlg' )
66 alg.input = config.readName (self.containerName)
67 alg.output = config.copyName (self.containerName)
68 alg.outputType = 'xAOD::TauJetContainer'
69 decorations = []
70 if self.addGlobalFELinksDep:
71 decorations += ['neutralGlobalFELinks', 'chargedGlobalFELinks']
72 if config.dataType() is not DataType.Data:
73 decorations += ['IsTruthMatched', 'truthJetLink', 'truthParticleLink']
74 if decorations:
75 alg.declareDecorations = decorations
76
77 # Set up the tau truth matching algorithm:
78 if self.rerunTruthMatching and config.dataType() is not DataType.Data:
79 alg = config.createAlgorithm( 'CP::TauTruthMatchingAlg',
80 'TauTruthMatchingAlg' )
81 config.addPrivateTool( 'matchingTool',
82 'TauAnalysisTools::TauTruthMatchingTool' )
83 alg.matchingTool.TruthJetContainerName = 'AntiKt4TruthDressedWZJets'
84 alg.taus = config.readName (self.containerName)
85 alg.preselection = config.getPreselection (self.containerName, '')
86
87 # decorate truth tau information on the reconstructed object:
88 if self.decorateTruth and config.dataType() is not DataType.Data:
89 alg = config.createAlgorithm( 'CP::TauTruthDecorationsAlg',
90 'TauTruthDecorationsAlg',
91 reentrant=True )
92 alg.taus = config.readName (self.containerName, nominal=True)
93 alg.doubleDecorations = ['pt_vis', 'pt_invis', 'eta_vis', 'eta_invis', 'phi_vis', 'phi_invis', 'm_vis', 'm_invis']
94 alg.floatDecorations = []
95 alg.intDecorations = ['pdgId']
96 alg.unsignedIntDecorations = ['classifierParticleOrigin', 'classifierParticleType']
97 alg.charDecorations = ['IsHadronicTau']
98 alg.prefix = 'truth_'
99
100 # these are "_ListHelper" objects, and not "list", need to copy to lists to allow concatenate
101 for var in ['DecayMode', 'ParticleType', 'PartonTruthLabelID'] + alg.doubleDecorations[:] + alg.floatDecorations[:] + alg.intDecorations[:] + alg.unsignedIntDecorations[:] + alg.charDecorations[:]:
102 branchName = alg.prefix + var
103 if 'classifierParticle' in var:
104 branchOutput = alg.prefix + var.replace('classifierParticle', '').lower()
105 else:
106 branchOutput = branchName
107 config.addOutputVar (self.containerName, branchName, branchOutput, noSys=True)
108
109 # Decorate extra variables
110 if self.decorateExtraVariables:
111 alg = config.createAlgorithm( 'CP::TauExtraVariablesAlg',
112 'TauExtraVariablesAlg',
113 reentrant=True )
114 alg.taus = config.readName (self.containerName, nominal=True)
115
116 # Set up the tau 4-momentum smearing algorithm:
117 alg = config.createAlgorithm( 'CP::TauSmearingAlg', 'TauSmearingAlg' )
118 config.addPrivateTool( 'smearingTool', 'TauAnalysisTools::TauSmearingTool' )
119 alg.smearingTool.useFastSim = config.dataType() is DataType.FastSim
120 alg.smearingTool.Campaign = "mc23" if config.geometry() is LHCPeriod.Run3 else "mc20"
121 alg.taus = config.readName (self.containerName)
122 alg.tausOut = config.copyName (self.containerName)
123 config.setExtraOutputs ({('xAOD::IParticleContainer' , 'StoreGateSvc+' + config.readName(self.containerName, nominal=True) + '.RNNEleScoreSigTrans_v1')})
124 alg.preselection = config.getPreselection (self.containerName, '')
125
126 # Additional decorations
127 alg = config.createAlgorithm( 'CP::AsgEnergyDecoratorAlg', 'EnergyDecorator' )
128 alg.particles = config.readName (self.containerName)
129
130 config.addOutputVar (self.containerName, 'pt', 'pt')
131 config.addOutputVar (self.containerName, 'eta', 'eta', noSys=True)
132 config.addOutputVar (self.containerName, 'phi', 'phi', noSys=True)
133 config.addOutputVar (self.containerName, 'e_%SYS%', 'e')
134 config.addOutputVar (self.containerName, 'charge', 'charge', noSys=True)
135 config.addOutputVar (self.containerName, 'NNDecayMode', 'NNDecayMode', noSys=True, auxType='int')
136 config.addOutputVar (self.containerName, 'passTATTauMuonOLR', 'passTATTauMuonOLR', noSys=True, auxType='char')
137 config.addOutputVar (self.containerName, 'TESCompatibility', 'TESCompatibility')
138 if self.decorateExtraVariables:
139 config.addOutputVar (self.containerName, 'nTracksCharged', 'nTracksCharged', noSys=True)
140
141

Member Data Documentation

◆ addGlobalFELinksDep

python.TauAnalysisConfig.TauCalibrationConfig.addGlobalFELinksDep

Definition at line 70 of file TauAnalysisConfig.py.

◆ containerName

python.TauAnalysisConfig.TauCalibrationConfig.containerName

Definition at line 61 of file TauAnalysisConfig.py.

◆ decorateExtraVariables

python.TauAnalysisConfig.TauCalibrationConfig.decorateExtraVariables

Definition at line 110 of file TauAnalysisConfig.py.

◆ inputContainer

python.TauAnalysisConfig.TauCalibrationConfig.inputContainer

Definition at line 48 of file TauAnalysisConfig.py.


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