38 def makeAlgs (self, config) :
40 postfix = self.postfix
41 if postfix !=
'' and postfix[0] !=
'_' :
42 postfix =
'_' + postfix
44 inputContainer =
"AnalysisTauJets" if config.isPhyslite()
else "TauJets"
45 if self.inputContainer:
46 inputContainer = self.inputContainer
47 config.setSourceName (self.containerName, inputContainer)
50 if self.rerunTruthMatching
and config.dataType()
is not DataType.Data:
51 alg = config.createAlgorithm(
'CP::TauTruthMatchingAlg',
52 'TauTruthMatchingAlg' )
53 config.addPrivateTool(
'matchingTool',
54 'TauAnalysisTools::TauTruthMatchingTool' )
55 alg.matchingTool.TruthJetContainerName =
'AntiKt4TruthDressedWZJets'
56 alg.taus = config.readName (self.containerName)
57 alg.preselection = config.getPreselection (self.containerName,
'')
60 if self.decorateTruth
and config.dataType()
is not DataType.Data:
61 alg = config.createAlgorithm(
'CP::TauTruthDecorationsAlg',
62 'TauTruthDecorationsAlg',
64 alg.taus = config.readName (self.containerName)
65 alg.doubleDecorations = [
'pt_vis',
'pt_invis',
'eta_vis',
'eta_invis',
'phi_vis',
'phi_invis',
'm_vis',
'm_invis']
66 alg.floatDecorations = []
67 alg.intDecorations = [
'pdgId']
68 alg.unsignedIntDecorations = [
'classifierParticleOrigin',
'classifierParticleType']
69 alg.charDecorations = [
'IsHadronicTau']
73 for var
in [
'DecayMode',
'ParticleType',
'PartonTruthLabelID'] + alg.doubleDecorations[:] + alg.floatDecorations[:] + alg.intDecorations[:] + alg.unsignedIntDecorations[:] + alg.charDecorations[:]:
74 branchName = alg.prefix + var
75 if 'classifierParticle' in var:
76 branchOutput = alg.prefix + var.replace(
'classifierParticle',
'').lower()
78 branchOutput = branchName
79 config.addOutputVar (self.containerName, branchName, branchOutput, noSys=
True)
82 if self.decorateExtraVariables:
83 alg = config.createAlgorithm(
'CP::TauExtraVariablesAlg',
84 'TauExtraVariablesAlg',
86 alg.taus = config.readName (self.containerName)
89 alg = config.createAlgorithm(
'CP::TauSmearingAlg',
'TauSmearingAlg' )
90 config.addPrivateTool(
'smearingTool',
'TauAnalysisTools::TauSmearingTool' )
91 alg.smearingTool.useFastSim = config.dataType()
is DataType.FastSim
92 alg.smearingTool.Campaign =
"mc23" if config.geometry()
is LHCPeriod.Run3
else "mc20"
93 alg.taus = config.readName (self.containerName)
94 alg.tausOut = config.copyName (self.containerName)
95 alg.preselection = config.getPreselection (self.containerName,
'')
98 alg = config.createAlgorithm(
'CP::AsgEnergyDecoratorAlg',
'EnergyDecorator' )
99 alg.particles = config.readName (self.containerName)
101 config.addOutputVar (self.containerName,
'pt',
'pt')
102 config.addOutputVar (self.containerName,
'eta',
'eta', noSys=
True)
103 config.addOutputVar (self.containerName,
'phi',
'phi', noSys=
True)
104 config.addOutputVar (self.containerName,
'e_%SYS%',
'e')
105 config.addOutputVar (self.containerName,
'charge',
'charge', noSys=
True)
106 config.addOutputVar (self.containerName,
'NNDecayMode',
'NNDecayMode', noSys=
True)
107 config.addOutputVar (self.containerName,
'passTATTauMuonOLR',
'passTATTauMuonOLR', noSys=
True)
108 config.addOutputVar (self.containerName,
'TESCompatibility',
'TESCompatibility')
109 if self.decorateExtraVariables:
110 config.addOutputVar (self.containerName,
'nTracksCharged',
'nTracksCharged', noSys=
True)