67 cleaningAlgo_ = std::make_unique<EcalCleaningAlgo>(cleaningPs);
84 ebUncalibRecHits = pEBUncalibRecHits.product();
85 LogDebug(
"EcalRecHitDebug") <<
"total # EB uncalibrated rechits: " << ebUncalibRecHits->size();
88 eeUncalibRecHits = pEEUncalibRecHits.product();
89 LogDebug(
"EcalRecHitDebug") <<
"total # EE uncalibrated rechits: " << eeUncalibRecHits->size();
92 auto ebRecHits = std::make_unique<EBRecHitCollection>();
93 auto eeRecHits = std::make_unique<EERecHitCollection>();
102 if (ebUncalibRecHits) {
106 worker_->run(evt, *it, *ebRecHits);
110 if (eeUncalibRecHits) {
114 worker_->run(evt, *it, *eeRecHits);
124 const std::set<EBDetId>* detIds =
nullptr;
130 for (std::set<EBDetId>::const_iterator it = detIds->begin(); it != detIds->end(); ++it) {
134 if (chit != chStatus->end()) {
135 chStatusCode = *chit;
137 edm::LogError(
"EcalRecHitProducerError") <<
"No channel status found for xtal " << (*it).rawId()
138 <<
"! something wrong with EcalChannelStatus in your DB? ";
158 const std::set<EEDetId>* detIds =
nullptr;
165 for (std::set<EEDetId>::const_iterator it = detIds->begin(); it != detIds->end(); ++it) {
169 if (chit != chStatus->end()) {
170 chStatusCode = *chit;
172 edm::LogError(
"EcalRecHitProducerError") <<
"No channel status found for xtal " << (*it).rawId()
173 <<
"! something wrong with EcalChannelStatus in your DB? ";
193 const std::set<EcalTrigTowerDetId>* ttIds =
nullptr;
199 for (std::set<EcalTrigTowerDetId>::const_iterator it = ttIds->begin(); it != ttIds->end(); ++it) {
201 int ieta = (((*it).ietaAbs() - 1) * 5 + 1) * (*it).zside();
202 int iphi = (((*it).iphi() - 1) * 5 + 11) % 360;
214 const std::set<EcalScDetId>* scIds =
nullptr;
220 for (std::set<EcalScDetId>::const_iterator it = scIds->begin(); it != scIds->end(); ++it) {
222 if (
EEDetId::validDetId(((*it).ix() - 1) * 5 + 1, ((*it).iy() - 1) * 5 + 1, (*it).zside())) {
247 LogInfo(
"EcalRecHitInfo") <<
"total # EB calibrated rechits: " << ebRecHits->size();
248 LogInfo(
"EcalRecHitInfo") <<
"total # EE calibrated rechits: " << eeRecHits->size();
256 desc.
add<
bool>(
"recoverEEVFE",
false);
258 desc.
add<
bool>(
"recoverEBIsolatedChannels",
false);
259 desc.
add<
bool>(
"recoverEBVFE",
false);
260 desc.
add<
bool>(
"laserCorrection",
true);
261 desc.
add<
double>(
"EBLaserMIN", 0.5);
262 desc.
add<
bool>(
"killDeadChannels",
true);
264 std::vector<int> temp1;
268 temp1.push_back(142);
269 desc.
add<std::vector<int>>(
"dbStatusToBeExcludedEB", temp1);
272 edm::InputTag(
"ecalMultiFitUncalibRecHit",
"EcalUncalibRecHitsEE"));
274 std::vector<int> temp1;
278 temp1.push_back(142);
279 desc.
add<std::vector<int>>(
"dbStatusToBeExcludedEE", temp1);
281 desc.
add<
double>(
"EELaserMIN", 0.5);
285 psd0.
add<
double>(
"e6e2thresh", 0.04);
286 psd0.
add<
double>(
"tightenCrack_e6e2_double", 3);
287 psd0.
add<
double>(
"e4e1Threshold_endcap", 0.3);
288 psd0.
add<
double>(
"tightenCrack_e4e1_single", 3);
289 psd0.
add<
double>(
"tightenCrack_e1_double", 2);
290 psd0.
add<
double>(
"cThreshold_barrel", 4);
291 psd0.
add<
double>(
"e4e1Threshold_barrel", 0.08);
292 psd0.
add<
double>(
"tightenCrack_e1_single", 2);
293 psd0.
add<
double>(
"e4e1_b_barrel", -0.024);
294 psd0.
add<
double>(
"e4e1_a_barrel", 0.04);
295 psd0.
add<
double>(
"ignoreOutOfTimeThresh", 1000000000.0);
296 psd0.
add<
double>(
"cThreshold_endcap", 15);
297 psd0.
add<
double>(
"e4e1_b_endcap", -0.0125);
298 psd0.
add<
double>(
"e4e1_a_endcap", 0.02);
299 psd0.
add<
double>(
"cThreshold_double", 10);
302 desc.
add<
double>(
"logWarningEtThreshold_EE_FE", 50);
304 desc.
add<
bool>(
"recoverEBFE",
true);
307 desc.
add<
double>(
"singleChannelRecoveryThreshold", 8);
308 desc.
add<
double>(
"sum8ChannelRecoveryThreshold", 0.);
310 edm::FileInPath(
"RecoLocalCalo/EcalDeadChannelRecoveryAlgos/data/BDTWeights/"
311 "bdtgAllRH_8GT700MeV_noCracks_ZskimData2017_v1.xml"));
313 edm::FileInPath(
"RecoLocalCalo/EcalDeadChannelRecoveryAlgos/data/BDTWeights/"
314 "bdtgAllRH_8GT700MeV_onlyCracks_ZskimData2017_v1.xml"));
316 std::vector<std::string> temp1;
318 temp1.push_back(
"kNoisy");
319 temp1.push_back(
"kNNoisy");
320 temp1.push_back(
"kFixedG6");
321 temp1.push_back(
"kFixedG1");
322 temp1.push_back(
"kFixedG0");
323 temp1.push_back(
"kNonRespondingIsolated");
324 temp1.push_back(
"kDeadVFE");
325 temp1.push_back(
"kDeadFE");
326 temp1.push_back(
"kNoDataNoTP");
327 desc.
add<std::vector<std::string>>(
"ChannelStatusToBeExcluded", temp1);
331 desc.
add<
bool>(
"recoverEEFE",
true);
332 desc.
add<
std::string>(
"singleChannelRecoveryMethod",
"NeuralNetworks");
333 desc.
add<
double>(
"EBLaserMAX", 3.0);
337 std::vector<std::string> temp2;
339 temp2.push_back(
"kOk");
340 temp2.push_back(
"kDAC");
341 temp2.push_back(
"kNoLaser");
342 temp2.push_back(
"kNoisy");
343 psd0.
add<std::vector<std::string>>(
"kGood", temp2);
346 std::vector<std::string> temp2;
348 temp2.push_back(
"kFixedG0");
349 temp2.push_back(
"kNonRespondingIsolated");
350 temp2.push_back(
"kDeadVFE");
351 psd0.
add<std::vector<std::string>>(
"kNeighboursRecovered", temp2);
354 std::vector<std::string> temp2;
356 temp2.push_back(
"kNoDataNoTP");
357 psd0.
add<std::vector<std::string>>(
"kDead", temp2);
360 std::vector<std::string> temp2;
362 temp2.push_back(
"kNNoisy");
363 temp2.push_back(
"kFixedG6");
364 temp2.push_back(
"kFixedG1");
365 psd0.
add<std::vector<std::string>>(
"kNoisy", temp2);
368 std::vector<std::string> temp2;
370 temp2.push_back(
"kDeadFE");
371 psd0.
add<std::vector<std::string>>(
"kTowerRecovered", temp2);
376 edm::InputTag(
"ecalMultiFitUncalibRecHit",
"EcalUncalibRecHitsEB"));
379 desc.
add<
double>(
"EELaserMAX", 8.0);
380 desc.
add<
double>(
"logWarningEtThreshold_EB_FE", 50);
381 desc.
add<
bool>(
"recoverEEIsolatedChannels",
false);
382 desc.
add<
bool>(
"skipTimeCalib",
false);
383 descriptions.
add(
"ecalRecHit", desc);
std::string eeRechitCollection_
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
const edm::EventSetup & c
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void reserve(SetDescriptionEntries::size_type n)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
std::unique_ptr< EcalCleaningAlgo > cleaningAlgo_
#define DEFINE_FWK_MODULE(type)
Code getStatusCode() const
return decoded status
std::vector< T >::const_iterator const_iterator
bool recoverEEIsolatedChannels_
Log< level::Error, false > LogError
~EcalRecHitProducer() override
EcalRecHitProducer(const edm::ParameterSet &ps)
edm::ESGetToken< EcalChannelStatus, EcalChannelStatusRcd > ecalChannelStatusToken_
ParameterDescriptionBase * add(U const &iLabel, T const &value)
edm::EDGetTokenT< EEUncalibratedRecHitCollection > eeUncalibRecHitToken_
static const int ETAPHIMODE
edm::EDGetTokenT< EBUncalibratedRecHitCollection > ebUncalibRecHitToken_
Log< level::Info, false > LogInfo
edm::EDGetTokenT< std::set< EBDetId > > ebDetIdToBeRecoveredToken_
T const * product() const
std::unique_ptr< EcalRecHitWorkerBaseClass > workerRecover_
static bool validDetId(int crystal_ix, int crystal_iy, int iz)
std::string ebRechitCollection_
std::vector< Item >::const_iterator const_iterator
T getParameter(std::string const &) const
edm::EDGetTokenT< std::set< EcalScDetId > > eeFEToBeRecoveredToken_
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void produce(edm::Event &evt, const edm::EventSetup &es) override
std::unique_ptr< EcalRecHitWorkerBaseClass > worker_
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
edm::EDGetTokenT< std::set< EEDetId > > eeDetIdToBeRecoveredToken_
edm::EDGetTokenT< std::set< EcalTrigTowerDetId > > ebFEToBeRecoveredToken_
bool recoverEBIsolatedChannels_