90 if config.isPhyslite() :
91 metSuffix =
'AnalysisMET'
93 jetContainer = config.originalName (self.jets)
94 metSuffix = jetContainer[:-4]
99 btIndex = metSuffix.find(
'_BTagging')
101 metSuffix = metSuffix[:btIndex]
104 alg = config.createAlgorithm(
'CP::MetMakerAlg',
'MetMakerAlg' )
105 config.addPrivateTool(
'makerTool',
'met::METMaker' )
106 alg.makerTool.skipSystematicJetSelection = self.skipSystematicJetSelection
108 alg.doJetJVT = self.
useJVT
110 config.addPrivateTool(
'makerTool.JvtSelTool',
'CP::NNJvtSelectionTool' )
111 alg.makerTool.JvtSelTool.JetContainer = config.readName (self.jets)
112 alg.makerTool.JvtSelTool.JvtMomentName =
"NNJvt"
116 alg.makerTool.JetRejectionDec =
'fjvt_selection'
120 alg.makerTool.JetRejectionDec = fjvt_decoration
122 alg.makerTool.JetSelection = self.metWP
123 alg.makerTool.DoPFlow =
'PFlow' in metSuffix
or metSuffix==
"AnalysisMET"
124 alg.makerTool.DoSetMuonJetEMScale = self.setMuonJetEMScale
if self.muons
else False
125 alg.switchTauMu = self.switchTauMuOrder
127 if config.dataType()
is not DataType.Data :
128 config.addPrivateTool(
'systematicsTool',
'met::METSystematicsTool' )
130 alg.metCore =
'MET_Core_' + metSuffix
131 alg.metAssociation =
'METAssoc_' + metSuffix
132 alg.jets = config.readName (self.jets)
133 alg.softTermKey =
"PVSoftTrk" if not self.useCaloSoftTerm
else "SoftClus"
134 if self.muons !=
"" :
135 alg.muons, alg.muonsSelection = config.readNameAndSelection (self.muons, excludeFrom={
'or'})
136 if self.electrons !=
"" :
137 alg.electrons, alg.electronsSelection = config.readNameAndSelection (self.electrons, excludeFrom={
'or'})
138 if self.photons !=
"" :
139 alg.photons, alg.photonsSelection = config.readNameAndSelection (self.photons, excludeFrom={
'or'})
141 alg.taus, alg.tausSelection = config.readNameAndSelection (self.taus, excludeFrom={
'or'})
145 invisibleContainers, invisibleSelections = zip(*[config.readNameAndSelection (container, excludeFrom={
'or'})
for container
in self.
invisible])
146 alg.invisible = list(invisibleContainers)
147 alg.invisibleSelection = list(invisibleSelections)
148 alg.met = config.writeName (self.
containerName, isMet =
True)
152 alg = config.createAlgorithm(
'CP::MetBuilderAlg',
'MetBuilderAlg' )
153 alg.softTerm =
"PVSoftTrk" if not self.useCaloSoftTerm
else "SoftClus"
159 alg = config.createAlgorithm(
'CP::MetSignificanceAlg',
'MetSignificanceAlg' )
160 config.addPrivateTool(
'significanceTool',
'met::METSignificance' )
161 if self.muons !=
"" :
162 config.addPrivateTool(
'significanceTool.MuonCalibTool',
'CP::MuonCalibTool' )
164 alg.significanceTool.MuonCalibTool.calibMode = (
165 config.getContainerMeta(self.muons.
split(
".")[0],
'calibMode', failOnMiss=
True))
170 self.
jetCalibConfig =
"JES_data2017_2016_2015_Recommendation_PFlow_Aug2018_rel21.config"
179 config.getContainerMeta(self.electrons.
split(
".")[0],
'ESModel', failOnMiss=
True))
182 config.getContainerMeta(self.electrons.
split(
".")[0],
'decorrelationModel', failOnMiss=
True))
184 alg.significanceTool.SoftTermParam = 0
185 if self.softTermResolution > 0:
186 alg.significanceTool.SoftTermReso = self.softTermResolution
187 alg.significanceTool.TreatPUJets = self.treatPUJets
193 alg.significanceTool.EgammaUseFastsim = (config.dataType()
is DataType.FastSim)
194 alg.significanceTool.TauTESConfig = self.tauTESConfig
195 alg.significanceTool.TauUseMVAResolution = self.tauUseMVAResolution
197 config.addOutputVar (self.
containerName,
'significance_%SYS%',
'significance')
199 alg.sigDirectionalDecoration =
"sigDirectional_%SYS%"
200 alg.METOverSqrtSumETDecoration =
"METOverSqrtSumET_%SYS%"
201 alg.METOverSqrtHTDecoration =
"METOverSqrtHT_%SYS%"
202 config.addOutputVar (self.
containerName,
'sigDirectional_%SYS%',
'sigDirectional')
203 config.addOutputVar (self.
containerName,
'METOverSqrtSumET_%SYS%',
'METOverSqrtSumET')
204 config.addOutputVar (self.
containerName,
'METOverSqrtHT_%SYS%',
'METOverSqrtHT')
209 config.addOutputVar (self.
containerName,
'name',
'name', noSys=
True, enabled=
False)