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 if inputFlags.PF.useTopoTowers:
56 PFClusterSelectorTool.clustersName=
"CaloTopoSignal"
57 PFClusterSelectorTool.calClustersName=
"CaloCalTopoSignal"
59 return PFClusterSelectorTool
62 PFTrackClusterMatchingTool = CompFactory.PFTrackClusterMatchingTool
64 MatchingTool.ClusterPositionType = clusterPositionType
65 MatchingTool.DistanceType = distanceType
66 MatchingTool.MatchCut = matchCut*matchCut
71 PFCellLevelSubtractionToolFactory = CompFactory.PFSubtractionTool
72 PFCellLevelSubtractionTool = PFCellLevelSubtractionToolFactory(toolName,useNNEnergy = inputFlags.PF.useMLEOverP)
74 if inputFlags.GeoModel.Run <= LHCPeriod.Run3:
75 eflowCellEOverPTool_Run2_mc20_JetETMiss = CompFactory.eflowCellEOverPTool_Run2_mc20_JetETMiss
78 if inputFlags.PF.useLegacyEOverPRun4:
79 eflowCellEOverPTool_mc12_HLLHC = CompFactory.eflowCellEOverPTool_mc12_HLLHC
80 PFCellLevelSubtractionTool.eflowCellEOverPTool = eflowCellEOverPTool_mc12_HLLHC ()
82 PFCellEOverPTool = CompFactory.PFCellEOverPTool
83 PFCellLevelSubtractionTool.eflowCellEOverPTool =
PFCellEOverPTool(
"PFCellEOverPTool", referenceFileLocation = inputFlags.PF.EOverP_CellOrdering_ReferenceLocation)
85 PFCellLevelSubtractionTool.useLegacyEBinIndex=
False
87 if(inputFlags.PF.EOverPMode):
88 PFCellLevelSubtractionTool.CalcEOverP =
True
89 PFCellLevelSubtractionTool.nClusterMatchesToUse = -1
91 PFCellLevelSubtractionTool.nClusterMatchesToUse = 1
93 if(inputFlags.PF.EOverPMode):
94 PFCellLevelSubtractionTool.PFTrackClusterMatchingTool =
getPFTrackClusterMatchingTool(inputFlags,0.2,
"EtaPhiSquareDistance",
"PlainEtaPhi",
"CalObjBldMatchingTool")
96 PFCellLevelSubtractionTool.PFTrackClusterMatchingTool =
getPFTrackClusterMatchingTool(inputFlags,1.64,
"EtaPhiSquareSignificance",
"GeomCenterEtaPhi",
"CalObjBldMatchingTool")
98 PFCellLevelSubtractionTool.PFTrackClusterMatchingTool_015 =
getPFTrackClusterMatchingTool(inputFlags,0.15,
"EtaPhiSquareDistance",
"PlainEtaPhi",
"MatchingTool_Pull_015")
99 PFCellLevelSubtractionTool.PFTrackClusterMatchingTool_02 =
getPFTrackClusterMatchingTool(inputFlags,0.2,
"EtaPhiSquareDistance",
"PlainEtaPhi",
"MatchingTool_Pull_02")
101 if inputFlags.PF.useMLEOverP:
102 PFEnergyPredictorTool = CompFactory.PFEnergyPredictorTool(
"PFCellLevelEnergyPredcictorTool",ModelPath = inputFlags.PF.EOverP_NN_Model)
103 PFCellLevelSubtractionTool.NNEnergyPredictorTool = PFEnergyPredictorTool
104 PFCellLevelSubtractionTool.addCPData = inputFlags.PF.addCPData
106 if inputFlags.PF.useTruthCheating:
107 if inputFlags.PF.useTrackClusterTruthMatching:
108 PFCellLevelSubtractionTool.CaloClusterReadDecorHandleKey_NLeadingTruthParticles =
"CaloTopoClusters." + inputFlags.Calo.TopoCluster.CalibrationHitDecorationName
109 PFCellLevelSubtractionTool.useTrackClusterTruthMatching=
True
111 if inputFlags.PF.useTruthForChargedShowerSubtraction:
112 PFCellLevelSubtractionTool.useTruthForChargedShowerSubtraction =
True
113 PFCellLevelSubtractionTool.PFSimulateTruthShowerTool = CompFactory.PFSimulateTruthShowerTool(
"PFSimulateTruthShowerTool")
115 return PFCellLevelSubtractionTool
118 PFRecoverSplitShowersToolFactory = CompFactory.PFSubtractionTool
119 PFRecoverSplitShowersTool = PFRecoverSplitShowersToolFactory(toolName,useNNEnergy = inputFlags.PF.useMLEOverP)
121 if inputFlags.GeoModel.Run <= LHCPeriod.Run3:
122 eflowCellEOverPTool_Run2_mc20_JetETMiss = CompFactory.eflowCellEOverPTool_Run2_mc20_JetETMiss
125 if inputFlags.PF.useLegacyEOverPRun4:
126 eflowCellEOverPTool_mc12_HLLHC = CompFactory.eflowCellEOverPTool_mc12_HLLHC
127 PFRecoverSplitShowersTool.eflowCellEOverPTool = eflowCellEOverPTool_mc12_HLLHC ()
129 PFCellEOverPTool = CompFactory.PFCellEOverPTool
130 PFRecoverSplitShowersTool.eflowCellEOverPTool =
PFCellEOverPTool(
"PFCellEOverPTool_Recover", referenceFileLocation = inputFlags.PF.EOverP_CellOrdering_ReferenceLocation)
132 PFRecoverSplitShowersTool.useLegacyEBinIndex=
False
134 PFRecoverSplitShowersTool.RecoverSplitShowers =
True
136 if inputFlags.PF.useMLEOverP:
137 PFEnergyPredictorTool = CompFactory.PFEnergyPredictorTool(
"PFRecoverSplitShowersEnergyPredcictorTool",ModelPath = inputFlags.PF.EOverP_NN_Model)
138 PFRecoverSplitShowersTool.NNEnergyPredictorTool = PFEnergyPredictorTool
140 return PFRecoverSplitShowersTool
144 PFMomentCalculatorToolFactory = CompFactory.PFMomentCalculatorTool
145 PFMomentCalculatorTool = PFMomentCalculatorToolFactory(
"PFMomentCalculatorTool")
147 from CaloRec.CaloTopoClusterConfig
import getTopoMoments
148 PFClusterMomentsMaker = result.popToolsAndMerge(
getTopoMoments(inputFlags))
149 if (len(momentsToCalculateList) > 0):
150 PFClusterMomentsMaker.MomentsNames = momentsToCalculateList
151 PFMomentCalculatorTool.CaloClusterMomentsMaker = PFClusterMomentsMaker
153 PFClusterCollectionTool = CompFactory.PFClusterCollectionTool
156 if(inputFlags.PF.useCalibHitTruthClusterMoments):
157 PFMomentCalculatorTool.UseCalibHitTruth=
True
158 from CaloRec.CaloTopoClusterConfig
import getTopoCalibMoments
161 result.setPrivateTools(PFMomentCalculatorTool)
165 PFLCCalibTool = CompFactory.PFLCCalibTool
168 PFClusterCollectionTool = CompFactory.PFClusterCollectionTool
170 PFLCCalibTool.UseLocalWeight =
False
172 from CaloRec.CaloTopoClusterConfig
import getTopoClusterLocalCalibTools
175 PFLCCalibTool.CaloClusterLocalCalib=lcCalibToolList[0]
176 PFLCCalibTool.CaloClusterLocalCalibOOCC=lcCalibToolList[1]
177 PFLCCalibTool.CaloClusterLocalCalibOOCCPi0=lcCalibToolList[2]
178 PFLCCalibTool.CaloClusterLocalCalibDM=lcCalibToolList[3]
183 FlowElementChargedCreatorAlgorithmFactory = CompFactory.PFChargedFlowElementCreatorAlgorithm
184 FlowElementChargedCreatorAlgorithm = FlowElementChargedCreatorAlgorithmFactory(
"PFChargedFlowElementCreatorAlgorithm"+nameSuffix)
185 FlowElementChargedCreatorAlgorithm.eflowCaloObjectContainerName = eflowCaloObjectContainerName
186 if chargedFlowElementOutputName:
187 FlowElementChargedCreatorAlgorithm.FlowElementOutputName=chargedFlowElementOutputName
188 if(inputFlags.PF.EOverPMode):
189 FlowElementChargedCreatorAlgorithm.FlowElementOutputName=
"EOverPChargedParticleFlowObjects"
190 FlowElementChargedCreatorAlgorithm.EOverPMode =
True
191 if inputFlags.PF.addCPData:
192 FlowElementChargedCreatorAlgorithm.addCPData =
True
194 return FlowElementChargedCreatorAlgorithm
197 FlowElementNeutralCreatorAlgorithmFactory = CompFactory.PFNeutralFlowElementCreatorAlgorithm
198 FlowElementNeutralCreatorAlgorithm = FlowElementNeutralCreatorAlgorithmFactory(
"PFNeutralFlowElementCreatorAlgorithm"+nameSuffix)
199 FlowElementNeutralCreatorAlgorithm.eflowCaloObjectContainerName = eflowCaloObjectContainerName
200 if neutralFlowElementOutputName:
201 FlowElementNeutralCreatorAlgorithm.FlowElementOutputName=neutralFlowElementOutputName
202 if(inputFlags.PF.EOverPMode):
203 FlowElementNeutralCreatorAlgorithm.FlowElementOutputName=
"EOverPNeutralParticleFlowObjects"
204 if(inputFlags.PF.useCalibHitTruthClusterMoments
and inputFlags.PF.addClusterMoments):
205 FlowElementNeutralCreatorAlgorithm.UseCalibHitTruth=
True
206 if inputFlags.PF.addCPData:
207 FlowElementNeutralCreatorAlgorithm.addCPData =
True
209 return FlowElementNeutralCreatorAlgorithm
212 LCFlowElementNeutralCreatorAlgorithmFactory = CompFactory.PFLCNeutralFlowElementCreatorAlgorithm
213 LCFlowElementNeutralCreatorAlgorithm = LCFlowElementNeutralCreatorAlgorithmFactory(
"PFLCNeutralFlowElementCreatorAlgorithm")
214 if neutralFlowElementOutputName:
215 LCFlowElementNeutralCreatorAlgorithm.FELCOutputName=neutralFlowElementOutputName
216 if(inputFlags.PF.EOverPMode):
217 LCFlowElementNeutralCreatorAlgorithm.FEInputContainerName=
"EOverPNeutralParticleFlowObjects"
218 LCFlowElementNeutralCreatorAlgorithm.FELCOutputName=
"EOverPLCNeutralParticleFlowObjects"
220 return LCFlowElementNeutralCreatorAlgorithm
224 kwargs.setdefault(
"neutral_FE_cont_name",
"")
225 kwargs.setdefault(
"charged_FE_cont_name",
"")
226 kwargs.setdefault(
"doTCC",
False)
227 kwargs.setdefault(
"useGlobal",
False)
229 PFEGamFlowElementLinkerAlgorithmFactory=CompFactory.PFEGamFlowElementAssoc
231 algName =
"PFEGamFlowElementAssoc"
232 PFEGamFlowElementLinkerAlgorithm=PFEGamFlowElementLinkerAlgorithmFactory(algName)
239 if kwargs[
'neutral_FE_cont_name']:
240 PFEGamFlowElementLinkerAlgorithm.JetEtMissNeutralFlowElementContainer = kwargs[
'neutral_FE_cont_name']
242 if kwargs[
'charged_FE_cont_name']:
243 PFEGamFlowElementLinkerAlgorithm.JetEtMissChargedFlowElementContainer = kwargs[
'charged_FE_cont_name']
247 PFEGamFlowElementLinkerAlgorithm.JetEtMissNeutralFlowElementContainer=
"TrackCaloClustersNeutral"
248 PFEGamFlowElementLinkerAlgorithm.JetEtMissChargedFlowElementContainer=
"TrackCaloClustersCharged"
252 EL_NFE_Link=
str(PFEGamFlowElementLinkerAlgorithm.ElectronNeutralFEDecorKey)
253 PFEGamFlowElementLinkerAlgorithm.ElectronNeutralFEDecorKey=EL_NFE_Link.replace(
"FELinks",
"TCCLinks")
254 EL_CFE_Link=
str(PFEGamFlowElementLinkerAlgorithm.ElectronChargedFEDecorKey)
255 PFEGamFlowElementLinkerAlgorithm.ElectronChargedFEDecorKey=EL_CFE_Link.replace(
"FELinks",
"TCCLinks")
258 PFEGamFlowElementLinkerAlgorithm.ChargedFEElectronDecorKey=
"TrackCaloClustersCharged.TCC_ElectronLinks"
259 PFEGamFlowElementLinkerAlgorithm.NeutralFEElectronDecorKey=
"TrackCaloClustersNeutral.TCC_ElectronLinks"
263 PH_NFE_Link=
str(PFEGamFlowElementLinkerAlgorithm.PhotonNeutralFEDecorKey)
264 PFEGamFlowElementLinkerAlgorithm.PhotonNeutralFEDecorKey=PH_NFE_Link.replace(
"FELinks",
"TCCLinks")
265 PH_CFE_Link=
str(PFEGamFlowElementLinkerAlgorithm.PhotonChargedFEDecorKey)
266 PFEGamFlowElementLinkerAlgorithm.PhotonChargedFEDecorKey=PH_CFE_Link.replace(
"FELinks",
"TCCLinks")
269 PFEGamFlowElementLinkerAlgorithm.ChargedFEPhotonDecorKey=
"TrackCaloClustersCharged.TCC_PhotonLinks"
270 PFEGamFlowElementLinkerAlgorithm.NeutralFEPhotonDecorKey=
"TrackCaloClustersNeutral.TCC_PhotonLinks"
272 if kwargs[
'useGlobal']:
274 PFEGamFlowElementLinkerAlgorithm.JetEtMissNeutralFlowElementContainer=
"GlobalNeutralParticleFlowObjects"
275 PFEGamFlowElementLinkerAlgorithm.JetEtMissChargedFlowElementContainer=
"GlobalChargedParticleFlowObjects"
279 EL_NFE_Link=
str(PFEGamFlowElementLinkerAlgorithm.ElectronNeutralFEDecorKey)
280 PFEGamFlowElementLinkerAlgorithm.ElectronNeutralFEDecorKey=EL_NFE_Link.replace(
"FELinks",
"GlobalFELinks")
281 EL_CFE_Link=
str(PFEGamFlowElementLinkerAlgorithm.ElectronChargedFEDecorKey)
282 PFEGamFlowElementLinkerAlgorithm.ElectronChargedFEDecorKey=EL_CFE_Link.replace(
"FELinks",
"GlobalFELinks")
285 PFEGamFlowElementLinkerAlgorithm.ChargedFEElectronDecorKey=
"GlobalChargedParticleFlowObjects.GlobalFE_ElectronLinks"
286 PFEGamFlowElementLinkerAlgorithm.NeutralFEElectronDecorKey=
"GlobalNeutralParticleFlowObjects.GLobalFE_ElectronLinks"
290 PH_NFE_Link=
str(PFEGamFlowElementLinkerAlgorithm.PhotonNeutralFEDecorKey)
291 PFEGamFlowElementLinkerAlgorithm.PhotonNeutralFEDecorKey=PH_NFE_Link.replace(
"FELinks",
"GlobalFELinks")
292 PH_CFE_Link=
str(PFEGamFlowElementLinkerAlgorithm.PhotonChargedFEDecorKey)
293 PFEGamFlowElementLinkerAlgorithm.PhotonChargedFEDecorKey=PH_CFE_Link.replace(
"FELinks",
"GlobalFELinks")
296 PFEGamFlowElementLinkerAlgorithm.ChargedFEPhotonDecorKey=
"GlobalChargedParticleFlowObjects.TCC_PhotonLinks"
297 PFEGamFlowElementLinkerAlgorithm.NeutralFEPhotonDecorKey=
"GlobalNeutralParticleFlowObjects.TCC_PhotonLinks"
301 return PFEGamFlowElementLinkerAlgorithm
305 kwargs.setdefault(
"neutral_FE_cont_name",
"")
306 kwargs.setdefault(
"charged_FE_cont_name",
"")
307 kwargs.setdefault(
"LinkNeutralFEClusters",
True)
308 kwargs.setdefault(
"doTCC",
False)
309 kwargs.setdefault(
"useGlobal",
False)
311 useMuonTopoClusters =
False
312 from AthenaConfiguration.Enums
import ProductionStep
315 if inputFlags.Common.ProductionStep
in [ProductionStep.Derivation]
or inputFlags.DQ.Environment ==
"AOD":
316 useMuonTopoClusters =
True
319 PFMuonFlowElementLinkerAlgorithmFactory=CompFactory.PFMuonFlowElementAssoc
321 algName=
"PFMuonFlowElementAssoc"
322 PFMuonFlowElementLinkerAlgorithm=PFMuonFlowElementLinkerAlgorithmFactory(algName)
328 if kwargs[
'neutral_FE_cont_name']:
330 PFMuonFlowElementLinkerAlgorithm.JetEtMissNeutralFlowElementContainer = kwargs[
'neutral_FE_cont_name']
333 if kwargs[
'charged_FE_cont_name']:
334 PFMuonFlowElementLinkerAlgorithm.JetEtMissChargedFlowElementContainer = kwargs[
'charged_FE_cont_name']
336 PFMuonFlowElementLinkerAlgorithm.LinkNeutralFEClusters = kwargs[
'LinkNeutralFEClusters']
337 PFMuonFlowElementLinkerAlgorithm.useMuonTopoClusters = useMuonTopoClusters
346 PFMuonFlowElementLinkerAlgorithm.JetEtMissChargedFlowElementContainer=service_key+
"TrackCaloClustersCharged"
347 PFMuonFlowElementLinkerAlgorithm.JetEtMissNeutralFlowElementContainer=service_key+
"TrackCaloClustersNeutral"
352 PFMuonFlowElementLinkerAlgorithm.MuonContainer_chargedFELinks=service_key+
"Muons.chargedTCCLinks"
353 PFMuonFlowElementLinkerAlgorithm.MuonContainer_neutralFELinks=service_key+
"Muons.neutralTCCLinks"
354 PFMuonFlowElementLinkerAlgorithm.JetETMissNeutralFlowElementContainer_FE_MuonLinks=service_key+
"TrackCaloClustersNeutral.TCC_MuonLinks"
355 PFMuonFlowElementLinkerAlgorithm.JetETMissChargedFlowElements_FE_MuonLinks=service_key+
"TrackCaloClustersCharged.TCC_MuonLinks"
356 PFMuonFlowElementLinkerAlgorithm.FlowElementContainer_ChargedFE_ennergy_matched_muon=
"TrackCaloClustersCharged.TCC_efrac_matched_muon"
358 PFMuonFlowElementLinkerAlgorithm.FlowElementContainer_nMatchedMuons=
"TrackCaloClustersNeutral.TCC_nMatchedMuons"
359 PFMuonFlowElementLinkerAlgorithm.FlowElementContainer_FE_efrac_matched_muon=
"TrackCaloClustersNeutral.TCC_efrac_matched_muon"
361 PFMuonFlowElementLinkerAlgorithm.MuonContainer_muon_efrac_matched_FE=
"Muons.muon_efrac_matched_TCC"
363 PFMuonFlowElementLinkerAlgorithm.MuonContainer_ClusterInfo_deltaR=
"Muons.deltaR_muon_clus_TCCalg"
365 if kwargs[
'useGlobal']:
366 PFMuonFlowElementLinkerAlgorithm.JetEtMissChargedFlowElementContainer=
"GlobalChargedParticleFlowObjects"
367 PFMuonFlowElementLinkerAlgorithm.JetEtMissNeutralFlowElementContainer=
"GlobalNeutralParticleFlowObjects"
369 PFMuonFlowElementLinkerAlgorithm.MuonContainer_chargedFELinks=
"Muons.chargedGlobalFELinks"
370 PFMuonFlowElementLinkerAlgorithm.MuonContainer_neutralFELinks=
"Muons.neutralGlobalFELinks"
372 PFMuonFlowElementLinkerAlgorithm.JetETMissNeutralFlowElementContainer_FE_MuonLinks=
"GlobalNeutralParticleFlowObjects.GlobalFE_MuonLinks"
373 PFMuonFlowElementLinkerAlgorithm.JetETMissChargedFlowElements_FE_MuonLinks=
"GlobalChargedParticleFlowObjects.GlobalFE_MuonLinks"
374 PFMuonFlowElementLinkerAlgorithm.FlowElementContainer_ChargedFE_ennergy_matched_muon=
"GlobalChargedParticleFlowObjects.GlobalFE_efrac_matched_muon"
376 PFMuonFlowElementLinkerAlgorithm.FlowElementContainer_nMatchedMuons=
"GlobalNeutralParticleFlowObjects.GlobalFE_nMatchedMuons"
377 PFMuonFlowElementLinkerAlgorithm.FlowElementContainer_FE_efrac_matched_muon=
"GlobalNeutralParticleFlowObjects.GlobalFE_efrac_matched_muon"
379 PFMuonFlowElementLinkerAlgorithm.MuonContainer_muon_efrac_matched_FE=
"Muons.muon_efrac_matched_GlobalFE"
381 PFMuonFlowElementLinkerAlgorithm.MuonContainer_ClusterInfo_deltaR=
"Muons.deltaR_muon_clus_GlobalFEalg"
383 if kwargs[
'LinkNeutralFEClusters']
and not useMuonTopoClusters:
386 PFMuonFlowElementLinkerAlgorithm.ExtraInputs.add((
'CaloCellContainer', inputFlags.Egamma.Keys.Input.CaloCells))
388 if kwargs[
'LinkNeutralFEClusters']:
392 from AthenaCommon.Logging
import logging
393 msg=logging.getLogger(
"PFCfg.py::getMuonFlowElementAssocAlgorithm")
394 msg.error(
"Neutral FE from AOD configured to be linked with Muon. This link will fail due to missing CaloCells in the AOD")
395 msg.info(
"Terminating job")
399 return PFMuonFlowElementLinkerAlgorithm
403 kwargs.setdefault(
"neutral_FE_cont_name",
"")
404 kwargs.setdefault(
"charged_FE_cont_name",
"")
405 kwargs.setdefault(
"doTCC",
False)
406 kwargs.setdefault(
"useGlobal",
False)
408 PFTauFlowElementLinkerAlgorithmFactory=CompFactory.PFTauFlowElementAssoc
410 algName =
"PFTauFlowElementAssoc"
412 PFTauFlowElementLinkerAlgorithm=PFTauFlowElementLinkerAlgorithmFactory(algName)
419 if kwargs[
'neutral_FE_cont_name']:
420 PFTauFlowElementLinkerAlgorithm.JetETMissNeutralFlowElementContainer = kwargs[
'neutral_FE_cont_name']
422 if kwargs[
'charged_FE_cont_name']:
423 PFTauFlowElementLinkerAlgorithm.JetETMissChargedFlowElementContainer = kwargs[
'charged_FE_cont_name']
426 PFTauFlowElementLinkerAlgorithm.JetETMissNeutralFlowElementContainer=
"TrackCaloClustersNeutral"
427 PFTauFlowElementLinkerAlgorithm.JetETMissChargedFlowElementContainer=
"TrackCaloClustersCharged"
429 PFTauFlowElementLinkerAlgorithm.TauNeutralFEDecorKey=
"TauJets.neutralTCCLinks"
430 PFTauFlowElementLinkerAlgorithm.TauChargedFEDecorKey=
"TauJets.chargedTCCLinks"
432 PFTauFlowElementLinkerAlgorithm.NeutralFETauDecorKey=
"TrackCaloClustersNeutral.TCC_TauLinks"
433 PFTauFlowElementLinkerAlgorithm.ChargedFETauDecorKey=
"TrackCaloClustersCharged.TCC_TauLinks"
436 if kwargs[
'useGlobal']:
437 PFTauFlowElementLinkerAlgorithm.JetETMissNeutralFlowElementContainer=
"GlobalNeutralParticleFlowObjects"
438 PFTauFlowElementLinkerAlgorithm.JetETMissChargedFlowElementContainer=
"GlobalChargedParticleFlowObjects"
440 PFTauFlowElementLinkerAlgorithm.TauNeutralFEDecorKey=
"TauJets.neutralGlobalFELinks"
441 PFTauFlowElementLinkerAlgorithm.TauChargedFEDecorKey=
"TauJets.chargedGlobalFELinks"
443 PFTauFlowElementLinkerAlgorithm.NeutralFETauDecorKey=
"GlobalNeutralParticleFlowObjects.GlobalFE_TauLinks"
444 PFTauFlowElementLinkerAlgorithm.ChargedFETauDecorKey=
"GlobalChargedParticleFlowObjects.GlobalFE_TauLinks"
446 return PFTauFlowElementLinkerAlgorithm
451 PFAlgorithm=CompFactory.PFAlgorithm
455 if inputFlags.HeavyIon.Egamma.doSubtractedClusters:
456 PFAlgorithm.PFClusterSelectorTool =
getPFClusterSelectorTool(inputFlags,inputFlags.HeavyIon.Egamma.UncalibCaloTopoCluster,inputFlags.HeavyIon.Egamma.CaloTopoCluster,
"PFClusterSelectorTool")
458 topoClustersName=
"CaloTopoClusters"
459 PFAlgorithm.PFClusterSelectorTool =
getPFClusterSelectorTool(inputFlags,topoClustersName,
"CaloCalTopoClusters",
"PFClusterSelectorTool")
463 if(
False is inputFlags.PF.EOverPMode
and False is inputFlags.PF.useTruthCheating):
467 PFAlgorithm.BaseToolList = [PFMomentCalculatorTools]
469 result.addEventAlgo(PFAlgorithm)
475 kwargs.setdefault(
"useGlobal",
True)