30 namespace ActsFatras {
32 using Randomizer = std::function<Acts::Vector2(double, double)>;
35 std::tuple<std::string, std::shared_ptr<const Acts::Surface>,
46 std::vector<PlanarTestBed>
operator()(
double rScale)
const {
47 double irScale = (2. - rScale);
52 auto rectangle = std::make_shared<Acts::RectangleBounds>(xhalf, yhalf);
53 auto rSurface = Acts::Surface::makeShared<Acts::PlaneSurface>(
60 double xhalfminy = 2.;
61 double xhalfmaxy = 3.5;
64 std::make_shared<Acts::TrapezoidBounds>(xhalfminy, xhalfmaxy, yhalf);
65 auto tSurface = Acts::Surface::makeShared<Acts::PlaneSurface>(
66 Acts::Transform3::Identity(), trapezoid);
77 double ymax = std::sqrt(rmax * rmax - xmax * xmax);
78 double alpha = std::max(atan2(xmin, rmin), atan2(xmax, ymax));
81 std::make_shared<Acts::DiscTrapezoidBounds>(
xmin,
xmax, rmin, rmax);
82 auto dtSurface = Acts::Surface::makeShared<Acts::DiscSurface>(
83 Acts::Transform3::Identity(), discTrapezoid);
92 std::make_shared<Acts::RadialBounds>(rmin, rmax, M_PI_4, M_PI_2);
93 auto dSurface = Acts::Surface::makeShared<Acts::DiscSurface>(
94 Acts::Transform3::Identity(), discRadial);
99 DiscRandom dRandom(rmin * irScale, rmax * rScale,
100 (M_PI_2 - M_PI_4) * irScale, (M_PI_2 + M_PI_4) * rScale);
107 double phimax = 0.38;
108 auto annulus = std::make_shared<Acts::AnnulusBounds>(rmin, rmax,
phimin,
110 auto aSurface = Acts::Surface::makeShared<Acts::DiscSurface>(
111 Acts::Transform3::Identity() *
115 auto vertices = annulus->vertices(72);
116 std::for_each(vertices.begin(), vertices.end(), [&](
Acts::Vector2&
v) {
119 rmax = std::max(rmax, r);
125 AnnulusRandom aRandom(rmin * irScale, rmax * rScale, phimin * rScale,
126 phimax * rScale, aorigin.x(), aorigin.y());
128 return {{
"Rectangle",
std::move(rSurface), pixelated, rRandom},
129 {
"Trapezoid",
std::move(tSurface), stripsX, tRandom},
130 {
"DiscTrapezoid",
std::move(dtSurface), stripsPhi, dtRandom},
131 {
"DiscRadial",
std::move(dSurface), rphiseg, dRandom},
132 {
"Annulus",
std::move(aSurface), stripsPhiA, aRandom}};