44 desc.addUntracked<
bool>(
"verbose",
false);
46 desc.addUntracked<
bool>(
"debug",
false);
54 std::vector<edm::ParameterSet> vpset;
60 pset.addParameter<
bool>(
"gsfsAreSecondary",
false);
61 pset.addParameter<
bool>(
"superClustersArePF",
true);
62 vpset.emplace_back(
pset);
66 pset.addParameter<
std::string>(
"importerName",
"ConvBremTrackImporter");
68 pset.addParameter<
bool>(
"vetoEndcap",
false);
69 vpset.emplace_back(
pset);
75 {
"particleFlowSuperClusterECAL:particleFlowSuperClusterECALBarrel"});
77 "source_ee", {
"particleFlowSuperClusterECAL:particleFlowSuperClusterECALEndcapWithPreshower"});
78 pset.addParameter<
double>(
"maximumHoverE", 0.5);
79 pset.addParameter<
double>(
"minSuperClusterPt", 10.0);
80 pset.addParameter<
double>(
"minPTforBypass", 100.0);
82 pset.addParameter<
int>(
"maxSeverityHB", 9);
83 pset.addParameter<
int>(
"maxSeverityHE", 9);
84 pset.addParameter<
bool>(
"usePFThresholdsFromDB",
false);
85 pset.addParameter<
bool>(
"superClustersArePF",
true);
86 vpset.emplace_back(
pset);
90 pset.addParameter<
std::string>(
"importerName",
"ConversionTrackImporter");
92 pset.addParameter<
bool>(
"vetoEndcap",
false);
93 vpset.emplace_back(
pset);
99 pset.addParameter<
std::string>(
"importerName",
"NuclearInteractionTrackImporter");
101 pset.addParameter<
bool>(
"vetoEndcap",
false);
102 vpset.emplace_back(
pset);
108 pset.addParameter<
std::string>(
"importerName",
"GeneralTracksImporter");
110 pset.addParameter<
bool>(
"vetoEndcap",
false);
113 pset.addParameter<
bool>(
"cleanBadConvertedBrems",
true);
114 pset.addParameter<
bool>(
"useIterativeTracking",
true);
115 pset.addParameter<std::vector<double>>(
"DPtOverPtCuts_byTrackAlgo", {10.0, 10.0, 10.0, 10.0, 10.0, 5.0});
116 pset.addParameter<std::vector<uint32_t>>(
"NHitCuts_byTrackAlgo", {3, 3, 3, 3, 3, 3});
117 pset.addParameter<
double>(
"muonMaxDPtOPt", 1);
118 vpset.emplace_back(
pset);
127 pset.addParameter<
edm::InputTag>(
"BCtoPFCMap", {
"particleFlowSuperClusterECAL:PFClusterAssociationEBEE"});
128 vpset.emplace_back(
pset);
132 pset.addParameter<
std::string>(
"importerName",
"GenericClusterImporter");
134 vpset.emplace_back(
pset);
138 pset.addParameter<
std::string>(
"importerName",
"GenericClusterImporter");
139 pset.addParameter<
edm::InputTag>(
"source", {
"particleFlowBadHcalPseudoCluster"});
140 vpset.emplace_back(
pset);
144 pset.addParameter<
std::string>(
"importerName",
"GenericClusterImporter");
146 vpset.emplace_back(
pset);
150 pset.addParameter<
std::string>(
"importerName",
"GenericClusterImporter");
152 vpset.emplace_back(
pset);
156 pset.addParameter<
std::string>(
"importerName",
"GenericClusterImporter");
158 vpset.emplace_back(
pset);
163 psd.
add<
bool>(
"gsfsAreSecondary",
false);
164 psd.
add<
bool>(
"superClustersArePF",
false);
167 psd.
add<
double>(
"maximumHoverE", 0);
168 psd.
add<
double>(
"minSuperClusterPt", 0);
169 psd.
add<
double>(
"minPTforBypass", 0);
171 psd.
add<
int>(
"maxSeverityHB", 0);
172 psd.
add<
int>(
"maxSeverityHE", 0);
173 psd.
add<
bool>(
"usePFThresholdsFromDB",
false);
174 psd.
add<
bool>(
"vetoEndcap",
false);
177 psd.
add<
bool>(
"cleanBadConvertedBrems",
false);
178 psd.
add<
bool>(
"useIterativeTracking",
false);
179 psd.
add<std::vector<double>>(
"DPtOverPtCuts_byTrackAlgo", {});
180 psd.
add<std::vector<uint32_t>>(
"NHitCuts_byTrackAlgo", {});
181 psd.
add<
double>(
"muonMaxDPtOPt", 0);
183 psd.
add<
double>(
"maxDPtOPt", 0);
184 psd.
add<uint32_t>(
"vetoMode", 0);
189 psd.
add<
double>(
"timeQualityThreshold", 0);
193 psd.
add<
bool>(
"useTimeQuality",
false);
194 desc.addVPSet(
"elementImporters", psd, vpset);
204 std::vector<edm::ParameterSet> vpset;
208 pset.addParameter<
std::string>(
"linkerName",
"PreshowerAndECALLinker");
210 pset.addParameter<
bool>(
"useKDTree ",
true);
211 vpset.emplace_back(
pset);
215 pset.addParameter<
std::string>(
"linkerName",
"PreshowerAndECALLinker");
217 pset.addParameter<
bool>(
"useKDTree ",
true);
218 vpset.emplace_back(
pset);
224 pset.addParameter<
bool>(
"useKDTree ",
true);
225 vpset.emplace_back(
pset);
231 pset.addParameter<
bool>(
"useKDTree",
true);
232 pset.addParameter<
std::string>(
"trajectoryLayerEntrance",
"HCALEntrance");
234 pset.addParameter<
int>(
"nMaxHcalLinksPerTrack",
236 vpset.emplace_back(
pset);
242 pset.addParameter<
bool>(
"useKDTree",
false);
243 vpset.emplace_back(
pset);
249 pset.addParameter<
double>(
"minAbsEtaEcal", 2.5);
250 pset.addParameter<
bool>(
"useKDTree",
false);
251 vpset.emplace_back(
pset);
257 pset.addParameter<
bool>(
"useKDTree",
false);
258 vpset.emplace_back(
pset);
264 pset.addParameter<
bool>(
"useKDTree",
false);
265 vpset.emplace_back(
pset);
271 pset.addParameter<
bool>(
"useKDTree",
false);
272 vpset.emplace_back(
pset);
278 pset.addParameter<
bool>(
"useKDTree",
false);
279 vpset.emplace_back(
pset);
285 pset.addParameter<
bool>(
"useKDTree",
false);
286 vpset.emplace_back(
pset);
292 pset.addParameter<
bool>(
"useKDTree",
false);
293 pset.addParameter<
bool>(
"useConvertedBrems",
true);
294 vpset.emplace_back(
pset);
300 pset.addParameter<
bool>(
"useKDTree",
false);
301 vpset.emplace_back(
pset);
307 pset.addParameter<
bool>(
"useKDTree",
false);
308 vpset.emplace_back(
pset);
314 pset.addParameter<
bool>(
"useKDTree",
false);
315 vpset.emplace_back(
pset);
321 pset.addParameter<
bool>(
"useKDTree",
false);
322 vpset.emplace_back(
pset);
328 pset.addParameter<
bool>(
"useKDTree",
false);
329 vpset.emplace_back(
pset);
335 pset.addParameter<
bool>(
"useKDTree",
false);
336 pset.addParameter<
bool>(
"SuperClusterMatchByRef",
true);
337 vpset.emplace_back(
pset);
342 psd.
add<
bool>(
"useKDTree",
false);
345 psd.
add<
int>(
"nMaxHcalLinksPerTrack", 0);
346 psd.
add<
double>(
"minAbsEtaEcal", 0);
347 psd.
add<
bool>(
"useConvertedBrems",
false);
348 psd.
add<
bool>(
"SuperClusterMatchByRef",
false);
349 desc.addVPSet(
"linkDefinitions", psd, vpset);
358 : verbose_{iConfig.
getUntrackedParameter<
bool>(
"verbose",
false)}, putToken_{produces<reco::PFBlockCollection>()} {
359 bool debug_ = iConfig.getUntrackedParameter<
bool>(
"debug",
false);
360 pfBlockAlgo_.setDebug(debug_);
363 const std::vector<edm::ParameterSet>& importers = iConfig.getParameterSetVector(
"elementImporters");
364 pfBlockAlgo_.setImporters(importers,
cc);
366 const std::vector<edm::ParameterSet>& linkdefs = iConfig.getParameterSetVector(
"linkDefinitions");
367 pfBlockAlgo_.setLinkers(linkdefs);
371 pfBlockAlgo_.updateEventSetup(es);
375 pfBlockAlgo_.buildElements(
iEvent);
377 auto blocks = pfBlockAlgo_.findBlocks();
381 str << pfBlockAlgo_ << endl;
382 str <<
"number of blocks : " <<
blocks.size() << endl;
389 LogInfo(
"PFBlockProducer") <<
str.str() << endl;
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
void produce(edm::Event &, const edm::EventSetup &) override
const edm::EDPutTokenT< reco::PFBlockCollection > putToken_
PFBlockProducer(const edm::ParameterSet &)
uint32_t cc[maxCellsPerHit]
T getUntrackedParameter(std::string const &, T const &) const
PFBlockAlgo pfBlockAlgo_
Particle flow block algorithm.
#define DEFINE_FWK_MODULE(type)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
const bool verbose_
verbose ?
void beginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
Log< level::Info, false > LogInfo
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)