1 #ifndef ElementsInAnnulus_h
2 #define ElementsInAnnulus_h
9 template <
typename T,
typename M,
typename N,
typename C>
14 const std::vector<edm::Ptr<C> >
operator()(
const T& coneAxis,
const M& innerconeMetric,
double innerconeSize,
const N& outerconeMetric,
double outerconeSize,
const std::vector<
edm::Ptr<C> >&
elements)
const{
15 std::vector<edm::Ptr<C> > elementsInBand;
17 double innerconeMetric_distance=innerconeMetric(coneAxis,(*element)->momentum());
18 double outerconeMetric_distance=outerconeMetric(coneAxis,(*element)->momentum());
19 if (innerconeMetric_distance>innerconeSize && outerconeMetric_distance<=outerconeSize)elementsInBand.push_back(*element);
21 return elementsInBand;
24 template <
typename T,
typename M,
typename N>
29 const std::vector<std::pair<math::XYZPoint,float> >
operator()(
const T& coneAxis,
const M& innerconeMetric,
double innerconeSize,
const N& outerconeMetric,
double outerconeSize,
const std::vector<std::pair<math::XYZPoint,float> > &
elements)
const{
30 std::vector<std::pair<math::XYZPoint,float> > elementsInBand;
31 for(
typename std::vector<std::pair<math::XYZPoint,float> >::const_iterator element=
elements.begin();element!=
elements.end();++element) {
32 double innerconeMetric_distance=innerconeMetric(coneAxis,(*element).first);
33 double outerconeMetric_distance=outerconeMetric(coneAxis,(*element).first);
34 if (innerconeMetric_distance>innerconeSize && outerconeMetric_distance<=outerconeSize)elementsInBand.push_back(*element);
36 return elementsInBand;
const std::vector< edm::Ptr< C > > operator()(const T &coneAxis, const M &innerconeMetric, double innerconeSize, const N &outerconeMetric, double outerconeSize, const std::vector< edm::Ptr< C > > &elements) const
const std::vector< std::pair< math::XYZPoint, float > > operator()(const T &coneAxis, const M &innerconeMetric, double innerconeSize, const N &outerconeMetric, double outerconeSize, const std::vector< std::pair< math::XYZPoint, float > > &elements) const