63 : enabled_(ps.getParameter<
bool>(
"enable")),
64 debug_(ps.getUntrackedParameter<
bool>(
"debug",
false)),
67 produces<std::vector<reco::PFCluster>>();
68 produces<std::vector<reco::PFRecHit>>(
"hits");
90 std::map<std::pair<int, int>,
int> good, bads;
91 std::map<std::pair<int, int>, std::pair<int, HcalSubdetector>> minDepths;
100 if (
status & statusMask) {
103 std::cout <<
"Channel " <<
i() <<
" (subdet " <<
id.subdet() <<
", zside " <<
id.zside() <<
", ieta "
104 <<
id.ieta() <<
", iphi " <<
id.iphi() <<
" depth " <<
id.depth() <<
" has status " <<
status
105 <<
" masked " << (
status & statusMask) << std::endl;
109 auto& minD = minDepths[
tower];
110 if (minD.second ==
HcalEmpty || minD.first >
id.depth()) {
111 minD.first =
id.depth();
112 minD.second =
id.subdet();
116 const float dummyEnergy = 1
e-5;
117 for (
const auto& rec : bads) {
118 int ieta = rec.first.first,
iphi = rec.first.second, nbad = rec.second, ngood = good[rec.first];
119 auto minDepth = minDepths[rec.first];
122 bool isBad = (nbad > 0 && nbad >= ngood);
124 std::cout <<
"At ieta " <<
id.ieta() <<
", iphi " <<
id.iphi() <<
" I have " << nbad <<
" bad depths, " << ngood
125 <<
" good depths. First depth is in " << (
barrel ?
"HB" :
"HE") <<
" depth " << minDepth.first <<
"; "
126 << (isBad ?
" MARK BAD" :
" ignore") << std::endl;
131 std::shared_ptr<const CaloCellGeometry> thisCell = (
barrel ? hbGeom : heGeom)->
getGeometry(
id);
133 badAreasRH_.emplace_back(thisCell,
id(), layer, dummyEnergy);
152 auto outRH = std::make_unique<std::vector<reco::PFRecHit>>(
badAreasRH_);
155 auto outC = std::make_unique<std::vector<reco::PFCluster>>(
badAreasC_);
158 for (
unsigned int i = 0,
n = rhHandle->size();
i <
n; ++
i) {
167 desc.add<
bool>(
"enable",
false)
168 ->setComment(
"activate the module (if false, it doesn't check the DB and produces an empty collection)");
169 desc.addUntracked<
bool>(
"debug",
false);
170 descriptions.
add(
"particleFlowBadHcalPseudoCluster",
desc);