CMS 3D CMS Logo

HBHEIsolatedNoiseAlgos.cc
Go to the documentation of this file.
1 /*
2 Description: Isolation algorithms used to identify anomalous noise in the HB/HE.
3  These algorithms will be used to reflag HB/HE rechits as noise.
4 
5  There are 4 objects implemented here:
6  1) ObjectValidator
7  2) PhysicsTowerOrganizer
8  3) HBHEHitMap
9  4) HBHEHitMapOrganizer
10  See comments below for details.
11 
12 Original Author: John Paul Chou (Brown University)
13  Thursday, September 2, 2010
14 */
15 
17 
20 
29 
36 
38 //
39 // ObjectValidator
40 //
42 
44  HBThreshold_ = iConfig.getParameter<double>("HBThreshold");
45  HESThreshold_ = iConfig.getParameter<double>("HESThreshold");
46  HEDThreshold_ = iConfig.getParameter<double>("HEDThreshold");
47  EBThreshold_ = iConfig.getParameter<double>("EBThreshold");
48  EEThreshold_ = iConfig.getParameter<double>("EEThreshold");
49 
50  HcalAcceptSeverityLevel_ = iConfig.getParameter<uint32_t>("HcalAcceptSeverityLevel");
51  EcalAcceptSeverityLevel_ = iConfig.getParameter<uint32_t>("EcalAcceptSeverityLevel");
52  UseHcalRecoveredHits_ = iConfig.getParameter<bool>("UseHcalRecoveredHits");
53  UseEcalRecoveredHits_ = iConfig.getParameter<bool>("UseEcalRecoveredHits");
54  UseAllCombinedRechits_ = iConfig.getParameter<bool>("UseAllCombinedRechits");
55 
56  MinValidTrackPt_ = iConfig.getParameter<double>("MinValidTrackPt");
57  MinValidTrackPtBarrel_ = iConfig.getParameter<double>("MinValidTrackPtBarrel");
58  MinValidTrackNHits_ = iConfig.getParameter<int>("MinValidTrackNHits");
59 
60  theHcalChStatus_ = nullptr;
61  theEcalChStatus_ = nullptr;
62  theHcalSevLvlComputer_ = nullptr;
63  theEcalSevLvlAlgo_ = nullptr;
64  theEBRecHitCollection_ = nullptr;
65  theEERecHitCollection_ = nullptr;
66 
67  return;
68 }
69 
71 
73  assert(theHcalSevLvlComputer_ != nullptr && theHcalChStatus_ != nullptr);
74 
77  return true;
78 
79  // require the hit to pass a certain energy threshold
80  if (hit.id().subdet() == HcalBarrel && hit.energy() < HBThreshold_)
81  return false;
82  else if (hit.id().subdet() == HcalEndcap && hit.id().ietaAbs() <= 20 && hit.energy() < HESThreshold_)
83  return false;
84  else if (hit.id().subdet() == HcalEndcap && hit.id().ietaAbs() > 20 && hit.energy() < HEDThreshold_)
85  return false;
86 
87  // determine if the hit is good, bad, or recovered
88  const DetId id = hit.detid();
89  const uint32_t recHitFlag = hit.flags();
90  const uint32_t dbStatusFlag = theHcalChStatus_->getValues(id)->getValue();
91  int severityLevel = theHcalSevLvlComputer_->getSeverityLevel(id, recHitFlag, dbStatusFlag);
92  bool isRecovered = theHcalSevLvlComputer_->recoveredRecHit(id, recHitFlag);
93 
94  if (severityLevel == 0)
95  return true;
96  if (isRecovered)
97  return UseHcalRecoveredHits_;
98  if (severityLevel > static_cast<int>(HcalAcceptSeverityLevel_))
99  return false;
100  else
101  return true;
102 }
103 
105  assert(theEcalSevLvlAlgo_ != nullptr && theEcalChStatus_ != nullptr);
106 
107  // require the hit to pass a certain energy threshold
108  const DetId id = hit.detid();
109  if (id.subdetId() == EcalBarrel && hit.energy() < EBThreshold_)
110  return false;
111  else if (id.subdetId() == EcalEndcap && hit.energy() < EEThreshold_)
112  return false;
113 
114  // determine if the hit is good, bad, or recovered
115  int severityLevel = 999;
116  if (id.subdetId() == EcalBarrel && theEBRecHitCollection_ != nullptr)
118  hit); //id, *theEBRecHitCollection_, *theEcalChStatus_, 5., EcalSeverityLevelAlgo::kSwissCross, 0.95, 2., 15., 0.999);
119  else if (id.subdetId() == EcalEndcap && theEERecHitCollection_ != nullptr)
121  hit); //id, *theEERecHitCollection_, *theEcalChStatus_, 5., EcalSeverityLevelAlgo::kSwissCross, 0.95, 2., 15., 0.999);
122  else
123  return false;
124 
126  return true;
128  return UseEcalRecoveredHits_;
129  if (severityLevel > static_cast<int>(EcalAcceptSeverityLevel_))
130  return false;
131  else
132  return true;
133 }
134 
135 bool ObjectValidator::validTrack(const reco::Track& trk) const {
136  if (trk.pt() < MinValidTrackPt_)
137  return false;
138  if (trk.pt() < MinValidTrackPtBarrel_ && std::fabs(trk.momentum().eta()) < 1.479)
139  return false;
141  return false;
142  return true;
143 }
144 
146 //
147 // PhysicsTowerOrganizer
148 //
150 
152  const edm::Event& iEvent,
153  const edm::EventSetup& evSetup,
154  const edm::Handle<HBHERecHitCollection>& hbhehitcoll_h,
155  const edm::Handle<EcalRecHitCollection>& ebhitcoll_h,
156  const edm::Handle<EcalRecHitCollection>& eehitcoll_h,
157  const edm::Handle<std::vector<reco::TrackExtrapolation> >& trackextrapcoll_h,
158  const ObjectValidatorAbs& objectvalidator,
159  const CaloTowerConstituentsMap& ctcm) {
160  // get some geometries
162  evSetup.get<CaloGeometryRecord>().get(pG);
163  const CaloGeometry* geo = pG.product();
166 
167  // do the HCAL hits
168  for (HBHERecHitCollection::const_iterator it = hbhehitcoll_h->begin(); it != hbhehitcoll_h->end(); ++it) {
169  const HBHERecHit* hit = &(*it);
170 
171  // check that the hit is valid
172  if (!objectvalidator.validHit(*hit))
173  continue;
174 
175  // add the hit to the organizer
176  CaloTowerDetId tid = ctcm.towerOf(hit->id());
177  insert_(tid, hit);
178  }
179 
180  // do the EB hits
181  for (EcalRecHitCollection::const_iterator it = ebhitcoll_h->begin(); it != ebhitcoll_h->end(); ++it) {
182  const EcalRecHit* hit = &(*it);
183 
184  if (!objectvalidator.validHit(*hit))
185  continue;
186  CaloTowerDetId tid = ctcm.towerOf(hit->id());
187  insert_(tid, hit);
188  }
189 
190  // do the EE hits
191  for (EcalRecHitCollection::const_iterator it = eehitcoll_h->begin(); it != eehitcoll_h->end(); ++it) {
192  const EcalRecHit* hit = &(*it);
193 
194  if (!objectvalidator.validHit(*hit))
195  continue;
196  CaloTowerDetId tid = ctcm.towerOf(hit->id());
197  insert_(tid, hit);
198  }
199 
200  // do the tracks
201  for (std::vector<reco::TrackExtrapolation>::const_iterator it = trackextrapcoll_h->begin();
202  it != trackextrapcoll_h->end();
203  ++it) {
204  const reco::TrackExtrapolation* extrap = &(*it);
205  const reco::Track* track = &(*(extrap->track()));
206 
207  // validate track
208  if (!objectvalidator.validTrack(*track))
209  continue;
210 
211  // get the point
212  if (extrap->positions().empty())
213  continue;
214  const GlobalPoint point(
215  extrap->positions().front().x(), extrap->positions().front().y(), extrap->positions().front().z());
216 
217  if (std::fabs(point.eta()) < 1.479) {
218  EBDetId cell = gEB->getClosestCell(point);
219  CaloTowerDetId tid = ctcm.towerOf(cell);
220  insert_(tid, track);
221  } else {
222  EEDetId cell = gEE->getClosestCell(point);
223  CaloTowerDetId tid = ctcm.towerOf(cell);
224  insert_(tid, track);
225  }
226  }
227 
228  return;
229 }
230 
232  // create dummy PhysicsTower
234 
235  // correct for the merging of the |ieta|=28-29 towers
236  if (id.ietaAbs() == 29)
237  dummy.id = CaloTowerDetId((id.ietaAbs() - 1) * id.zside(), id.iphi());
238  else
239  dummy.id = id;
240 
241  // search on the dummy
242  std::set<PhysicsTower, towercmp>::iterator it = towers_.find(dummy);
243 
244  if (it == towers_.end())
245  return nullptr;
246 
247  // for whatever reason, I can't get a non-const out of the find method
248  PhysicsTower& twr = const_cast<PhysicsTower&>(*it);
249  return &twr;
250 }
251 
253  // create dummy PhysicsTower
255 
256  // correct for the merging of the |ieta|=28-29 towers
257  if (id.ietaAbs() == 29)
258  dummy.id = CaloTowerDetId((id.ietaAbs() - 1) * id.zside(), id.iphi());
259  else
260  dummy.id = id;
261 
262  // search on the dummy
263  std::set<PhysicsTower, towercmp>::iterator it = towers_.find(dummy);
264 
265  if (it == towers_.end())
266  return nullptr;
267  return &(*it);
268 }
269 
271  CaloTowerDetId tid(ieta, iphi);
272  return findTower(tid);
273 }
274 
276  CaloTowerDetId tid(ieta, iphi);
277  return findTower(tid);
278 }
279 
281  std::set<const PhysicsTower*>& neighbors) const {
282  // correct for the merging of the |ieta|=28-29 towers
283  CaloTowerDetId id(tempid);
284  if (tempid.ietaAbs() == 29)
285  id = CaloTowerDetId((tempid.ietaAbs() - 1) * tempid.zside(), tempid.iphi());
286 
287  std::vector<CaloTowerDetId> ids;
288  // get the neighbor with higher iphi
289  if (id.ietaAbs() <= 20) {
290  if (id.iphi() == 72)
291  ids.push_back(CaloTowerDetId(id.ieta(), 1));
292  else
293  ids.push_back(CaloTowerDetId(id.ieta(), id.iphi() + 1));
294  } else {
295  if (id.iphi() == 71)
296  ids.push_back(CaloTowerDetId(id.ieta(), 1));
297  else
298  ids.push_back(CaloTowerDetId(id.ieta(), id.iphi() + 2));
299  }
300 
301  // get the neighbor with the lower iphi
302  if (id.ietaAbs() <= 20) {
303  if (id.iphi() == 1)
304  ids.push_back(CaloTowerDetId(id.ieta(), 72));
305  else
306  ids.push_back(CaloTowerDetId(id.ieta(), id.iphi() - 1));
307  } else {
308  if (id.iphi() == 1)
309  ids.push_back(CaloTowerDetId(id.ieta(), 71));
310  else
311  ids.push_back(CaloTowerDetId(id.ieta(), id.iphi() - 2));
312  }
313 
314  // get the neighbor with the higher ietaAbs
315  if (id.ietaAbs() == 20 && (id.iphi() % 2) == 0)
316  ids.push_back(CaloTowerDetId((id.ietaAbs() + 1) * id.zside(), id.iphi() - 1));
317  else
318  ids.push_back(CaloTowerDetId((id.ietaAbs() + 1) * id.zside(), id.iphi()));
319 
320  // get the neighbor(s) with the lower ietaAbs
321  if (id.ietaAbs() == 21) {
322  ids.push_back(CaloTowerDetId((id.ietaAbs() - 1) * id.zside(), id.iphi()));
323  ids.push_back(CaloTowerDetId((id.ietaAbs() - 1) * id.zside(), id.iphi() + 1));
324  } else if (id.ietaAbs() == 1) {
325  ids.push_back(CaloTowerDetId(-id.ieta(), id.iphi()));
326  } else {
327  ids.push_back(CaloTowerDetId((id.ietaAbs() - 1) * id.zside(), id.iphi()));
328  }
329 
330  // get the neighbor with higher ieta and higher iphi
331  if (id.ietaAbs() <= 19 || (id.ietaAbs() == 20 && (id.iphi() % 2) == 0)) {
332  if (id.iphi() == 72)
333  ids.push_back(CaloTowerDetId((id.ietaAbs() + 1) * id.zside(), 1));
334  else
335  ids.push_back(CaloTowerDetId((id.ietaAbs() + 1) * id.zside(), id.iphi() + 1));
336  } else if (id.ietaAbs() >= 21) {
337  if (id.iphi() == 71)
338  ids.push_back(CaloTowerDetId((id.ietaAbs() + 1) * id.zside(), 1));
339  else
340  ids.push_back(CaloTowerDetId((id.ietaAbs() + 1) * id.zside(), id.iphi() + 2));
341  }
342 
343  // get the neighbor with higher ieta and lower iphi
344  if (id.ietaAbs() <= 19) {
345  if (id.iphi() == 1)
346  ids.push_back(CaloTowerDetId((id.ietaAbs() + 1) * id.zside(), 72));
347  else
348  ids.push_back(CaloTowerDetId((id.ietaAbs() + 1) * id.zside(), id.iphi() - 1));
349  } else if (id.ietaAbs() >= 21 || (id.ietaAbs() == 20 && (id.iphi() % 2) == 1)) {
350  if (id.iphi() == 1)
351  ids.push_back(CaloTowerDetId((id.ietaAbs() + 1) * id.zside(), 71));
352  else
353  ids.push_back(CaloTowerDetId((id.ietaAbs() + 1) * id.zside(), id.iphi() - 2));
354  }
355 
356  // get the neighbor with lower ieta and higher iphi
357  if (id.ietaAbs() == 1) {
358  if (id.iphi() == 72)
359  ids.push_back(CaloTowerDetId(-id.ieta(), 1));
360  else
361  ids.push_back(CaloTowerDetId(-id.ieta(), id.iphi() + 1));
362  } else if (id.ietaAbs() <= 20) {
363  if (id.iphi() == 72)
364  ids.push_back(CaloTowerDetId((id.ietaAbs() - 1) * id.zside(), 1));
365  else
366  ids.push_back(CaloTowerDetId((id.ietaAbs() - 1) * id.zside(), id.iphi() + 1));
367  } else if (id.ietaAbs() >= 21) {
368  if (id.iphi() == 71)
369  ids.push_back(CaloTowerDetId((id.ietaAbs() - 1) * id.zside(), 1));
370  else
371  ids.push_back(CaloTowerDetId((id.ietaAbs() - 1) * id.zside(), id.iphi() + 2));
372  }
373 
374  // get the neighbor with lower ieta and lower iphi
375  if (id.ietaAbs() == 1) {
376  if (id.iphi() == 1)
377  ids.push_back(CaloTowerDetId(-id.ieta(), 72));
378  else
379  ids.push_back(CaloTowerDetId(-id.ieta(), id.iphi() - 1));
380  } else if (id.ietaAbs() <= 20) {
381  if (id.iphi() == 1)
382  ids.push_back(CaloTowerDetId((id.ietaAbs() - 1) * id.zside(), 72));
383  else
384  ids.push_back(CaloTowerDetId((id.ietaAbs() - 1) * id.zside(), id.iphi() - 1));
385  } else if (id.ietaAbs() >= 22) {
386  if (id.iphi() == 1)
387  ids.push_back(CaloTowerDetId((id.ietaAbs() - 1) * id.zside(), 71));
388  else
389  ids.push_back(CaloTowerDetId((id.ietaAbs() - 1) * id.zside(), id.iphi() - 2));
390  } else if (id.ietaAbs() == 21) {
391  if (id.iphi() == 1)
392  ids.push_back(CaloTowerDetId((id.ietaAbs() - 1) * id.zside(), 72));
393  else
394  ids.push_back(CaloTowerDetId((id.ietaAbs() - 1) * id.zside(), id.iphi() - 1));
395  }
396 
397  // clear neighbors
398  neighbors.clear();
399 
400  // find the neighbors and add them to the eponymous set
401  for (std::vector<CaloTowerDetId>::const_iterator it = ids.begin(); it != ids.end(); ++it) {
402  const PhysicsTower* twr = findTower(*it);
403  if (twr)
404  neighbors.insert(twr);
405  }
406 
407  return;
408 }
409 
410 void PhysicsTowerOrganizer::findNeighbors(const PhysicsTower* twr, std::set<const PhysicsTower*>& neighbors) const {
411  findNeighbors(twr->id, neighbors);
412  return;
413 }
414 
415 void PhysicsTowerOrganizer::findNeighbors(int ieta, int iphi, std::set<const PhysicsTower*>& neighbors) const {
416  findNeighbors(CaloTowerDetId(ieta, iphi), neighbors);
417  return;
418 }
419 
421  PhysicsTower* twr = findTower(id);
422  if (twr == nullptr) {
424  if (id.ietaAbs() == 29)
425  dummy.id = CaloTowerDetId((id.ietaAbs() - 1) * id.zside(), id.iphi());
426  else
427  dummy.id = id;
428  dummy.hcalhits.insert(hit);
429  towers_.insert(dummy);
430  } else {
431  twr->hcalhits.insert(hit);
432  }
433  return;
434 }
435 
437  PhysicsTower* twr = findTower(id);
438  if (twr == nullptr) {
440  if (id.ietaAbs() == 29)
441  dummy.id = CaloTowerDetId((id.ietaAbs() - 1) * id.zside(), id.iphi());
442  else
443  dummy.id = id;
444  dummy.ecalhits.insert(hit);
445  towers_.insert(dummy);
446  } else {
447  twr->ecalhits.insert(hit);
448  }
449  return;
450 }
451 
453  PhysicsTower* twr = findTower(id);
454  if (twr == nullptr) {
456  if (id.ietaAbs() == 29)
457  dummy.id = CaloTowerDetId((id.ietaAbs() - 1) * id.zside(), id.iphi());
458  else
459  dummy.id = id;
460  dummy.tracks.insert(track);
461  towers_.insert(dummy);
462  } else {
463  twr->tracks.insert(track);
464  }
465  return;
466 }
467 
469 //
470 // HBHEHitMap
471 //
473 
475  hitEnergy_ = hitEnergyTrkFid_ = -999.;
476  nHits_ = -999;
481 }
482 
483 double HBHEHitMap::hitEnergy(void) const {
484  if (hitEnergy_ < -900)
485  calcHits_();
486  return hitEnergy_;
487 }
488 
489 int HBHEHitMap::nHits(void) const {
490  if (nHits_ < -900)
491  calcHits_();
492  return nHits_;
493 }
494 
496  if (hitEnergyTrkFid_ < -900)
497  calcHits_();
498  return hitEnergyTrkFid_;
499 }
500 
502  if (hcalEnergySameTowers_ < -900)
504  return hcalEnergySameTowers_;
505 }
506 
508  if (nHcalHitsSameTowers_ < -900)
510  return nHcalHitsSameTowers_;
511 }
512 
514  if (ecalEnergySameTowers_ < -900)
516  return ecalEnergySameTowers_;
517 }
518 
520  if (nEcalHitsSameTowers_ < -900)
522  return nEcalHitsSameTowers_;
523 }
524 
526  if (trackEnergySameTowers_ < -900)
528  return trackEnergySameTowers_;
529 }
530 
532  if (nTracksSameTowers_ < -900)
534  return nTracksSameTowers_;
535 }
536 
537 void HBHEHitMap::hcalHitsSameTowers(std::set<const HBHERecHit*>& v) const {
538  v.clear();
539  for (hitmap_const_iterator it1 = beginHits(); it1 != endHits(); ++it1) {
540  for (std::set<const HBHERecHit*>::const_iterator it2 = it1->second->hcalhits.begin();
541  it2 != it1->second->hcalhits.end();
542  ++it2) {
543  const HBHERecHit* hit = (*it2);
544  // if the hit in the tower is already in the hitmap, don't include it
545  if (findHit(hit) == endHits())
546  v.insert(hit);
547  }
548  }
549  return;
550 }
551 
552 void HBHEHitMap::ecalHitsSameTowers(std::set<const EcalRecHit*>& v) const {
553  v.clear();
554  for (hitmap_const_iterator it1 = beginHits(); it1 != endHits(); ++it1) {
555  v.insert(it1->second->ecalhits.begin(), it1->second->ecalhits.end());
556  }
557  return;
558 }
559 
560 void HBHEHitMap::tracksSameTowers(std::set<const reco::Track*>& v) const {
561  v.clear();
562  for (hitmap_const_iterator it1 = beginHits(); it1 != endHits(); ++it1) {
563  v.insert(it1->second->tracks.begin(), it1->second->tracks.end());
564  }
565  return;
566 }
567 
569  if (hcalEnergyNeighborTowers_ < -900)
572 }
573 
575  if (nHcalHitsNeighborTowers_ < -900)
578 }
579 
581  if (ecalEnergyNeighborTowers_ < -900)
584 }
585 
587  if (nEcalHitsNeighborTowers_ < -900)
590 }
591 
593  if (trackEnergyNeighborTowers_ < -900)
596 }
597 
599  if (nTracksNeighborTowers_ < -900)
601  return nTracksNeighborTowers_;
602 }
603 
604 void HBHEHitMap::hcalHitsNeighborTowers(std::set<const HBHERecHit*>& v) const {
605  v.clear();
606  for (neighbor_const_iterator it1 = beginNeighbors(); it1 != endNeighbors(); ++it1) {
607  const PhysicsTower* twr = (*it1);
608  v.insert(twr->hcalhits.begin(), twr->hcalhits.end());
609  }
610  return;
611 }
612 
613 void HBHEHitMap::ecalHitsNeighborTowers(std::set<const EcalRecHit*>& v) const {
614  v.clear();
615  for (neighbor_const_iterator it1 = beginNeighbors(); it1 != endNeighbors(); ++it1) {
616  const PhysicsTower* twr = (*it1);
617  v.insert(twr->ecalhits.begin(), twr->ecalhits.end());
618  }
619 
620  return;
621 }
622 
623 void HBHEHitMap::tracksNeighborTowers(std::set<const reco::Track*>& v) const {
624  v.clear();
625  for (neighbor_const_iterator it1 = beginNeighbors(); it1 != endNeighbors(); ++it1) {
626  const PhysicsTower* twr = (*it1);
627  v.insert(twr->tracks.begin(), twr->tracks.end());
628  }
629  return;
630 }
631 
632 void HBHEHitMap::byTowers(std::vector<twrinfo>& v) const { assert(false); }
633 
634 void HBHEHitMap::insert(const HBHERecHit* hit, const PhysicsTower* twr, std::set<const PhysicsTower*>& neighbors) {
635  hits_[hit] = twr;
636  neighbors_.insert(neighbors.begin(), neighbors.end());
637 
638  // make sure none of the neighbors are also are part of the hitmap
639  for (hitmap_const_iterator it = beginHits(); it != endHits(); ++it) {
640  const PhysicsTower* t = it->second;
642 
643  // if a hit is also a neighbor, remove the neighbor
644  if (find != endNeighbors())
645  neighbors_.erase(find);
646  }
647  return;
648 }
649 
650 void HBHEHitMap::calcHits_(void) const {
651  hitEnergy_ = 0;
652  nHits_ = 0;
653  hitEnergyTrkFid_ = 0;
654  for (hitmap_const_iterator it = hits_.begin(); it != hits_.end(); ++it) {
655  const HBHERecHit* hit = it->first;
656  if (hit->id().ietaAbs() <= 26)
657  hitEnergyTrkFid_ += hit->energy();
658  hitEnergy_ += hit->energy();
659  ++nHits_;
660  }
661  return;
662 }
663 
667  std::set<const HBHERecHit*> v;
669  for (std::set<const HBHERecHit*>::const_iterator it = v.begin(); it != v.end(); ++it) {
670  const HBHERecHit* hit = (*it);
671  hcalEnergySameTowers_ += hit->energy();
673  }
674  return;
675 }
676 
680  std::set<const EcalRecHit*> v;
682  for (std::set<const EcalRecHit*>::const_iterator it = v.begin(); it != v.end(); ++it) {
683  const EcalRecHit* hit = (*it);
684  ecalEnergySameTowers_ += hit->energy();
686  }
687  return;
688 }
689 
692  nTracksSameTowers_ = 0;
693  std::set<const reco::Track*> v;
695  for (std::set<const reco::Track*>::const_iterator it = v.begin(); it != v.end(); ++it) {
696  const reco::Track* trk = (*it);
697  trackEnergySameTowers_ += trk->p();
699  }
700  return;
701 }
702 
706  std::set<const HBHERecHit*> v;
708  for (std::set<const HBHERecHit*>::const_iterator it = v.begin(); it != v.end(); ++it) {
709  const HBHERecHit* hit = (*it);
710  hcalEnergyNeighborTowers_ += hit->energy();
712  }
713  return;
714 }
715 
719  std::set<const EcalRecHit*> v;
721  for (std::set<const EcalRecHit*>::const_iterator it = v.begin(); it != v.end(); ++it) {
722  const EcalRecHit* hit = (*it);
723  ecalEnergyNeighborTowers_ += hit->energy();
725  }
726  return;
727 }
728 
732  std::set<const reco::Track*> v;
734  for (std::set<const reco::Track*>::const_iterator it = v.begin(); it != v.end(); ++it) {
735  const reco::Track* trk = (*it);
736  trackEnergyNeighborTowers_ += trk->p();
738  }
739  return;
740 }
741 
743 //
744 // HBHEHitMapOrganizer
745 //
747 
749  const ObjectValidatorAbs& objvalidator,
750  const PhysicsTowerOrganizer& pto,
751  const HcalFrontEndMap* hfemap)
752  : hfemap_(hfemap) {
753  // loop over the hits
754  for (HBHERecHitCollection::const_iterator it = hbhehitcoll_h->begin(); it != hbhehitcoll_h->end(); ++it) {
755  const HBHERecHit* hit = &(*it);
756  if (!objvalidator.validHit(*hit))
757  continue;
758 
759  // get the Physics Tower and the neighbors
760  const PhysicsTower* tower = pto.findTower(hit->id().ieta(), hit->id().iphi());
761 
762  std::set<const PhysicsTower*> neighbors;
763  pto.findNeighbors(hit->id().ieta(), hit->id().iphi(), neighbors);
764 
765  // organize the RBXs
766  int rbxidnum = hfemap_->lookupRBXIndex(hit->id());
767  rbxs_[rbxidnum].insert(hit, tower, neighbors);
768 
769  // organize the HPDs
770  int hpdidnum = hfemap_->lookupRMIndex(hit->id());
771  hpds_[hpdidnum].insert(hit, tower, neighbors);
772 
773  // organize the dihits
774  std::vector<const HBHERecHit*> hpdneighbors;
775  getHPDNeighbors(hit, hpdneighbors, pto);
776 
777  if (hpdneighbors.size() == 1) {
778  std::vector<const HBHERecHit*> hpdneighborsneighbors;
779  getHPDNeighbors(hpdneighbors[0], hpdneighborsneighbors, pto);
780 
781  if (hpdneighborsneighbors.size() == 1 && hpdneighborsneighbors[0] == hit &&
782  hit->energy() > hpdneighbors[0]->energy()) {
783  // we've found two hits who are neighbors in the same HPD, but who have no other
784  // neighbors (in the same HPD) in common. In order not to double-count, we
785  // require that the first hit has more energy
786 
787  const PhysicsTower* tower2 = pto.findTower(hpdneighbors[0]->id().ieta(), hpdneighbors[0]->id().iphi());
788  std::set<const PhysicsTower*> neighbors2;
789  pto.findNeighbors(hpdneighbors[0]->id().ieta(), hpdneighbors[0]->id().iphi(), neighbors2);
790 
791  HBHEHitMap dihit;
792  dihit.insert(hit, tower, neighbors);
793  dihit.insert(hpdneighbors[0], tower2, neighbors2);
794  dihits_.push_back(dihit);
795  }
796  } else if (hpdneighbors.empty()) {
797  // organize the monohits
798  HBHEHitMap monohit;
799  monohit.insert(hit, tower, neighbors);
800  monohits_.push_back(monohit);
801  }
802 
803  } // finished looping over HBHERecHits
804  return;
805 }
806 
807 void HBHEHitMapOrganizer::getRBXs(std::vector<HBHEHitMap>& v, double energy) const {
808  for (std::map<int, HBHEHitMap>::const_iterator it = rbxs_.begin(); it != rbxs_.end(); ++it) {
809  const HBHEHitMap& map = it->second;
810  if (map.hitEnergy() > energy)
811  v.push_back(map);
812  }
813  return;
814 }
815 
816 void HBHEHitMapOrganizer::getHPDs(std::vector<HBHEHitMap>& v, double energy) const {
817  for (std::map<int, HBHEHitMap>::const_iterator it = hpds_.begin(); it != hpds_.end(); ++it) {
818  const HBHEHitMap& map = it->second;
819  if (map.hitEnergy() > energy)
820  v.push_back(map);
821  }
822  return;
823 }
824 
825 void HBHEHitMapOrganizer::getDiHits(std::vector<HBHEHitMap>& v, double energy) const {
826  for (std::vector<HBHEHitMap>::const_iterator it = dihits_.begin(); it != dihits_.end(); ++it) {
827  if (it->hitEnergy() > energy)
828  v.push_back(*it);
829  }
830  return;
831 }
832 
833 void HBHEHitMapOrganizer::getMonoHits(std::vector<HBHEHitMap>& v, double energy) const {
834  for (std::vector<HBHEHitMap>::const_iterator it = monohits_.begin(); it != monohits_.end(); ++it) {
835  if (it->hitEnergy() > energy)
836  v.push_back(*it);
837  }
838  return;
839 }
840 
842  std::vector<const HBHERecHit*>& neighbors,
843  const PhysicsTowerOrganizer& pto) {
844  std::set<const PhysicsTower*> temp;
845  pto.findNeighbors(hit->id().ieta(), hit->id().iphi(), temp);
846 
847  // make sure to include the same tower that the hit is in
848  temp.insert(pto.findTower(hit->id().ieta(), hit->id().iphi()));
849 
850  // loop over the rechits in the temp neighbors
851  for (std::set<const PhysicsTower*>::const_iterator it1 = temp.begin(); it1 != temp.end(); ++it1) {
852  for (std::set<const HBHERecHit*>::const_iterator it2 = (*it1)->hcalhits.begin(); it2 != (*it1)->hcalhits.end();
853  ++it2) {
854  const HBHERecHit* hit2(*it2);
855  if (hit != hit2 && hfemap_->lookupRMIndex(hit->id()) == hfemap_->lookupRMIndex(hit2->id())) {
856  neighbors.push_back(hit2);
857  }
858  }
859  }
860  return;
861 }
HBHEHitMap::trackEnergyNeighborTowers_
double trackEnergyNeighborTowers_
Definition: HBHEIsolatedNoiseAlgos.h:319
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
HBHEIsolatedNoiseAlgos.h
HBHEHitMap::calcEcalNeighborTowers_
void calcEcalNeighborTowers_(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:716
CaloTowerDetId::ietaAbs
int ietaAbs() const
get the absolute value of the tower ieta
Definition: CaloTowerDetId.h:28
EcalRecHit
Definition: EcalRecHit.h:15
HBHEHitMap::tracksNeighborTowers
void tracksNeighborTowers(std::set< const reco::Track * > &v) const
Definition: HBHEIsolatedNoiseAlgos.cc:623
HBHEHitMap::ecalEnergyNeighborTowers_
double ecalEnergyNeighborTowers_
Definition: HBHEIsolatedNoiseAlgos.h:315
PhysicsTower::hcalhits
std::set< const HBHERecHit * > hcalhits
Definition: HBHEIsolatedNoiseAlgos.h:155
HBHERecHitAuxSetter::OFF_COMBINED
static const unsigned OFF_COMBINED
Definition: HBHERecHitAuxSetter.h:41
ObjectValidator::theHcalSevLvlComputer_
const HcalSeverityLevelComputer * theHcalSevLvlComputer_
Definition: HBHEIsolatedNoiseAlgos.h:137
EcalSeverityLevel::kGood
Definition: EcalSeverityLevel.h:19
edm::SortedCollection::const_iterator
std::vector< T >::const_iterator const_iterator
Definition: SortedCollection.h:80
HcalSeverityLevelComputer::recoveredRecHit
bool recoveredRecHit(const DetId &myid, const uint32_t &myflag) const
Definition: HcalSeverityLevelComputer.cc:363
hit::id
unsigned int id
Definition: SiStripHitEffFromCalibTree.cc:92
HBHEHitMap::trackEnergySameTowers
double trackEnergySameTowers(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:525
EcalSeverityLevelAlgo::severityLevel
EcalSeverityLevel::SeverityLevel severityLevel(const DetId &id) const
Evaluate status from id use channelStatus from DB.
Definition: EcalSeverityLevelAlgo.cc:85
HBHEHitMap::nHcalHitsSameTowers
int nHcalHitsSameTowers(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:507
ESHandle.h
ObjectValidator::UseEcalRecoveredHits_
bool UseEcalRecoveredHits_
Definition: HBHEIsolatedNoiseAlgos.h:125
HcalFrontEndMap::lookupRMIndex
const int lookupRMIndex(DetId fId) const
Definition: HcalFrontEndMap.cc:63
reco::TrackBase::p
double p() const
momentum vector magnitude
Definition: TrackBase.h:605
HBHEHitMap::hitEnergy
double hitEnergy(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:483
ecaldqm::zside
int zside(DetId const &)
Definition: EcalDQMCommonUtils.cc:189
CaloGeometryRecord
Definition: CaloGeometryRecord.h:30
ObjectValidator::theHcalChStatus_
const HcalChannelQuality * theHcalChStatus_
Definition: HBHEIsolatedNoiseAlgos.h:133
EBDetId
Definition: EBDetId.h:17
HBHEHitMapOrganizer::getHPDs
void getHPDs(std::vector< HBHEHitMap > &v, double energy) const
Definition: HBHEIsolatedNoiseAlgos.cc:816
HBHEHitMapOrganizer::hfemap_
const HcalFrontEndMap * hfemap_
Definition: HBHEIsolatedNoiseAlgos.h:345
HBHERecHit
Definition: HBHERecHit.h:13
ObjectValidator::~ObjectValidator
~ObjectValidator() override
Definition: HBHEIsolatedNoiseAlgos.cc:70
HBHEHitMap::calcTracksNeighborTowers_
void calcTracksNeighborTowers_(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:729
HBHEHitMap::calcTracksSameTowers_
void calcTracksSameTowers_(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:690
HBHERecHitAuxSetter.h
hgcalTowerProducer_cfi.tower
tower
Definition: hgcalTowerProducer_cfi.py:3
HBHEHitMap::findNeighbor
neighbor_const_iterator findNeighbor(const PhysicsTower *twr) const
Definition: HBHEIsolatedNoiseAlgos.h:277
CaloGeometry::getSubdetectorGeometry
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:34
cms::cuda::assert
assert(be >=bs)
ObjectValidator::UseHcalRecoveredHits_
bool UseHcalRecoveredHits_
Definition: HBHEIsolatedNoiseAlgos.h:124
HBHEHitMap::nHcalHitsSameTowers_
int nHcalHitsSameTowers_
Definition: HBHEIsolatedNoiseAlgos.h:300
ObjectValidator::validHit
bool validHit(const HBHERecHit &) const override
Definition: HBHEIsolatedNoiseAlgos.cc:72
PhysicsTower::tracks
std::set< const reco::Track * > tracks
Definition: HBHEIsolatedNoiseAlgos.h:157
ObjectValidatorAbs::validHit
virtual bool validHit(const HBHERecHit &) const =0
HBHEHitMap::nEcalHitsSameTowers
int nEcalHitsSameTowers(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:519
HBHEHitMap::HBHEHitMap
HBHEHitMap()
Definition: HBHEIsolatedNoiseAlgos.cc:474
HBHEHitMapOrganizer::HBHEHitMapOrganizer
HBHEHitMapOrganizer(const edm::Handle< HBHERecHitCollection > &hbhehitcoll_h, const ObjectValidatorAbs &objvalidator, const PhysicsTowerOrganizer &pto, const HcalFrontEndMap *hfemap)
Definition: HBHEIsolatedNoiseAlgos.cc:748
HcalBarrel
Definition: HcalAssistant.h:33
findQualityFiles.v
v
Definition: findQualityFiles.py:179
HBHEHitMap::neighbor_const_iterator
std::set< const PhysicsTower * >::const_iterator neighbor_const_iterator
Definition: HBHEIsolatedNoiseAlgos.h:225
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
edm::Handle
Definition: AssociativeIterator.h:50
groupFilesInBlocks.temp
list temp
Definition: groupFilesInBlocks.py:142
ObjectValidator::EcalAcceptSeverityLevel_
uint32_t EcalAcceptSeverityLevel_
Definition: HBHEIsolatedNoiseAlgos.h:123
reco::TrackBase::numberOfValidHits
unsigned short numberOfValidHits() const
number of valid hits found
Definition: TrackBase.h:751
HBHEHitMap::endNeighbors
neighbor_const_iterator endNeighbors(void) const
Definition: HBHEIsolatedNoiseAlgos.h:287
HcalCondObjectContainer::getValues
const Item * getValues(DetId fId, bool throwOnFail=true) const
Definition: HcalCondObjectContainer.h:159
EcalBarrel
Definition: EcalSubdetector.h:10
EcalRecHitCollections.h
HBHEHitMap::beginHits
hitmap_const_iterator beginHits(void) const
Definition: HBHEIsolatedNoiseAlgos.h:283
HBHEHitMapOrganizer::rbxs_
std::map< int, HBHEHitMap > rbxs_
Definition: HBHEIsolatedNoiseAlgos.h:346
CaloMETCollection.h
ObjectValidatorAbs
Definition: HBHEIsolatedNoiseAlgos.h:59
PhysicsTowerOrganizer::towers_
std::set< PhysicsTower, towercmp > towers_
Definition: HBHEIsolatedNoiseAlgos.h:206
LEDCalibrationChannels.iphi
iphi
Definition: LEDCalibrationChannels.py:64
HBHEHitMapOrganizer::getRBXs
void getRBXs(std::vector< HBHEHitMap > &v, double energy) const
Definition: HBHEIsolatedNoiseAlgos.cc:807
EDMException.h
reco::TrackBase::pt
double pt() const
track transverse momentum
Definition: TrackBase.h:608
DetId
Definition: DetId.h:17
HBHEHitMap
Definition: HBHEIsolatedNoiseAlgos.h:222
CaloGeometry
Definition: CaloGeometry.h:21
HBHEHitMap::ecalHitsSameTowers
void ecalHitsSameTowers(std::set< const EcalRecHit * > &v) const
Definition: HBHEIsolatedNoiseAlgos.cc:552
HBHEHitMap::hcalHitsNeighborTowers
void hcalHitsNeighborTowers(std::set< const HBHERecHit * > &v) const
Definition: HBHEIsolatedNoiseAlgos.cc:604
PhysicsTowerOrganizer::findTower
const PhysicsTower * findTower(const CaloTowerDetId &id) const
Definition: HBHEIsolatedNoiseAlgos.cc:252
Track.h
ObjectValidator::theEcalChStatus_
const EcalChannelStatus * theEcalChStatus_
Definition: HBHEIsolatedNoiseAlgos.h:134
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
TrackFwd.h
HBHEHitMap::nEcalHitsNeighborTowers
int nEcalHitsNeighborTowers(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:586
HBHEHitMap::nHcalHitsNeighborTowers
int nHcalHitsNeighborTowers(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:574
CaloMET.h
edm::SortedCollection::begin
const_iterator begin() const
Definition: SortedCollection.h:262
ObjectValidator::theEERecHitCollection_
const EcalRecHitCollection * theEERecHitCollection_
Definition: HBHEIsolatedNoiseAlgos.h:142
HBHEHitMap::ecalEnergySameTowers
double ecalEnergySameTowers(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:513
reco::TrackExtrapolation::track
reco::TrackRef const & track() const
Definition: TrackExtrapolation.h:41
reco::Track
Definition: Track.h:27
CaloTowerConstituentsMap
Definition: CaloTowerConstituentsMap.h:18
edm::ESHandle< CaloGeometry >
HBHEHitMapOrganizer::getDiHits
void getDiHits(std::vector< HBHEHitMap > &v, double energy) const
Definition: HBHEIsolatedNoiseAlgos.cc:825
PhysicsTower::id
CaloTowerDetId id
Definition: HBHEIsolatedNoiseAlgos.h:154
ObjectValidator::EBThreshold_
double EBThreshold_
Definition: HBHEIsolatedNoiseAlgos.h:119
PhysicsTowerOrganizer
Definition: HBHEIsolatedNoiseAlgos.h:170
HCALHighEnergyHPDFilter_cfi.energy
energy
Definition: HCALHighEnergyHPDFilter_cfi.py:5
HBHEHitMap::nTracksNeighborTowers
int nTracksNeighborTowers(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:598
Point3DBase< float, GlobalTag >
HcalFrontEndMap::lookupRBXIndex
const int lookupRBXIndex(DetId fId) const
Definition: HcalFrontEndMap.cc:76
OrderedSet.t
t
Definition: OrderedSet.py:90
ObjectValidator::theEBRecHitCollection_
const EcalRecHitCollection * theEBRecHitCollection_
Definition: HBHEIsolatedNoiseAlgos.h:141
EcalSeverityLevelAlgo.h
ObjectValidator::validTrack
bool validTrack(const reco::Track &) const override
Definition: HBHEIsolatedNoiseAlgos.cc:135
HBHEHitMap::nTracksSameTowers_
int nTracksSameTowers_
Definition: HBHEIsolatedNoiseAlgos.h:308
HBHEHitMap::nHits
int nHits(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:489
EEDetId
Definition: EEDetId.h:14
CaloGeometryRecord.h
HBHEHitMap::calcHcalSameTowers_
void calcHcalSameTowers_(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:664
HBHEHitMap::nTracksNeighborTowers_
int nTracksNeighborTowers_
Definition: HBHEIsolatedNoiseAlgos.h:320
EcalEndcap
Definition: EcalSubdetector.h:10
reco::TrackExtrapolation::positions
std::vector< Point > const & positions() const
Definition: TrackExtrapolation.h:42
HBHEHitMap::ecalEnergyNeighborTowers
double ecalEnergyNeighborTowers(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:580
HcalSeverityLevelComputer::getSeverityLevel
int getSeverityLevel(const DetId &myid, const uint32_t &myflag, const uint32_t &mystatus) const
Definition: HcalSeverityLevelComputer.cc:304
HcalChannelStatus::getValue
uint32_t getValue() const
Definition: HcalChannelStatus.h:60
HBHEHitMap::tracksSameTowers
void tracksSameTowers(std::set< const reco::Track * > &v) const
Definition: HBHEIsolatedNoiseAlgos.cc:560
LEDCalibrationChannels.ieta
ieta
Definition: LEDCalibrationChannels.py:63
HBHEHitMap::trackEnergyNeighborTowers
double trackEnergyNeighborTowers(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:592
CaloSubdetectorGeometry.h
HBHEHitMapOrganizer::getHPDNeighbors
void getHPDNeighbors(const HBHERecHit *hit, std::vector< const HBHERecHit * > &neighbors, const PhysicsTowerOrganizer &pto)
Definition: HBHEIsolatedNoiseAlgos.cc:841
HBHEHitMap::nHits_
int nHits_
Definition: HBHEIsolatedNoiseAlgos.h:296
edm::ParameterSet
Definition: ParameterSet.h:36
edm::SortedCollection::end
const_iterator end() const
Definition: SortedCollection.h:267
ObjectValidator::HESThreshold_
double HESThreshold_
Definition: HBHEIsolatedNoiseAlgos.h:117
HBHEHitMap::ecalHitsNeighborTowers
void ecalHitsNeighborTowers(std::set< const EcalRecHit * > &v) const
Definition: HBHEIsolatedNoiseAlgos.cc:613
PhysicsTower::ecalhits
std::set< const EcalRecHit * > ecalhits
Definition: HBHEIsolatedNoiseAlgos.h:156
HBHEHitMap::hits_
std::map< const HBHERecHit *, const PhysicsTower * > hits_
Definition: HBHEIsolatedNoiseAlgos.h:290
HBHEHitMap::hitEnergy_
double hitEnergy_
Definition: HBHEIsolatedNoiseAlgos.h:294
ObjectValidator::HEDThreshold_
double HEDThreshold_
Definition: HBHEIsolatedNoiseAlgos.h:118
iEvent
int iEvent
Definition: GenABIO.cc:224
HBHEHitMap::byTowers
void byTowers(std::vector< twrinfo > &v) const
Definition: HBHEIsolatedNoiseAlgos.cc:632
ObjectValidator::MinValidTrackNHits_
int MinValidTrackNHits_
Definition: HBHEIsolatedNoiseAlgos.h:130
HBHEHitMap::hcalEnergySameTowers
double hcalEnergySameTowers(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:501
HBHEHitMap::trackEnergySameTowers_
double trackEnergySameTowers_
Definition: HBHEIsolatedNoiseAlgos.h:307
ObjectValidator::UseAllCombinedRechits_
bool UseAllCombinedRechits_
Definition: HBHEIsolatedNoiseAlgos.h:126
HBHEHitMap::findHit
hitmap_const_iterator findHit(const HBHERecHit *hit) const
Definition: HBHEIsolatedNoiseAlgos.h:274
CaloRecHitAuxSetter::getBit
constexpr bool getBit(const uint32_t u, const unsigned bitnum)
Definition: CaloRecHitAuxSetter.h:37
edm::EventSetup
Definition: EventSetup.h:57
CaloTowerConstituentsMap::towerOf
CaloTowerDetId towerOf(const DetId &id) const
Get the tower id for this det id (or null if not known)
Definition: CaloTowerConstituentsMap.cc:26
CaloSubdetectorGeometry::getClosestCell
virtual DetId getClosestCell(const GlobalPoint &r) const
Definition: CaloSubdetectorGeometry.cc:44
HBHEHitMap::insert
void insert(const HBHERecHit *hit, const PhysicsTower *twr, std::set< const PhysicsTower * > &neighbors)
Definition: HBHEIsolatedNoiseAlgos.cc:634
HBHEHitMap::calcHcalNeighborTowers_
void calcHcalNeighborTowers_(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:703
HBHEHitMap::calcEcalSameTowers_
void calcEcalSameTowers_(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:677
DetId::Ecal
Definition: DetId.h:27
PhysicsTowerOrganizer::PhysicsTowerOrganizer
PhysicsTowerOrganizer(const edm::Event &iEvent, const edm::EventSetup &evSetup, const edm::Handle< HBHERecHitCollection > &hbhehitcoll_h, const edm::Handle< EcalRecHitCollection > &ebhitcoll_h, const edm::Handle< EcalRecHitCollection > &eehitcoll_h, const edm::Handle< std::vector< reco::TrackExtrapolation > > &trackextrapcoll_h, const ObjectValidatorAbs &objectvalidator, const CaloTowerConstituentsMap &ctcm)
Definition: HBHEIsolatedNoiseAlgos.cc:151
get
#define get
HBHEHitMap::hitEnergyTrkFid_
double hitEnergyTrkFid_
Definition: HBHEIsolatedNoiseAlgos.h:295
HcalChannelQuality.h
HBHEHitMap::hcalEnergyNeighborTowers
double hcalEnergyNeighborTowers(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:568
CaloTowerDetId::iphi
int iphi() const
get the tower iphi
Definition: CaloTowerDetId.cc:30
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
PhysicsTower
Definition: HBHEIsolatedNoiseAlgos.h:153
ObjectValidator::HBThreshold_
double HBThreshold_
Definition: HBHEIsolatedNoiseAlgos.h:116
HBHEHitMap::nEcalHitsNeighborTowers_
int nEcalHitsNeighborTowers_
Definition: HBHEIsolatedNoiseAlgos.h:316
HBHEHitMapOrganizer::hpds_
std::map< int, HBHEHitMap > hpds_
Definition: HBHEIsolatedNoiseAlgos.h:346
interestingDetIdCollectionProducer_cfi.severityLevel
severityLevel
Definition: interestingDetIdCollectionProducer_cfi.py:10
HBHEHitMap::neighbors_
std::set< const PhysicsTower * > neighbors_
Definition: HBHEIsolatedNoiseAlgos.h:291
HBHEHitMap::ecalEnergySameTowers_
double ecalEnergySameTowers_
Definition: HBHEIsolatedNoiseAlgos.h:303
HBHEHitMapOrganizer::monohits_
std::vector< HBHEHitMap > monohits_
Definition: HBHEIsolatedNoiseAlgos.h:347
HcalEndcap
Definition: HcalAssistant.h:34
PhysicsTowerOrganizer::insert_
void insert_(CaloTowerDetId &id, const HBHERecHit *hit)
Definition: HBHEIsolatedNoiseAlgos.cc:420
HBHEHitMap::hcalHitsSameTowers
void hcalHitsSameTowers(std::set< const HBHERecHit * > &v) const
Definition: HBHEIsolatedNoiseAlgos.cc:537
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
HBHEHitMap::nEcalHitsSameTowers_
int nEcalHitsSameTowers_
Definition: HBHEIsolatedNoiseAlgos.h:304
HBHEHitMap::hcalEnergySameTowers_
double hcalEnergySameTowers_
Definition: HBHEIsolatedNoiseAlgos.h:299
EcalSeverityLevel::kRecovered
Definition: EcalSeverityLevel.h:21
HBHEHitMap::nHcalHitsNeighborTowers_
int nHcalHitsNeighborTowers_
Definition: HBHEIsolatedNoiseAlgos.h:312
CaloGeometry.h
ObjectValidator::EEThreshold_
double EEThreshold_
Definition: HBHEIsolatedNoiseAlgos.h:120
HBHEHitMap::endHits
hitmap_const_iterator endHits(void) const
Definition: HBHEIsolatedNoiseAlgos.h:284
HBHEHitMap::hitEnergyTrackFiducial
double hitEnergyTrackFiducial(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:495
HcalFrontEndMap
Definition: HcalFrontEndMap.h:23
ObjectValidator::ObjectValidator
ObjectValidator(const edm::ParameterSet &)
Definition: HBHEIsolatedNoiseAlgos.cc:43
HBHEHitMap::nTracksSameTowers
int nTracksSameTowers(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:531
CaloSubdetectorGeometry
Definition: CaloSubdetectorGeometry.h:22
ObjectValidator::theEcalSevLvlAlgo_
const EcalSeverityLevelAlgo * theEcalSevLvlAlgo_
Definition: HBHEIsolatedNoiseAlgos.h:138
HcalRecHitCollections.h
HcalSeverityLevelComputer.h
HBHEHitMap::calcHits_
void calcHits_(void) const
Definition: HBHEIsolatedNoiseAlgos.cc:650
HLT_2018_cff.track
track
Definition: HLT_2018_cff.py:10352
HBHEHitMap::hitmap_const_iterator
std::map< const HBHERecHit *, const PhysicsTower * >::const_iterator hitmap_const_iterator
Definition: HBHEIsolatedNoiseAlgos.h:224
ObjectValidator::HcalAcceptSeverityLevel_
uint32_t HcalAcceptSeverityLevel_
Definition: HBHEIsolatedNoiseAlgos.h:122
reco::TrackExtrapolation
Definition: TrackExtrapolation.h:22
HBHEHitMapOrganizer::dihits_
std::vector< HBHEHitMap > dihits_
Definition: HBHEIsolatedNoiseAlgos.h:347
genParticles_cff.map
map
Definition: genParticles_cff.py:11
ObjectValidator::MinValidTrackPt_
double MinValidTrackPt_
Definition: HBHEIsolatedNoiseAlgos.h:128
CaloTowerDetId::zside
int zside() const
get the z-side of the tower (1/-1)
Definition: CaloTowerDetId.h:26
HBHERecHit::id
constexpr HcalDetId id() const
get the id
Definition: HBHERecHit.h:39
dummy
Definition: DummySelector.h:38
reco::TrackBase::momentum
const Vector & momentum() const
track momentum vector
Definition: TrackBase.h:635
point
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
edm::Event
Definition: Event.h:73
HBHEHitMap::hcalEnergyNeighborTowers_
double hcalEnergyNeighborTowers_
Definition: HBHEIsolatedNoiseAlgos.h:311
HBHEHitMapOrganizer::getMonoHits
void getMonoHits(std::vector< HBHEHitMap > &v, double energy) const
Definition: HBHEIsolatedNoiseAlgos.cc:833
CaloRecHitAuxSetter.h
hit
Definition: SiStripHitEffFromCalibTree.cc:88
ObjectValidatorAbs::validTrack
virtual bool validTrack(const reco::Track &) const =0
PhysicsTowerOrganizer::findNeighbors
void findNeighbors(const CaloTowerDetId &id, std::set< const PhysicsTower * > &neighbors) const
Definition: HBHEIsolatedNoiseAlgos.cc:280
CaloTowerDetId
Definition: CaloTowerDetId.h:12
HBHEHitMap::beginNeighbors
neighbor_const_iterator beginNeighbors(void) const
Definition: HBHEIsolatedNoiseAlgos.h:286
ObjectValidator::MinValidTrackPtBarrel_
double MinValidTrackPtBarrel_
Definition: HBHEIsolatedNoiseAlgos.h:129