LArSoft geometry interface. More...
Namespaces | |
CRU | |
details | |
dune | |
fhicl | |
FHiCL objects representing geometry classes as configuration parameters. | |
iterators | |
part | |
Partition-related utilities. | |
vect | |
Utilities to manipulate geometry vectors.The utilities include generic vector interface facilities allowing to use different vector types via templates. | |
Classes | |
class | AffinePlaneBase |
class | AuxDetChannelMapAlg |
class | AuxDetExptGeoHelperInterface |
Interface to a service with detector-specific geometry knowledge. More... | |
class | AuxDetGeo |
class | AuxDetGeometry |
The geometry of one entire detector, as served by art. More... | |
class | AuxDetGeometryCore |
Description of geometry of one set of auxiliary detectors. More... | |
struct | AuxDetGeometryData_t |
class | AuxDetGeoObjectSorter |
class | AuxDetSensitiveGeo |
class | BoxBoundedGeo |
A base class aware of world box coordinatesAn object describing a simple shape can inherit from this one to gain access to a common boundary checking interface. More... | |
class | ChannelMap35Alg |
class | ChannelMap35OptAlg |
class | ChannelMapAlg |
Interface for a class providing readout channel mapping to geometry. More... | |
class | ChannelMapAPAAlg |
class | ChannelMapCRMAlg |
class | ChannelMapCRUAlg |
class | ChannelMapSetupTool |
Interface for a tool creating a channel mapping object. More... | |
class | ChannelMapStandardAlg |
class | ChannelMapStandardTestAlg |
class | ColdBoxChannelMapAlg |
struct | CollectNodesByName |
struct | CollectPathsByName |
class | CryostatGeo |
Geometry information for a single cryostat. More... | |
struct | CryostatID |
The data type to uniquely identify a cryostat. More... | |
struct | DecomposedVector |
class | Decomposer |
Class with methods to decompose and compose back vectors. More... | |
class | DriftPartitions |
Set of drift volumes. More... | |
class | DumpChannelMap |
Prints on screen the current channel-wire and optical detector maps. More... | |
class | DumpGeometry |
Describes on screen the current geometry. More... | |
class | DuneApaChannelMapAlg |
struct | ElementLevel |
class | ExptGeoHelperInterface |
Interface to a service with detector-specific geometry knowledge. More... | |
class | GeoIDdataContainer |
Container with one element per geometry TPC. More... | |
class | GeoIDmapper |
Class managing the mapping between geometry/readout ID and flat index. More... | |
class | Geometry |
The geometry of one entire detector, as served by art. More... | |
class | GeometryBuilder |
Manages the extraction of LArSoft geometry information from ROOT. More... | |
class | GeometryBuilderStandard |
Extracts of LArSoft geometry information from ROOT. More... | |
class | GeometryBuilderWireless |
Geometry builder which ignores wires on wire planes. More... | |
class | GeometryConfigurationWriter |
Writes geometry configuration information into art runs. More... | |
class | GeometryCore |
Description of geometry of one entire detector. More... | |
struct | GeometryData_t |
Data in the geometry description. More... | |
class | GeometryGeoIDTestAlg |
class | GeometryInfoCheck |
class | GeometryIteratorLoopTest |
Performs tests on the geometry as seen by Geometry service. More... | |
class | GeometryIteratorLoopTestAlg |
class | GeometryIteratorTestAlg |
class | GeometryTest |
Performs tests on the geometry as seen by Geometry service. More... | |
class | GeometryTestAlg |
Performs tests on the geometry as seen by Geometry service. More... | |
class | GeoNodePath |
Representation of a node and its ancestry. More... | |
class | GeoObjectSorter |
class | GeoObjectSorter35 |
class | GeoObjectSorterAPA |
class | GeoObjectSorterCRM |
class | GeoObjectSorterCRU |
class | GeoObjectSorterStandard |
struct | IntersectionPointAndOffsets |
Data structure for return values of LineClosestPointAndOffsets() . More... | |
class | InvalidWireError |
Exception thrown on invalid wire number. More... | |
class | InvalidWireIDError |
Exception thrown on invalid wire number (e.g. NearestWireID()) More... | |
class | IteratorBox |
class | LegacyGeometryInfoWriter |
class | LocalIteratorBox |
class | LocalTransformation |
Class to transform between world and local coordinates. More... | |
class | LocalTransformationGeo |
Class to transform between world and local coordinates. More... | |
class | MuonCounter35Alg |
struct | NodeNameMatcherClass |
class | OpDetGeo |
struct | OpDetID |
The data type to uniquely identify a optical detector. More... | |
struct | OpticalLocalCoordinateSystemTag |
The tag defining the optical detector local reference frame. More... | |
class | PlaneBase |
A base for a plane in space. More... | |
class | PlaneDataContainer |
Container with one element per geometry wire plane. More... | |
class | PlaneDecomposer |
Class with methods for projection of vectors on a plane. More... | |
class | PlaneGeo |
Geometry information for a single wire plane.The plane is represented in the geometry by a solid which contains wires. Currently, only box solids are well supported. The box which is representation of the plane has some thickness, and it should not be assumed that the wires are in the median section of it, that is, the center of the box may not lie on the plane defined by the wires. More... | |
struct | PlaneID |
The data type to uniquely identify a Plane. More... | |
class | PlaneIDmapper |
Mapping for sensitive plane identifiers. More... | |
class | ProtoDUNEChannelMapAlg |
class | ProtoDUNEChannelMapAlgv7 |
class | ProtoDUNEChannelMapAlgv8 |
class | ROOTGeometryNavigator |
Executes an operation on all the nodes of the ROOT geometry. More... | |
class | ROOTGeoNodeForwardIterator |
Iterator to navigate through all the nodes. More... | |
struct | sortWire35 |
class | StandardGeometryHelper |
Simple implementation of channel mapping. More... | |
class | TPCDataContainer |
Container with one element per geometry TPC. More... | |
class | TPCGeo |
Geometry information for a single TPC. More... | |
struct | TPCID |
The data type to uniquely identify a TPC. More... | |
class | TPCIDmapper |
Mapping for TPC identifiers. More... | |
class | WireGeo |
Geometry description of a TPC wireThe wire is a single straight segment on a wire plane. Different wires may be connected to the same readout channel. That is of no relevance for the geometry description. More... | |
struct | WireID |
struct | WireIDIntersection |
Typedefs | |
using | GeoNodeIterator_t = std::vector< TGeoNode const * >::const_iterator |
using | WirePtr = WireGeo const * |
using | TransformationMatrix = ROOT::Math::Transform3D |
Type of transformation matrix used in geometry. More... | |
Generic vector types. | |
template<typename T , typename C = ROOT::Math::GlobalCoordinateSystemTag> | |
using | GenVector3DBase_t = ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< T >, C > |
template<typename T , typename C = ROOT::Math::GlobalCoordinateSystemTag> | |
using | GenPoint3DBase_t = ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< T >, C > |
template<typename C > | |
using | Vector3DBase_t = GenVector3DBase_t< double, C > |
template<typename C > | |
using | Point3DBase_t = GenPoint3DBase_t< double, C > |
Type of 3D point with representation in double precision. More... | |
using | cryostat_id_iterator = details::cryostat_id_iterator_base< geo::CryostatID > |
Forward iterator browsing all cryostats in the detector. More... | |
using | cryostat_iterator = details::geometry_element_iterator< cryostat_id_iterator > |
Forward iterator browsing all cryostats in the detector. More... | |
using | TPC_id_iterator = details::TPC_id_iterator_base< geo::TPCID > |
Forward iterator browsing all TPCs in the detector. More... | |
using | TPC_iterator = details::geometry_element_iterator< TPC_id_iterator > |
Forward iterator browsing all TPCs in the detector. More... | |
using | plane_id_iterator = details::plane_id_iterator_base< geo::PlaneID > |
Forward iterator browsing all planes in the detector. More... | |
using | plane_iterator = details::geometry_element_iterator< plane_id_iterator > |
Forward iterator browsing all planes in the detector. More... | |
using | wire_id_iterator = details::wire_id_iterator_base< geo::WireID > |
Forward iterator browsing all wires in the detector. More... | |
using | wire_iterator = details::geometry_element_iterator< wire_id_iterator > |
Forward iterator browsing all wires in the detector. More... | |
using | TPCset_id_iterator = details::TPCset_id_iterator_base< readout::TPCsetID > |
Forward iterator browsing all TPC sets in the detector. More... | |
using | ROP_id_iterator = details::ROP_id_iterator_base< readout::ROPID > |
Forward iterator browsing all readout planes in the detector. More... | |
Optical detector vector types. | |
Special tags for a generic "optical detector local coordinate system" are defined here, together with data types using them. While the world coordinate system makes sense to be defined in this way, a local system depends by definition by the object it is anchored to: while two world coordinate vectors are always compatible, two local coordinate vectors are compatible only if they belong to the same local object. The purpose of these definitions is to declare the incompatibility between world coordinate vectors and the ones local to optical detectors, without attempting to claim that two of the latter are necessarily compatible. | |
template<typename T > | |
using | OpticalVector3DBase_t = GenVector3DBase_t< T, OpticalLocalCoordinateSystemTag > |
template<typename T > | |
using | OpticalPoint3DBase_t = GenPoint3DBase_t< T, OpticalLocalCoordinateSystemTag > |
using | OpticalVector_t = OpticalVector3DBase_t< double > |
using | OpticalPoint_t = OpticalPoint3DBase_t< double > |
Type of optical 3D point with representation in double precision. More... | |
Functions | |
static bool | sortAuxDet35 (const AuxDetGeo &ad1, const AuxDetGeo &ad2) |
static bool | sortAuxDetSensitive35 (const AuxDetSensitiveGeo &ad1, const AuxDetSensitiveGeo &ad2) |
static bool | sortCryo35 (const CryostatGeo &c1, const CryostatGeo &c2) |
static bool | sortTPC35 (const TPCGeo &t1, const TPCGeo &t2) |
static bool | sortPlane35 (const PlaneGeo &p1, const PlaneGeo &p2) |
static bool | sortAuxDetAPA (const AuxDetGeo &ad1, const AuxDetGeo &ad2) |
static bool | sortAuxDetSensitiveAPA (const AuxDetSensitiveGeo &ad1, const AuxDetSensitiveGeo &ad2) |
static bool | sortCryoAPA (const CryostatGeo &c1, const CryostatGeo &c2) |
static bool | sortTPCAPA (const TPCGeo &t1, const TPCGeo &t2) |
static bool | sortPlaneAPA (const PlaneGeo &p1, const PlaneGeo &p2) |
bool | sortWireAPA (WireGeo &w1, WireGeo &w2) |
static bool | sortAuxDetCRM (const AuxDetGeo &ad1, const AuxDetGeo &ad2) |
static bool | sortAuxDetSensitiveCRM (const AuxDetSensitiveGeo &ad1, const AuxDetSensitiveGeo &ad2) |
static bool | sortCryoCRM (const CryostatGeo &c1, const CryostatGeo &c2) |
static bool | sortTPCCRM (const TPCGeo &t1, const TPCGeo &t2) |
static bool | sortPlaneCRM (const PlaneGeo &p1, const PlaneGeo &p2) |
bool | sortWireCRM (WireGeo const &w1, WireGeo const &w2) |
bool | sortorderOpDet (const OpDetGeo &t1, const OpDetGeo &t2) |
void | ProjectToBoxEdge (const double xyz[], const double dxyz[], double xlo, double xhi, double ylo, double yhi, double zlo, double zhi, double xyzout[]) |
double | ClosestApproach (const double point[], const double intercept[], const double slopes[], double closest[]) |
bool | CrossesBoundary (double x0[], double gradient[], double x_lo, double x_hi, double y_lo, double y_hi, double z_lo, double z_hi, double point[]) |
template<> | |
geo::TPCID | GeometryCore::GetBeginID< geo::TPCID, geo::CryostatID > (geo::CryostatID const &id) const |
template<> | |
geo::TPCID | GeometryCore::GetEndID< geo::TPCID, geo::CryostatID > (geo::CryostatID const &id) const |
template<> | |
geo::PlaneID | GeometryCore::GetBeginID< geo::PlaneID, geo::CryostatID > (geo::CryostatID const &id) const |
template<> | |
geo::PlaneID | GeometryCore::GetEndID< geo::PlaneID, geo::CryostatID > (geo::CryostatID const &id) const |
static bool | sortorderOpDets (const OpDetGeo &t1, const OpDetGeo &t2) |
static bool | sortAuxDetStandard (const AuxDetGeo &ad1, const AuxDetGeo &ad2) |
static bool | sortAuxDetSensitiveStandard (const AuxDetSensitiveGeo &ad1, const AuxDetSensitiveGeo &ad2) |
static bool | sortCryoStandard (const CryostatGeo &c1, const CryostatGeo &c2) |
static bool | sortTPCStandard (const TPCGeo &t1, const TPCGeo &t2) |
static bool | sortPlaneStandard (const PlaneGeo &p1, const PlaneGeo &p2) |
static bool | sortWireStandard (WireGeo const &w1, WireGeo const &w2) |
template<typename Point , typename Vector > | |
IntersectionPointAndOffsets< Point > | LineClosestPointAndOffsets (Point const &startA, Vector const &dirA, Point const &startB, Vector const &dirB) |
Returns the point of a line that is closest to a second line. More... | |
template<typename Point , typename Vector > | |
Point | LineClosestPoint (Point const &startA, Vector const &dirA, Point const &startB, Vector const &dirB) |
Returns the point of a line that is closest to a second line. More... | |
template<typename Point , typename UnitVector > | |
IntersectionPointAndOffsets< Point > | LineClosestPointAndOffsetsWithUnitVectors (Point const &startA, UnitVector const &dirA, Point const &startB, UnitVector const &dirB) |
Returns the point of a line that is closest to a second line. More... | |
template<typename Point , typename UnitVector > | |
Point | LineClosestPointWithUnitVectors (Point const &startA, UnitVector const &dirA, Point const &startB, UnitVector const &dirB) |
Returns the point of a line that is closest to a second line. More... | |
template<typename StoredMatrix , typename ITER > | |
static StoredMatrix | transformationFromPath (ITER begin, ITER end) |
Builds a matrix to go from local to world coordinates in one step. More... | |
template<typename StoredMatrix > | |
static StoredMatrix | transformationFromPath (std::vector< TGeoNode const * > const &path, size_t depth) |
Builds a matrix to go from local to world coordinates in one step. More... | |
template<typename Dest , typename Src > | |
decltype(auto) | convertTransformationMatrix (Src &&trans) |
Converts a transformation matrix into Dest format. More... | |
template<typename Trans > | |
decltype(auto) | makeTransformationMatrix (Trans &&trans) |
Converts a transformation matrix into a geo::TransformationMatrix . More... | |
geo::Point_t | WiresIntersection (geo::WireGeo const &wireA, geo::WireGeo const &wireB) |
Returns the point of wireA that is closest to wireB . More... | |
geo::IntersectionPointAndOffsets< geo::Point_t > | WiresIntersectionAndOffsets (geo::WireGeo const &wireA, geo::WireGeo const &wireB) |
Returns the point of wireA that is closest to wireB . More... | |
std::string | SignalTypeName (geo::SigType_t sigType) |
Returns the name of the specified signal type. More... | |
DriftPartitions | buildDriftVolumes (geo::CryostatGeo const &cryo) |
Creates a DriftPartitions object from the TPCs in a cryostat. More... | |
Geometry element IDs | |
std::ostream & | operator<< (std::ostream &out, CryostatID const &cid) |
Generic output of CryostatID to stream. More... | |
std::ostream & | operator<< (std::ostream &out, OpDetID const &oid) |
Generic output of OpDetID to stream. More... | |
std::ostream & | operator<< (std::ostream &out, TPCID const &tid) |
Generic output of TPCID to stream. More... | |
std::ostream & | operator<< (std::ostream &out, PlaneID const &pid) |
Generic output of PlaneID to stream. More... | |
std::ostream & | operator<< (std::ostream &out, WireID const &wid) |
Generic output of WireID to stream. More... | |
ID comparison operators | |
The result of comparison with invalid IDs is undefined. | |
constexpr bool | operator== (CryostatID const &a, CryostatID const &b) |
Comparison: the IDs point to the same cryostat (validity is ignored) More... | |
constexpr bool | operator!= (CryostatID const &a, CryostatID const &b) |
Comparison: the IDs point to different cryostats (validity is ignored) More... | |
constexpr bool | operator< (CryostatID const &a, CryostatID const &b) |
Order cryostats with increasing ID. More... | |
constexpr bool | operator== (OpDetID const &a, OpDetID const &b) |
Comparison: the IDs point to same optical detector (validity is ignored) More... | |
constexpr bool | operator!= (OpDetID const &a, OpDetID const &b) |
Comparison: IDs point to different optical detectors (validity is ignored) More... | |
constexpr bool | operator< (OpDetID const &a, OpDetID const &b) |
Order OpDetID in increasing Cryo, then OpDet. More... | |
constexpr bool | operator== (TPCID const &a, TPCID const &b) |
Comparison: the IDs point to the same TPC (validity is ignored) More... | |
constexpr bool | operator!= (TPCID const &a, TPCID const &b) |
Comparison: the IDs point to different TPCs (validity is ignored) More... | |
constexpr bool | operator< (TPCID const &a, TPCID const &b) |
Order TPCID in increasing Cryo, then TPC. More... | |
constexpr bool | operator== (PlaneID const &a, PlaneID const &b) |
Comparison: the IDs point to the same plane (validity is ignored) More... | |
constexpr bool | operator!= (PlaneID const &a, PlaneID const &b) |
Comparison: the IDs point to different planes (validity is ignored) More... | |
constexpr bool | operator< (PlaneID const &a, PlaneID const &b) |
Order PlaneID in increasing TPC, then plane. More... | |
constexpr bool | operator== (WireID const &a, WireID const &b) |
Comparison: the IDs point to the same wire (validity is ignored) More... | |
constexpr bool | operator!= (WireID const &a, WireID const &b) |
Comparison: the IDs point to different wires (validity is ignored) More... | |
constexpr bool | operator< (WireID const &a, WireID const &b) |
Vector types for the standard LArSoft geometry. | |
LArSoft geometry provides two main types of vectors in 3D space:
Both vectors are supposed to represent:
These types constitute the basic objects the geometry works with. All interfaces should support them.
The same type of vectors, but in a different coordinate system representation, can be obtained by using using LocalPoint_t = geo::Point3DBase_t<LocalCoordinateTag>; ( using PointF_t = geo::GenPoint3DBase_t<float>; using VectorF_t = geo::GenVector3DBase_t<float>; | |
using | Length_t = double |
Type used for coordinates and distances. They are measured in centimeters. More... | |
using | GlobalCoords = ROOT::Math::GlobalCoordinateSystemTag |
Tag for vectors in the global coordinate system. More... | |
using | Vector_t = ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > |
Type for representation of momenta in 3D space. More... | |
using | Point_t = ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > |
Type for representation of position in physical 3D space. More... | |
template<typename CoordSystemTag > | |
using | VectorIn_t = Vector3DBase_t< CoordSystemTag > |
Type for representation of momenta in 3D space. More... | |
template<typename CoordSystemTag > | |
using | PointIn_t = Point3DBase_t< CoordSystemTag > |
Type for representation of positions in 3D space. More... | |
using | Rotation_t = ROOT::Math::Rotation3D |
Type for representation of space rotations. More... | |
template<typename Vector = Vector_t> | |
constexpr Vector | Xaxis () |
Returns a x axis vector of the specified type. More... | |
template<typename Vector = Vector_t> | |
constexpr Vector | Yaxis () |
Returns a y axis vector of the specified type. More... | |
template<typename Vector = Vector_t> | |
constexpr Vector | Zaxis () |
Returns a z axis vector of the specified type. More... | |
template<typename Point = Point_t> | |
constexpr Point | origin () |
Returns a origin position with a point of the specified type. More... | |
Geometry enumerators | |
enum | coordinates { kXCoord, kYCoord, kZCoord } |
enum | _plane_proj { kU, kV, kW, kZ =kW, kY, kX, k3D, kUnknown } |
Enumerate the possible plane projections. More... | |
enum | _plane_orient { kHorizontal, kVertical } |
enum | _plane_sigtype { kInduction, kCollection, kMysteryType } |
enum | driftdir { kUnknownDrift, kPos, kNeg, kPosX = kPos, kNegX = kNeg } |
Drift direction: positive or negative. More... | |
typedef enum geo::coordinates | Coord_t |
typedef enum geo::_plane_proj | View_t |
Enumerate the possible plane projections. More... | |
typedef enum geo::_plane_orient | Orient_t |
typedef enum geo::_plane_sigtype | SigType_t |
typedef enum geo::driftdir | DriftDirection_t |
Drift direction: positive or negative. More... | |
LArSoft geometry interface.
Detector geometry definition and interface.
ROOT libraries.
Namespace collecting geometry-related classes utilities.
Writes a sumdata::RunData record into the run(s).
Verifies that the geometry check information is available.
geo::GeometryCore
The geo
namespace includes all LArSoft data types, classes and functions related to detector geometry.
For more guidance, dee the LArSoft geometry module.
A copy of the same data product is put into each of the runs on opening.
Name
(string, mandatory): name of the detector to be stored in the sumdata::RunData
data productTrackLineFitAlg class
Bruce Baller, balle r@fn al.go v
Algorithm for fitting a 3D line given a number of points in 3 wire planes
TrackTrajectoryAlg class
Bruce Baller, balle r@fn al.go v
Algorithm fitting a 3D trajectory through a set of hit pairs
typedef enum geo::coordinates geo::Coord_t |
typedef enum geo::driftdir geo::DriftDirection_t |
Drift direction: positive or negative.
Do not use this type to distinguish different drift axes: e.g., negative x drift and negative z drift are both by kNeg
.
using geo::GenPoint3DBase_t = typedef ROOT::Math::PositionVector3D<ROOT::Math::Cartesian3D<T>, C> |
Type of 3D point.
T | data type for coordinate representation |
C | coordinate system tag (default: global coordinates) |
Definition at line 82 of file geo_vectors.h.
using geo::GenVector3DBase_t = typedef ROOT::Math::DisplacementVector3D<ROOT::Math::Cartesian3D<T>, C> |
Type of 3D displacement vector.
T | data type for coordinate representation |
C | coordinate system tag (default: global coordinates) |
Definition at line 75 of file geo_vectors.h.
using geo::GeoNodeIterator_t = typedef std::vector<TGeoNode const*>::const_iterator |
Definition at line 36 of file LocalTransformation.h.
typedef ROOT::Math::GlobalCoordinateSystemTag geo::GlobalCoords |
Tag for vectors in the global coordinate system.
A vector tagged as "global" is expected to be represented in the global (or "world") coordinate system.
That system is the one the detector geometry is described in, and it is defined by the GDML detector description. The linear coordinates are described in centimeters.
Definition at line 150 of file geo_vectors.h.
typedef double geo::Length_t |
Type used for coordinates and distances. They are measured in centimeters.
Definition at line 137 of file geo_vectors.h.
using geo::OpticalPoint3DBase_t = typedef GenPoint3DBase_t<T, OpticalLocalCoordinateSystemTag> |
Type of optical local 3D point.
T | data type for coordinate representation |
Definition at line 55 of file geo_optical_vectors.h.
using geo::OpticalPoint_t = typedef OpticalPoint3DBase_t<double> |
Type of optical 3D point with representation in double precision.
Definition at line 63 of file geo_optical_vectors.h.
using geo::OpticalVector3DBase_t = typedef GenVector3DBase_t<T, OpticalLocalCoordinateSystemTag> |
Type of optical local 3D displacement vector.
T | data type for coordinate representation |
Definition at line 49 of file geo_optical_vectors.h.
using geo::OpticalVector_t = typedef OpticalVector3DBase_t<double> |
Type of optical 3D displacement vector with representation in double precision.
Definition at line 60 of file geo_optical_vectors.h.
typedef enum geo::_plane_orient geo::Orient_t |
using geo::Point3DBase_t = typedef GenPoint3DBase_t<double, C> |
Type of 3D point with representation in double precision.
C | coordinate system tag |
Definition at line 92 of file geo_vectors.h.
typedef ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > geo::Point_t |
Type for representation of position in physical 3D space.
A point represents a position in 3D space. As such, it makes no sense to add points, and the difference between two points is not a point any more (it is, in fact, a geo::Vector_t
). Scaling and norm of a point also have no meaning.
A vector can be added to a point, resulting in another point.
Note that middlePoint()
function and MiddlePointAccumulator
class are provided to facilitate the computation of a middle point using any type of vector and in particular geo::Point_t
.
Definition at line 184 of file geo_vectors.h.
using geo::PointIn_t = typedef Point3DBase_t<CoordSystemTag> |
Type for representation of positions in 3D space.
CoordSystemTag | the coordinate system tag for this point |
This point type is equivalent to geo::Point_t
but it's tagged as from a different coordinate system.
Definition at line 205 of file geo_vectors.h.
typedef ROOT::Math::Rotation3D geo::Rotation_t |
Type for representation of space rotations.
Definition at line 209 of file geo_vectors.h.
typedef enum geo::_plane_sigtype geo::SigType_t |
using geo::TransformationMatrix = typedef ROOT::Math::Transform3D |
Type of transformation matrix used in geometry.
This type is used for storing the transformation matrices of the various geometry description objects (e.g. geo::WireGeo
, geo::OpDetGeo
, ...).
Definition at line 30 of file TransformationMatrix.h.
using geo::Vector3DBase_t = typedef GenVector3DBase_t<double, C> |
Type of 3D displacement vector with representation in double precision.
C | coordinate system tag |
Definition at line 87 of file geo_vectors.h.
typedef ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > geo::Vector_t |
Type for representation of momenta in 3D space.
A vector represents a direction and intensity, or a displacement respect to an unspecified starting point. Vectors can be added or subtracted, resulting in still a vector. Their modulus can also be scaled.
Definition at line 164 of file geo_vectors.h.
using geo::VectorIn_t = typedef Vector3DBase_t<CoordSystemTag> |
Type for representation of momenta in 3D space.
CoordSystemTag | the coordinate system tag for this vector |
This vector type is equivalent to geo::Vector_t
but it's tagged as from a different coordinate system.
Definition at line 195 of file geo_vectors.h.
typedef enum geo::_plane_proj geo::View_t |
Enumerate the possible plane projections.
using geo::WirePtr = typedef WireGeo const* |
Definition at line 48 of file PlaneGeo.h.
enum geo::_plane_orient |
Enumerator | |
---|---|
kHorizontal |
Planes that are in the horizontal plane. |
kVertical |
Planes that are in the vertical plane (e.g. ArgoNeuT). |
Definition at line 139 of file geo_types.h.
enum geo::_plane_proj |
Enumerate the possible plane projections.
Definition at line 128 of file geo_types.h.
enum geo::_plane_sigtype |
Enumerator | |
---|---|
kInduction |
Signal from induction planes. |
kCollection |
Signal from collection planes. |
kMysteryType |
Who knows? |
Definition at line 144 of file geo_types.h.
enum geo::coordinates |
Enumerator | |
---|---|
kXCoord |
X coordinate. |
kYCoord |
Y coordinate. |
kZCoord |
Z coordinate. |
Definition at line 121 of file geo_types.h.
enum geo::driftdir |
Drift direction: positive or negative.
Do not use this type to distinguish different drift axes: e.g., negative x drift and negative z drift are both by kNeg
.
Definition at line 157 of file geo_types.h.
geo::DriftPartitions geo::buildDriftVolumes | ( | geo::CryostatGeo const & | cryo | ) |
Creates a DriftPartitions
object from the TPCs in a cryostat.
cryo | the cryostat with the TPCs to be partitioned. |
The algorithm groups all TPCs with the same drift direction and readout planes with similar drift coordinates. A "global drift direction" is chosen. The drift directions of all TPCs in the cryostat are required to be parallel (at most with different verse). Projections of the TPC wire planes on this direction determine TPC grouping. TPCs with planes within a small range (typically, 10 plane pitches) of this projected coordinate are grouped together. TPCs with opposite drift directions are still kept in different groups.
The information of each drift volume is kept in a DriftVolume_t
class which contains a hierarchical structure of type geo::part::Partition
(with data geo::TPCGeo const
coming directly from the geometry). This structure describes the topology of the TPCs within the drift volume.
Definition at line 1099 of file DriftPartitions.cxx.
|
inline |
Find the distance of closest approach between point and line
point | - xyz coordinates of point |
intercept | - xyz coodinates of point on line |
slopes | - unit vector direction (need not be normalized) |
closest | - on output, point on line that is closest |
Definition at line 96 of file geo.h.
decltype(auto) geo::convertTransformationMatrix | ( | Src && | trans | ) |
Converts a transformation matrix into Dest
format.
Definition at line 323 of file LocalTransformation.h.
|
inline |
Determine whether or not track intersects box of volume: ( x_hi - x_lo ) x ( y_hi - y_lo ) x ( z_hi - z_lo )
x_hi | - x box coordinates in space w.r.t. the origin |
x_lo | - x box coordinates in space w.r.t. the origin |
y_hi | - y box coordinates in space w.r.t. the origin |
y_lo | - y box coordinates in space w.r.t. the origin |
z_hi | - z box coordinates in space w.r.t. the origin |
z_lo | - z box coordinates in space w.r.t. the origin |
x0[] | - initial position of the particle |
gradient[] | - initial gradient of particle position |
point[] | (output) - position of the particle at intersection |
geo::BoxBoundedGeo::GetIntersection()
*** assumes particle's track is linear
Definition at line 148 of file geo.h.
|
inline |
Definition at line 5819 of file GeometryCore.h.
|
inline |
Definition at line 5809 of file GeometryCore.h.
|
inline |
Definition at line 5824 of file GeometryCore.h.
|
inline |
Definition at line 5814 of file GeometryCore.h.
Point geo::LineClosestPoint | ( | Point const & | startA, |
Vector const & | dirA, | ||
Point const & | startB, | ||
Vector const & | dirB | ||
) |
Returns the point of a line that is closest to a second line.
Point | a type describing a point |
Vector | a type describing a direction (displacement vector) |
refA | a reference point on the first line |
dirA | the direction of the first line |
refB | a reference point on the second line |
dirB | the direction of the second line |
The point of line A
that is closest to line B
is returned.
The two lines are assumed not to be parallel, and when this prerequisite is not met the behaviour is undefined.
A separate function, LineClosestPointAndOffsets()
, also returns the offset of the intersection from the two reference points.
The following operations between points, vectors and scalars must be defined:
Vector operator- (Point, Point)
: the difference of two points always exists and it returns a Vector
;Point operator+ (Point, Vector)
: translation of a point by a displacement vector;Vector operator* (Vector, double)
: vector scaling by a real factor;double dot(Vector, Vector)
: scalar (inner) product of two vectors. IntersectionPointAndOffsets<Point> geo::LineClosestPointAndOffsets | ( | Point const & | startA, |
Vector const & | dirA, | ||
Point const & | startB, | ||
Vector const & | dirB | ||
) |
Returns the point of a line that is closest to a second line.
Point | a type describing a point |
Vector | a type describing a direction (displacement vector) |
refA | a reference point on the first line |
dirA | the direction of the first line |
refB | a reference point on the second line |
dirB | the direction of the second line |
point
: the point of A
closest to B
, offset1
: its offset on A
in units of dirA
, offset2
: its offset on B
in units of dirB
The point of line A
that is closest to line B
is returned.
This function is equivalent to LineClosestPoint()
, but it returns in addition the offsets of the intersection point from the reference points of the two lines, in the direction specified by dirA
/dirB
.
The return value is a data structure of type geo::IntersectionPointAndOffsets
, which is most easily unpacked immediately:
will set point
to geo::Point{ 2, 1, 1 }
, offsetA
to 2
and offsetB
to 2.309...
. To reassign the variables after they have been defined, though, a temporary structure is needed:
(point
to geo::Point{ 2, 1, 0 }
, offsetA
to 2.039...
and offsetB
to 2
, because the intersection point is always on the first line).
IntersectionPointAndOffsets<Point> geo::LineClosestPointAndOffsetsWithUnitVectors | ( | Point const & | startA, |
UnitVector const & | dirA, | ||
Point const & | startB, | ||
UnitVector const & | dirB | ||
) |
Returns the point of a line that is closest to a second line.
Point | a type describing a point |
UnitVector | a type describing a direction (unit vector) |
refA | a reference point on the first line |
dirA | the direction of the first line (unity-normed) |
refB | a reference point on the second line |
dirB | the direction of the second line (unity-normed) |
point
: the point of A
closest to B
, offset1
: its offset on A
in units of dirA
(i.e. unity), offset2
: its offset on B
in units of dirB
(i.e. unity) The point of line A
that is closest to line B
is returned.
The return value is a data structure of type geo::IntersectionPointAndOffsets
, which is most easily unpacked immediately:
will set point
to geo::Point{ 2, 1, 1 }
, offsetA
to 1
and offsetB
to 2
. To reassign the variables after they have been defined, instead:
(point
to geo::Point{ 2, 1, 0 }
, offsetA
to 2
and offsetB
to 1
, because the intersection point is always on the first line).
Point geo::LineClosestPointWithUnitVectors | ( | Point const & | startA, |
UnitVector const & | dirA, | ||
Point const & | startB, | ||
UnitVector const & | dirB | ||
) |
Returns the point of a line that is closest to a second line.
Point | a type describing a point |
UnitVector | a type describing a direction (unit vector) |
refA | a reference point on the first line |
dirA | the direction of the first line (unity-normed) |
refB | a reference point on the second line |
dirB | the direction of the second line (unity-normed) |
The point of line A
that is closest to line B
is returned.
The two lines are assumed not to be parallel, and when this prerequisite is not met the behaviour is undefined.
The two directions are required to have norm 1
. While formally if this prerequisite is not met the result is undefined, the result will be still mostly correct if their norm departs from unity only by a rounding error. The more the vectors deviate from that condition, the larger the error in the result.
A separate function, LineClosestPointAndOffsetsWithUnitVectors()
, also returne the offset of the intersection from the two reference points.
The following operations between points, vectors and scalars must be defined:
Vector operator* (UnitVector, double)
: scaling of a unit vector by a real factor to produce a non-unit vector;Vector operator- (Point, Point)
: the difference of two points always exists and it returns a Vector
;Point operator+ (Point, Vector)
: translation of a point by a displacement vector;double dot(Vector, UnitVector)
, double dot(UnitVector, UnitVector)
: scalar (inner) product of one unit vector and a vector, or two unit vectors. decltype(auto) geo::makeTransformationMatrix | ( | Trans && | trans | ) |
Converts a transformation matrix into a geo::TransformationMatrix
.
Definition at line 35 of file TransformationMatrix.h.
|
inline |
Comparison: the IDs point to different cryostats (validity is ignored)
Definition at line 702 of file geo_types.h.
Comparison: IDs point to different optical detectors (validity is ignored)
Definition at line 715 of file geo_types.h.
Comparison: the IDs point to different TPCs (validity is ignored)
Definition at line 736 of file geo_types.h.
Comparison: the IDs point to different planes (validity is ignored)
Definition at line 760 of file geo_types.h.
Comparison: the IDs point to different wires (validity is ignored)
Definition at line 784 of file geo_types.h.
|
inline |
Order TPCID in increasing Cryo, then TPC.
Definition at line 743 of file geo_types.h.
Order PlaneID in increasing TPC, then plane.
Definition at line 767 of file geo_types.h.
Definition at line 791 of file geo_types.h.
|
inline |
Generic output of CryostatID to stream.
Definition at line 653 of file geo_types.h.
|
inline |
Generic output of OpDetID to stream.
Definition at line 660 of file geo_types.h.
|
inline |
Generic output of TPCID to stream.
Definition at line 667 of file geo_types.h.
|
inline |
Generic output of PlaneID to stream.
Definition at line 674 of file geo_types.h.
|
inline |
|
inline |
Comparison: the IDs point to the same cryostat (validity is ignored)
Definition at line 698 of file geo_types.h.
Comparison: the IDs point to same optical detector (validity is ignored)
Definition at line 711 of file geo_types.h.
Comparison: the IDs point to the same TPC (validity is ignored)
Definition at line 729 of file geo_types.h.
Comparison: the IDs point to the same plane (validity is ignored)
Definition at line 753 of file geo_types.h.
Comparison: the IDs point to the same wire (validity is ignored)
Definition at line 777 of file geo_types.h.
constexpr Point geo::origin | ( | ) |
Returns a origin position with a point of the specified type.
Definition at line 227 of file geo_vectors.h.
|
inline |
Project along a direction from a particular starting point to the edge of a box
xyz | - The starting x,y,z location. Must be inside box. |
dxyz | - Direction vector |
xlo | - Low edge of box in x |
xhi | - Low edge of box in x |
ylo | - Low edge of box in y |
yhi | - Low edge of box in y |
zlo | - Low edge of box in z |
zhi | - Low edge of box in z |
xyzout | - On output, the position at the box edge |
Note: It should be safe to use the same array for input and output.
Definition at line 49 of file geo.h.
std::string geo::SignalTypeName | ( | geo::SigType_t | sigType | ) |
Definition at line 25 of file GeoObjectSorter35.cxx.
Definition at line 20 of file GeoObjectSorterAPA.cxx.
Definition at line 26 of file GeoObjectSorterCRM.cxx.
|
static |
Definition at line 55 of file GeoObjectSorter35.cxx.
|
static |
Definition at line 47 of file GeoObjectSorterAPA.cxx.
|
static |
Definition at line 43 of file GeoObjectSorterCRM.cxx.
|
static |
Definition at line 43 of file GeoObjectSorterStandard.cxx.
Definition at line 27 of file GeoObjectSorterStandard.cxx.
|
static |
Definition at line 88 of file GeoObjectSorter35.cxx.
|
static |
Definition at line 76 of file GeoObjectSorterAPA.cxx.
|
static |
Definition at line 60 of file GeoObjectSorterCRM.cxx.
|
static |
Definition at line 58 of file GeoObjectSorterStandard.cxx.
Definition at line 10 of file OpDetSorter.h.
Definition at line 16 of file GeoObjectSorter.cxx.
Definition at line 136 of file GeoObjectSorter35.cxx.
Definition at line 118 of file GeoObjectSorterAPA.cxx.
Definition at line 93 of file GeoObjectSorterCRM.cxx.
Definition at line 86 of file GeoObjectSorterStandard.cxx.
Definition at line 101 of file GeoObjectSorter35.cxx.
Definition at line 89 of file GeoObjectSorterAPA.cxx.
Definition at line 73 of file GeoObjectSorterCRM.cxx.
Definition at line 71 of file GeoObjectSorterStandard.cxx.
Definition at line 131 of file GeoObjectSorterAPA.cxx.
Definition at line 107 of file GeoObjectSorterCRM.cxx.
Definition at line 108 of file GeoObjectSorterStandard.cxx.
|
static |
Builds a matrix to go from local to world coordinates in one step.
|
static |
Builds a matrix to go from local to world coordinates in one step.
|
inline |
Returns the point of wireA
that is closest to wireB
.
wireA | the first wire |
wireB | the other wire |
wireA
closest to wireB
The point of wireA
that is closest to wireB
is returned.
The two wires are assumed not to be parallel, and when this prerequisite is not met the behaviour is undefined.
A separate function, WiresIntersectionAndOffsets()
, also returns the offset of the intersection from the two reference points.
Definition at line 654 of file WireGeo.h.
|
inline |
Returns the point of wireA
that is closest to wireB
.
wireA | the first wire |
wireB | the other wire |
point
: the point of wireA
closest to wireB
; offset1
: its offset on wireA
[cm]; offset2
: its offset on wireB
[cm] Computes the point of wireA
that is closest to wireB
.
The returned intersection point is the same as for geo::WiresIntersection()
. The return value is actually triplet, though, which is most easily unpacked immediately:
The two other elements of the triplets are the distances of the intersection point from the center of this wire (offset
in the example) and from the center of the other
wire (otherOffset
), in centimeters. The sign of the offsets are positive if the intersection points lie on the side pointed by the Direction()
of the respective wires.
To reassign the variables after they have been defined, instead:
Definition at line 668 of file WireGeo.h.
constexpr Vector geo::Xaxis | ( | ) |
Returns a x axis vector of the specified type.
Definition at line 215 of file geo_vectors.h.
constexpr Vector geo::Yaxis | ( | ) |
Returns a y axis vector of the specified type.
Definition at line 219 of file geo_vectors.h.
constexpr Vector geo::Zaxis | ( | ) |
Returns a z axis vector of the specified type.
Definition at line 223 of file geo_vectors.h.