66 def makeAlgs (self, config) :
68 if config.isPhyslite() :
69 metSuffix =
'AnalysisMET'
71 jetContainer = config.originalName (self.jets)
72 metSuffix = jetContainer[:-4]
77 btIndex = metSuffix.find(
'_BTagging')
79 metSuffix = metSuffix[:btIndex]
82 alg = config.createAlgorithm(
'CP::MetMakerAlg',
'MetMakerAlg' )
83 config.addPrivateTool(
'makerTool',
'met::METMaker' )
84 alg.makerTool.skipSystematicJetSelection = self.skipSystematicJetSelection
86 alg.doJetJVT = self.useJVT
88 config.addPrivateTool(
'makerTool.JvtSelTool',
'CP::NNJvtSelectionTool' )
89 alg.makerTool.JvtSelTool.JetContainer = config.readName (self.jets)
91 alg.makerTool.JetRejectionDec =
'fjvt_selection'
93 alg.makerTool.JetSelection = self.metWP
94 alg.makerTool.DoPFlow =
'PFlow' in metSuffix
or metSuffix==
"AnalysisMET"
95 alg.makerTool.DoSetMuonJetEMScale = self.setMuonJetEMScale
if self.muons
else False
97 if config.dataType()
is not DataType.Data :
98 config.addPrivateTool(
'systematicsTool',
'met::METSystematicsTool' )
100 alg.metCore =
'MET_Core_' + metSuffix
101 alg.metAssociation =
'METAssoc_' + metSuffix
102 alg.jets = config.readName (self.jets)
103 alg.softTermKey =
"PVSoftTrk" if not self.useCaloSoftTerm
else "SoftClus"
104 if self.muons !=
"" :
105 alg.muons, alg.muonsSelection = config.readNameAndSelection (self.muons, excludeFrom={
'or'})
106 if self.electrons !=
"" :
107 alg.electrons, alg.electronsSelection = config.readNameAndSelection (self.electrons, excludeFrom={
'or'})
108 if self.photons !=
"" :
109 alg.photons, alg.photonsSelection = config.readNameAndSelection (self.photons, excludeFrom={
'or'})
111 alg.taus, alg.tausSelection = config.readNameAndSelection (self.taus, excludeFrom={
'or'})
113 if isinstance(self.invisible, str):
114 self.invisible = [self.invisible]
115 alg.invisible, alg.invisibleSelection = [config.readNameAndSelection (container, excludeFrom={
'or'})
for container
in self.invisible]
116 alg.met = config.writeName (self.containerName, isMet =
True)
120 alg = config.createAlgorithm(
'CP::MetBuilderAlg',
'MetBuilderAlg' )
121 alg.softTerm =
"PVSoftTrk" if not self.useCaloSoftTerm
else "SoftClus"
122 alg.met = config.readName (self.containerName)
126 if self.saveSignificance:
127 alg = config.createAlgorithm(
'CP::MetSignificanceAlg',
'MetSignificanceAlg' )
128 config.addPrivateTool(
'significanceTool',
'met::METSignificance' )
129 if self.muons !=
"" :
130 config.addPrivateTool(
'significanceTool.MuonCalibTool',
'CP::MuonCalibTool' )
132 alg.significanceTool.MuonCalibTool.calibMode = (
133 config.getContainerMeta(self.muons.
split(
".")[0],
'calibMode', failOnMiss=
True))
135 alg.significanceTool.SoftTermParam = 0
136 if self.softTermResolution > 0:
137 alg.significanceTool.SoftTermReso = self.softTermResolution
138 alg.significanceTool.TreatPUJets = self.treatPUJets
139 alg.significanceTool.IsAFII = config.dataType()
is DataType.FastSim
140 alg.met = config.readName (self.containerName)
141 config.addOutputVar (self.containerName,
'significance_%SYS%',
'significance')
142 if self.addExtraSignificanceVars:
143 alg.sigDirectionalDecoration =
"sigDirectional_%SYS%"
144 alg.METOverSqrtSumETDecoration =
"METOverSqrtSumET_%SYS%"
145 alg.METOverSqrtHTDecoration =
"METOverSqrtHT_%SYS%"
146 config.addOutputVar (self.containerName,
'sigDirectional_%SYS%',
'sigDirectional')
147 config.addOutputVar (self.containerName,
'METOverSqrtSumET_%SYS%',
'METOverSqrtSumET')
148 config.addOutputVar (self.containerName,
'METOverSqrtHT_%SYS%',
'METOverSqrtHT')
150 config.addOutputVar (self.containerName,
'met',
'met')
151 config.addOutputVar (self.containerName,
'phi',
'phi')
152 config.addOutputVar (self.containerName,
'sumet',
'sumet')
153 config.addOutputVar (self.containerName,
'name',
'name', noSys=
True, enabled=
False)