19 : minStatus_(
cfg.getParameter<uint32_t>(
"minStatus")),
20 dR2_(
std::
pow(
cfg.getParameter<double>(
"dR"), 2)),
21 extrapolateToECalEntrance_(
cfg.getParameter<
bool>(
"extrapolateToECalEntrance")),
22 verbosity_(
cfg.getParameter<
int>(
"verbosity")),
23 isFirstEvent_(
true) {}
34 void loopXtals(std::map<uint32_t, unsigned>& nBadCrystals,
35 std::map<uint32_t, unsigned>& maxStatus,
36 std::map<uint32_t, double>& sumEta,
37 std::map<uint32_t, double>& sumPhi,
42 const uint16_t statusMask) {
45 for (
int i = 0;
i < Id::kSizeForDenseIndexing; ++
i) {
46 Id
id = Id::unhashIndex(
i);
50 unsigned status = (it == channelStatus->
end()) ? 0 : (it->getStatusCode() & statusMask);
80 std::map<uint32_t, unsigned> nBadCrystals, maxStatus;
81 std::map<uint32_t, double> sumEta, sumPhi;
83 loopXtals<EBDetId>(nBadCrystals,
92 loopXtals<EEDetId>(nBadCrystals,
103 for (
auto it : nBadCrystals) {
104 uint32_t
key = it.first;
112 bool isNearBadTower =
false;
118 if (pfTau !=
nullptr) {
121 const pat::Tau* patTau = dynamic_cast<const pat::Tau*>(
tau);
122 if (patTau !=
nullptr) {
127 if (leadChargedHadron !=
nullptr) {
131 tau_eta = positionAtECalEntrance.eta();
132 tau_phi = positionAtECalEntrance.phi();
136 edm::LogPrint(
"TauAgainstEleDeadECAL") <<
"<AntiElectronDeadECal::operator()>:";
138 if (leadChargedHadron !=
nullptr) {
140 <<
" leadChargedHadron (" << leadChargedHadron->
pdgId() <<
"): Pt = " << leadChargedHadron->
pt()
141 <<
", eta at ECAL (vtx) = " <<
tau_eta <<
" (" << leadChargedHadron->
eta() <<
")"
142 <<
", phi at ECAL (vtx) = " <<
tau_phi <<
" (" << leadChargedHadron->
phi() <<
")";
145 <<
" tau: Pt = " <<
tau->pt() <<
", eta at vtx = " <<
tau_eta <<
", phi at vtx = " <<
tau_phi;
152 <<
" matches badTower: eta = " << badTower.eta_ <<
", phi = " << badTower.phi_;
154 isNearBadTower =
true;
158 return isNearBadTower;