CMS 3D CMS Logo

CaloDualConeSelector.h
Go to the documentation of this file.
1 #ifndef RECOCALOTOOLS_SELECTORS_CALODUALCONESELECTOR_H
2 #define RECOCALOTOOLS_SELECTORS_CALODUALCONESELECTOR_H 1
3 
7 #include <memory>
8 
13 template <class T>
15 public:
16  CaloDualConeSelector(double dRmin, double dRmax, const CaloGeometry* geom)
17  : geom_(geom), deltaRmin_(dRmin), deltaRmax_(dRmax), detector_(DetId::Detector(0)), subdet_(0) {}
18 
19  CaloDualConeSelector(double dRmin, double dRmax, const CaloGeometry* geom, DetId::Detector detector, int subdet = 0)
20  : geom_(geom), deltaRmin_(dRmin), deltaRmax_(dRmax), detector_(detector), subdet_(subdet) {}
21 
22  void inline selectCallback(double eta,
23  double phi,
25  std::function<void(const T&)> callback) {
28  }
29 
30  void inline selectCallback(const GlobalPoint& p,
32  std::function<void(const T&)> callback) {
33  // TODO: handle default setting of detector_ (loops over subdet)
34  // TODO: heuristics of when it is better to loop over inputCollection instead (small # hits)
35  for (int subdet = subdet_; subdet <= 7 && (subdet_ == 0 || subdet_ == subdet); subdet++) {
37  if (sdg != nullptr) {
38  // get the list of detids within range (from geometry)
41  // use set operations to determine detids in annulus
43  std::set_difference(
44  dis_all.begin(), dis_all.end(), dis_excl.begin(), dis_excl.end(), std::inserter(dis, dis.begin()));
45 
46  // loop over detids...
48 
49  for (CaloSubdetectorGeometry::DetIdSet::iterator i = dis.begin(); i != dis.end(); i++) {
50  if (i->subdetId() != subdet)
51  continue; // possible for HCAL where the same geometry object handles all the detectors
52  j = inputCollection.find(*i);
53  if (j != je)
54  callback(*j);
55  }
56  }
57  }
58  }
59 
60 private:
64  int subdet_;
65 };
66 
67 #endif
CaloDualConeSelector::selectCallback
void selectCallback(const GlobalPoint &p, const edm::SortedCollection< T > &inputCollection, std::function< void(const T &)> callback)
Definition: CaloDualConeSelector.h:30
mps_fire.i
i
Definition: mps_fire.py:428
edm::SortedCollection::const_iterator
std::vector< T >::const_iterator const_iterator
Definition: SortedCollection.h:80
CaloDualConeSelector::subdet_
int subdet_
Definition: CaloDualConeSelector.h:64
CaloSubdetectorGeometry::DetIdSet
std::set< DetId > DetIdSet
Definition: CaloSubdetectorGeometry.h:27
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
CaloGeometry::getSubdetectorGeometry
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:34
edm::SortedCollection
Definition: SortedCollection.h:49
DetId
Definition: DetId.h:17
CaloGeometry
Definition: CaloGeometry.h:21
CaloSubdetectorGeometry::getCells
virtual DetIdSet getCells(const GlobalPoint &r, double dR) const
Get a list of all cells within a dR of the given cell.
Definition: CaloSubdetectorGeometry.cc:66
PVValHelper::eta
Definition: PVValidationHelpers.h:70
Geom::Cylindrical2Cartesian
Definition: CoordinateSets.h:34
relativeConstraints.geom
geom
Definition: relativeConstraints.py:72
CaloDualConeSelector::selectCallback
void selectCallback(double eta, double phi, const edm::SortedCollection< T > &inputCollection, std::function< void(const T &)> callback)
Definition: CaloDualConeSelector.h:22
Point3DBase< float, GlobalTag >
CaloSubdetectorGeometry.h
HLT_FULL_cff.inputCollection
inputCollection
Definition: HLT_FULL_cff.py:11707
CaloDualConeSelector::CaloDualConeSelector
CaloDualConeSelector(double dRmin, double dRmax, const CaloGeometry *geom)
Definition: CaloDualConeSelector.h:16
CaloDualConeSelector::deltaRmin_
double deltaRmin_
Definition: CaloDualConeSelector.h:62
DetId::Detector
Detector
Definition: DetId.h:24
CaloDualConeSelector
Definition: CaloDualConeSelector.h:14
DDAxes::phi
align::Detector
Definition: StructureType.h:92
edmIntegrityCheck.callback
callback
Definition: edmIntegrityCheck.py:75
CaloDualConeSelector::deltaRmax_
double deltaRmax_
Definition: CaloDualConeSelector.h:62
CaloDualConeSelector::geom_
const CaloGeometry * geom_
Definition: CaloDualConeSelector.h:61
T
long double T
Definition: Basic3DVectorLD.h:48
SortedCollection.h
CaloGeometry.h
HiBiasedCentrality_cfi.function
function
Definition: HiBiasedCentrality_cfi.py:4
CaloSubdetectorGeometry
Definition: CaloSubdetectorGeometry.h:22
hgcalTestNeighbor_cfi.detector
detector
Definition: hgcalTestNeighbor_cfi.py:6
CaloDualConeSelector::CaloDualConeSelector
CaloDualConeSelector(double dRmin, double dRmax, const CaloGeometry *geom, DetId::Detector detector, int subdet=0)
Definition: CaloDualConeSelector.h:19
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
CaloDualConeSelector::detector_
DetId::Detector detector_
Definition: CaloDualConeSelector.h:63