CMS 3D CMS Logo

particleFlowBlock_cfi.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 
3 particleFlowBlock = cms.EDProducer(
4  "PFBlockProducer",
5  # verbosity
6  verbose = cms.untracked.bool(False),
7  # Debug flag
8  debug = cms.untracked.bool(False),
9 
10  #define what we are importing into particle flow
11  #from the various subdetectors
12  # importers are executed in the order they are defined here!!!
13  #order matters for some modules (it is pointed out where this is important)
14  # you can find a list of all available importers in:
15  # plugins/importers
16  elementImporters = cms.VPSet(
17  cms.PSet( importerName = cms.string("GSFTrackImporter"),
18  source = cms.InputTag("pfTrackElec"),
19  gsfsAreSecondary = cms.bool(False),
20  superClustersArePF = cms.bool(True) ),
21  cms.PSet( importerName = cms.string("ConvBremTrackImporter"),
22  source = cms.InputTag("pfTrackElec") ),
23  cms.PSet( importerName = cms.string("SuperClusterImporter"),
24  source_eb = cms.InputTag("particleFlowSuperClusterECAL:particleFlowSuperClusterECALBarrel"),
25  source_ee = cms.InputTag("particleFlowSuperClusterECAL:particleFlowSuperClusterECALEndcapWithPreshower"),
26  source_towers = cms.InputTag("towerMaker"),
27  maximumHoverE = cms.double(0.5),
28  minSuperClusterPt = cms.double(10.0),
29  minPTforBypass = cms.double(100.0),
30  superClustersArePF = cms.bool(True) ),
31  cms.PSet( importerName = cms.string("ConversionTrackImporter"),
32  source = cms.InputTag("pfConversions") ),
33  # V0's not actually used in particle flow block building so far
34  #cms.PSet( importerName = cms.string("V0TrackImporter"),
35  # source = cms.InputTag("pfV0") ),
36  #NuclearInteraction's also come in Loose and VeryLoose varieties
37  cms.PSet( importerName = cms.string("NuclearInteractionTrackImporter"),
38  source = cms.InputTag("pfDisplacedTrackerVertex") ),
39  #for best timing GeneralTracksImporter should come after
40  # all secondary track importers
41  cms.PSet( importerName = cms.string("GeneralTracksImporter"),
42  source = cms.InputTag("pfTrack"),
43  muonSrc = cms.InputTag("muons1stStep"),
44  cleanBadConvertedBrems = cms.bool(True),
45  useIterativeTracking = cms.bool(True),
46  maxDPtOPt = cms.double(1.),
47  DPtOverPtCuts_byTrackAlgo = cms.vdouble(10.0,10.0,10.0,
48  10.0,10.0,5.0),
49  NHitCuts_byTrackAlgo = cms.vuint32(3,3,3,3,3,3)
50  ),
51  # secondary GSF tracks are also turned off
52  #cms.PSet( importerName = cms.string("GSFTrackImporter"),
53  # source = cms.InputTag("pfTrackElec:Secondary"),
54  # gsfsAreSecondary = cms.bool(True),
55  # superClustersArePF = cms.bool(True) ),
56  # to properly set SC based links you need to run ECAL importer
57  # after you've imported all SCs to the block
58  cms.PSet( importerName = cms.string("ECALClusterImporter"),
59  source = cms.InputTag("particleFlowClusterECAL"),
60  BCtoPFCMap = cms.InputTag('particleFlowSuperClusterECAL:PFClusterAssociationEBEE') ),
61  cms.PSet( importerName = cms.string("GenericClusterImporter"),
62  source = cms.InputTag("particleFlowClusterHCAL") ),
63  cms.PSet( importerName = cms.string("GenericClusterImporter"),
64  source = cms.InputTag("particleFlowClusterHO") ),
65  cms.PSet( importerName = cms.string("GenericClusterImporter"),
66  source = cms.InputTag("particleFlowClusterHF") ),
67  cms.PSet( importerName = cms.string("GenericClusterImporter"),
68  source = cms.InputTag("particleFlowClusterPS") ),
69 
70  ),
71 
72  #linking definitions
73  # you can find a list of all available linkers in:
74  # plugins/linkers
75  # see : plugins/kdtrees for available KDTree Types
76  # to enable a KDTree for a linking pair, write a KDTree linker
77  # and set useKDTree = True in the linker PSet
78  #order does not matter here since we are defining a lookup table
79  linkDefinitions = cms.VPSet(
80  cms.PSet( linkerName = cms.string("PreshowerAndECALLinker"),
81  linkType = cms.string("PS1:ECAL"),
82  useKDTree = cms.bool(True) ),
83  cms.PSet( linkerName = cms.string("PreshowerAndECALLinker"),
84  linkType = cms.string("PS2:ECAL"),
85  useKDTree = cms.bool(True) ),
86  cms.PSet( linkerName = cms.string("TrackAndECALLinker"),
87  linkType = cms.string("TRACK:ECAL"),
88  useKDTree = cms.bool(True) ),
89  cms.PSet( linkerName = cms.string("TrackAndHCALLinker"),
90  linkType = cms.string("TRACK:HCAL"),
91  useKDTree = cms.bool(True) ),
92  cms.PSet( linkerName = cms.string("TrackAndHOLinker"),
93  linkType = cms.string("TRACK:HO"),
94  useKDTree = cms.bool(False) ),
95  cms.PSet( linkerName = cms.string("ECALAndHCALLinker"),
96  linkType = cms.string("ECAL:HCAL"),
97  useKDTree = cms.bool(False) ),
98  cms.PSet( linkerName = cms.string("HCALAndHOLinker"),
99  linkType = cms.string("HCAL:HO"),
100  useKDTree = cms.bool(False) ),
101  cms.PSet( linkerName = cms.string("HFEMAndHFHADLinker"),
102  linkType = cms.string("HFEM:HFHAD"),
103  useKDTree = cms.bool(False) ),
104  cms.PSet( linkerName = cms.string("TrackAndTrackLinker"),
105  linkType = cms.string("TRACK:TRACK"),
106  useKDTree = cms.bool(False) ),
107  cms.PSet( linkerName = cms.string("ECALAndECALLinker"),
108  linkType = cms.string("ECAL:ECAL"),
109  useKDTree = cms.bool(False) ),
110  cms.PSet( linkerName = cms.string("GSFAndECALLinker"),
111  linkType = cms.string("GSF:ECAL"),
112  useKDTree = cms.bool(False) ),
113  cms.PSet( linkerName = cms.string("TrackAndGSFLinker"),
114  linkType = cms.string("TRACK:GSF"),
115  useKDTree = cms.bool(False),
116  useConvertedBrems = cms.bool(True) ),
117  cms.PSet( linkerName = cms.string("GSFAndBREMLinker"),# here
118  linkType = cms.string("GSF:BREM"),
119  useKDTree = cms.bool(False) ),
120  cms.PSet( linkerName = cms.string("GSFAndGSFLinker"),
121  linkType = cms.string("GSF:GSF"),
122  useKDTree = cms.bool(False) ),
123  cms.PSet( linkerName = cms.string("ECALAndBREMLinker"),
124  linkType = cms.string("ECAL:BREM"),
125  useKDTree = cms.bool(False) ),
126  cms.PSet( linkerName = cms.string("GSFAndHCALLinker"),
127  linkType = cms.string("GSF:HCAL"),
128  useKDTree = cms.bool(False) ),
129  cms.PSet( linkerName = cms.string("HCALAndBREMLinker"),
130  linkType = cms.string("HCAL:BREM"),
131  useKDTree = cms.bool(False) ),
132  cms.PSet( linkerName = cms.string("SCAndECALLinker"),
133  linkType = cms.string("SC:ECAL"),
134  useKDTree = cms.bool(False),
135  SuperClusterMatchByRef = cms.bool(True) )
136  )
137 )
138 
140  ret = []
141  for i, pset in enumerate(particleFlowBlock.elementImporters):
142  if pset.importerName.value() == name:
143  ret.append(i)
144  return ret
145 
146 from Configuration.Eras.Modifier_phase2_hgcal_cff import phase2_hgcal
147 # kill tracks in the HGCal
148 _insertGeneralTracksImporter = {}
149 for idx in _findIndicesByModule('GeneralTracksImporter'):
150  _insertGeneralTracksImporter[idx] = dict(
151  importerName = cms.string('GeneralTracksImporterWithVeto'),
152  veto = cms.InputTag('hgcalTrackCollection:TracksInHGCal')
153  )
154 phase2_hgcal.toModify(
155  particleFlowBlock,
156  elementImporters = _insertGeneralTracksImporter
157 )
158 ### for later
159 #_phase2_hgcal_Linkers.append(
160 # cms.PSet( linkerName = cms.string("SCAndHGCalLinker"),
161 # linkType = cms.string("SC:HGCAL"),
162 # useKDTree = cms.bool(False),
163 # SuperClusterMatchByRef = cms.bool(True) )
164 #)
165 #_phase2_hgcal_Linkers.append(
166 # cms.PSet( linkerName = cms.string("HGCalAndBREMLinker"),
167 # linkType = cms.string("HGCAL:BREM"),
168 # useKDTree = cms.bool(False) )
169 #)
170 #_phase2_hgcal_Linkers.append(
171 # cms.PSet( linkerName = cms.string("GSFAndHGCalLinker"),
172 # linkType = cms.string("GSF:HGCAL"),
173 # useKDTree = cms.bool(False) )
174 #)
175 
176 
177 from Configuration.Eras.Modifier_phase2_timing_cff import phase2_timing
178 _addTiming = {}
179 for idx in _findIndicesByModule('GeneralTracksImporter') + _findIndicesByModule('GeneralTracksImporterWithVeto'):
180  _addTiming[idx] = dict(
181  timeValueMap = cms.InputTag("trackTimeValueMapProducer:generalTracksConfigurableFlatResolutionModel"),
182  timeErrorMap = cms.InputTag("trackTimeValueMapProducer:generalTracksConfigurableFlatResolutionModelResolution")
183  )
184 phase2_timing.toModify(
185  particleFlowBlock,
186  elementImporters = _addTiming
187 )