89 : doBarrel_(ps.getParameter<
bool>(
"doBarrel")),
90 doEndcaps_(ps.getParameter<
bool>(
"doEndcaps")),
93 clusEtaSize_(ps.getParameter<
int>(
"clusEtaSize")),
94 clusPhiSize_(ps.getParameter<
int>(
"clusPhiSize")),
95 barrelClusterCollection_(ps.getParameter<
std::
string>(
"barrelClusterCollection")),
96 endcapClusterCollection_(ps.getParameter<
std::
string>(
"endcapClusterCollection")),
97 clusSeedThr_(ps.getParameter<double>(
"clusSeedThr")),
98 clusSeedThrEndCap_(ps.getParameter<double>(
"clusSeedThrEndCap")),
99 useRecoFlag_(ps.getParameter<
bool>(
"useRecoFlag")),
100 flagLevelRecHitsToUse_(ps.getParameter<
int>(
"flagLevelRecHitsToUse")),
101 useDBStatus_(ps.getParameter<
bool>(
"useDBStatus")),
102 statusLevelRecHitsToUse_(ps.getParameter<
int>(
"statusLevelRecHitsToUse")),
103 maxNumberofSeeds_(ps.getParameter<
int>(
"maxNumberofSeeds")),
104 maxNumberofClusters_(ps.getParameter<
int>(
"maxNumberofClusters")),
105 debug_(ps.getParameter<
int>(
"debugLevel")),
115 desc.
add<
bool>((
"doBarrel"),
true);
116 desc.
add<
bool>((
"doEndcaps"),
true);
119 desc.
add<
int>((
"clusEtaSize"), 3);
120 desc.
add<
int>((
"clusPhiSize"), 3);
121 desc.
add<
std::string>((
"barrelClusterCollection"),
"Simple3x3ClustersBarrel");
122 desc.
add<
std::string>((
"endcapClusterCollection"),
"Simple3x3ClustersEndcap");
123 desc.
add<
double>((
"clusSeedThr"), 0.5);
124 desc.
add<
double>((
"clusSeedThrEndCap"), 1.0);
125 desc.
add<
bool>((
"useRecoFlag"),
false);
126 desc.
add<
int>((
"flagLevelRecHitsToUse"), 1);
127 desc.
add<
bool>((
"useDBStatus"),
true);
128 desc.
add<
int>((
"statusLevelRecHitsToUse"), 1);
131 posCalcPSET.
add<
double>(
"T0_barl", 7.4);
132 posCalcPSET.
add<
double>(
"T0_endc", 3.1);
133 posCalcPSET.
add<
double>(
"T0_endcPresh", 1.2);
134 posCalcPSET.
add<
double>(
"W0", 4.2);
135 posCalcPSET.
add<
double>(
"X0", 0.89);
136 posCalcPSET.
add<
bool>(
"LogWeighted",
true);
139 desc.
add<
int>((
"maxNumberofSeeds"), 1000);
140 desc.
add<
int>((
"maxNumberofClusters"), 200);
141 desc.
add<
int>((
"debugLevel"), 0);
142 descriptions.
add((
"hltEgammaHLTNxNClusterProducer"), desc);
149 if (!barrelRecHitsHandle.
isValid()) {
150 LogDebug(
"") <<
"EgammaHLTNxNClusterProducer Error! can't get product eb hit!" << std::endl;
155 LogDebug(
"") <<
"EgammaHLTNxNClusterProducer nEBrechits: " << evt.
id().
run() <<
" event " << evt.
id().
event()
156 <<
" " << hits_eb->
size() << std::endl;
164 if (!endcapRecHitsHandle.
isValid()) {
165 LogDebug(
"") <<
"EgammaHLTNxNClusterProducer Error! can't get product ee hit!" << std::endl;
170 LogDebug(
"") <<
"EgammaHLTNxNClusterProducer nEErechits: " << evt.
id().
run() <<
" event " << evt.
id().
event()
171 <<
" " << hits_ee->
size() << std::endl;
210 std::vector<EcalRecHit>
seeds;
212 double clusterSeedThreshold;
220 double energy = itt->energy();
223 if (
energy > clusterSeedThreshold)
224 seeds.push_back(*itt);
237 std::unique_ptr<CaloSubdetectorTopology> topology_p;
240 topology_p = std::make_unique<EcalBarrelTopology>(*geoHandle);
243 topology_p = std::make_unique<EcalEndcapTopology>(*geoHandle);
249 std::vector<reco::BasicCluster>
clusters;
250 std::vector<DetId> usedXtals;
253 sort(
seeds.begin(),
seeds.end(), [](
auto const &
x,
auto const &
y) {
return (
x.energy() >
y.energy()); });
255 for (std::vector<EcalRecHit>::iterator itseed =
seeds.begin(); itseed !=
seeds.end(); itseed++) {
256 DetId seed_id = itseed->id();
258 std::vector<DetId>::iterator itdet =
find(usedXtals.begin(), usedXtals.end(), seed_id);
259 if (itdet != usedXtals.end())
263 std::vector<std::pair<DetId, float> > clus_used;
265 float clus_energy = 0;
267 for (std::vector<DetId>::iterator det = clus_v.begin(); det != clus_v.end(); det++) {
271 std::vector<DetId>::iterator itdet =
find(usedXtals.begin(), usedXtals.end(), detid);
272 if (itdet != usedXtals.end())
282 usedXtals.push_back(detid);
283 clus_used.push_back(std::pair<DetId, float>(detid, 1.));
284 clus_energy +=
hit->energy();
288 if (clus_energy <= 0)
295 <<
" energy: " << clus_energy <<
" eta: " << clus_pos.Eta() <<
" phi: " << clus_pos.Phi()
296 <<
" nRecHits: " << clus_used.size() << std::endl;
307 auto clusters_p = std::make_unique<reco::BasicClusterCollection>();
311 LogDebug(
"") <<
"nxnclusterProducer: " << clusters_p->size() <<
" made in barrel" << std::endl;
315 LogDebug(
"") <<
"nxnclusterProducer: " << clusters_p->size() <<
" made in endcap" << std::endl;