37 std::vector<std::unique_ptr<RecHitTopologicalCleanerBase>>
_cleaners;
38 std::vector<std::unique_ptr<RecHitTopologicalCleanerBase>>
_seedcleaners;
52 desc.add<
bool>(
"usePFThresholdsFromDB",
false);
56 desc.addVPSet(
"recHitCleaners", psd, {});
61 psd.
add<std::vector<std::string>>(
"RecHitFlagsToBeExcluded", {});
62 desc.addVPSet(
"seedCleaners", psd, {});
67 pset.add<
int>(
"nNeighbours", 0);
76 pset.addVPSet(
"thresholdsByDetector", psd, {});
91 pset.addVPSet(
"thresholdsByDetector", psd, {});
93 pset.add<
bool>(
"useCornerCells",
false);
95 pset.add<
bool>(
"filterByTracksterIteration",
false);
96 pset.add<
bool>(
"filterByTracksterPID",
false);
97 pset.add<std::vector<int>>(
"filter_on_categories", {});
98 pset.add<std::vector<int>>(
"filter_on_iterations", {});
99 pset.add<
double>(
"pid_threshold", 0);
101 pset.add<
double>(
"exclusiveFraction", 0);
102 pset.add<
double>(
"invisibleFraction", 0);
103 pset.add<
bool>(
"maxDistanceFilter",
false);
104 pset.add<
double>(
"maxDistance", 0);
105 pset.add<
double>(
"maxDforTimingSquared", 0);
106 pset.add<
double>(
"timeOffset", 0);
107 pset.add<uint32_t>(
"minNHitsforTiming", 0);
108 pset.add<
bool>(
"useMCFractionsForExclEnergy",
false);
109 pset.add<std::vector<double>>(
"hadronCalib", {});
110 pset.add<std::vector<double>>(
"egammaCalib", {});
111 pset.add<
double>(
"calibMinEta", 0);
112 pset.add<
double>(
"calibMaxEta", 0);
122 pset2.
add<
double>(
"minFractionInCalc", 0);
123 pset2.
add<
int>(
"posCalcNCrystals", -1);
127 psd.
add<std::vector<int>>(
"depths", {});
128 psd.
add<std::vector<double>>(
"logWeightDenominator", {});
129 pset2.
addVPSet(
"logWeightDenominatorByDetector", psd, {});
131 pset2.
add<
double>(
"logWeightDenominator", 0);
132 pset2.
add<
double>(
"minAllowedNormalization", 0);
135 pset3.
add<
double>(
"constantTerm", 0);
136 pset3.
add<
double>(
"constantTermLowE", 0);
137 pset3.
add<
double>(
"corrTermLowE", 0);
138 pset3.
add<
double>(
"noiseTerm", 0);
139 pset3.
add<
double>(
"noiseTermLowE", 0);
140 pset3.
add<
double>(
"threshHighE", -1.);
141 pset3.
add<
double>(
"threshLowE", -1.);
148 pset.add<
double>(
"minFractionToKeep", 0);
149 pset.add<
double>(
"nSigmaEta", 0);
150 pset.add<
double>(
"nSigmaPhi", 0);
151 pset.add<
bool>(
"excludeOtherSeeds",
false);
152 pset.add<uint32_t>(
"maxIterations", 0);
153 pset.add<
double>(
"minFracTot", 0);
157 pset2.
add<
double>(
"minFractionInCalc", 0);
158 pset2.
add<
double>(
"T0_EB", 0);
159 pset2.
add<
double>(
"T0_EE", 0);
160 pset2.
add<
double>(
"T0_ES", 0);
161 pset2.
add<
double>(
"W0", 0);
162 pset2.
add<
double>(
"X0", 0);
163 pset2.
add<
double>(
"minAllowedNormalization", 0);
173 pset.addVPSet(
"recHitEnergyNorms", psd, {});
175 pset.add<
double>(
"showerSigma", 1.5);
176 pset.add<
double>(
"stoppingTolerance", 1
e-08);
177 pset.add<
bool>(
"clusterTimeResFromSeed",
false);
178 pset.add<
double>(
"maxNSigmaTime", 10.0);
179 pset.add<
double>(
"minChi2Prob", 0);
182 pset2.
add<
double>(
"constantTerm", 0);
183 pset2.
add<
double>(
"constantTermLowE", 0);
184 pset2.
add<
double>(
"corrTermLowE", 0);
185 pset2.
add<
double>(
"noiseTerm", 0);
186 pset2.
add<
double>(
"noiseTermLowE", 0);
187 pset2.
add<
double>(
"threshHighE", -1.);
188 pset2.
add<
double>(
"threshLowE", -1.);
192 pset.add<
double>(
"timeSigmaEB", 10.0);
193 pset.add<
double>(
"timeSigmaEE", 10.0);
199 pset.add<
double>(
"minFractionInCalc", 0);
200 pset.add<
bool>(
"updateTiming",
false);
201 pset.add<
double>(
"T0_EB", 0);
202 pset.add<
double>(
"T0_EE", 0);
203 pset.add<
double>(
"T0_ES", 0);
204 pset.add<
double>(
"W0", 0);
205 pset.add<
double>(
"X0", 0);
206 pset.add<
double>(
"minAllowedNormalization", 0);
215 #define LOGVERB(x) edm::LogVerbatim(x) 216 #define LOGWARN(x) edm::LogWarning(x) 217 #define LOGERR(x) edm::LogError(x) 218 #define LOGDRESSED(x) edm::LogInfo(x) 220 #define LOGVERB(x) LogTrace(x) 221 #define LOGWARN(x) edm::LogWarning(x) 222 #define LOGERR(x) edm::LogError(x) 223 #define LOGDRESSED(x) LogDebug(x) 227 : _prodInitClusters(conf.getUntrackedParameter<
bool>(
"prodInitialClusters",
false)) {
238 for (
const auto& conf : cleanerConfs) {
244 if (!seedcleanerConfs.empty()) {
245 for (
const auto& conf : seedcleanerConfs) {
261 if (!pfcConf.
empty()) {
263 if (!pfcName.empty())
268 if (!pConf.
empty()) {
275 if (!cConf.
empty()) {
282 produces<reco::PFClusterCollection>(
"initialClusters");
284 produces<reco::PFClusterCollection>();
312 std::vector<bool>
mask(rechits->size(),
true);
314 cleaner->clean(rechits,
mask);
318 std::vector<bool> seedmask =
mask;
320 cleaner->clean(rechits, seedmask);
323 std::vector<bool> seedable(rechits->size(),
false);
326 auto initialClusters = std::make_unique<reco::PFClusterCollection>();
330 auto pfClusters = std::make_unique<reco::PFClusterCollection>();
331 pfClusters = std::make_unique<reco::PFClusterCollection>();
336 pfClusters->insert(pfClusters->end(), initialClusters->begin(), initialClusters->end());
348 e.put(
std::move(initialClusters),
"initialClusters");
std::unique_ptr< SeedFinderBase > _seedFinder
std::unique_ptr< PFClusterEnergyCorrectorBase > _energyCorrector
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
T getParameter(std::string const &) const
ParameterDescriptionBase * addVPSet(U const &iLabel, ParameterSetDescription const &validator, std::vector< ParameterSet > const &defaults)
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
def create(alignables, pedeDump, additionalData, outputFile, config)
uint32_t cc[maxCellsPerHit]
std::vector< ParameterSet > VParameterSet
std::unique_ptr< PFClusterBuilderBase > _pfClusterBuilder
void beginRun(const edm::Run &, const edm::EventSetup &) override
RecHitTopologicalCleanerBase RHCB
ParameterSet const & getParameterSet(std::string const &) const
ParameterDescriptionNode * addNode(ParameterDescriptionNode const &node)
std::vector< std::unique_ptr< RecHitTopologicalCleanerBase > > _seedcleaners
~PFClusterProducer() override=default
PFCPositionCalculatorBase PosCalc
std::unique_ptr< PFCPositionCalculatorBase > _positionReCalc
PFClusterBuilderBase PFCBB
std::vector< std::unique_ptr< RecHitTopologicalCleanerBase > > _cleaners
const bool _prodInitClusters
edm::EDGetTokenT< reco::PFRecHitCollection > _rechitsLabel
std::unique_ptr< InitialClusteringStepBase > _initialClustering
#define DEFINE_FWK_MODULE(type)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void produce(edm::Event &, const edm::EventSetup &) override
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
HcalPFCuts const * paramPF
InitialClusteringStepBase ICSB
VParameterSet const & getParameterSetVector(std::string const &name) const
PFClusterProducer(const edm::ParameterSet &)
edm::ESGetToken< HcalPFCuts, HcalPFCutsRcd > hcalCutsToken_