26 namespace VolumeView3DTest {
 
   37                               const std::string& 
tag) {
 
   39   auto identity = Transform3D::Identity();
 
   40   std::stringstream cStream;
 
   42   double halfPhiSector = 
M_PI / 4.;
 
   49   auto box = std::make_shared<CuboidVolumeBounds>(4., 3., 6.);
 
   50   auto cuboid = std::make_shared<AbstractVolume>(
identity, 
box);
 
   53   helper.
write(std::string(
"Volumes_CuboidVolume") + tag);
 
   54   helper.
write(cStream);
 
   61       std::make_shared<ConeVolumeBounds>(0., 0., 0.45, 5., 5., 0., 
M_PI);
 
   62   auto cone = std::make_shared<AbstractVolume>(
identity, solidCone);
 
   65   helper.
write(
"Volumes_ConeVolumeSolid");
 
   66   helper.
write(cStream);
 
   71       std::make_shared<ConeVolumeBounds>(0., 0., 0.45, 8., 5., 0., 
M_PI);
 
   72   cone = std::make_shared<AbstractVolume>(
identity, cutOffCone);
 
   75   helper.
write(
"Volumes_ConeVolumeSolidCutOff");
 
   76   helper.
write(cStream);
 
   80   auto cutOffHollowCone =
 
   81       std::make_shared<ConeVolumeBounds>(0.35, 7., 0.45, 8., 5, 0., 
M_PI);
 
   82   cone = std::make_shared<AbstractVolume>(
identity, cutOffHollowCone);
 
   85   helper.
write(
"Volumes_ConeVolumeConeCone");
 
   86   helper.
write(cStream);
 
   90   auto cutOffHollowSectoralCone =
 
   91       std::make_shared<ConeVolumeBounds>(0.35, 7., 0.45, 8., 5., 0., 0.456);
 
   92   cone = std::make_shared<AbstractVolume>(
identity, cutOffHollowSectoralCone);
 
   95   helper.
write(
"Volumes_ConeVolumeConeConeSectoral");
 
   96   helper.
write(cStream);
 
  100   auto cutOffHollowCylCone =
 
  101       std::make_shared<ConeVolumeBounds>(1., 0.45, 8., 5., 0., 
M_PI);
 
  102   cone = std::make_shared<AbstractVolume>(
identity, cutOffHollowCylCone);
 
  105   helper.
write(
"Volumes_ConeVolumeConeCylinder");
 
  106   helper.
write(cStream);
 
  110   auto cutOffHollowConeCyl =
 
  111       std::make_shared<ConeVolumeBounds>(12., 0.35, 7., 5., 0., 
M_PI);
 
  112   cone = std::make_shared<AbstractVolume>(
identity, cutOffHollowConeCyl);
 
  115   helper.
write(
"Volumes_ConeVolumeCylinderCone");
 
  116   helper.
write(cStream);
 
  121   double cylinderInnerR = 1.;
 
  122   double cylinderOuterR = 5.;
 
  123   double cylinderHalfZ = 10.;
 
  126       std::make_shared<CylinderVolumeBounds>(0., cylinderOuterR, cylinderHalfZ);
 
  127   auto cylinder = std::make_shared<AbstractVolume>(
identity, fullCylinder);
 
  130   helper.
write(
"Volumes_CylinderVolumeFull");
 
  131   helper.
write(cStream);
 
  134   auto tubeCylinder = std::make_shared<CylinderVolumeBounds>(
 
  135       cylinderInnerR, cylinderOuterR, cylinderHalfZ);
 
  136   cylinder = std::make_shared<AbstractVolume>(
identity, tubeCylinder);
 
  139   helper.
write(
"Volumes_CylinderVolumeTube");
 
  140   helper.
write(cStream);
 
  143   tubeCylinder = std::make_shared<CylinderVolumeBounds>(
 
  144       cylinderInnerR, cylinderOuterR, cylinderHalfZ, halfPhiSector);
 
  145   cylinder = std::make_shared<AbstractVolume>(
identity, tubeCylinder);
 
  148   helper.
write(
"Volumes_CylinderVolumeTubeSector");
 
  149   helper.
write(cStream);
 
  154   std::array<Vector3D, 8> vertices;
 
  155   vertices = {{{0, 0, 0},
 
  163   auto genericCuboid = std::make_shared<GenericCuboidVolumeBounds>(vertices);
 
  164   auto generic = std::make_shared<AbstractVolume>(
identity, genericCuboid);
 
  167   helper.
write(
"Volumes_GenericCuboidVolume");
 
  168   helper.
write(cStream);
 
  173   auto trapezoid = std::make_shared<TrapezoidVolumeBounds>(2., 4., 5., 6.);
 
  174   auto trapezoidVolume = std::make_shared<AbstractVolume>(
identity, trapezoid);
 
  176                              Transform3D::Identity(), vConfig);
 
  177   helper.
write(
"Volumes_TrapezoidVolume");
 
  178   helper.
write(cStream);
 
  181   return cStream.str();