7 #ifndef LARCOREALG_GEOMETRY_AUXDETSENSITIVEGEO_H 8 #define LARCOREALG_GEOMETRY_AUXDETSENSITIVEGEO_H 18 #include "Math/GenVector/DisplacementVector3D.h" 19 #include "Math/GenVector/PositionVector3D.h" 20 #include "Math/GenVector/Transform3D.h" 24 #include <type_traits> 126 template <
typename Stream>
136 std::string
AuxDetInfo(std::string
indent =
"",
unsigned int verbosity = 1)
const;
157 static_assert(std::is_move_assignable_v<AuxDetSensitiveGeo>);
158 static_assert(std::is_move_constructible_v<AuxDetSensitiveGeo>);
165 template <
typename Stream>
168 unsigned int verbosity
173 out <<
"centered at " <<
GetCenter() <<
" cm";
175 if (verbosity-- <= 0)
return;
183 if (verbosity-- <= 0)
return;
196 #endif // LARCOREALG_GEOMETRY_AUXDETSENSITIVEGEO_H double fLength
length of volume, along z direction in local
double HalfWidth2() const
constexpr bool nonEqual(Value_t a, Value_t b) const
Returns whether a and b are farther than the threshold.
double Length_t
Type used for coordinates and distances. They are measured in centimeters.
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Vector_t
Type for representation of momenta in 3D space.
double HalfCenterWidth() const
Provides simple real number checks.
Vector_t GetNormalVector() const
Returns the unit normal vector to the detector.
Point3DBase_t< AuxDetSensitiveGeoCoordinatesTag > LocalPoint_t
Type of points in the local GDML auxiliary detector frame.
double fHalfWidth1
1st half width of volume, at -z/2 in local coordinates
double fHalfHeight
half height of volume
Point_t GetCenter(double localz=0.0) const
Returns the geometric center of the sensitive volume.
double HalfWidth1() const
Class for approximate comparisons.
AuxDetSensitiveGeo(TGeoNode const *node, TransformationMatrix &&trans)
LocalVector_t toLocalCoords(Vector_t const &world) const
Transform direction vector from world to local.
void InitShapeSize()
Extracts the size of the detector from the geometry information.
double HalfHeight() const
const TGeoVolume * fTotalVolume
Total volume of AuxDet, called vol*.
LocalPoint_t toLocalCoords(Point_t const &world) const
Transform point from world frame to local auxiliary detector frame.
Definitions of geometry vector data types.
std::string indent(std::size_t const i)
const TGeoVolume * TotalVolume() const
Point_t toWorldCoords(LocalPoint_t const &local) const
Transform point from local auxiliary detector frame to world frame.
void PrintAuxDetInfo(Stream &&out, std::string indent="", unsigned int verbosity=0) const
Prints information about this auxiliary sensitive detector.
Length_t DistanceToPoint(Point_t const &point) const
Returns the distance of point from the center of the detector.
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space.
std::string AuxDetInfo(std::string indent="", unsigned int verbosity=1) const
Returns a string with auxiliary sensitive detector information.
static constexpr unsigned int MaxVerbosity
Maximum verbosity supported by PrintAuxDetInfo().
Vector3DBase_t< AuxDetSensitiveGeoCoordinatesTag > LocalVector_t
Type of displacement vectors in the local GDML auxiliary detector frame.
Vector_t toWorldCoords(LocalVector_t const &local) const
Transform direction vector from local to world.
GenPoint3DBase_t< double, C > Point3DBase_t
Type of 3D point with representation in double precision.
double fHalfWidth2
2nd half width (width1==width2 for boxes), at +z/2
GenVector3DBase_t< double, C > Vector3DBase_t
double HalfLength() const
LocalTransformation_t fTrans
Auxiliary detector-to-world transformation.
ROOT::Math::Transform3D TransformationMatrix
Type of transformation matrix used in geometry.