4 #ifndef ACTSGEOUTILS_SURFACEBOUNDSET_H
5 #define ACTSGEOUTILS_SURFACEBOUNDSET_H
9 #include "Acts/Surfaces/SurfaceBounds.hpp"
16 template <
class BoundType>
class SurfaceBoundSet {
20 template<
class... argList> std::shared_ptr<BoundType>
make_bounds(argList...
args) {
32 const std::shared_ptr<BoundType>&
b)
const {
33 if (
a->type() !=
b->type()) {
34 return static_cast<int>(
a->type()) <
static_cast<int>(
b->type());
36 const std::vector<double> avalues{
a->values()};
37 const std::vector<double> bvalues{
b->values()};
38 std::size_t
size = avalues.size();
39 for(std::size_t
i=0;
i<
size-1; ++
i) {
40 if(std::abs(avalues[
i]- bvalues[
i]) > std::numeric_limits<double>::epsilon()){
41 return avalues[
i] < bvalues[
i];
44 return avalues[
size-1] < bvalues[
size-1];