LArSoft  v10_04_05
Liquid Argon Software toolkit - https://larsoft.org/
geo::AuxDetSensitiveGeo Class Reference

#include "AuxDetSensitiveGeo.h"

Classes

struct  AuxDetSensitiveGeoCoordinatesTag
 

Public Types

Types for geometry-local reference vectors.

These types represents points and displacement vectors in the reference frame defined in the auxiliary detector geometry box from the GDML geometry description.

No alias is explicitly defined for the LArSoft global vector types, geo::Point_t and geo::Vector_t.

Remember the LocalPoint_t and LocalVector_t vectors from different instances of geo::AuxDetSensitiveGeo have the same type but are not compatible.

using LocalPoint_t = Point3DBase_t< AuxDetSensitiveGeoCoordinatesTag >
 Type of points in the local GDML auxiliary detector frame. More...
 
using LocalVector_t = Vector3DBase_t< AuxDetSensitiveGeoCoordinatesTag >
 Type of displacement vectors in the local GDML auxiliary detector frame. More...
 

Public Member Functions

 AuxDetSensitiveGeo (TGeoNode const *node, TransformationMatrix &&trans)
 
Point_t GetCenter (double localz=0.0) const
 Returns the geometric center of the sensitive volume. More...
 
Vector_t GetNormalVector () const
 Returns the unit normal vector to the detector. More...
 
double Length () const
 
double HalfLength () const
 
double HalfWidth1 () const
 
double HalfWidth2 () const
 
double HalfCenterWidth () const
 
double HalfHeight () const
 
const TGeoVolume * TotalVolume () const
 
template<typename Stream >
void PrintAuxDetInfo (Stream &&out, std::string indent="", unsigned int verbosity=0) const
 Prints information about this auxiliary sensitive detector. More...
 
std::string AuxDetInfo (std::string indent="", unsigned int verbosity=1) const
 Returns a string with auxiliary sensitive detector information. More...
 
Length_t DistanceToPoint (Point_t const &point) const
 Returns the distance of point from the center of the detector. More...
 
Length_t DistanceToPoint (double const *point) const
 Returns the distance of point from the center of the detector. More...
 
Coordinate transformation
Point_t toWorldCoords (LocalPoint_t const &local) const
 Transform point from local auxiliary detector frame to world frame. More...
 
Vector_t toWorldCoords (LocalVector_t const &local) const
 Transform direction vector from local to world. More...
 
LocalPoint_t toLocalCoords (Point_t const &world) const
 Transform point from world frame to local auxiliary detector frame. More...
 
LocalVector_t toLocalCoords (Vector_t const &world) const
 Transform direction vector from world to local. More...
 

Static Public Attributes

static constexpr unsigned int MaxVerbosity = 2
 Maximum verbosity supported by PrintAuxDetInfo(). More...
 

Private Types

using LocalTransformation_t = LocalTransformationGeo< ROOT::Math::Transform3D, LocalPoint_t, LocalVector_t >
 

Private Member Functions

void InitShapeSize ()
 Extracts the size of the detector from the geometry information. More...
 

Private Attributes

LocalTransformation_t fTrans
 Auxiliary detector-to-world transformation. More...
 
const TGeoVolume * fTotalVolume
 Total volume of AuxDet, called vol*. More...
 
double fLength
 length of volume, along z direction in local More...
 
double fHalfWidth1
 1st half width of volume, at -z/2 in local coordinates More...
 
double fHalfWidth2
 2nd half width (width1==width2 for boxes), at +z/2 More...
 
double fHalfHeight
 half height of volume More...
 

Detailed Description

Definition at line 32 of file AuxDetSensitiveGeo.h.

Member Typedef Documentation

Type of points in the local GDML auxiliary detector frame.

Definition at line 55 of file AuxDetSensitiveGeo.h.

Definition at line 143 of file AuxDetSensitiveGeo.h.

Type of displacement vectors in the local GDML auxiliary detector frame.

Definition at line 58 of file AuxDetSensitiveGeo.h.

Constructor & Destructor Documentation

geo::AuxDetSensitiveGeo::AuxDetSensitiveGeo ( TGeoNode const *  node,
TransformationMatrix &&  trans 
)

Definition at line 27 of file AuxDetSensitiveGeo.cxx.

References fTotalVolume, InitShapeSize(), and MF_LOG_DEBUG.

28  : fTrans(std::move(trans)), fTotalVolume(node->GetVolume())
29  {
30 
31  MF_LOG_DEBUG("Geometry") << "detector sensitive total volume is " << fTotalVolume->GetName();
32 
33  InitShapeSize();
34  }
void InitShapeSize()
Extracts the size of the detector from the geometry information.
const TGeoVolume * fTotalVolume
Total volume of AuxDet, called vol*.
#define MF_LOG_DEBUG(id)
LocalTransformation_t fTrans
Auxiliary detector-to-world transformation.

Member Function Documentation

std::string geo::AuxDetSensitiveGeo::AuxDetInfo ( std::string  indent = "",
unsigned int  verbosity = 1 
) const

Returns a string with auxiliary sensitive detector information.

See also
PrintAuxDetInfo()

The arguments and provided information are the same as in PrintAuxDetInfo().

Definition at line 57 of file AuxDetSensitiveGeo.cxx.

References PrintAuxDetInfo().

Referenced by toLocalCoords().

59  {
60  std::ostringstream sstr;
61  PrintAuxDetInfo(sstr, indent, verbosity);
62  return sstr.str();
63  }
std::string indent(std::size_t const i)
void PrintAuxDetInfo(Stream &&out, std::string indent="", unsigned int verbosity=0) const
Prints information about this auxiliary sensitive detector.
Length_t geo::AuxDetSensitiveGeo::DistanceToPoint ( Point_t const &  point) const
inline

Returns the distance of point from the center of the detector.

Definition at line 86 of file AuxDetSensitiveGeo.h.

Referenced by DistanceToPoint(), and TotalVolume().

86 { return (point - GetCenter()).R(); }
Point_t GetCenter(double localz=0.0) const
Returns the geometric center of the sensitive volume.
Length_t geo::AuxDetSensitiveGeo::DistanceToPoint ( double const *  point) const

Returns the distance of point from the center of the detector.

Definition at line 51 of file AuxDetSensitiveGeo.cxx.

References DistanceToPoint(), and geo::vect::makePointFromCoords().

52  {
54  }
GENVECTOR_CONSTEXPR Point_t makePointFromCoords(Coords &&coords)
Creates a geo::Point_t from its coordinates (see makeFromCoords()).
Length_t DistanceToPoint(Point_t const &point) const
Returns the distance of point from the center of the detector.
Point_t geo::AuxDetSensitiveGeo::GetCenter ( double  localz = 0.0) const

Returns the geometric center of the sensitive volume.

Parameters
localz(default: 0) distance from the center along the length of the volume (z) [cm]
Returns
the geometric center of the sensitive volume [cm]

Definition at line 37 of file AuxDetSensitiveGeo.cxx.

References toWorldCoords().

Referenced by PrintAuxDetInfo(), and TotalVolume().

38  {
39  return toWorldCoords(LocalPoint_t{0.0, 0.0, localz});
40  }
Point3DBase_t< AuxDetSensitiveGeoCoordinatesTag > LocalPoint_t
Type of points in the local GDML auxiliary detector frame.
Point_t toWorldCoords(LocalPoint_t const &local) const
Transform point from local auxiliary detector frame to world frame.
Vector_t geo::AuxDetSensitiveGeo::GetNormalVector ( ) const

Returns the unit normal vector to the detector.

Definition at line 45 of file AuxDetSensitiveGeo.cxx.

References toWorldCoords().

Referenced by PrintAuxDetInfo().

46  {
47  return toWorldCoords(Zaxis<LocalVector_t>());
48  }
Point_t toWorldCoords(LocalPoint_t const &local) const
Transform point from local auxiliary detector frame to world frame.
double geo::AuxDetSensitiveGeo::HalfCenterWidth ( ) const
inline

Definition at line 80 of file AuxDetSensitiveGeo.h.

References HalfWidth1(), and HalfWidth2().

80 { return (HalfWidth1() + HalfWidth2()) / 2.0; }
double geo::AuxDetSensitiveGeo::HalfHeight ( ) const
inline

Definition at line 81 of file AuxDetSensitiveGeo.h.

References fHalfHeight.

Referenced by geo::AuxDetReadoutGeom::NearestSensitiveAuxDet(), and PrintAuxDetInfo().

81 { return fHalfHeight; }
double fHalfHeight
half height of volume
double geo::AuxDetSensitiveGeo::HalfLength ( ) const
inline

Definition at line 77 of file AuxDetSensitiveGeo.h.

References Length().

77 { return Length() / 2.0; }
double geo::AuxDetSensitiveGeo::HalfWidth1 ( ) const
inline

Definition at line 78 of file AuxDetSensitiveGeo.h.

References fHalfWidth1.

Referenced by HalfCenterWidth(), geo::AuxDetReadoutGeom::NearestSensitiveAuxDet(), and PrintAuxDetInfo().

78 { return fHalfWidth1; }
double fHalfWidth1
1st half width of volume, at -z/2 in local coordinates
double geo::AuxDetSensitiveGeo::HalfWidth2 ( ) const
inline

Definition at line 79 of file AuxDetSensitiveGeo.h.

References fHalfWidth2.

Referenced by HalfCenterWidth(), geo::AuxDetReadoutGeom::NearestSensitiveAuxDet(), and PrintAuxDetInfo().

79 { return fHalfWidth2; }
double fHalfWidth2
2nd half width (width1==width2 for boxes), at +z/2
void geo::AuxDetSensitiveGeo::InitShapeSize ( )
private

Extracts the size of the detector from the geometry information.

Definition at line 66 of file AuxDetSensitiveGeo.cxx.

References fHalfHeight, fHalfWidth1, fHalfWidth2, fLength, and fTotalVolume.

Referenced by AuxDetSensitiveGeo().

67  {
68  // set the ends depending on whether the shape is a box or trapezoid
69  std::string volName(fTotalVolume->GetName());
70  if (volName.find("Trap") != std::string::npos) {
71 
72  // Small Width
73  // ____ Height is the thickness
74  // / \ T of the trapezoid
75  // / \ |
76  // / \ | Length
77  // /__________\ _
78  // Width
79  fHalfHeight = ((TGeoTrd2*)fTotalVolume->GetShape())->GetDy1(); // same as Dy2()
80  fLength = 2.0 * ((TGeoTrd2*)fTotalVolume->GetShape())->GetDz();
81  fHalfWidth1 = ((TGeoTrd2*)fTotalVolume->GetShape())->GetDx1(); // at -Dz
82  fHalfWidth2 = ((TGeoTrd2*)fTotalVolume->GetShape())->GetDx2(); // at +Dz
83  }
84  else {
85  fHalfWidth1 = ((TGeoBBox*)fTotalVolume->GetShape())->GetDX();
86  fHalfHeight = ((TGeoBBox*)fTotalVolume->GetShape())->GetDY();
87  fLength = 2.0 * ((TGeoBBox*)fTotalVolume->GetShape())->GetDZ();
89  }
90  }
double fLength
length of volume, along z direction in local
double fHalfWidth1
1st half width of volume, at -z/2 in local coordinates
double fHalfHeight
half height of volume
const TGeoVolume * fTotalVolume
Total volume of AuxDet, called vol*.
double fHalfWidth2
2nd half width (width1==width2 for boxes), at +z/2
double geo::AuxDetSensitiveGeo::Length ( ) const
inline

Definition at line 76 of file AuxDetSensitiveGeo.h.

References fLength.

Referenced by HalfLength(), geo::AuxDetReadoutGeom::NearestSensitiveAuxDet(), and PrintAuxDetInfo().

76 { return fLength; }
double fLength
length of volume, along z direction in local
template<typename Stream >
void geo::AuxDetSensitiveGeo::PrintAuxDetInfo ( Stream &&  out,
std::string  indent = "",
unsigned int  verbosity = 0 
) const

Prints information about this auxiliary sensitive detector.

Template Parameters
Streamtype of output stream to use
Parameters
outstream to send the information to
indentprepend each line with this string
verbosityamount of information printed

Note that the first line out the output is not indented.

Verbosity levels

  • 0 _(default)_: only center
  • 1: also size
  • 2: also normal direction

The constant MaxVerbosity is set to the highest supported verbosity level.

Definition at line 166 of file AuxDetSensitiveGeo.h.

References e, GetCenter(), GetNormalVector(), HalfHeight(), HalfWidth1(), HalfWidth2(), Length(), and lar::util::RealComparisons< RealType >::nonEqual().

Referenced by AuxDetInfo(), geo::WireReadoutDumper::dumpAuxiliaryDetectors(), and toLocalCoords().

170 {
171 
172  //----------------------------------------------------------------------------
173  out << "centered at " << GetCenter() << " cm";
174 
175  if (verbosity-- <= 0) return; // 0
176 
177  //----------------------------------------------------------------------------
179  out << ", size ( " << (2.0 * HalfWidth1());
180  if (coordIs.nonEqual(HalfWidth1(), HalfWidth2())) out << "/" << (2.0 * HalfWidth2());
181  out << " x " << (2.0 * HalfHeight()) << " x " << Length() << " ) cm";
182 
183  if (verbosity-- <= 0) return; // 1
184 
185  //----------------------------------------------------------------------------
186  out << ", normal facing " << GetNormalVector();
187 
188  // if (verbosity-- <= 0) return; // 2
189 
190  //----------------------------------------------------------------------------
191 
192 } // geo::AuxDetSensitiveGeo::PrintAuxDetInfo()
Provides simple real number checks.
Vector_t GetNormalVector() const
Returns the unit normal vector to the detector.
Point_t GetCenter(double localz=0.0) const
Returns the geometric center of the sensitive volume.
Float_t e
Definition: plot.C:35
LocalPoint_t geo::AuxDetSensitiveGeo::toLocalCoords ( Point_t const &  world) const
inline

Transform point from world frame to local auxiliary detector frame.

Definition at line 100 of file AuxDetSensitiveGeo.h.

References fTrans, and geo::LocalTransformationGeo< StoredMatrix, LocalPoint, LocalVector >::toLocalCoords().

Referenced by geo::AuxDetReadoutGeom::NearestSensitiveAuxDet().

100 { return fTrans.toLocalCoords(world); }
LocalPoint_t toLocalCoords(GlobalPoint_t const &world) const
Transforms a point from world frame to local frame.
LocalTransformation_t fTrans
Auxiliary detector-to-world transformation.
LocalVector_t geo::AuxDetSensitiveGeo::toLocalCoords ( Vector_t const &  world) const
inline

Transform direction vector from world to local.

Definition at line 103 of file AuxDetSensitiveGeo.h.

References AuxDetInfo(), fTrans, art::detail::indent(), PrintAuxDetInfo(), and geo::LocalTransformationGeo< StoredMatrix, LocalPoint, LocalVector >::toLocalCoords().

103 { return fTrans.toLocalCoords(world); }
LocalPoint_t toLocalCoords(GlobalPoint_t const &world) const
Transforms a point from world frame to local frame.
LocalTransformation_t fTrans
Auxiliary detector-to-world transformation.
const TGeoVolume* geo::AuxDetSensitiveGeo::TotalVolume ( ) const
inline

Definition at line 82 of file AuxDetSensitiveGeo.h.

References DistanceToPoint(), fTotalVolume, and GetCenter().

Referenced by geo::AuxDetGeoObjectSorterStandard::compareAuxDetSensitives().

82 { return fTotalVolume; }
const TGeoVolume * fTotalVolume
Total volume of AuxDet, called vol*.
Point_t geo::AuxDetSensitiveGeo::toWorldCoords ( LocalPoint_t const &  local) const
inline

Transform point from local auxiliary detector frame to world frame.

Definition at line 94 of file AuxDetSensitiveGeo.h.

References fTrans, and geo::LocalTransformationGeo< StoredMatrix, LocalPoint, LocalVector >::toWorldCoords().

Referenced by GetCenter(), and GetNormalVector().

94 { return fTrans.toWorldCoords(local); }
GlobalPoint_t toWorldCoords(LocalPoint_t const &local) const
Transforms a point from local frame to world frame.
LocalTransformation_t fTrans
Auxiliary detector-to-world transformation.
Vector_t geo::AuxDetSensitiveGeo::toWorldCoords ( LocalVector_t const &  local) const
inline

Transform direction vector from local to world.

Definition at line 97 of file AuxDetSensitiveGeo.h.

References fTrans, and geo::LocalTransformationGeo< StoredMatrix, LocalPoint, LocalVector >::toWorldCoords().

97 { return fTrans.toWorldCoords(local); }
GlobalPoint_t toWorldCoords(LocalPoint_t const &local) const
Transforms a point from local frame to world frame.
LocalTransformation_t fTrans
Auxiliary detector-to-world transformation.

Member Data Documentation

double geo::AuxDetSensitiveGeo::fHalfHeight
private

half height of volume

Definition at line 150 of file AuxDetSensitiveGeo.h.

Referenced by HalfHeight(), and InitShapeSize().

double geo::AuxDetSensitiveGeo::fHalfWidth1
private

1st half width of volume, at -z/2 in local coordinates

Definition at line 148 of file AuxDetSensitiveGeo.h.

Referenced by HalfWidth1(), and InitShapeSize().

double geo::AuxDetSensitiveGeo::fHalfWidth2
private

2nd half width (width1==width2 for boxes), at +z/2

Definition at line 149 of file AuxDetSensitiveGeo.h.

Referenced by HalfWidth2(), and InitShapeSize().

double geo::AuxDetSensitiveGeo::fLength
private

length of volume, along z direction in local

Definition at line 147 of file AuxDetSensitiveGeo.h.

Referenced by InitShapeSize(), and Length().

const TGeoVolume* geo::AuxDetSensitiveGeo::fTotalVolume
private

Total volume of AuxDet, called vol*.

Definition at line 146 of file AuxDetSensitiveGeo.h.

Referenced by AuxDetSensitiveGeo(), InitShapeSize(), and TotalVolume().

LocalTransformation_t geo::AuxDetSensitiveGeo::fTrans
private

Auxiliary detector-to-world transformation.

Definition at line 145 of file AuxDetSensitiveGeo.h.

Referenced by toLocalCoords(), and toWorldCoords().

constexpr unsigned int geo::AuxDetSensitiveGeo::MaxVerbosity = 2
static

Maximum verbosity supported by PrintAuxDetInfo().

Definition at line 139 of file AuxDetSensitiveGeo.h.

Referenced by geo::WireReadoutDumper::dumpAuxiliaryDetectors().


The documentation for this class was generated from the following files: