CMS 3D CMS Logo

RecoParticleFlow_cff.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 
3 
5 #from RecoParticleFlow.PFTracking.particleFlowTrackWithDisplacedVertex_cff import *
6 
9 
14 #from RecoParticleFlow.PFProducer.pfGsfElectronCiCSelector_cff import *
16 
18 
20 
23 
25 fixedGridRhoFastjetAllTmp = fixedGridRhoFastjetAll.clone(pfCandidatesTag = "particleFlowTmp")
26 
27 particleFlowTmpTask = cms.Task(particleFlowTmp)
28 particleFlowTmpSeq = cms.Sequence(particleFlowTmpTask)
29 
30 particleFlowRecoTask = cms.Task( particleFlowTrackWithDisplacedVertexTask,
31 # pfGsfElectronCiCSelectionSequence,
32  pfGsfElectronMVASelectionTask,
33  particleFlowBlock,
34  particleFlowEGammaFullTask,
35  particleFlowTmpTask,
36  fixedGridRhoFastjetAllTmp,
37  particleFlowTmpPtrs,
38  particleFlowEGammaFinalTask,
39  pfParticleSelectionTask )
40 particleFlowReco = cms.Sequence(particleFlowRecoTask)
41 
42 particleFlowLinksTask = cms.Task( particleFlow, particleFlowPtrs, chargedHadronPFTrackIsolation, particleBasedIsolationTask)
43 particleFlowLinks = cms.Sequence(particleFlowLinksTask)
44 
45 #
46 # for phase 2
47 particleFlowTmpBarrel = particleFlowTmp.clone()
48 _phase2_hgcal_particleFlowTmp = cms.EDProducer(
49  "PFCandidateListMerger",
50  src = cms.VInputTag("particleFlowTmpBarrel",
51  "pfTICL")
52 
53 )
54 
55 from Configuration.Eras.Modifier_phase2_hgcal_cff import phase2_hgcal
56 phase2_hgcal.toReplaceWith( particleFlowTmp, _phase2_hgcal_particleFlowTmp )
57 phase2_hgcal.toModify(
58  particleFlowTmpBarrel,
59  vetoEndcap = True
60  # If true, PF(Muon)Algo will ignore muon candidates incorporated via pfTICL
61  # in addMissingMuons. This will prevent potential double-counting.
62 )
63 
64 #
65 # for simPF
71 
72 _phase2_hgcal_simPFTask = cms.Task( pfTrack ,
73  hgcalTrackCollection ,
74  tpClusterProducer ,
75  quickTrackAssociatorByHits ,
76  particleFlowClusterHGCalFromSimCl ,
77  simPFProducer )
78 _phase2_hgcal_simPFSequence = cms.Sequence(_phase2_hgcal_simPFTask)
79 
80 _phase2_hgcal_particleFlowRecoTask = cms.Task( _phase2_hgcal_simPFTask , particleFlowRecoTask.copy() )
81 _phase2_hgcal_particleFlowRecoTask.replace( particleFlowTmpTask, cms.Task( particleFlowTmpBarrel, particleFlowTmp ) )
82 
83 phase2_hgcal.toReplaceWith( particleFlowRecoTask, _phase2_hgcal_particleFlowRecoTask )
84 
85 #
86 # for heavy ion
87 from Configuration.Eras.Modifier_pp_on_XeXe_2017_cff import pp_on_XeXe_2017
88 from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA
89 
90 for e in [pp_on_XeXe_2017, pp_on_AA]:
91  e.toModify(particleFlowDisplacedVertexCandidate,
92  tracksSelectorParameters = dict(pt_min = 999999.0,
93  nChi2_max = 0.0,
94  pt_min_prim = 999999.0,
95  dxy = 999999.0)
96  )
97 
98  e.toModify(particleFlowBlock, useNuclear = cms.bool(False))
99 
100  e.toModify(pfNoPileUpIso, enable = False)
101  e.toModify(pfPileUpIso, enable = False)
102  e.toModify(pfNoPileUp, enable = False)
103  e.toModify(pfPileUp, enable = False)
104 
105 
106 # for MLPF, replace standard PFAlgo with the ONNX-based MLPF producer
107 from Configuration.ProcessModifiers.mlpf_cff import mlpf
108 from RecoParticleFlow.PFProducer.mlpfProducer_cfi import mlpfProducer
109 mlpf.toReplaceWith(particleFlowTmp, mlpfProducer)
110 
111 #
112 # switch from pfTICL to simPF
113 def _findIndicesByModule(process,name):
114  ret = []
115  if hasattr(process,'particleFlowBlock'):
116  for i, pset in enumerate(process.particleFlowBlock.elementImporters):
117  if pset.importerName.value() == name:
118  ret.append(i)
119  return ret
120 
121 from Configuration.Eras.Modifier_phase2_hgcal_cff import phase2_hgcal
122 def replaceTICLwithSimPF(process):
123  if hasattr(process,'particleFlowTmp'):
124  process.particleFlowTmp.src = ['particleFlowTmpBarrel', 'simPFProducer']
125 
126  if hasattr(process,'particleFlowTmpBarrel'):
127  process.particleFlowTmpBarrel.vetoEndcap = False
128 
129  _insertTrackImportersWithVeto = {}
130  _trackImporters = ['GeneralTracksImporter','ConvBremTrackImporter',
131  'ConversionTrackImporter','NuclearInteractionTrackImporter']
132  for importer in _trackImporters:
133  for idx in _findIndicesByModule(process,importer):
134  _insertTrackImportersWithVeto[idx] = dict(
135  vetoMode = cms.uint32(0), # HGCal-region PFTrack list for simPF
136  vetoSrc = cms.InputTag('hgcalTrackCollection:TracksInHGCal')
137  )
138  phase2_hgcal.toModify(
139  process.particleFlowBlock,
140  elementImporters = _insertTrackImportersWithVeto
141  )
142 
143  return process
def _findIndicesByModule(process, name)