1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
/// \file PlacedScaledShape.cpp
/// \author Mihaela Gheata (mihaela.gheata@cern.ch)
#include "VecGeom/volumes/PlacedScaledShape.h"
#include "VecGeom/volumes/SpecializedScaledShape.h"
#include <stdio.h>
#ifdef VECGEOM_ROOT
#include "TGeoScaledShape.h"
#include "TGeoMatrix.h"
#endif
namespace vecgeom {
inline namespace VECGEOM_IMPL_NAMESPACE {
VECCORE_ATT_HOST_DEVICE
void PlacedScaledShape::PrintType() const
{
printf("PlacedScaledShape");
}
void PlacedScaledShape::PrintType(std::ostream &os) const
{
os << "PlacedScaledShape";
}
#ifndef VECCORE_CUDA
VPlacedVolume const *PlacedScaledShape::ConvertToUnspecialized() const
{
return new SimpleScaledShape(GetLabel().c_str(), logical_volume_, GetTransformation());
}
#ifdef VECGEOM_ROOT
TGeoShape const *PlacedScaledShape::ConvertToRoot() const
{
UnplacedScaledShape const *unplaced = const_cast<UnplacedScaledShape *>(GetUnplacedVolume());
return new TGeoScaledShape(GetLabel().c_str(), (TGeoShape *)unplaced->fScaled.fPlaced->ConvertToRoot(),
new TGeoScale(unplaced->fScaled.fScale.Scale()[0], unplaced->fScaled.fScale.Scale()[1],
unplaced->fScaled.fScale.Scale()[2]));
}
#endif
#ifdef VECGEOM_GEANT4
G4VSolid const *PlacedScaledShape::ConvertToGeant4() const
{
// No implementation in Geant4
return 0;
}
#endif
#endif // VECCORE_CUDA
} // End impl namespace
#ifdef VECCORE_CUDA
VECGEOM_DEVICE_INST_PLACED_VOLUME_ALLSPEC(SpecializedScaledShape)
#endif // VECCORE_CUDA
} // End namespace vecgeom
|