10 #include <unordered_map> 50 if (!pfcConf.
empty()) {
51 if (pfcConf.
exists(
"positionCalc")) {
57 if (pfcConf.
exists(
"allCellsPositionCalc")) {
70 desc.add<
bool>(
"usePFThresholdsFromDB",
true);
88 validator.
add<std::vector<int>>(
"depths", {});
89 validator.
add<std::vector<double>>(
"recHitEnergyNorm", {});
90 std::vector<edm::ParameterSet> vDefaults(2);
91 vDefaults[0].addParameter<
std::string>(
"detector",
"HCAL_BARREL1");
92 vDefaults[0].addParameter<std::vector<int>>(
"depths", {1, 2, 3, 4});
93 vDefaults[0].addParameter<std::vector<double>>(
"recHitEnergyNorm", {0.1, 0.2, 0.3, 0.3});
94 vDefaults[1].addParameter<
std::string>(
"detector",
"HCAL_ENDCAP");
95 vDefaults[1].addParameter<std::vector<int>>(
"depths", {1, 2, 3, 4, 5, 6, 7});
96 vDefaults[1].addParameter<std::vector<double>>(
"recHitEnergyNorm", {0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2});
101 bar.add<
std::string>(
"algoName",
"Basic2DGenericPFlowPositionCalc");
102 bar.add<
double>(
"minFractionInCalc", 1
e-9);
103 bar.add<
int>(
"posCalcNCrystals", 5);
107 validator.
add<std::vector<int>>(
"depths", {});
108 validator.
add<std::vector<double>>(
"logWeightDenominator", {});
109 std::vector<edm::ParameterSet> vDefaults(2);
110 vDefaults[0].addParameter<
std::string>(
"detector",
"HCAL_BARREL1");
111 vDefaults[0].addParameter<std::vector<int>>(
"depths", {1, 2, 3, 4});
112 vDefaults[0].addParameter<std::vector<double>>(
"logWeightDenominator", {0.1, 0.2, 0.3, 0.3});
113 vDefaults[1].addParameter<
std::string>(
"detector",
"HCAL_ENDCAP");
114 vDefaults[1].addParameter<std::vector<int>>(
"depths", {1, 2, 3, 4, 5, 6, 7});
115 vDefaults[1].addParameter<std::vector<double>>(
"logWeightDenominator", {0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2});
116 bar.addVPSet(
"logWeightDenominatorByDetector", validator, vDefaults);
118 bar.add<
double>(
"minAllowedNormalization", 1
e-9);
123 bar.add<
std::string>(
"algoName",
"Basic2DGenericPFlowPositionCalc");
124 bar.add<
double>(
"minFractionInCalc", 1
e-9);
125 bar.add<
int>(
"posCalcNCrystals", -1);
129 validator.
add<std::vector<int>>(
"depths", {});
130 validator.
add<std::vector<double>>(
"logWeightDenominator", {});
131 std::vector<edm::ParameterSet> vDefaults(2);
132 vDefaults[0].addParameter<
std::string>(
"detector",
"HCAL_BARREL1");
133 vDefaults[0].addParameter<std::vector<int>>(
"depths", {1, 2, 3, 4});
134 vDefaults[0].addParameter<std::vector<double>>(
"logWeightDenominator", {0.1, 0.2, 0.3, 0.3});
135 vDefaults[1].addParameter<
std::string>(
"detector",
"HCAL_ENDCAP");
136 vDefaults[1].addParameter<std::vector<int>>(
"depths", {1, 2, 3, 4, 5, 6, 7});
137 vDefaults[1].addParameter<std::vector<double>>(
"logWeightDenominator", {0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2});
138 bar.addVPSet(
"logWeightDenominatorByDetector", validator, vDefaults);
140 bar.add<
double>(
"minAllowedNormalization", 1
e-9);
145 bar.add<
double>(
"corrTermLowE", 0.);
146 bar.add<
double>(
"threshLowE", 6.);
147 bar.add<
double>(
"noiseTerm", 21.86);
148 bar.add<
double>(
"constantTermLowE", 4.24);
149 bar.add<
double>(
"noiseTermLowE", 8.);
150 bar.add<
double>(
"threshHighE", 15.);
151 bar.add<
double>(
"constantTerm", 2.82);
156 bar.add<
double>(
"corrTermLowE", 0.);
157 bar.add<
double>(
"threshLowE", 6.);
158 bar.add<
double>(
"noiseTerm", 21.86);
159 bar.add<
double>(
"constantTermLowE", 4.24);
160 bar.add<
double>(
"noiseTermLowE", 8.);
161 bar.add<
double>(
"threshHighE", 15.);
162 bar.add<
double>(
"constantTerm", 2.82);
210 std::vector<int> nTopoSeeds(nRH, 0);
212 for (
int i = 0;
i < pfClusterSoA.nSeeds();
i++) {
213 nTopoSeeds[pfClusterSoA[
i].topoId()]++;
217 for (
int i = 0;
i < pfClusterSoA.nSeeds();
i++) {
218 unsigned int n = pfClusterSoA[
i].seedRHIdx();
221 int offset = pfClusterSoA[
i].rhfracOffset();
224 if (pfRecHitFractionSoA[
k].pfrhIdx() < nRH && pfRecHitFractionSoA[
k].pfrhIdx() > -1 &&
225 pfRecHitFractionSoA[
k].frac() > 0.0) {
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
std::unique_ptr< PFCPositionCalculatorBase > positionCalc_
T getParameter(std::string const &) const
const edm::EDGetTokenT< reco::PFClusterHostCollection > pfClusterSoAToken_
Particle flow cluster, see clustering algorithm in PFClusterAlgo.
const edm::EDGetTokenT< reco::PFRecHitFractionHostCollection > pfRecHitFractionSoAToken_
const edm::EDGetTokenT< reco::PFRecHitHostCollection > InputPFRecHitSoA_Token_
uint32_t cc[maxCellsPerHit]
bool exists(std::string const ¶meterName) const
checks if a parameter exists
ParameterSet const & getParameterSet(std::string const &) const
Fraction of a PFRecHit (rechits can be shared between several PFCluster's)
const edm::EDPutTokenT< reco::PFClusterCollection > legacyPfClustersToken_
std::unique_ptr< PFCPositionCalculatorBase > allCellsPositionCalc_
#define DEFINE_FWK_MODULE(type)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
edm::Ref< PFRecHitCollection > PFRecHitRef
persistent reference to PFRecHit objects
LegacyPFClusterProducer(edm::ParameterSet const &config)
const edm::ESGetToken< HcalPFCuts, HcalPFCutsRcd > hcalCutsToken_
const edm::EDGetTokenT< reco::PFRecHitCollection > recHitsLabel_
std::vector< PFCluster > PFClusterCollection
collection of PFCluster objects
void produce(edm::Event &, const edm::EventSetup &) override