2 from AthenaConfiguration.ComponentFactory
import CompFactory
3 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
4 from AthenaConfiguration.Enums
import LHCPeriod
7 PFTrackSelectorFactory=CompFactory.PFTrackSelector
8 PFTrackSelector=PFTrackSelectorFactory(algName)
12 from TrackToCalo.TrackToCaloConfig
import ParticleCaloExtensionToolCfg
15 eflowTrackCaloExtensionTool=CompFactory.eflowTrackCaloExtensionTool
18 TrackCaloExtensionTool.PFParticleCache =
""
20 PFTrackSelector.trackExtrapolatorTool = TrackCaloExtensionTool
22 from InDetConfig.InDetTrackSelectionToolConfig
import PFTrackSelectionToolCfg
26 if inputFlags.Detector.GeometryITk:
27 PFTrackSelector.ExtraInputs = {
28 (
"InDetDD::SiDetectorElementCollection",
"ConditionStore+ITkPixelDetectorElementCollection"),
29 (
"InDetDD::SiDetectorElementCollection",
"ConditionStore+ITkStripDetectorElementCollection"),
32 PFTrackSelector.ExtraInputs = {
33 (
"InDetDD::SiDetectorElementCollection",
"ConditionStore+PixelDetectorElementCollection"),
34 (
"InDetDD::SiDetectorElementCollection",
"ConditionStore+SCT_DetectorElementCollection"),
35 (
"InDetDD::TRT_DetElementContainer",
"ConditionStore+TRT_DetElementContainer"),
38 result.addEventAlgo (PFTrackSelector, primary=
True)
44 PFClusterSelectorToolFactory = CompFactory.PFClusterSelectorTool
45 PFClusterSelectorTool = PFClusterSelectorToolFactory(algName)
46 if clustersin
is not None:
47 PFClusterSelectorTool.clustersName = clustersin
48 if calclustersin
is not None:
49 PFClusterSelectorTool.calClustersName = calclustersin
51 if inputFlags.PF.useTruthCheating:
52 if inputFlags.PF.useTrackClusterTruthMatching:
53 PFClusterSelectorTool.CaloClusterReadDecorHandleKey_NLeadingTruthParticles =
"CaloTopoClusters." + inputFlags.Calo.TopoCluster.CalibrationHitDecorationName
55 return PFClusterSelectorTool
58 PFTrackClusterMatchingTool = CompFactory.PFTrackClusterMatchingTool
60 MatchingTool.ClusterPositionType = clusterPositionType
61 MatchingTool.DistanceType = distanceType
62 MatchingTool.MatchCut = matchCut*matchCut
67 PFCellLevelSubtractionToolFactory = CompFactory.PFSubtractionTool
68 PFCellLevelSubtractionTool = PFCellLevelSubtractionToolFactory(toolName,useNNEnergy = inputFlags.PF.useMLEOverP)
70 if inputFlags.GeoModel.Run <= LHCPeriod.Run3:
71 eflowCellEOverPTool_Run2_mc20_JetETMiss = CompFactory.eflowCellEOverPTool_Run2_mc20_JetETMiss
74 if inputFlags.PF.useLegacyEOverPRun4:
75 eflowCellEOverPTool_mc12_HLLHC = CompFactory.eflowCellEOverPTool_mc12_HLLHC
76 PFCellLevelSubtractionTool.eflowCellEOverPTool = eflowCellEOverPTool_mc12_HLLHC ()
78 PFCellEOverPTool = CompFactory.PFCellEOverPTool
79 PFCellLevelSubtractionTool.eflowCellEOverPTool =
PFCellEOverPTool(
"PFCellEOverPTool", referenceFileLocation = inputFlags.PF.EOverP_CellOrdering_ReferenceLocation)
81 PFCellLevelSubtractionTool.useLegacyEBinIndex=
False
83 if(inputFlags.PF.EOverPMode):
84 PFCellLevelSubtractionTool.CalcEOverP =
True
85 PFCellLevelSubtractionTool.nClusterMatchesToUse = -1
87 PFCellLevelSubtractionTool.nClusterMatchesToUse = 1
89 if(inputFlags.PF.EOverPMode):
90 PFCellLevelSubtractionTool.PFTrackClusterMatchingTool =
getPFTrackClusterMatchingTool(inputFlags,0.2,
"EtaPhiSquareDistance",
"PlainEtaPhi",
"CalObjBldMatchingTool")
92 PFCellLevelSubtractionTool.PFTrackClusterMatchingTool =
getPFTrackClusterMatchingTool(inputFlags,1.64,
"EtaPhiSquareSignificance",
"GeomCenterEtaPhi",
"CalObjBldMatchingTool")
94 PFCellLevelSubtractionTool.PFTrackClusterMatchingTool_015 =
getPFTrackClusterMatchingTool(inputFlags,0.15,
"EtaPhiSquareDistance",
"PlainEtaPhi",
"MatchingTool_Pull_015")
95 PFCellLevelSubtractionTool.PFTrackClusterMatchingTool_02 =
getPFTrackClusterMatchingTool(inputFlags,0.2,
"EtaPhiSquareDistance",
"PlainEtaPhi",
"MatchingTool_Pull_02")
97 if inputFlags.PF.useMLEOverP:
98 PFEnergyPredictorTool = CompFactory.PFEnergyPredictorTool(
"PFCellLevelEnergyPredcictorTool",ModelPath = inputFlags.PF.EOverP_NN_Model)
99 PFCellLevelSubtractionTool.NNEnergyPredictorTool = PFEnergyPredictorTool
100 PFCellLevelSubtractionTool.addCPData = inputFlags.PF.addCPData
102 if inputFlags.PF.useTruthCheating:
103 if inputFlags.PF.useTrackClusterTruthMatching:
104 PFCellLevelSubtractionTool.CaloClusterReadDecorHandleKey_NLeadingTruthParticles =
"CaloTopoClusters." + inputFlags.Calo.TopoCluster.CalibrationHitDecorationName
105 PFCellLevelSubtractionTool.useTrackClusterTruthMatching=
True
107 if inputFlags.PF.useTruthForChargedShowerSubtraction:
108 PFCellLevelSubtractionTool.useTruthForChargedShowerSubtraction =
True
109 PFCellLevelSubtractionTool.PFSimulateTruthShowerTool = CompFactory.PFSimulateTruthShowerTool(
"PFSimulateTruthShowerTool")
111 return PFCellLevelSubtractionTool
114 PFRecoverSplitShowersToolFactory = CompFactory.PFSubtractionTool
115 PFRecoverSplitShowersTool = PFRecoverSplitShowersToolFactory(toolName,useNNEnergy = inputFlags.PF.useMLEOverP)
117 if inputFlags.GeoModel.Run <= LHCPeriod.Run3:
118 eflowCellEOverPTool_Run2_mc20_JetETMiss = CompFactory.eflowCellEOverPTool_Run2_mc20_JetETMiss
121 if inputFlags.PF.useLegacyEOverPRun4:
122 eflowCellEOverPTool_mc12_HLLHC = CompFactory.eflowCellEOverPTool_mc12_HLLHC
123 PFRecoverSplitShowersTool.eflowCellEOverPTool = eflowCellEOverPTool_mc12_HLLHC ()
125 PFCellEOverPTool = CompFactory.PFCellEOverPTool
126 PFRecoverSplitShowersTool.eflowCellEOverPTool =
PFCellEOverPTool(
"PFCellEOverPTool_Recover", referenceFileLocation = inputFlags.PF.EOverP_CellOrdering_ReferenceLocation)
128 PFRecoverSplitShowersTool.useLegacyEBinIndex=
False
130 PFRecoverSplitShowersTool.RecoverSplitShowers =
True
132 if inputFlags.PF.useMLEOverP:
133 PFEnergyPredictorTool = CompFactory.PFEnergyPredictorTool(
"PFRecoverSplitShowersEnergyPredcictorTool",ModelPath = inputFlags.PF.EOverP_NN_Model)
134 PFRecoverSplitShowersTool.NNEnergyPredictorTool = PFEnergyPredictorTool
136 return PFRecoverSplitShowersTool
140 PFMomentCalculatorToolFactory = CompFactory.PFMomentCalculatorTool
141 PFMomentCalculatorTool = PFMomentCalculatorToolFactory(
"PFMomentCalculatorTool")
143 from CaloRec.CaloTopoClusterConfig
import getTopoMoments
144 PFClusterMomentsMaker = result.popToolsAndMerge(
getTopoMoments(inputFlags))
145 if (len(momentsToCalculateList) > 0):
146 PFClusterMomentsMaker.MomentsNames = momentsToCalculateList
147 PFMomentCalculatorTool.CaloClusterMomentsMaker = PFClusterMomentsMaker
149 PFClusterCollectionTool = CompFactory.PFClusterCollectionTool
152 if(inputFlags.PF.useCalibHitTruthClusterMoments):
153 PFMomentCalculatorTool.UseCalibHitTruth=
True
154 from CaloRec.CaloTopoClusterConfig
import getTopoCalibMoments
157 result.setPrivateTools(PFMomentCalculatorTool)
161 PFLCCalibTool = CompFactory.PFLCCalibTool
164 PFClusterCollectionTool = CompFactory.PFClusterCollectionTool
166 PFLCCalibTool.UseLocalWeight =
False
168 from CaloRec.CaloTopoClusterConfig
import getTopoClusterLocalCalibTools
171 PFLCCalibTool.CaloClusterLocalCalib=lcCalibToolList[0]
172 PFLCCalibTool.CaloClusterLocalCalibOOCC=lcCalibToolList[1]
173 PFLCCalibTool.CaloClusterLocalCalibOOCCPi0=lcCalibToolList[2]
174 PFLCCalibTool.CaloClusterLocalCalibDM=lcCalibToolList[3]
179 FlowElementChargedCreatorAlgorithmFactory = CompFactory.PFChargedFlowElementCreatorAlgorithm
180 FlowElementChargedCreatorAlgorithm = FlowElementChargedCreatorAlgorithmFactory(
"PFChargedFlowElementCreatorAlgorithm"+nameSuffix)
181 FlowElementChargedCreatorAlgorithm.eflowCaloObjectContainerName = eflowCaloObjectContainerName
182 if chargedFlowElementOutputName:
183 FlowElementChargedCreatorAlgorithm.FlowElementOutputName=chargedFlowElementOutputName
184 if(inputFlags.PF.EOverPMode):
185 FlowElementChargedCreatorAlgorithm.FlowElementOutputName=
"EOverPChargedParticleFlowObjects"
186 FlowElementChargedCreatorAlgorithm.EOverPMode =
True
187 if inputFlags.PF.addCPData:
188 FlowElementChargedCreatorAlgorithm.addCPData =
True
190 return FlowElementChargedCreatorAlgorithm
193 FlowElementNeutralCreatorAlgorithmFactory = CompFactory.PFNeutralFlowElementCreatorAlgorithm
194 FlowElementNeutralCreatorAlgorithm = FlowElementNeutralCreatorAlgorithmFactory(
"PFNeutralFlowElementCreatorAlgorithm"+nameSuffix)
195 FlowElementNeutralCreatorAlgorithm.eflowCaloObjectContainerName = eflowCaloObjectContainerName
196 if neutralFlowElementOutputName:
197 FlowElementNeutralCreatorAlgorithm.FlowElementOutputName=neutralFlowElementOutputName
198 if(inputFlags.PF.EOverPMode):
199 FlowElementNeutralCreatorAlgorithm.FlowElementOutputName=
"EOverPNeutralParticleFlowObjects"
200 if(inputFlags.PF.useCalibHitTruthClusterMoments
and inputFlags.PF.addClusterMoments):
201 FlowElementNeutralCreatorAlgorithm.UseCalibHitTruth=
True
202 if inputFlags.PF.addCPData:
203 FlowElementNeutralCreatorAlgorithm.addCPData =
True
205 return FlowElementNeutralCreatorAlgorithm
208 LCFlowElementNeutralCreatorAlgorithmFactory = CompFactory.PFLCNeutralFlowElementCreatorAlgorithm
209 LCFlowElementNeutralCreatorAlgorithm = LCFlowElementNeutralCreatorAlgorithmFactory(
"PFLCNeutralFlowElementCreatorAlgorithm")
210 if neutralFlowElementOutputName:
211 LCFlowElementNeutralCreatorAlgorithm.FELCOutputName=neutralFlowElementOutputName
212 if(inputFlags.PF.EOverPMode):
213 LCFlowElementNeutralCreatorAlgorithm.FEInputContainerName=
"EOverPNeutralParticleFlowObjects"
214 LCFlowElementNeutralCreatorAlgorithm.FELCOutputName=
"EOverPLCNeutralParticleFlowObjects"
216 return LCFlowElementNeutralCreatorAlgorithm
220 kwargs.setdefault(
"neutral_FE_cont_name",
"")
221 kwargs.setdefault(
"charged_FE_cont_name",
"")
222 kwargs.setdefault(
"doTCC",
False)
223 kwargs.setdefault(
"useGlobal",
False)
225 PFEGamFlowElementLinkerAlgorithmFactory=CompFactory.PFEGamFlowElementAssoc
227 algName =
"PFEGamFlowElementAssoc"
228 PFEGamFlowElementLinkerAlgorithm=PFEGamFlowElementLinkerAlgorithmFactory(algName)
235 if kwargs[
'neutral_FE_cont_name']:
236 PFEGamFlowElementLinkerAlgorithm.JetEtMissNeutralFlowElementContainer = kwargs[
'neutral_FE_cont_name']
238 if kwargs[
'charged_FE_cont_name']:
239 PFEGamFlowElementLinkerAlgorithm.JetEtMissChargedFlowElementContainer = kwargs[
'charged_FE_cont_name']
243 PFEGamFlowElementLinkerAlgorithm.JetEtMissNeutralFlowElementContainer=
"TrackCaloClustersNeutral"
244 PFEGamFlowElementLinkerAlgorithm.JetEtMissChargedFlowElementContainer=
"TrackCaloClustersCharged"
248 EL_NFE_Link=
str(PFEGamFlowElementLinkerAlgorithm.ElectronNeutralFEDecorKey)
249 PFEGamFlowElementLinkerAlgorithm.ElectronNeutralFEDecorKey=EL_NFE_Link.replace(
"FELinks",
"TCCLinks")
250 EL_CFE_Link=
str(PFEGamFlowElementLinkerAlgorithm.ElectronChargedFEDecorKey)
251 PFEGamFlowElementLinkerAlgorithm.ElectronChargedFEDecorKey=EL_CFE_Link.replace(
"FELinks",
"TCCLinks")
254 PFEGamFlowElementLinkerAlgorithm.ChargedFEElectronDecorKey=
"TrackCaloClustersCharged.TCC_ElectronLinks"
255 PFEGamFlowElementLinkerAlgorithm.NeutralFEElectronDecorKey=
"TrackCaloClustersNeutral.TCC_ElectronLinks"
259 PH_NFE_Link=
str(PFEGamFlowElementLinkerAlgorithm.PhotonNeutralFEDecorKey)
260 PFEGamFlowElementLinkerAlgorithm.PhotonNeutralFEDecorKey=PH_NFE_Link.replace(
"FELinks",
"TCCLinks")
261 PH_CFE_Link=
str(PFEGamFlowElementLinkerAlgorithm.PhotonChargedFEDecorKey)
262 PFEGamFlowElementLinkerAlgorithm.PhotonChargedFEDecorKey=PH_CFE_Link.replace(
"FELinks",
"TCCLinks")
265 PFEGamFlowElementLinkerAlgorithm.ChargedFEPhotonDecorKey=
"TrackCaloClustersCharged.TCC_PhotonLinks"
266 PFEGamFlowElementLinkerAlgorithm.NeutralFEPhotonDecorKey=
"TrackCaloClustersNeutral.TCC_PhotonLinks"
268 if kwargs[
'useGlobal']:
270 PFEGamFlowElementLinkerAlgorithm.JetEtMissNeutralFlowElementContainer=
"GlobalNeutralParticleFlowObjects"
271 PFEGamFlowElementLinkerAlgorithm.JetEtMissChargedFlowElementContainer=
"GlobalChargedParticleFlowObjects"
275 EL_NFE_Link=
str(PFEGamFlowElementLinkerAlgorithm.ElectronNeutralFEDecorKey)
276 PFEGamFlowElementLinkerAlgorithm.ElectronNeutralFEDecorKey=EL_NFE_Link.replace(
"FELinks",
"GlobalFELinks")
277 EL_CFE_Link=
str(PFEGamFlowElementLinkerAlgorithm.ElectronChargedFEDecorKey)
278 PFEGamFlowElementLinkerAlgorithm.ElectronChargedFEDecorKey=EL_CFE_Link.replace(
"FELinks",
"GlobalFELinks")
281 PFEGamFlowElementLinkerAlgorithm.ChargedFEElectronDecorKey=
"GlobalChargedParticleFlowObjects.GlobalFE_ElectronLinks"
282 PFEGamFlowElementLinkerAlgorithm.NeutralFEElectronDecorKey=
"GlobalNeutralParticleFlowObjects.GLobalFE_ElectronLinks"
286 PH_NFE_Link=
str(PFEGamFlowElementLinkerAlgorithm.PhotonNeutralFEDecorKey)
287 PFEGamFlowElementLinkerAlgorithm.PhotonNeutralFEDecorKey=PH_NFE_Link.replace(
"FELinks",
"GlobalFELinks")
288 PH_CFE_Link=
str(PFEGamFlowElementLinkerAlgorithm.PhotonChargedFEDecorKey)
289 PFEGamFlowElementLinkerAlgorithm.PhotonChargedFEDecorKey=PH_CFE_Link.replace(
"FELinks",
"GlobalFELinks")
292 PFEGamFlowElementLinkerAlgorithm.ChargedFEPhotonDecorKey=
"GlobalChargedParticleFlowObjects.TCC_PhotonLinks"
293 PFEGamFlowElementLinkerAlgorithm.NeutralFEPhotonDecorKey=
"GlobalNeutralParticleFlowObjects.TCC_PhotonLinks"
297 return PFEGamFlowElementLinkerAlgorithm
301 kwargs.setdefault(
"neutral_FE_cont_name",
"")
302 kwargs.setdefault(
"charged_FE_cont_name",
"")
303 kwargs.setdefault(
"LinkNeutralFEClusters",
True)
304 kwargs.setdefault(
"doTCC",
False)
305 kwargs.setdefault(
"useGlobal",
False)
307 useMuonTopoClusters =
False
308 from AthenaConfiguration.Enums
import ProductionStep
311 if inputFlags.Common.ProductionStep
in [ProductionStep.Derivation]
or inputFlags.DQ.Environment ==
"AOD":
312 useMuonTopoClusters =
True
315 PFMuonFlowElementLinkerAlgorithmFactory=CompFactory.PFMuonFlowElementAssoc
317 algName=
"PFMuonFlowElementAssoc"
318 PFMuonFlowElementLinkerAlgorithm=PFMuonFlowElementLinkerAlgorithmFactory(algName)
324 if kwargs[
'neutral_FE_cont_name']:
326 PFMuonFlowElementLinkerAlgorithm.JetEtMissNeutralFlowElementContainer = kwargs[
'neutral_FE_cont_name']
329 if kwargs[
'charged_FE_cont_name']:
330 PFMuonFlowElementLinkerAlgorithm.JetEtMissChargedFlowElementContainer = kwargs[
'charged_FE_cont_name']
332 PFMuonFlowElementLinkerAlgorithm.LinkNeutralFEClusters = kwargs[
'LinkNeutralFEClusters']
333 PFMuonFlowElementLinkerAlgorithm.useMuonTopoClusters = useMuonTopoClusters
342 PFMuonFlowElementLinkerAlgorithm.JetEtMissChargedFlowElementContainer=service_key+
"TrackCaloClustersCharged"
343 PFMuonFlowElementLinkerAlgorithm.JetEtMissNeutralFlowElementContainer=service_key+
"TrackCaloClustersNeutral"
348 PFMuonFlowElementLinkerAlgorithm.MuonContainer_chargedFELinks=service_key+
"Muons.chargedTCCLinks"
349 PFMuonFlowElementLinkerAlgorithm.MuonContainer_neutralFELinks=service_key+
"Muons.neutralTCCLinks"
350 PFMuonFlowElementLinkerAlgorithm.JetETMissNeutralFlowElementContainer_FE_MuonLinks=service_key+
"TrackCaloClustersNeutral.TCC_MuonLinks"
351 PFMuonFlowElementLinkerAlgorithm.JetETMissChargedFlowElements_FE_MuonLinks=service_key+
"TrackCaloClustersCharged.TCC_MuonLinks"
352 PFMuonFlowElementLinkerAlgorithm.FlowElementContainer_ChargedFE_ennergy_matched_muon=
"TrackCaloClustersCharged.TCC_efrac_matched_muon"
354 PFMuonFlowElementLinkerAlgorithm.FlowElementContainer_nMatchedMuons=
"TrackCaloClustersNeutral.TCC_nMatchedMuons"
355 PFMuonFlowElementLinkerAlgorithm.FlowElementContainer_FE_efrac_matched_muon=
"TrackCaloClustersNeutral.TCC_efrac_matched_muon"
357 PFMuonFlowElementLinkerAlgorithm.MuonContainer_muon_efrac_matched_FE=
"Muons.muon_efrac_matched_TCC"
359 PFMuonFlowElementLinkerAlgorithm.MuonContainer_ClusterInfo_deltaR=
"Muons.deltaR_muon_clus_TCCalg"
361 if kwargs[
'useGlobal']:
362 PFMuonFlowElementLinkerAlgorithm.JetEtMissChargedFlowElementContainer=
"GlobalChargedParticleFlowObjects"
363 PFMuonFlowElementLinkerAlgorithm.JetEtMissNeutralFlowElementContainer=
"GlobalNeutralParticleFlowObjects"
365 PFMuonFlowElementLinkerAlgorithm.MuonContainer_chargedFELinks=
"Muons.chargedGlobalFELinks"
366 PFMuonFlowElementLinkerAlgorithm.MuonContainer_neutralFELinks=
"Muons.neutralGlobalFELinks"
368 PFMuonFlowElementLinkerAlgorithm.JetETMissNeutralFlowElementContainer_FE_MuonLinks=
"GlobalNeutralParticleFlowObjects.GlobalFE_MuonLinks"
369 PFMuonFlowElementLinkerAlgorithm.JetETMissChargedFlowElements_FE_MuonLinks=
"GlobalChargedParticleFlowObjects.GlobalFE_MuonLinks"
370 PFMuonFlowElementLinkerAlgorithm.FlowElementContainer_ChargedFE_ennergy_matched_muon=
"GlobalChargedParticleFlowObjects.GlobalFE_efrac_matched_muon"
372 PFMuonFlowElementLinkerAlgorithm.FlowElementContainer_nMatchedMuons=
"GlobalNeutralParticleFlowObjects.GlobalFE_nMatchedMuons"
373 PFMuonFlowElementLinkerAlgorithm.FlowElementContainer_FE_efrac_matched_muon=
"GlobalNeutralParticleFlowObjects.GlobalFE_efrac_matched_muon"
375 PFMuonFlowElementLinkerAlgorithm.MuonContainer_muon_efrac_matched_FE=
"Muons.muon_efrac_matched_GlobalFE"
377 PFMuonFlowElementLinkerAlgorithm.MuonContainer_ClusterInfo_deltaR=
"Muons.deltaR_muon_clus_GlobalFEalg"
379 if kwargs[
'LinkNeutralFEClusters']
and not useMuonTopoClusters:
382 PFMuonFlowElementLinkerAlgorithm.ExtraInputs.add((
'CaloCellContainer', inputFlags.Egamma.Keys.Input.CaloCells))
384 if kwargs[
'LinkNeutralFEClusters']:
388 from AthenaCommon.Logging
import logging
389 msg=logging.getLogger(
"PFCfg.py::getMuonFlowElementAssocAlgorithm")
390 msg.error(
"Neutral FE from AOD configured to be linked with Muon. This link will fail due to missing CaloCells in the AOD")
391 msg.info(
"Terminating job")
395 return PFMuonFlowElementLinkerAlgorithm
399 kwargs.setdefault(
"neutral_FE_cont_name",
"")
400 kwargs.setdefault(
"charged_FE_cont_name",
"")
401 kwargs.setdefault(
"doTCC",
False)
402 kwargs.setdefault(
"useGlobal",
False)
404 PFTauFlowElementLinkerAlgorithmFactory=CompFactory.PFTauFlowElementAssoc
406 algName =
"PFTauFlowElementAssoc"
408 PFTauFlowElementLinkerAlgorithm=PFTauFlowElementLinkerAlgorithmFactory(algName)
415 if kwargs[
'neutral_FE_cont_name']:
416 PFTauFlowElementLinkerAlgorithm.JetETMissNeutralFlowElementContainer = kwargs[
'neutral_FE_cont_name']
418 if kwargs[
'charged_FE_cont_name']:
419 PFTauFlowElementLinkerAlgorithm.JetETMissChargedFlowElementContainer = kwargs[
'charged_FE_cont_name']
422 PFTauFlowElementLinkerAlgorithm.JetETMissNeutralFlowElementContainer=
"TrackCaloClustersNeutral"
423 PFTauFlowElementLinkerAlgorithm.JetETMissChargedFlowElementContainer=
"TrackCaloClustersCharged"
425 PFTauFlowElementLinkerAlgorithm.TauNeutralFEDecorKey=
"TauJets.neutralTCCLinks"
426 PFTauFlowElementLinkerAlgorithm.TauChargedFEDecorKey=
"TauJets.chargedTCCLinks"
428 PFTauFlowElementLinkerAlgorithm.NeutralFETauDecorKey=
"TrackCaloClustersNeutral.TCC_TauLinks"
429 PFTauFlowElementLinkerAlgorithm.ChargedFETauDecorKey=
"TrackCaloClustersCharged.TCC_TauLinks"
432 if kwargs[
'useGlobal']:
433 PFTauFlowElementLinkerAlgorithm.JetETMissNeutralFlowElementContainer=
"GlobalNeutralParticleFlowObjects"
434 PFTauFlowElementLinkerAlgorithm.JetETMissChargedFlowElementContainer=
"GlobalChargedParticleFlowObjects"
436 PFTauFlowElementLinkerAlgorithm.TauNeutralFEDecorKey=
"TauJets.neutralGlobalFELinks"
437 PFTauFlowElementLinkerAlgorithm.TauChargedFEDecorKey=
"TauJets.chargedGlobalFELinks"
439 PFTauFlowElementLinkerAlgorithm.NeutralFETauDecorKey=
"GlobalNeutralParticleFlowObjects.GlobalFE_TauLinks"
440 PFTauFlowElementLinkerAlgorithm.ChargedFETauDecorKey=
"GlobalChargedParticleFlowObjects.GlobalFE_TauLinks"
442 return PFTauFlowElementLinkerAlgorithm
447 PFAlgorithm=CompFactory.PFAlgorithm
451 if inputFlags.HeavyIon.Egamma.doSubtractedClusters:
452 PFAlgorithm.PFClusterSelectorTool =
getPFClusterSelectorTool(inputFlags,inputFlags.HeavyIon.Egamma.UncalibCaloTopoCluster,inputFlags.HeavyIon.Egamma.CaloTopoCluster,
"PFClusterSelectorTool")
454 topoClustersName=
"CaloTopoClusters"
455 PFAlgorithm.PFClusterSelectorTool =
getPFClusterSelectorTool(inputFlags,topoClustersName,
"CaloCalTopoClusters",
"PFClusterSelectorTool")
459 if(
False is inputFlags.PF.EOverPMode
and False is inputFlags.PF.useTruthCheating):
463 PFAlgorithm.BaseToolList = [PFMomentCalculatorTools]
465 result.addEventAlgo(PFAlgorithm)
471 kwargs.setdefault(
"useGlobal",
True)