RecoCaloTools
Selectors
interface
CaloDualConeSelector.h
Go to the documentation of this file.
1
#ifndef RECOCALOTOOLS_SELECTORS_CALODUALCONESELECTOR_H
2
#define RECOCALOTOOLS_SELECTORS_CALODUALCONESELECTOR_H 1
3
4
#include "
Geometry/CaloGeometry/interface/CaloGeometry.h
"
5
#include "
DataFormats/Common/interface/SortedCollection.h
"
6
#include "
Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h
"
7
#include <memory>
8
13
template
<
class
T>
14
class
CaloDualConeSelector
{
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
,
24
const
edm::SortedCollection<T>
&
inputCollection
,
25
std::function
<
void
(
const
T
&)>
callback
) {
26
GlobalPoint
p
(
GlobalPoint::Cylindrical
(1,
phi
, tanh(
eta
)));
27
return
selectCallback
(
p
,
inputCollection
,
callback
);
28
}
29
30
void
inline
selectCallback
(
const
GlobalPoint
&
p
,
31
const
edm::SortedCollection<T>
&
inputCollection
,
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++) {
36
const
CaloSubdetectorGeometry
* sdg =
geom_
->
getSubdetectorGeometry
(
detector_
, subdet);
37
if
(sdg !=
nullptr
) {
38
// get the list of detids within range (from geometry)
39
CaloSubdetectorGeometry::DetIdSet
dis_excl = sdg->
getCells
(
p
,
deltaRmin_
);
40
CaloSubdetectorGeometry::DetIdSet
dis_all = sdg->
getCells
(
p
,
deltaRmax_
);
41
// use set operations to determine detids in annulus
42
CaloSubdetectorGeometry::DetIdSet
dis;
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...
47
typename
edm::SortedCollection<T>::const_iterator
j
, je =
inputCollection
.end();
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
:
61
const
CaloGeometry
*
geom_
;
62
double
deltaRmin_
,
deltaRmax_
;
63
DetId::Detector
detector_
;
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
PDWG_EXOHSCP_cff.inputCollection
inputCollection
Definition:
PDWG_EXOHSCP_cff.py:56
PVValHelper::eta
Definition:
PVValidationHelpers.h:69
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
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:86
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
Generated for CMSSW Reference Manual by
1.8.16