LArSoft  v08_61_00
Liquid Argon Software toolkit - http://larsoft.org/
geo::GeometryCore Class Reference

Description of geometry of one entire detector. More...

#include "GeometryCore.h"

Inheritance diagram for geo::GeometryCore:
geo::Geometry

Classes

struct  Segment
 Simple class with two points (a pair with aliases). More...
 

Public Types

using instead = geo::Length_t
 
using Segment_t = Segment< DefaultPoint_t >
 
using CryostatList_t = GeometryData_t::CryostatList_t
 Type of list of cryostats. More...
 
using AuxDetList_t = GeometryData_t::AuxDetList_t
 Type of list of auxiliary detectors. More...
 
using cryostat_id_iterator = geo::cryostat_id_iterator
 Forward-iterator browsing all cryostat IDs in the detector. More...
 
using cryostat_iterator = geo::cryostat_iterator
 Forward-iterator browsing all cryostats in the detector. More...
 
using TPC_id_iterator = geo::TPC_id_iterator
 Forward-iterator browsing all TPC IDs in the detector. More...
 
using TPC_iterator = geo::TPC_iterator
 Forward-iterator browsing all TPCs in the detector. More...
 
using plane_id_iterator = geo::plane_id_iterator
 Forward-iterator browsing all plane IDs in the detector. More...
 
using plane_iterator = geo::plane_iterator
 Forward-iterator browsing all planes in the detector. More...
 
using wire_id_iterator = geo::wire_id_iterator
 Forward-iterator browsing all wire IDs in the detector. More...
 
using wire_iterator = geo::wire_iterator
 Forward-iterator browsing all wires in the detector. More...
 

Public Member Functions

 GeometryCore (fhicl::ParameterSet const &pset)
 Initialize geometry from a given configuration. More...
 
 ~GeometryCore ()
 Destructor. More...
 
 GeometryCore (GeometryCore const &)=delete
 
 GeometryCore (GeometryCore &&)=delete
 
GeometryCoreoperator= (GeometryCore const &)=delete
 
GeometryCoreoperator= (GeometryCore &&)=delete
 
double DefaultWiggle () const
 Returns the tolerance used in looking for positions. More...
 
std::string ROOTFile () const
 Returns the full directory path to the geometry file source. More...
 
std::string GDMLFile () const
 Returns the full directory path to the GDML file source. More...
 
std::vector< TGeoNode const * > FindAllVolumes (std::set< std::string > const &vol_names) const
 Returns all the nodes with volumes with any of the specified names. More...
 
std::vector< std::vector< TGeoNode const * > > FindAllVolumePaths (std::set< std::string > const &vol_names) const
 Returns paths of all nodes with volumes with the specified names. More...
 
TGeoMaterial const * Material (geo::Point_t const &point) const
 Returns the material at the specified position. More...
 
template<typename Stream >
void Print (Stream &&out, std::string indent=" ") const
 Prints geometry information with maximum verbosity. More...
 
std::string Info (std::string indent=" ") const
 Returns a string with complete geometry information. More...
 
template<typename GeoID >
GeoID GetBeginID () const
 Returns the ID of the first element of the detector. More...
 
template<typename GeoID >
GeoID GetNextID (GeoID const &id) const
 Returns the ID next to the specified one. More...
 
template<typename GeoID >
GeoID GetEndID () const
 Returns the (possibly invalid) ID after the last subelement of the detector. More...
 
template<typename GeoID , typename ContextID >
GeoID GetBeginID (ContextID const &id) const
 Returns the ID of the first subelement of the specified element. More...
 
template<typename GeoID , typename ContextID >
GeoID GetEndID (ContextID const &id) const
 Returns the (possibly invalid) ID after the last subelement of the specified element. More...
 
geo::CryostatGeo const * PositionToCryostatPtr (geo::Point_t const &point) const
 Returns the cryostat at specified location. More...
 
geo::CryostatID PositionToCryostatID (geo::Point_t const &point) const
 Returns the ID of the cryostat at specified location. More...
 
CryostatGeo const & PositionToCryostat (double const worldLoc[3], geo::CryostatID &cid) const
 Returns the cryostat at specified location. More...
 
CryostatGeo const & PositionToCryostat (double const worldLoc[3], unsigned int &cstat) const
 Returns the cryostat at specified location. More...
 
void GetBeginID (geo::CryostatID &id) const
 Initializes the specified ID with the ID of the first cryostat. More...
 
void GetEndID (geo::CryostatID &id) const
 Initializes the specified ID with the invalid ID after the last cryostat. More...
 
bool IncrementID (geo::CryostatID &id) const
 
cryostat_id_iterator begin_cryostat_id () const
 Returns an iterator pointing to the first cryostat ID. More...
 
cryostat_id_iterator end_cryostat_id () const
 Returns an iterator pointing after the last cryostat ID. More...
 
cryostat_iterator begin_cryostat () const
 Returns an iterator pointing to the first cryostat. More...
 
cryostat_iterator end_cryostat () const
 Returns an iterator pointing after the last cryostat. More...
 
IteratorBox< cryostat_id_iterator,&GeometryCore::begin_cryostat_id,&GeometryCore::end_cryostat_idIterateCryostatIDs () const
 Enables ranged-for loops on all cryostat IDs of the detector. More...
 
IteratorBox< cryostat_iterator,&GeometryCore::begin_cryostat,&GeometryCore::end_cryostatIterateCryostats () const
 Enables ranged-for loops on all cryostats of the detector. More...
 
void CryostatBoundaries (double *boundaries, geo::CryostatID const &cid) const
 Returns the boundaries of the specified cryostat. More...
 
void CryostatBoundaries (double *boundaries, unsigned int cstat=0) const
 Returns the boundaries of the specified cryostat. More...
 
bool HasTPC (geo::TPCID const &tpcid) const
 Returns whether we have the specified TPC. More...
 
bool HasElement (geo::TPCID const &tpcid) const
 Returns whether we have the specified TPC. More...
 
geo::TPCID FindTPCAtPosition (double const worldLoc[3]) const
 Returns the ID of the TPC at specified location. More...
 
geo::TPCGeo const * PositionToTPCptr (geo::Point_t const &point) const
 Returns the TPC at specified location. More...
 
TPCGeo const & PositionToTPC (double const worldLoc[3], unsigned int &tpc, unsigned int &cstat) const
 Returns the TPC at specified location. More...
 
TPCGeo const & PositionToTPC (double const worldLoc[3], TPCID &tpcid) const
 Returns the TPC at specified location. More...
 
geo::TPCID PositionToTPCID (geo::Point_t const &point) const
 Returns the ID of the TPC at specified location. More...
 
void GetBeginID (geo::TPCID &id) const
 Initializes the specified ID with the ID of the first TPC. More...
 
void GetEndID (geo::TPCID &id) const
 Initializes the specified ID with the invalid ID after the last TPC. More...
 
bool IncrementID (geo::TPCID &id) const
 
geo::TPCID GetBeginTPCID (geo::CryostatID const &id) const
 Returns the ID of the first TPC in the specified cryostat. More...
 
geo::TPCID GetEndTPCID (geo::CryostatID const &id) const
 
TPC_id_iterator begin_TPC_id () const
 Returns an iterator pointing to the first TPC ID in the detector. More...
 
TPC_id_iterator end_TPC_id () const
 Returns an iterator pointing after the last TPC ID in the detector. More...
 
TPC_id_iterator begin_TPC_id (geo::CryostatID const &cid) const
 
TPC_id_iterator end_TPC_id (geo::CryostatID const &cid) const
 
TPC_iterator begin_TPC () const
 Returns an iterator pointing to the first TPC in the detector. More...
 
TPC_iterator end_TPC () const
 Returns an iterator pointing after the last TPC in the detector. More...
 
TPC_iterator begin_TPC (geo::CryostatID const &cid) const
 Returns an iterator pointing to the first TPC in the detector. More...
 
TPC_iterator end_TPC (geo::CryostatID const &cid) const
 Returns an iterator pointing after the last TPC in the detector. More...
 
IteratorBox< TPC_id_iterator,&GeometryCore::begin_TPC_id,&GeometryCore::end_TPC_idIterateTPCIDs () const
 Enables ranged-for loops on all TPC IDs of the detector. More...
 
LocalIteratorBox< TPC_id_iterator, geo::CryostatID,&GeometryCore::begin_TPC_id,&GeometryCore::end_TPC_idIterateTPCIDs (geo::CryostatID const &cid) const
 Enables ranged-for loops on all TPC IDs of the specified cryostat. More...
 
void IterateTPCIDs (geo::TPCID const &pid) const =delete
 IterateTPCIDs() is not supported on TPC IDs. More...
 
void IterateTPCIDs (geo::PlaneID const &pid) const =delete
 IterateTPCIDs() is not supported on plane IDs. More...
 
void IterateTPCIDs (geo::WireID const &pid) const =delete
 IterateTPCIDs() is not supported on wire IDs. More...
 
void IterateTPCIDs (readout::TPCsetID const &) const =delete
 IterateTPCIDs() is not supported on readout IDs. More...
 
void IterateTPCIDs (readout::ROPID const &) const =delete
 IterateTPCIDs() is not supported on readout IDs. More...
 
IteratorBox< TPC_iterator,&GeometryCore::begin_TPC,&GeometryCore::end_TPCIterateTPCs () const
 Enables ranged-for loops on all TPCs of the detector. More...
 
LocalIteratorBox< TPC_iterator, geo::CryostatID,&GeometryCore::begin_TPC,&GeometryCore::end_TPCIterateTPCs (geo::CryostatID const &cid) const
 Enables ranged-for loops on all TPCs of the specified cryostat. More...
 
void IterateTPCs (geo::TPCID const &pid) const =delete
 IterateTPCs() is not supported on TPC IDs. More...
 
void IterateTPCs (geo::PlaneID const &pid) const =delete
 IterateTPCs() is not supported on plane IDs. More...
 
void IterateTPCs (geo::WireID const &pid) const =delete
 IterateTPCs() is not supported on wire IDs. More...
 
void IterateTPCs (readout::TPCsetID const &) const =delete
 IterateTPCs() is not supported on readout IDs. More...
 
void IterateTPCs (readout::ROPID const &) const =delete
 IterateTPCs() is not supported on readout IDs. More...
 
unsigned int Nviews () const
 Returns the number of views (different wire orientations) More...
 
std::set< PlaneID > const & PlaneIDs () const
 Returns a list of possible PlaneIDs in the detector. More...
 
void GetBeginID (geo::PlaneID &id) const
 Initializes the specified ID with the ID of the first plane. More...
 
void GetEndID (geo::PlaneID &id) const
 Initializes the specified ID with the invalid ID after the last plane. More...
 
bool IncrementID (geo::PlaneID &id) const
 
geo::PlaneID GetBeginPlaneID (geo::CryostatID const &id) const
 Returns the ID of the first plane of the specified cryostat. More...
 
geo::PlaneID GetEndPlaneID (geo::CryostatID const &id) const
 
geo::PlaneID GetBeginPlaneID (geo::TPCID const &id) const
 Returns the ID of the first plane of the specified TPC. More...
 
geo::PlaneID GetEndPlaneID (geo::TPCID const &id) const
 
plane_id_iterator begin_plane_id () const
 Returns an iterator pointing to the first plane ID in the detector. More...
 
plane_id_iterator end_plane_id () const
 Returns an iterator pointing after the last plane ID in the detector. More...
 
plane_id_iterator begin_plane_id (geo::CryostatID const &ID) const
 
plane_id_iterator end_plane_id (geo::CryostatID const &ID) const
 
plane_id_iterator begin_plane_id (geo::TPCID const &ID) const
 
plane_id_iterator end_plane_id (geo::TPCID const &ID) const
 
plane_iterator begin_plane () const
 Returns an iterator pointing to the first plane in the detector. More...
 
plane_iterator end_plane () const
 Returns an iterator pointing after the last plane in the detector. More...
 
plane_iterator begin_plane (geo::CryostatID const &ID) const
 
plane_iterator end_plane (geo::CryostatID const &ID) const
 
plane_iterator begin_plane (geo::TPCID const &ID) const
 Returns an iterator pointing to the first plane in the specified TPC. More...
 
plane_iterator end_plane (geo::TPCID const &ID) const
 Returns an iterator pointing after the last plane in the specified TPC. More...
 
IteratorBox< plane_id_iterator,&GeometryCore::begin_plane_id,&GeometryCore::end_plane_idIteratePlaneIDs () const
 Enables ranged-for loops on all plane IDs of the detector. More...
 
LocalIteratorBox< plane_id_iterator, geo::CryostatID,&GeometryCore::begin_plane_id,&GeometryCore::end_plane_idIteratePlaneIDs (geo::CryostatID const &cid) const
 Enables ranged-for loops on all plane IDs of the specified cryostat. More...
 
LocalIteratorBox< plane_id_iterator, geo::TPCID,&GeometryCore::begin_plane_id,&GeometryCore::end_plane_idIteratePlaneIDs (geo::TPCID const &tid) const
 Enables ranged-for loops on all plane IDs of the specified TPC. More...
 
void IteratePlaneIDs (geo::PlaneID const &pid) const =delete
 IteratePlaneIDs() is not supported on plane IDs. More...
 
void IteratePlaneIDs (geo::WireID const &pid) const =delete
 IteratePlaneIDs() is not supported on wire IDs. More...
 
void IteratePlaneIDs (readout::TPCsetID const &) const =delete
 IteratePlaneIDs() is not supported on readout IDs. More...
 
void IteratePlaneIDs (readout::ROPID const &) const =delete
 IteratePlaneIDs() is not supported on readout IDs. More...
 
IteratorBox< plane_iterator,&GeometryCore::begin_plane,&GeometryCore::end_planeIteratePlanes () const
 Enables ranged-for loops on all planes of the detector. More...
 
LocalIteratorBox< plane_iterator, geo::CryostatID,&GeometryCore::begin_plane,&GeometryCore::end_planeIteratePlanes (geo::CryostatID const &cid) const
 Enables ranged-for loops on all planes of the specified cryostat. More...
 
LocalIteratorBox< plane_iterator, geo::TPCID,&GeometryCore::begin_plane,&GeometryCore::end_planeIteratePlanes (geo::TPCID const &tid) const
 Enables ranged-for loops on all planes of the specified TPC. More...
 
void IteratePlanes (geo::PlaneID const &pid) const =delete
 IteratePlanes() is not supported on plane IDs. More...
 
void IteratePlanes (geo::WireID const &pid) const =delete
 IteratePlanes() is not supported on wire IDs. More...
 
void IteratePlanes (readout::TPCsetID const &) const =delete
 IteratePlanes() is not supported on readout IDs. More...
 
void IteratePlanes (readout::ROPID const &) const =delete
 IteratePlanes() is not supported on readout IDs. More...
 
View_t View (geo::PlaneID const &pid) const
 Returns the view (wire orientation) on the channels of specified TPC plane. More...
 
SigType_t SignalType (geo::PlaneID const &pid) const
 Returns the type of signal on the channels of specified TPC plane. More...
 
void GetBeginID (geo::WireID &id) const
 Initializes the specified ID with the ID of the first wire. More...
 
void GetEndID (geo::WireID &id) const
 Initializes the specified ID with the invalid ID after the last wire. More...
 
bool IncrementID (geo::WireID &id) const
 
geo::WireID GetBeginWireID (geo::CryostatID const &id) const
 Returns the ID of the first wire in the specified cryostat. More...
 
geo::WireID GetEndWireID (geo::CryostatID const &id) const
 
geo::WireID GetBeginWireID (geo::TPCID const &id) const
 Returns the ID of the first wire of the specified TPC. More...
 
geo::WireID GetEndWireID (geo::TPCID const &id) const
 
geo::WireID GetBeginWireID (geo::PlaneID const &id) const
 Returns the ID of the first wire of the specified wire plane. More...
 
geo::WireID GetEndWireID (geo::PlaneID const &id) const
 
wire_id_iterator begin_wire_id () const
 Returns an iterator pointing to the first wire ID in the detector. More...
 
wire_id_iterator end_wire_id () const
 Returns an iterator pointing after the last wire ID in the detector. More...
 
wire_id_iterator begin_wire_id (geo::CryostatID const &id) const
 Returns an iterator pointing to the first wire ID in specified cryostat. More...
 
wire_id_iterator end_wire_id (geo::CryostatID const &id) const
 
wire_id_iterator begin_wire_id (geo::TPCID const &id) const
 Returns an iterator pointing to the first wire ID in specified TPC. More...
 
wire_id_iterator end_wire_id (geo::TPCID const &id) const
 Returns an iterator pointing after the last wire ID in specified TPC. More...
 
wire_id_iterator begin_wire_id (geo::PlaneID const &id) const
 Returns an iterator pointing to the first wire ID in specified plane. More...
 
wire_id_iterator end_wire_id (geo::PlaneID const &id) const
 Returns an iterator pointing after the last wire ID in specified plane. More...
 
wire_iterator begin_wire () const
 Returns an iterator pointing to the first wire in the detector. More...
 
wire_iterator end_wire () const
 Returns an iterator pointing after the last wire in the detector. More...
 
wire_iterator begin_wire (geo::CryostatID const &id) const
 Returns an iterator pointing to the first wire in specified cryostat. More...
 
wire_iterator end_wire (geo::CryostatID const &id) const
 Returns an iterator pointing after the last wire in specified cryostat. More...
 
wire_iterator begin_wire (geo::TPCID const &id) const
 Returns an iterator pointing to the first wire in specified TPC. More...
 
wire_iterator end_wire (geo::TPCID const &id) const
 Returns an iterator pointing after the last wire in specified TPC. More...
 
wire_iterator begin_wire (geo::PlaneID const &id) const
 Returns an iterator pointing to the first wire in specified plane. More...
 
wire_iterator end_wire (geo::PlaneID const &id) const
 Returns an iterator pointing after the last wire in specified plane. More...
 
IteratorBox< wire_id_iterator,&GeometryCore::begin_wire_id,&GeometryCore::end_wire_idIterateWireIDs () const
 Enables ranged-for loops on all wire IDs of the detector. More...
 
LocalIteratorBox< wire_id_iterator, geo::CryostatID,&GeometryCore::begin_wire_id,&GeometryCore::end_wire_idIterateWireIDs (geo::CryostatID const &cid) const
 Enables ranged-for loops on all wire IDs of specified cryostat. More...
 
LocalIteratorBox< wire_id_iterator, geo::TPCID,&GeometryCore::begin_wire_id,&GeometryCore::end_wire_idIterateWireIDs (geo::TPCID const &tid) const
 Enables ranged-for loops on all wire IDs of specified TPC. More...
 
LocalIteratorBox< wire_id_iterator, geo::PlaneID,&GeometryCore::begin_wire_id,&GeometryCore::end_wire_idIterateWireIDs (geo::PlaneID const &pid) const
 Enables ranged-for loops on all wire IDs of specified wire plane. More...
 
void IterateWireIDs (geo::WireID const &pid) const =delete
 IterateWireIDs() is not supported on wire IDs. More...
 
void IterateWireIDs (readout::TPCsetID const &) const =delete
 IterateWireIDs() is not supported on readout IDs. More...
 
void IterateWireIDs (readout::ROPID const &) const =delete
 IterateWireIDs() is not supported on readout IDs. More...
 
IteratorBox< wire_iterator,&GeometryCore::begin_wire,&GeometryCore::end_wireIterateWires () const
 Enables ranged-for loops on all wires of the detector. More...
 
LocalIteratorBox< wire_iterator, geo::CryostatID,&GeometryCore::begin_wire,&GeometryCore::end_wireIterateWires (geo::CryostatID const &cid) const
 Enables ranged-for loops on all wires of specified cryostat. More...
 
LocalIteratorBox< wire_iterator, geo::TPCID,&GeometryCore::begin_wire,&GeometryCore::end_wireIterateWires (geo::TPCID const &tid) const
 Enables ranged-for loops on all wires of specified TPC. More...
 
LocalIteratorBox< wire_iterator, geo::PlaneID,&GeometryCore::begin_wire,&GeometryCore::end_wireIterateWires (geo::PlaneID const &tid) const
 Enables ranged-for loops on all wires of specified wire plane. More...
 
void IterateWires (geo::WireID const &pid) const =delete
 IterateWires() is not supported on wire IDs. More...
 
void IterateWires (readout::TPCsetID const &) const =delete
 IterateWires() is not supported on readout IDs. More...
 
void IterateWires (readout::ROPID const &) const =delete
 IterateWires() is not supported on readout IDs. More...
 
geo::Length_t WirePitch (geo::View_t view) const
 Returns the distance between two wires in the specified view. More...
 
geo::WireID NearestWireID (geo::Point_t const &point, geo::PlaneID const &planeid) const
 Returns the ID of wire closest to position in the specified TPC. More...
 
geo::WireID::WireID_t NearestWire (geo::Point_t const &point, geo::PlaneID const &planeid) const
 Returns the index of wire closest to position in the specified TPC. More...
 
geo::Length_t WireCoordinate (double YPos, double ZPos, geo::PlaneID const &planeid) const
 Returns the index of the nearest wire to the specified position. More...
 
geo::Length_t WireCoordinate (double YPos, double ZPos, unsigned int PlaneNo, unsigned int TPCNo, unsigned int cstat) const
 Returns the index of the nearest wire to the specified position. More...
 
bool IntersectLines (double A_start_x, double A_start_y, double A_end_x, double A_end_y, double B_start_x, double B_start_y, double B_end_x, double B_end_y, double &x, double &y) const
 Computes the intersection between two lines on a plane. More...
 
bool IntersectSegments (double A_start_x, double A_start_y, double A_end_x, double A_end_y, double B_start_x, double B_start_y, double B_end_x, double B_end_y, double &x, double &y) const
 Computes the intersection between two segments on a plane. More...
 
bool WireIDsIntersect (WireID const &wid1, WireID const &wid2, WireIDIntersection &widIntersect) const
 Computes the intersection between two wires. More...
 
bool IntersectionPoint (geo::WireID const &wid1, geo::WireID const &wid2, double &y, double &z) const
 Returns the intersection point of two wires. More...
 
bool IntersectionPoint (unsigned int wire1, unsigned int wire2, unsigned int plane1, unsigned int plane2, unsigned int cstat, unsigned int tpc, double &y, double &z) const
 Returns the intersection point of two wires. More...
 
geo::PlaneID ThirdPlane (geo::PlaneID const &pid1, geo::PlaneID const &pid2) const
 Returns the plane that is not in the specified arguments. More...
 
double ThirdPlaneSlope (geo::PlaneID const &pid1, double slope1, geo::PlaneID const &pid2, double slope2, geo::PlaneID const &output_plane) const
 Returns the slope on the third plane, given it in the other two. More...
 
double ThirdPlaneSlope (geo::PlaneID const &pid1, double slope1, geo::PlaneID const &pid2, double slope2) const
 Returns the slope on the third plane, given it in the other two. More...
 
double ThirdPlane_dTdW (geo::PlaneID const &pid1, double slope1, geo::PlaneID const &pid2, double slope2, geo::PlaneID const &output_plane) const
 Returns dT/dW on the third plane, given it in the other two. More...
 
double ThirdPlane_dTdW (geo::PlaneID const &pid1, double slope1, geo::PlaneID const &pid2, double slope2) const
 Returns dT/dW on the third plane, given it in the other two. More...
 
std::string OpDetGeoName (unsigned int c=0) const
 Returns gdml string which gives sensitive opdet name. More...
 
SigType_t SignalType (raw::ChannelID_t const channel) const
 Returns the type of signal on the specified TPC channel. More...
 
View_t View (raw::ChannelID_t const channel) const
 Returns the view (wire orientation) on the specified TPC channel. More...
 
std::vector< geo::WireIDChannelToWire (raw::ChannelID_t const channel) const
 Returns a list of wires connected to the specified TPC channel. More...
 
readout::ROPID ChannelToROP (raw::ChannelID_t channel) const
 
raw::ChannelID_t NearestChannel (geo::Point_t const &worldLoc, geo::PlaneID const &planeid) const
 Returns the ID of the channel nearest to the specified position. More...
 
bool ChannelsIntersect (raw::ChannelID_t c1, raw::ChannelID_t c2, double &y, double &z) const
 Returns an intersection point of two channels. More...
 
unsigned int MaxTPCsets () const
 Returns the largest number of TPC sets any cryostat in the detector has. More...
 
template<typename T >
readout::TPCsetDataContainer< T > makeTPCsetData () const
 Returns a container with one entry per TPC set. More...
 
template<typename T >
readout::TPCsetDataContainer< T > makeTPCsetData (T const &defValue) const
 Returns a container with one entry per TPC set. More...
 
bool HasTPCset (readout::TPCsetID const &tpcsetid) const
 
bool HasElement (readout::TPCsetID const &tpcsetid) const
 Returns whether we have the specified TPC set. More...
 
readout::TPCsetID FindTPCsetAtPosition (double const worldLoc[3]) const
 Returns the ID of the TPC set at specified location. More...
 
readout::TPCsetID TPCtoTPCset (geo::TPCID const &tpcid) const
 Returns the ID of the TPC set tpcid belongs to. More...
 
std::vector< geo::TPCIDTPCsetToTPCs (readout::TPCsetID const &tpcsetid) const
 Returns a list of ID of TPCs belonging to the specified TPC set. More...
 
void GetBeginID (readout::TPCsetID &id) const
 Initializes the specified ID with the ID of the first TPC set. More...
 
void GetEndID (readout::TPCsetID &id) const
 Initializes the specified ID with the invalid ID after the last TPC set. More...
 
bool IncrementID (readout::TPCsetID &id) const
 
readout::TPCsetID GetBeginTPCsetID (geo::CryostatID const &id) const
 Returns the ID of the first TPC set in the specified cryostat. More...
 
readout::TPCsetID GetEndTPCsetID (geo::CryostatID const &id) const
 
TPCset_id_iterator begin_TPCset_id () const
 Returns an iterator pointing to the first TPC set ID in the detector. More...
 
TPCset_id_iterator end_TPCset_id () const
 Returns an iterator pointing after the last TPC set ID in the detector. More...
 
TPCset_id_iterator begin_TPCset_id (geo::CryostatID const &cid) const
 
TPCset_id_iterator end_TPCset_id (geo::CryostatID const &cid) const
 
IteratorBox< TPCset_id_iterator,&GeometryCore::begin_TPCset_id,&GeometryCore::end_TPCset_idIterateTPCsetIDs () const
 Enables ranged-for loops on all TPC set IDs of the detector. More...
 
LocalIteratorBox< TPCset_id_iterator, geo::CryostatID,&GeometryCore::begin_TPCset_id,&GeometryCore::end_TPCset_idIterateTPCsetIDs (geo::CryostatID const &cid) const
 Enables ranged-for loops on all TPC set IDs of the specified cryostat. More...
 
unsigned int MaxROPs () const
 Returns the largest number of ROPs a TPC set in the detector has. More...
 
template<typename T >
readout::ROPDataContainer< T > makeROPdata () const
 Returns a container with one entry per readout plane. More...
 
template<typename T >
readout::ROPDataContainer< T > makeROPdata (T const &defValue) const
 Returns a container with one entry per readout plane. More...
 
bool HasROP (readout::ROPID const &ropid) const
 
bool HasElement (readout::ROPID const &ropid) const
 
readout::ROPID WirePlaneToROP (geo::PlaneID const &planeid) const
 Returns the ID of the ROP planeid belongs to. More...
 
std::vector< geo::PlaneIDROPtoWirePlanes (readout::ROPID const &ropid) const
 Returns a list of ID of planes belonging to the specified ROP. More...
 
std::vector< geo::TPCIDROPtoTPCs (readout::ROPID const &ropid) const
 Returns a list of ID of TPCs the specified ROP spans. More...
 
raw::ChannelID_t FirstChannelInROP (readout::ROPID const &ropid) const
 Returns the ID of the first channel in the specified readout plane. More...
 
void GetBeginID (readout::ROPID &id) const
 Initializes the specified ID with the ID of the first readout plane. More...
 
void GetEndID (readout::ROPID &id) const
 Initializes the specified ID with the invalid ID after the last ROP. More...
 
bool IncrementID (readout::ROPID &id) const
 
readout::ROPID GetBeginROPID (geo::CryostatID const &id) const
 Returns the ID of the first readout plane of the specified cryostat. More...
 
readout::ROPID GetEndROPID (geo::CryostatID const &id) const
 
readout::ROPID GetBeginROPID (readout::TPCsetID const &id) const
 Returns the ID of the first readout plane of the specified TPC set. More...
 
readout::ROPID GetEndROPID (readout::TPCsetID const &id) const
 
ROP_id_iterator begin_ROP_id () const
 Returns an iterator pointing to the first ROP ID in the detector. More...
 
ROP_id_iterator end_ROP_id () const
 Returns an iterator pointing after the last ROP ID in the detector. More...
 
ROP_id_iterator begin_ROP_id (geo::CryostatID const &ID) const
 
ROP_id_iterator end_ROP_id (geo::CryostatID const &ID) const
 
ROP_id_iterator begin_ROP_id (readout::TPCsetID const &ID) const
 
ROP_id_iterator end_ROP_id (readout::TPCsetID const &ID) const
 
IteratorBox< ROP_id_iterator,&GeometryCore::begin_ROP_id,&GeometryCore::end_ROP_idIterateROPIDs () const
 Enables ranged-for loops on all readout plane IDs of the detector. More...
 
LocalIteratorBox< ROP_id_iterator, geo::CryostatID,&GeometryCore::begin_ROP_id,&GeometryCore::end_ROP_idIterateROPIDs (geo::CryostatID const &cid) const
 Enables ranged-for loops on all readout plane IDs of the specified cryostat. More...
 
LocalIteratorBox< ROP_id_iterator, readout::TPCsetID,&GeometryCore::begin_ROP_id,&GeometryCore::end_ROP_idIterateROPIDs (readout::TPCsetID const &sid) const
 Enables ranged-for loops on all readout plane IDs of the specified TPC set. More...
 
geo::View_t View (readout::ROPID const &ropid) const
 Returns the view of the channels in the specified readout plane. More...
 
geo::SigType_t SignalType (readout::ROPID const &ropid) const
 Returns the type of signal of channels in specified readout plane. More...
 
bool ValueInRange (double value, double min, double max) const
 Returns whether a value is within the specified range. More...
 
template<typename Point >
geo::GeometryCore::Segment< Point > WireEndPoints (geo::WireID const &wireid) const
 
Detector information
std::string DetectorName () const
 Returns a string with the name of the detector, as configured. More...
 
TGeoVolume const * WorldVolume () const
 Returns a pointer to the world volume. More...
 
void WorldBox (double *xlo, double *xhi, double *ylo, double *yhi, double *zlo, double *zhi) const
 Fills the arguments with the boundaries of the world. More...
 
geo::BoxBoundedGeo WorldBox () const
 
geo::Length_t SurfaceY () const
 The position of the detector respect to earth surface. More...
 
TGeoManager * ROOTGeoManager () const
 Access to the ROOT geometry description manager. More...
 
const std::string GetWorldVolumeName () const
 Return the name of the world volume (needed by Geant4 simulation) More...
 
geo::BoxBoundedGeo DetectorEnclosureBox (std::string const &name="volDetEnclosure") const
 
std::string VolumeName (geo::Point_t const &point) const
 Returns the name of the deepest volume containing specified point. More...
 
std::string VolumeName (TVector3 const &point) const
 Returns a string with the name of the detector, as configured. More...
 
std::string MaterialName (TVector3 const &point) const
 Name of the deepest material containing the point xyz. More...
 
std::string MaterialName (geo::Point_t const &point) const
 Name of the deepest material containing the point xyz. More...
 
double TotalMass () const
 Returns the total mass [kg] of the specified volume (default: world). More...
 
double TotalMass (std::string vol) const
 Returns the total mass [kg] of the specified volume (default: world). More...
 
double MassBetweenPoints (geo::Point_t const &p1, geo::Point_t const &p2) const
 Returns the column density between two points. More...
 
double MassBetweenPoints (double *p1, double *p2) const
 Returns the column density between two points. More...
 
Cryostat access and information
unsigned int Ncryostats () const
 Returns the number of cryostats in the detector. More...
 
unsigned int NElements () const
 Returns the number of cryostats in the detector. More...
 
unsigned int NSiblingElements (geo::CryostatID const &) const
 Returns the number of cryostats in the detector. More...
 
bool HasCryostat (geo::CryostatID const &cryoid) const
 Returns whether we have the specified cryostat. More...
 
bool HasElement (geo::CryostatID const &cryoid) const
 Returns whether we have the specified cryostat. More...
 
CryostatGeo const & Cryostat (geo::CryostatID const &cryoid) const
 Returns the specified cryostat. More...
 
CryostatGeo const & Cryostat (unsigned int const cstat=0) const
 Returns the specified cryostat. More...
 
CryostatGeo const & GetElement (geo::CryostatID const &cryoid) const
 Returns the specified cryostat. More...
 
CryostatGeo const * CryostatPtr (geo::CryostatID const &cryoid) const
 Returns the specified cryostat. More...
 
CryostatGeo const * GetElementPtr (geo::CryostatID const &cryoid) const
 Returns the specified cryostat. More...
 
geo::CryostatID::CryostatID_t FindCryostatAtPosition (geo::Point_t const &worldLoc) const
 Returns the index of the cryostat at specified location. More...
 
geo::CryostatID::CryostatID_t FindCryostatAtPosition (double const worldLoc[3]) const
 Returns the index of the cryostat at specified location. More...
 
CryostatGeo const & PositionToCryostat (geo::Point_t const &point) const
 Returns the cryostat at specified location. More...
 
CryostatGeo const & PositionToCryostat (double const point[3]) const
 Returns the cryostat at specified location. More...
 
geo::Length_t CryostatHalfWidth (geo::CryostatID const &cid) const
 Returns the half width of the cryostat (x direction) More...
 
geo::Length_t CryostatHalfWidth (unsigned int cstat=0) const
 Returns the half width of the cryostat (x direction) More...
 
geo::Length_t CryostatHalfHeight (geo::CryostatID const &cid) const
 Returns the height of the cryostat (y direction) More...
 
geo::Length_t CryostatHalfHeight (unsigned int cstat=0) const
 Returns the height of the cryostat (y direction) More...
 
geo::Length_t CryostatLength (geo::CryostatID const &cid) const
 Returns the length of the cryostat (z direction) More...
 
geo::Length_t CryostatLength (unsigned int cstat=0) const
 Returns the length of the cryostat (z direction) More...
 
std::string GetCryostatVolumeName (geo::CryostatID const &cid) const
 Return the name of LAr TPC volume. More...
 
std::string GetCryostatVolumeName (unsigned int const cstat=0) const
 Return the name of LAr TPC volume. More...
 
TPC access and information
unsigned int NTPC (unsigned int cstat=0) const
 Returns the total number of TPCs in the specified cryostat. More...
 
unsigned int MaxTPCs () const
 Returns the largest number of TPCs a cryostat in the detector has. More...
 
unsigned int TotalNTPC () const
 Returns the total number of TPCs in the detector. More...
 
template<typename T >
geo::TPCDataContainer< T > makeTPCData () const
 Returns a container with one entry per TPC. More...
 
template<typename T >
geo::TPCDataContainer< T > makeTPCData (T const &defValue) const
 Returns a container with one entry per TPC. More...
 
unsigned int NTPC (geo::CryostatID const &cryoid) const
 Returns the total number of TPCs in the specified cryostat. More...
 
unsigned int NElements (geo::CryostatID const &cryoid) const
 Returns the total number of TPCs in the specified cryostat. More...
 
unsigned int NSiblingElements (geo::TPCID const &tpcid) const
 Returns the total number of TPCs in the specified cryostat. More...
 
TPCGeo const & TPC (unsigned int const tpc=0, unsigned int const cstat=0) const
 Returns the specified TPC. More...
 
TPCGeo const & TPC (geo::TPCID const &tpcid) const
 Returns the specified TPC. More...
 
TPCGeo const & GetElement (geo::TPCID const &tpcid) const
 Returns the specified TPC. More...
 
TPCGeo const * TPCPtr (geo::TPCID const &tpcid) const
 Returns the specified TPC. More...
 
TPCGeo const * GetElementPtr (geo::TPCID const &tpcid) const
 Returns the specified TPC. More...
 
geo::TPCID FindTPCAtPosition (geo::Point_t const &point) const
 Returns the ID of the TPC at specified location. More...
 
geo::TPCID FindTPCAtPosition (TVector3 const &point) const
 Returns the ID of the TPC at specified location. More...
 
geo::TPCGeo const & PositionToTPC (geo::Point_t const &point) const
 Returns the TPC at specified location. More...
 
TPCGeo const & PositionToTPC (double const point[3]) const
 Returns the TPC at specified location. More...
 
geo::Length_t DetHalfWidth (geo::TPCID const &tpcid) const
 Returns the half width of the active volume of the specified TPC. More...
 
geo::Length_t DetHalfWidth (unsigned int tpc=0, unsigned int cstat=0) const
 Returns the half width of the active volume of the specified TPC. More...
 
geo::Length_t DetHalfHeight (geo::TPCID const &tpcid) const
 Returns the half height of the active volume of the specified TPC. More...
 
geo::Length_t DetHalfHeight (unsigned int tpc=0, unsigned int cstat=0) const
 Returns the half height of the active volume of the specified TPC. More...
 
geo::Length_t DetLength (geo::TPCID const &tpcid) const
 Returns the length of the active volume of the specified TPC. More...
 
geo::Length_t DetLength (unsigned int tpc=0, unsigned int cstat=0) const
 Returns the length of the active volume of the specified TPC. More...
 
template<typename Point >
Point GetTPCFrontFaceCenter (geo::TPCID const &tpcid) const
 Returns the center of side of the detector facing the beam. More...
 
DefaultPoint_t GetTPCFrontFaceCenter (geo::TPCID const &tpcid) const
 Returns the center of side of the detector facing the beam. More...
 
template<typename Point >
Point GetTPCFrontFaceCenter (unsigned int tpc=0, unsigned int cstat=0) const
 Returns the center of side of the detector facing the beam. More...
 
DefaultPoint_t GetTPCFrontFaceCenter (unsigned int tpc=0, unsigned int cstat=0) const
 Returns the center of side of the detector facing the beam. More...
 
std::string GetLArTPCVolumeName (geo::TPCID const &tpcid) const
 Return the name of specified LAr TPC volume. More...
 
std::string GetLArTPCVolumeName (unsigned int const tpc=0, unsigned int const cstat=0) const
 Return the name of specified LAr TPC volume. More...
 
Plane access and information
unsigned int Nplanes (unsigned int tpc=0, unsigned int cstat=0) const
 Returns the total number of wire planes in the specified TPC. More...
 
unsigned int MaxPlanes () const
 Returns the largest number of planes among all TPCs in this detector. More...
 
template<typename T >
geo::PlaneDataContainer< T > makePlaneData () const
 Returns a container with one entry per wire plane. More...
 
template<typename T >
geo::PlaneDataContainer< T > makePlaneData (T const &defValue) const
 Returns a container with one entry per wire plane. More...
 
unsigned int Nplanes (geo::TPCID const &tpcid) const
 Returns the total number of planes in the specified TPC. More...
 
unsigned int NElements (geo::TPCID const &tpcid) const
 Returns the total number of wire planes in the specified TPC. More...
 
unsigned int NSiblingElements (geo::PlaneID const &planeid) const
 Returns the total number of wire planes in the specified TPC. More...
 
bool HasPlane (geo::PlaneID const &planeid) const
 Returns whether we have the specified plane. More...
 
bool HasElement (geo::PlaneID const &planeid) const
 Returns whether we have the specified plane. More...
 
PlaneGeo const & Plane (unsigned int const p, unsigned int const tpc=0, unsigned int const cstat=0) const
 Returns the specified wire. More...
 
PlaneGeo const & Plane (geo::PlaneID const &planeid) const
 Returns the specified wire. More...
 
PlaneGeo const & GetElement (geo::PlaneID const &planeid) const
 Returns the specified wire. More...
 
PlaneGeo const * PlanePtr (geo::PlaneID const &planeid) const
 Returns the specified plane. More...
 
PlaneGeo const * GetElementPtr (geo::PlaneID const &planeid) const
 Returns the specified plane. More...
 
geo::Length_t PlanePitch (geo::TPCID const &tpcid, geo::PlaneID::PlaneID_t p1=0, geo::PlaneID::PlaneID_t p2=1) const
 Returns the distance between two planes. More...
 
geo::Length_t PlanePitch (geo::PlaneID const &pid1, geo::PlaneID const &pid2) const
 Returns the distance between two planes. More...
 
geo::Length_t PlanePitch (unsigned int p1=0, unsigned int p2=1, unsigned int tpc=0, unsigned int cstat=0) const
 Returns the distance between two planes. More...
 
Wire access and information
unsigned int Nwires (unsigned int p, unsigned int tpc=0, unsigned int cstat=0) const
 Returns the total number of wires in the specified plane. More...
 
unsigned int Nwires (geo::PlaneID const &planeid) const
 Returns the total number of wires in the specified plane. More...
 
unsigned int NElements (geo::PlaneID const &planeid) const
 Returns the total number of wires in the specified plane. More...
 
unsigned int NSiblingElements (geo::WireID const &wireid) const
 Returns the total number of wires in the specified plane. More...
 
unsigned int MaxWires () const
 Returns the largest number of wires among all planes in this detector. More...
 
bool HasWire (geo::WireID const &wireid) const
 Returns whether we have the specified wire. More...
 
bool HasElement (geo::WireID const &wireid) const
 Returns whether we have the specified wire. More...
 
WireGeo const * WirePtr (geo::WireID const &wireid) const
 Returns the specified wire. More...
 
WireGeo const * GetElementPtr (geo::WireID const &wireid) const
 Returns the specified wire. More...
 
WireGeo const & Wire (geo::WireID const &wireid) const
 Returns the specified wire. More...
 
WireGeo const & WireIDToWireGeo (geo::WireID const &wireid) const
 Returns the specified wire. More...
 
WireGeo const & GetElement (geo::WireID const &wireid) const
 Returns the specified wire. More...
 
geo::Length_t WirePitch (geo::PlaneID const &planeid) const
 Returns the distance between two consecutive wires. More...
 
geo::Length_t WirePitch (unsigned int plane=0, unsigned int tpc=0, unsigned int cstat=0) const
 Returns the distance between two consecutive wires. More...
 
double WireAngleToVertical (geo::View_t view, geo::TPCID const &tpcid) const
 Returns the angle of the wires in the specified view from vertical. More...
 
double WireAngleToVertical (geo::View_t view, int TPC=0, int Cryo=0) const
 Returns the angle of the wires in the specified view from vertical. More...
 
Wire geometry queries

Please note the differences between functions: ChannelsIntersect(), WireIDsIntersect() and IntersectionPoint() all calculate wires intersection using the same equation. ChannelsIntersect() and WireIdsIntersect() will return true if the two wires cross, return false if they don't. IntersectionPoint() does not check if the two wires cross.

void WireEndPoints (geo::WireID const &wireid, double *xyzStart, double *xyzEnd) const
 Fills two arrays with the coordinates of the wire end points. More...
 
void WireEndPoints (unsigned int cstat, unsigned int tpc, unsigned int plane, unsigned int wire, double *xyzStart, double *xyzEnd) const
 Fills two arrays with the coordinates of the wire end points. More...
 
template<typename Point >
Segment< Point > WireEndPoints (geo::WireID const &wireID) const
 Returns a segment whose ends are the wire end points. More...
 
Segment< DefaultPoint_tWireEndPoints (geo::WireID const &wireID) const
 Fills two arrays with the coordinates of the wire end points. More...
 
geo::WireID NearestWireID (const double point[3], geo::PlaneID const &planeid) const
 Returns the ID of wire closest to position in the specified TPC. More...
 
geo::WireID NearestWireID (std::vector< double > const &point, geo::PlaneID const &planeid) const
 Returns the ID of wire closest to position in the specified TPC. More...
 
geo::WireID NearestWireID (const TVector3 &point, geo::PlaneID const &planeid) const
 Returns the ID of wire closest to position in the specified TPC. More...
 
geo::WireID NearestWireID (const double point[3], unsigned int const PlaneNo, unsigned int const TPCNo=0, unsigned int const cstat=0) const
 Returns the ID of wire closest to position in the specified TPC. More...
 
geo::WireID NearestWireID (std::vector< double > const &point, unsigned int const PlaneNo, unsigned int const TPCNo=0, unsigned int const cstat=0) const
 Returns the ID of wire closest to position in the specified TPC. More...
 
geo::WireID NearestWireID (const TVector3 &point, unsigned int const PlaneNo, unsigned int const TPCNo=0, unsigned int const cstat=0) const
 Returns the ID of wire closest to position in the specified TPC. More...
 
geo::WireID NearestWireID (geo::Point_t const &point, unsigned int const PlaneNo, unsigned int const TPCNo=0, unsigned int const cstat=0) const
 Returns the ID of wire closest to position in the specified TPC. More...
 
unsigned int NearestWire (const double worldLoc[3], geo::PlaneID const &planeid) const
 Returns the index of wire closest to position in the specified TPC. More...
 
unsigned int NearestWire (std::vector< double > const &worldLoc, geo::PlaneID const &planeid) const
 Returns the index of wire closest to position in the specified TPC. More...
 
unsigned int NearestWire (const TVector3 &worldLoc, geo::PlaneID const &planeid) const
 Returns the index of wire closest to position in the specified TPC. More...
 
unsigned int NearestWire (const double worldLoc[3], unsigned int const PlaneNo, unsigned int const TPCNo=0, unsigned int const cstat=0) const
 Returns the index of wire closest to position in the specified TPC. More...
 
unsigned int NearestWire (std::vector< double > const &worldLoc, unsigned int const PlaneNo, unsigned int const TPCNo=0, unsigned int const cstat=0) const
 Returns the index of wire closest to position in the specified TPC. More...
 
unsigned int NearestWire (const TVector3 &worldLoc, unsigned int const PlaneNo, unsigned int const TPCNo=0, unsigned int const cstat=0) const
 Returns the index of wire closest to position in the specified TPC. More...
 
unsigned int NearestWire (geo::Point_t const &worldLoc, unsigned int const PlaneNo, unsigned int const TPCNo=0, unsigned int const cstat=0) const
 Returns the index of wire closest to position in the specified TPC. More...
 
geo::Length_t WireCoordinate (geo::Point_t const &pos, geo::PlaneID const &planeid) const
 Returns the index of the nearest wire to the specified position. More...
 
geo::Length_t WireCoordinate (TVector3 const &pos, geo::PlaneID const &planeid) const
 Returns the index of the nearest wire to the specified position. More...
 
bool WireIDsIntersect (WireID const &wid1, WireID const &wid2, geo::Point_t &intersection) const
 Computes the intersection between two wires. More...
 
bool WireIDsIntersect (WireID const &wid1, WireID const &wid2, TVector3 &intersection) const
 Computes the intersection between two wires. More...
 
double ThirdPlaneSlope (geo::PlaneID::PlaneID_t plane1, double slope1, geo::PlaneID::PlaneID_t plane2, double slope2, geo::TPCID const &tpcid) const
 Returns the slope on the third plane, given it in the other two. More...
 
double ThirdPlaneSlope (unsigned int plane1, double slope1, unsigned int plane2, double slope2, unsigned int tpc, unsigned int cstat) const
 Returns the slope on the third plane, given it in the other two. More...
 
Optical detector geometry access and information

See also
optical detector channel information

There are a number of ways to identify an optical detector or channel:

  • geometric:
    • cryostat (e.g. geo::CryostatID) and relative optical detector number within it
    • unique optical detector number
  • readout:
    • optical detector channel
    • "hardware" channel

And they all should be better documented!

unsigned int NOpDets () const
 Number of OpDets in the whole detector. More...
 
OpDetGeo const & OpDetGeoFromOpChannel (unsigned int OpChannel) const
 Returns the geo::OpDetGeo object for the given channel number. More...
 
OpDetGeo const & OpDetGeoFromOpDet (unsigned int OpDet) const
 Returns the geo::OpDetGeo object for the given detector number. More...
 
unsigned int GetClosestOpDet (geo::Point_t const &point) const
 Find the nearest OpChannel to some point. More...
 
unsigned int GetClosestOpDet (double const *point) const
 Number of OpDets in the whole detector. More...
 
Auxiliary detectors access and information
unsigned int NAuxDets () const
 Returns the number of auxiliary detectors. More...
 
unsigned int NAuxDetSensitive (size_t const &aid) const
 Returns the number of sensitive components of auxiliary detector. More...
 
AuxDetGeo const & AuxDet (unsigned int const ad=0) const
 Returns the specified auxiliary detector. More...
 
unsigned int FindAuxDetAtPosition (double const worldLoc[3]) const
 Returns the index of the auxiliary detector at specified location. More...
 
unsigned int FindAuxDetAtPosition (geo::Point_t const &point) const
 Returns the index of the auxiliary detector at specified location. More...
 
void FindAuxDetSensitiveAtPosition (geo::Point_t const &point, std::size_t &adg, std::size_t &sv) const
 Fills the indices of the sensitive auxiliary detector at location. More...
 
void FindAuxDetSensitiveAtPosition (double const worldLoc[3], size_t &adg, size_t &sv) const
 Fills the indices of the sensitive auxiliary detector at location. More...
 
AuxDetGeo const & PositionToAuxDet (geo::Point_t const &point, unsigned int &ad) const
 Returns the auxiliary detector at specified location. More...
 
AuxDetGeo const & PositionToAuxDet (double const worldLoc[3], unsigned int &ad) const
 Returns the auxiliary detector at specified location. More...
 
const AuxDetSensitiveGeoPositionToAuxDetSensitive (geo::Point_t const &point, size_t &ad, size_t &sv) const
 Returns the auxiliary detector at specified location. More...
 
const AuxDetSensitiveGeoPositionToAuxDetSensitive (double const worldLoc[3], size_t &ad, size_t &sv) const
 Returns the auxiliary detector at specified location. More...
 
const AuxDetGeoChannelToAuxDet (std::string const &auxDetName, uint32_t const &channel) const
 Returns the number of auxiliary detectors. More...
 
const AuxDetSensitiveGeoChannelToAuxDetSensitive (std::string const &auxDetName, uint32_t const &channel) const
 Returns the number of auxiliary detectors. More...
 
TPC readout channels and views
unsigned int Nchannels () const
 Returns the number of TPC readout channels in the detector. More...
 
unsigned int Nchannels (readout::ROPID const &ropid) const
 Returns the number of channels in the specified ROP. More...
 
std::vector< raw::ChannelID_tChannelsInTPCs () const
 Returns an std::vector<ChannelID_t> in all TPCs in a TPCSet. More...
 
std::set< geo::View_t > const & Views () const
 Returns a list of possible views in the detector. More...
 
bool HasChannel (raw::ChannelID_t channel) const
 Returns whether the specified channel exists and is valid. More...
 
raw::ChannelID_t PlaneWireToChannel (WireID const &wireid) const
 Returns the ID of the TPC channel connected to the specified wire. More...
 
raw::ChannelID_t PlaneWireToChannel (unsigned int const plane, unsigned int const wire, unsigned int const tpc=0, unsigned int const cstat=0) const
 Returns the number of TPC readout channels in the detector. More...
 
raw::ChannelID_t NearestChannel (const double worldLoc[3], geo::PlaneID const &planeid) const
 Returns the ID of the channel nearest to the specified position. More...
 
raw::ChannelID_t NearestChannel (std::vector< double > const &worldLoc, geo::PlaneID const &planeid) const
 Returns the ID of the channel nearest to the specified position. More...
 
raw::ChannelID_t NearestChannel (const TVector3 &worldLoc, geo::PlaneID const &planeid) const
 Returns the ID of the channel nearest to the specified position. More...
 
raw::ChannelID_t NearestChannel (const double worldLoc[3], unsigned int const PlaneNo, unsigned int const TPCNo=0, unsigned int const cstat=0) const
 Returns the ID of the channel nearest to the specified position. More...
 
raw::ChannelID_t NearestChannel (std::vector< double > const &worldLoc, unsigned int const PlaneNo, unsigned int const TPCNo=0, unsigned int const cstat=0) const
 Returns the ID of the channel nearest to the specified position. More...
 
raw::ChannelID_t NearestChannel (const TVector3 &worldLoc, unsigned int const PlaneNo, unsigned int const TPCNo=0, unsigned int const cstat=0) const
 Returns the ID of the channel nearest to the specified position. More...
 
raw::ChannelID_t NearestChannel (geo::Point_t const &worldLoc, unsigned int const PlaneNo, unsigned int const TPCNo=0, unsigned int const cstat=0) const
 Returns the ID of the channel nearest to the specified position. More...
 
TPC set information
unsigned int NTPCsets (readout::CryostatID const &cryoid) const
 Returns the total number of TPC sets in the specified cryostat. More...
 
unsigned int NSiblingElements (readout::TPCsetID const &tpcsetid) const
 Returns the total number of TPC sets in the specified cryostat. More...
 
Readout plane information
unsigned int NROPs (readout::TPCsetID const &tpcsetid) const
 Returns the total number of ROP in the specified TPC set. More...
 
unsigned int NSiblingElements (readout::ROPID const &ropid) const
 Returns the total number of ROP in the specified TPC set. More...
 
Optical readout channels
unsigned int NOpChannels () const
 Number of electronics channels for all the optical detectors. More...
 
unsigned int MaxOpChannel () const
 Largest optical channel number. More...
 
unsigned int NOpHardwareChannels (int opDet) const
 Number of electronics channels for all the optical detectors. More...
 
bool IsValidOpChannel (int opChannel) const
 Is this a valid OpChannel number? More...
 
unsigned int OpChannel (int detNum, int hardwareChannel) const
 Convert detector number and hardware channel to unique channel. More...
 
unsigned int OpDetFromOpChannel (int opChannel) const
 Convert unique channel to detector number. More...
 
unsigned int HardwareChannelFromOpChannel (int opChannel) const
 Convert unique channel to hardware channel. More...
 
unsigned int OpDetFromCryo (unsigned int o, unsigned int c) const
 Get unique opdet number from cryo and internal count. More...
 
Geometry initialization
void LoadGeometryFile (std::string gdmlfile, std::string rootfile, geo::GeometryBuilder &builder, bool bForceReload=false)
 Loads the geometry information from the specified files. More...
 
void LoadGeometryFile (std::string gdmlfile, std::string rootfile, bool bForceReload=false)
 Loads the geometry information from the specified files. More...
 
void ApplyChannelMap (std::unique_ptr< geo::ChannelMapAlg > pChannelMap)
 Initializes the geometry to work with this channel map. More...
 

Static Public Member Functions

static double ComputeThirdPlaneSlope (double angle1, double slope1, double angle2, double slope2, double angle_target)
 Returns the slope on the third plane, given it in the other two. More...
 
static double ComputeThirdPlane_dTdW (double angle1, double pitch1, double dTdW1, double angle2, double pitch2, double dTdW2, double angle_target, double pitch_target)
 Returns the slope on the third plane, given it in the other two. More...
 

Static Public Attributes

static constexpr std::size_t MaxWireDepthInGDML = 20U
 
static lar::util::RealComparisons< geo::Length_tcoordIs { 1e-8 }
 Value of tolerance for equality comparisons. More...
 

Protected Member Functions

void SetDetectorName (std::string const &new_name)
 Sets the detector name. More...
 
geo::ChannelMapAlg const * ChannelMap () const
 Returns the object handling the channel map. More...
 
CryostatList_tCryostats ()
 Return the internal cryostat list. More...
 
CryostatList_t const & Cryostats () const
 Return the internal cryostat list. More...
 
AuxDetList_tAuxDets ()
 Return the interfal auxiliary detectors list. More...
 
AuxDetList_t const & AuxDets () const
 Return the interfal auxiliary detectors list. More...
 

Private Types

using DefaultVector_t = TVector3
 Default template argument. More...
 
using DefaultPoint_t = TVector3
 Default template argument. More...
 

Private Member Functions

std::vector< TGeoNode const * > FindDetectorEnclosure (std::string const &name="volDetEnclosure") const
 
bool FindFirstVolume (std::string const &name, std::vector< const TGeoNode * > &path) const
 
void BuildGeometry (geo::GeometryBuilder &builder)
 
bool WireIDIntersectionCheck (const geo::WireID &wid1, const geo::WireID &wid2) const
 Wire ID check for WireIDsIntersect methods. More...
 
void SortGeometry (geo::GeoObjectSorter const &sorter)
 Runs the sorting of geometry with the sorter provided by channel mapping. More...
 
void UpdateAfterSorting ()
 Performs all the updates needed after sorting. More...
 
void ClearGeometry ()
 Deletes the detector geometry structures. More...
 

Static Private Member Functions

static bool PointWithinSegments (double A_start_x, double A_start_y, double A_end_x, double A_end_y, double B_start_x, double B_start_y, double B_end_x, double B_end_y, double x, double y)
 Returns whether x and y are within both specified ranges (A and B). More...
 
static void CheckIndependentPlanesOnSameTPC (geo::PlaneID const &pid1, geo::PlaneID const &pid2, const char *caller)
 

Private Attributes

GeometryData_t fGeoData
 The detector description data. More...
 
double fSurfaceY
 The point where air meets earth for this detector. More...
 
std::string fDetectorName
 Name of the detector. More...
 
std::string fGDMLfile
 path to geometry file used for Geant4 simulation More...
 
std::string fROOTfile
 path to geometry file for geometry in GeometryCore More...
 
double fMinWireZDist
 
double fPositionWiggle
 accounting for rounding errors when testing positions More...
 
fhicl::ParameterSet fBuilderParameters
 
std::unique_ptr< const geo::ChannelMapAlgfChannelMapAlg
 Object containing the channel to wire mapping. More...
 
std::set< geo::View_tallViews
 All views in the detector. More...
 

Detailed Description

Description of geometry of one entire detector.


Note
All lengths are specified in centimetres

How to correctly instantiate a GeometryCore object

Instantiation is a multi-step procedure:

  1. construct a GeometryCore object (the "service provider"), with the full configuration; at this step, configuration is just stored
  2. load a geometry with GeometryCore::LoadGeometryFile(); this loads the detector geometry information
  3. prepare a channel map algorithm object (might use for example GeometryCore::DetectorName() or the detector geometry from the newly created object, but any use of channel mapping related functions is forbidden and it would yield undefined behaviour (expected to be catastrophic)
  4. acquire the channel mapping algorithm with GeometryCore::ApplyChannelMap().

Step 3 (creation of the channel mapping algorithm object) can be performed at any time before step 4, provided that no GeometryCore instance is needed for it.

Configuration parameters

  • Name (string; mandatory): string identifying the detector; it can be different from the base name of the file used to initialize the geometry; standard names are recommended by each experiment. This name can be used, for example, to select which channel mapping algorithm to use.
  • SurfaceY (real; mandatory): depth of the detector, in centimetrs; see SurfaceY() for details
  • MinWireZDist (real; default: 3)
  • PositionEpsilon (real; default: 0.01%) set the default tolerance (see DefaultWiggle())

Definition at line 1468 of file GeometryCore.h.

Member Typedef Documentation

Type of list of auxiliary detectors.

Definition at line 1505 of file GeometryCore.h.

Forward-iterator browsing all cryostat IDs in the detector.

Usage example with a while loop:

iCryostat = geom->begin_cryostat_id(), cend = geom->end_cryostat_id();
while (iCryostat != cend) {
std::cout << "Cryo: " << iCryostat->Cryostat << std::endl;
const geo::CryostatGeo* pCryo = iCryostat.get();
++iCryostat;
// ...
} // while

The recommended way to iterate is actually to use GeometryCore::IterateCryostatIDs() in a range-for loop. It is recommended to save the end iterator rather than calling GeometryCore::end_cryostat_id() on every check.

Definition at line 1536 of file GeometryCore.h.

Forward-iterator browsing all cryostats in the detector.

Usage example with a while loop:

iCryostat = geom->begin_cryostat(), cend = geom->end_cryostat();
while (iCryostat != cend) {
std::cout << "Cryo: " << iCryostat.ID() << std::endl;
geo::CryostatGeo const& Cryo = *iCryostat;
++iCryostat;
// ...
} // while

The recommended way to iterate is actually to use GeometryCore::IterateCryostats() in a range-for loop. It is recommended to save the end iterator rather than calling GeometryCore::end_cryostat() on every check.

Definition at line 1557 of file GeometryCore.h.

Type of list of cryostats.

Definition at line 1503 of file GeometryCore.h.

using geo::GeometryCore::DefaultPoint_t = TVector3
private

Default template argument.

Definition at line 1471 of file GeometryCore.h.

using geo::GeometryCore::DefaultVector_t = TVector3
private

Default template argument.

Definition at line 1470 of file GeometryCore.h.

Definition at line 1477 of file GeometryCore.h.

Forward-iterator browsing all plane IDs in the detector.

Usage example with a while loop:

geo::GeometryCore::plane_id_iterator iPlane = geom->begin_plane_id(),
pend = geom->end_plane_id();
while (iPlane != pend) {
std::cout << "Plane: " << *iPlane << std::endl;
// the plane descriptor object
const geo::PlaneGeo* pPlane = iPlane.get();
// the TPC the plane is in
geo::TPCGeo const& TPC = geom->TPC(*iPlane);
++iPlane;
// ...
} // while

The recommended way to iterate is actually to use GeometryCore::IteratePlaneIDs() in a range-for loop. It is recommended to save the end iterator rather than calling GeometryCore::end_plane_id() on every check.

Definition at line 1627 of file GeometryCore.h.

Forward-iterator browsing all planes in the detector.

Usage example with a while loop:

geo::GeometryCore::plane_iterator iPlane = geom->begin_plane(),
pend = geom->end_plane();
while (iPlane != pend) {
std::cout << "Plane: " << iPlane.ID() << std::endl;
// the plane descriptor object
geo::PlaneGeo const& Plane = *iPlane;
++iPlane;
// ...
} // while

The recommended way to iterate is actually to use GeometryCore::IteratePlanes() in a range-for loop. It is recommended to save the end iterator rather than calling GeometryCore::end_plane() on every check.

Definition at line 1649 of file GeometryCore.h.

Forward-iterator browsing all TPC IDs in the detector.

Usage example with a while loop:

geo::GeometryCore::TPC_id_iterator iTPC = geom->begin_TPC_id(),
tend = geom->end_TPC_id();
while (iTPC != tend) {
std::cout << "TPC: " << *iTPC << std::endl;
// the TPC descriptor object
const geo::TPCGeo* pTPC = iTPC.get();
// the cryostat the TPC is in
geo::CryostatGeo const& Cryo = geom->Cryostat(*iTPC);
++iTPC;
// ...
} // while

The recommended way to iterate is actually to use GeometryCore::IterateTPCIDs() in a range-for loop. It is recommended to save the end iterator rather than calling GeometryCore::end_TPC_id() on every check.

Definition at line 1581 of file GeometryCore.h.

Forward-iterator browsing all TPCs in the detector.

Usage example with a while loop:

geo::GeometryCore::TPC_iterator iTPC = geom->begin_TPC(),
tend = geom->end_TPC();
while (iTPC != tend) {
std::cout << "TPC: " << iTPC.ID() << std::endl;
// the TPC descriptor object
geo::TPCGeo const& TPC = *iTPC;
++iTPC;
// ...
} // while

The recommended way to iterate is actually to use GeometryCore::IterateTPCs() in a range-for loop. It is recommended to save the end iterator rather than calling GeometryCore::end_TPC() on every check.

Definition at line 1603 of file GeometryCore.h.

Forward-iterator browsing all wire IDs in the detector.

Usage example with a while loop:

geo::GeometryCore::wire_id_iterator iWire = geom->begin_wire_id(),
wend = geom->end_wire_id();
while (iWire != wend) {
std::cout << "Wire: " << *iWire << std::endl;
// the wire descriptor object
const geo::WireGeo* pWire = iWire.get();
// the TPC the wire is in
geo::TPCGeo const& TPC = geom->TPC(*iWire);
++iWire;
// ...
} // while

The recommended way to iterate is actually to use GeometryCore::IterateWireIDs() in a range-for loop. It is recommended to save the end iterator rather than calling GeometryCore::end_wire_id() on every check.

Definition at line 1673 of file GeometryCore.h.

Forward-iterator browsing all wires in the detector.

Usage example with a while loop:

geo::GeometryCore::wire_iterator iWire = geom->begin_wire(),
wend = geom->end_wire();
while (iWire != wend) {
std::cout << "Wire: " << iWire.ID() << std::endl;
// the wire descriptor object
geo::WireGeo const& Wire = *iWire;
++iWire;
// ...
} // while

The recommended way to iterate is actually to use GeometryCore::IterateWires() in a range-for loop. It is recommended to save the end iterator rather than calling GeometryCore::end_wire() on every check.

Definition at line 1695 of file GeometryCore.h.

Constructor & Destructor Documentation

geo::GeometryCore::GeometryCore ( fhicl::ParameterSet const &  pset)

Initialize geometry from a given configuration.

Parameters
psetconfiguration parameters

This constructor does not load any geometry description. The next step is to do exactly that, by GeometryCore::LoadGeometryFile().

Definition at line 58 of file GeometryCore.cxx.

References fDetectorName.

61  : fSurfaceY (pset.get< double >("SurfaceY" ))
62  , fDetectorName (pset.get< std::string >("Name" ))
63  , fMinWireZDist (pset.get< double >("MinWireZDist", 3.0 ))
64  , fPositionWiggle (pset.get< double >("PositionEpsilon", 1.e-4))
66  (pset.get<fhicl::ParameterSet>("Builder", fhicl::ParameterSet()))
67  {
68  std::transform(fDetectorName.begin(), fDetectorName.end(),
69  fDetectorName.begin(), ::tolower);
70  } // GeometryCore::GeometryCore()
double fSurfaceY
The point where air meets earth for this detector.
double fPositionWiggle
accounting for rounding errors when testing positions
std::string fDetectorName
Name of the detector.
fhicl::ParameterSet fBuilderParameters
geo::GeometryCore::~GeometryCore ( )

Destructor.

Definition at line 74 of file GeometryCore.cxx.

References ApplyChannelMap(), and ClearGeometry().

74  {
75  ClearGeometry();
76  } // GeometryCore::~GeometryCore()
void ClearGeometry()
Deletes the detector geometry structures.
geo::GeometryCore::GeometryCore ( GeometryCore const &  )
delete
geo::GeometryCore::GeometryCore ( GeometryCore &&  )
delete

Member Function Documentation

void geo::GeometryCore::ApplyChannelMap ( std::unique_ptr< geo::ChannelMapAlg pChannelMap)

Initializes the geometry to work with this channel map.

Parameters
pChannelMapa pointer to the channel mapping algorithm to be used
See also
LoadGeometryFile()

The specified channel mapping is used with this geometry. These modifications typically involve some resorting of the objects.

This method needs to be called after LoadGeometryFile() to complete the geometry initialization.

Definition at line 81 of file GeometryCore.cxx.

References fChannelMapAlg, fGeoData, geo::ChannelMapAlg::Initialize(), geo::ChannelMapAlg::Sorter(), SortGeometry(), and UpdateAfterSorting().

Referenced by geo::Geometry::InitializeChannelMap(), and ~GeometryCore().

82  {
83  SortGeometry(pChannelMap->Sorter());
84  UpdateAfterSorting(); // after channel mapping has sorted objects, set their IDs
85  pChannelMap->Initialize(fGeoData);
86  fChannelMapAlg = move(pChannelMap);
87  } // GeometryCore::ApplyChannelMap()
std::unique_ptr< const geo::ChannelMapAlg > fChannelMapAlg
Object containing the channel to wire mapping.
GeometryData_t fGeoData
The detector description data.
virtual geo::GeoObjectSorter const & Sorter() const =0
Returns the object to sort geometry with.
void SortGeometry(geo::GeoObjectSorter const &sorter)
Runs the sorting of geometry with the sorter provided by channel mapping.
void UpdateAfterSorting()
Performs all the updates needed after sorting.
virtual void Initialize(GeometryData_t const &geodata)=0
Geometry initialisation.
const AuxDetGeo & geo::GeometryCore::AuxDet ( unsigned int const  ad = 0) const

Returns the specified auxiliary detector.

Parameters
adthe auxiliary detector index
Returns
a constant reference to the specified auxiliary detector
Todo:

what happens if it does not exist?

remove the default parameter?

Definition at line 324 of file GeometryCore.cxx.

References AuxDets(), and NAuxDets().

Referenced by ChannelToAuxDet(), ChannelToAuxDetSensitive(), PositionToAuxDet(), PositionToAuxDetSensitive(), and larg4::LArG4::produce().

325  {
326  if(ad >= NAuxDets())
327  throw cet::exception("GeometryCore") << "AuxDet "
328  << ad
329  << " does not exist\n";
330 
331  return AuxDets()[ad];
332  }
AuxDetList_t & AuxDets()
Return the interfal auxiliary detectors list.
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
unsigned int NAuxDets() const
Returns the number of auxiliary detectors.
AuxDetList_t& geo::GeometryCore::AuxDets ( )
inlineprotected

Return the interfal auxiliary detectors list.

Definition at line 5475 of file GeometryCore.h.

Referenced by AuxDet(), BuildGeometry(), ChannelToAuxDet(), ChannelToAuxDetSensitive(), ClearGeometry(), FindAuxDetAtPosition(), FindAuxDetSensitiveAtPosition(), NAuxDetSensitive(), and SortGeometry().

5475 { return fGeoData.auxDets; }
GeometryData_t fGeoData
The detector description data.
AuxDetList_t auxDets
The auxiliary detectors.
Definition: GeometryData.h:39
AuxDetList_t const& geo::GeometryCore::AuxDets ( ) const
inlineprotected

Return the interfal auxiliary detectors list.

Definition at line 5476 of file GeometryCore.h.

5476 { return fGeoData.auxDets; }
GeometryData_t fGeoData
The detector description data.
AuxDetList_t auxDets
The auxiliary detectors.
Definition: GeometryData.h:39
cryostat_iterator geo::GeometryCore::begin_cryostat ( ) const
inline

Returns an iterator pointing to the first cryostat.

Definition at line 2154 of file GeometryCore.h.

References geo::details::geometry_iterator_types::begin_pos.

Referenced by evd_tool::ICARUSDrawer::DetOutline3D(), and IterateCryostatIDs().

geo::cryostat_iterator cryostat_iterator
Forward-iterator browsing all cryostats in the detector.
static constexpr BeginPos_t begin_pos
Definition: GeometryCore.h:107
cryostat_id_iterator geo::GeometryCore::begin_cryostat_id ( ) const
inline

Returns an iterator pointing to the first cryostat ID.

Definition at line 2146 of file GeometryCore.h.

References geo::details::geometry_iterator_types::begin_pos.

Referenced by end_cryostat().

static constexpr BeginPos_t begin_pos
Definition: GeometryCore.h:107
geo::cryostat_id_iterator cryostat_id_iterator
Forward-iterator browsing all cryostat IDs in the detector.
plane_iterator geo::GeometryCore::begin_plane ( ) const
inline

Returns an iterator pointing to the first plane in the detector.

Definition at line 3084 of file GeometryCore.h.

References geo::details::geometry_iterator_types::begin_pos.

Referenced by IteratePlaneIDs(), and IteratePlanes().

3085  { return plane_iterator(this, plane_iterator::begin_pos); }
static constexpr BeginPos_t begin_pos
Definition: GeometryCore.h:107
geo::plane_iterator plane_iterator
Forward-iterator browsing all planes in the detector.
plane_iterator geo::GeometryCore::begin_plane ( geo::CryostatID const &  ID) const
inline

Returns an iterator pointing to the first plane in the specified cryostat.

Definition at line 3093 of file GeometryCore.h.

3094  { return plane_iterator(this, GetBeginPlaneID(ID)); }
geo::PlaneID GetBeginPlaneID(geo::CryostatID const &id) const
Returns the ID of the first plane of the specified cryostat.
geo::plane_iterator plane_iterator
Forward-iterator browsing all planes in the detector.
plane_iterator geo::GeometryCore::begin_plane ( geo::TPCID const &  ID) const
inline

Returns an iterator pointing to the first plane in the specified TPC.

Definition at line 3102 of file GeometryCore.h.

3103  { return plane_iterator(this, GetBeginPlaneID(ID)); }
geo::PlaneID GetBeginPlaneID(geo::CryostatID const &id) const
Returns the ID of the first plane of the specified cryostat.
geo::plane_iterator plane_iterator
Forward-iterator browsing all planes in the detector.
plane_id_iterator geo::GeometryCore::begin_plane_id ( ) const
inline

Returns an iterator pointing to the first plane ID in the detector.

Definition at line 3056 of file GeometryCore.h.

References geo::details::geometry_iterator_types::begin_pos.

Referenced by end_plane(), and IteratePlaneIDs().

static constexpr BeginPos_t begin_pos
Definition: GeometryCore.h:107
geo::plane_id_iterator plane_id_iterator
Forward-iterator browsing all plane IDs in the detector.
plane_id_iterator geo::GeometryCore::begin_plane_id ( geo::CryostatID const &  ID) const
inline

Returns an iterator pointing to the first plane ID in the specified cryostat.

Definition at line 3065 of file GeometryCore.h.

3066  { return plane_id_iterator(this, GetBeginPlaneID(ID)); }
geo::PlaneID GetBeginPlaneID(geo::CryostatID const &id) const
Returns the ID of the first plane of the specified cryostat.
geo::plane_id_iterator plane_id_iterator
Forward-iterator browsing all plane IDs in the detector.
plane_id_iterator geo::GeometryCore::begin_plane_id ( geo::TPCID const &  ID) const
inline

Returns an iterator pointing to the first plane ID in the specified TPC.

Definition at line 3075 of file GeometryCore.h.

3076  { return plane_id_iterator(this, GetBeginPlaneID(ID)); }
geo::PlaneID GetBeginPlaneID(geo::CryostatID const &id) const
Returns the ID of the first plane of the specified cryostat.
geo::plane_id_iterator plane_id_iterator
Forward-iterator browsing all plane IDs in the detector.
ROP_id_iterator geo::GeometryCore::begin_ROP_id ( ) const
inline

Returns an iterator pointing to the first ROP ID in the detector.

Definition at line 5204 of file GeometryCore.h.

References geo::details::geometry_iterator_types::begin_pos.

Referenced by end_ROP_id(), and IterateROPIDs().

5205  { return ROP_id_iterator(this, ROP_id_iterator::begin_pos); }
static constexpr BeginPos_t begin_pos
Definition: GeometryCore.h:107
details::ROP_id_iterator_base< readout::ROPID > ROP_id_iterator
Forward iterator browsing all readout planes in the detector.
ROP_id_iterator geo::GeometryCore::begin_ROP_id ( geo::CryostatID const &  ID) const
inline

Returns an iterator pointing to the first readout plane ID in the specified cryostat.

Definition at line 5213 of file GeometryCore.h.

5214  { return ROP_id_iterator(this, GetBeginROPID(ID)); }
details::ROP_id_iterator_base< readout::ROPID > ROP_id_iterator
Forward iterator browsing all readout planes in the detector.
readout::ROPID GetBeginROPID(geo::CryostatID const &id) const
Returns the ID of the first readout plane of the specified cryostat.
ROP_id_iterator geo::GeometryCore::begin_ROP_id ( readout::TPCsetID const &  ID) const
inline

Returns an iterator pointing to the first readout plane ID in the specified TPC set.

Definition at line 5223 of file GeometryCore.h.

5224  { return ROP_id_iterator(this, GetBeginROPID(ID)); }
details::ROP_id_iterator_base< readout::ROPID > ROP_id_iterator
Forward iterator browsing all readout planes in the detector.
readout::ROPID GetBeginROPID(geo::CryostatID const &id) const
Returns the ID of the first readout plane of the specified cryostat.
TPC_iterator geo::GeometryCore::begin_TPC ( ) const
inline

Returns an iterator pointing to the first TPC in the detector.

Definition at line 2564 of file GeometryCore.h.

References geo::details::geometry_iterator_types::begin_pos.

Referenced by lar::example::SpacePointIsolationAlg::fillAlgConfigFromGeometry(), IterateTPCIDs(), IterateTPCs(), and sim::MCRecoPart::MCRecoPart().

2565  { return TPC_iterator(this, TPC_iterator::begin_pos); }
geo::TPC_iterator TPC_iterator
Forward-iterator browsing all TPCs in the detector.
static constexpr BeginPos_t begin_pos
Definition: GeometryCore.h:107
TPC_iterator geo::GeometryCore::begin_TPC ( geo::CryostatID const &  cid) const
inline

Returns an iterator pointing to the first TPC in the detector.

Definition at line 2572 of file GeometryCore.h.

2573  { return TPC_iterator(this, GetBeginTPCID(cid)); }
geo::TPC_iterator TPC_iterator
Forward-iterator browsing all TPCs in the detector.
geo::TPCID GetBeginTPCID(geo::CryostatID const &id) const
Returns the ID of the first TPC in the specified cryostat.
TPC_id_iterator geo::GeometryCore::begin_TPC_id ( ) const
inline

Returns an iterator pointing to the first TPC ID in the detector.

Definition at line 2546 of file GeometryCore.h.

References geo::details::geometry_iterator_types::begin_pos.

Referenced by pma::PMAlgTracker::build(), end_TPC(), IterateTPCIDs(), and tss::TrackShowerHits::produce().

2547  { return TPC_id_iterator(this, TPC_id_iterator::begin_pos); }
static constexpr BeginPos_t begin_pos
Definition: GeometryCore.h:107
geo::TPC_id_iterator TPC_id_iterator
Forward-iterator browsing all TPC IDs in the detector.
TPC_id_iterator geo::GeometryCore::begin_TPC_id ( geo::CryostatID const &  cid) const
inline

Returns an iterator pointing to the first TPC ID in the specified cryostat.

Definition at line 2555 of file GeometryCore.h.

2556  { return TPC_id_iterator(this, GetBeginTPCID(cid)); }
geo::TPC_id_iterator TPC_id_iterator
Forward-iterator browsing all TPC IDs in the detector.
geo::TPCID GetBeginTPCID(geo::CryostatID const &id) const
Returns the ID of the first TPC in the specified cryostat.
TPCset_id_iterator geo::GeometryCore::begin_TPCset_id ( ) const
inline

Returns an iterator pointing to the first TPC set ID in the detector.

Definition at line 4969 of file GeometryCore.h.

References geo::details::geometry_iterator_types::begin_pos.

Referenced by end_TPCset_id(), and IterateTPCsetIDs().

static constexpr BeginPos_t begin_pos
Definition: GeometryCore.h:107
details::TPCset_id_iterator_base< readout::TPCsetID > TPCset_id_iterator
Forward iterator browsing all TPC sets in the detector.
TPCset_id_iterator geo::GeometryCore::begin_TPCset_id ( geo::CryostatID const &  cid) const
inline

Returns an iterator pointing to the first TPC set ID in the specified cryostat.

Definition at line 4978 of file GeometryCore.h.

4979  { return TPCset_id_iterator(this, GetBeginTPCsetID(cid)); }
readout::TPCsetID GetBeginTPCsetID(geo::CryostatID const &id) const
Returns the ID of the first TPC set in the specified cryostat.
details::TPCset_id_iterator_base< readout::TPCsetID > TPCset_id_iterator
Forward iterator browsing all TPC sets in the detector.
wire_iterator geo::GeometryCore::begin_wire ( ) const
inline

Returns an iterator pointing to the first wire in the detector.

Definition at line 3504 of file GeometryCore.h.

References geo::details::geometry_iterator_types::begin_pos.

Referenced by IterateWireIDs(), and IterateWires().

3505  { return wire_iterator(this, wire_iterator::begin_pos); }
static constexpr BeginPos_t begin_pos
Definition: GeometryCore.h:107
geo::wire_iterator wire_iterator
Forward-iterator browsing all wires in the detector.
wire_iterator geo::GeometryCore::begin_wire ( geo::CryostatID const &  id) const
inline

Returns an iterator pointing to the first wire in specified cryostat.

Definition at line 3512 of file GeometryCore.h.

3513  { return wire_iterator(begin_wire_id(id)); }
wire_id_iterator begin_wire_id() const
Returns an iterator pointing to the first wire ID in the detector.
geo::wire_iterator wire_iterator
Forward-iterator browsing all wires in the detector.
wire_iterator geo::GeometryCore::begin_wire ( geo::TPCID const &  id) const
inline

Returns an iterator pointing to the first wire in specified TPC.

Definition at line 3520 of file GeometryCore.h.

3521  { return wire_iterator(begin_wire_id(id)); }
wire_id_iterator begin_wire_id() const
Returns an iterator pointing to the first wire ID in the detector.
geo::wire_iterator wire_iterator
Forward-iterator browsing all wires in the detector.
wire_iterator geo::GeometryCore::begin_wire ( geo::PlaneID const &  id) const
inline

Returns an iterator pointing to the first wire in specified plane.

Definition at line 3528 of file GeometryCore.h.

3529  { return wire_iterator(begin_wire_id(id)); }
wire_id_iterator begin_wire_id() const
Returns an iterator pointing to the first wire ID in the detector.
geo::wire_iterator wire_iterator
Forward-iterator browsing all wires in the detector.
wire_id_iterator geo::GeometryCore::begin_wire_id ( ) const
inline

Returns an iterator pointing to the first wire ID in the detector.

Definition at line 3471 of file GeometryCore.h.

References geo::details::geometry_iterator_types::begin_pos.

Referenced by end_wire(), IterateWireIDs(), lariov::SIOVElectronicsCalibProvider::Reconfigure(), and lariov::DetPedestalRetrievalAlg::Reconfigure().

static constexpr BeginPos_t begin_pos
Definition: GeometryCore.h:107
geo::wire_id_iterator wire_id_iterator
Forward-iterator browsing all wire IDs in the detector.
wire_id_iterator geo::GeometryCore::begin_wire_id ( geo::CryostatID const &  id) const
inline

Returns an iterator pointing to the first wire ID in specified cryostat.

Definition at line 3479 of file GeometryCore.h.

3480  { return wire_id_iterator(this, GetBeginWireID(id)); }
geo::WireID GetBeginWireID(geo::CryostatID const &id) const
Returns the ID of the first wire in the specified cryostat.
geo::wire_id_iterator wire_id_iterator
Forward-iterator browsing all wire IDs in the detector.
wire_id_iterator geo::GeometryCore::begin_wire_id ( geo::TPCID const &  id) const
inline

Returns an iterator pointing to the first wire ID in specified TPC.

Definition at line 3488 of file GeometryCore.h.

3489  { return wire_id_iterator(this, GetBeginWireID(id)); }
geo::WireID GetBeginWireID(geo::CryostatID const &id) const
Returns the ID of the first wire in the specified cryostat.
geo::wire_id_iterator wire_id_iterator
Forward-iterator browsing all wire IDs in the detector.
wire_id_iterator geo::GeometryCore::begin_wire_id ( geo::PlaneID const &  id) const
inline

Returns an iterator pointing to the first wire ID in specified plane.

Definition at line 3496 of file GeometryCore.h.

3497  { return wire_id_iterator(this, GetBeginWireID(id)); }
geo::WireID GetBeginWireID(geo::CryostatID const &id) const
Returns the ID of the first wire in the specified cryostat.
geo::wire_id_iterator wire_id_iterator
Forward-iterator browsing all wire IDs in the detector.
void geo::GeometryCore::BuildGeometry ( geo::GeometryBuilder builder)
private

Parses ROOT geometry nodes and builds LArSoft geometry representation.

Parameters
builderthe algorithm to be used

Definition at line 1014 of file GeometryCore.cxx.

References AuxDets(), Cryostats(), geo::GeometryBuilder::extractAuxiliaryDetectors(), and geo::GeometryBuilder::extractCryostats().

Referenced by LoadGeometryFile().

1015  {
1016  geo::GeoNodePath path{ gGeoManager->GetTopNode() };
1017  Cryostats() = builder.extractCryostats(path);
1018  AuxDets() = builder.extractAuxiliaryDetectors(path);
1019  }
Cryostats_t extractCryostats(Path_t const &path)
Looks for all cryostats under the specified path.
AuxDets_t extractAuxiliaryDetectors(Path_t const &path)
Looks for all auxiliary detectors under the specified path.
AuxDetList_t & AuxDets()
Return the interfal auxiliary detectors list.
CryostatList_t & Cryostats()
Return the internal cryostat list.
Representation of a node and its ancestry.
Definition: GeoNodePath.h:38
geo::ChannelMapAlg const* geo::GeometryCore::ChannelMap ( ) const
inlineprotected

Returns the object handling the channel map.

Definition at line 5464 of file GeometryCore.h.

5465  { return fChannelMapAlg.get(); }
std::unique_ptr< const geo::ChannelMapAlg > fChannelMapAlg
Object containing the channel to wire mapping.
bool geo::GeometryCore::ChannelsIntersect ( raw::ChannelID_t  c1,
raw::ChannelID_t  c2,
double &  y,
double &  z 
) const

Returns an intersection point of two channels.

Parameters
c1one channel ID
c2the other channel ID
y(output) y coordinate of the intersection
z(output) z coordinate of the intersection
Returns
whether a intersection point was found
Todo:

what happens for channels from different TPCs?

what happens for channels with multiple intersection points?

Deprecated:
This is clearly not APA-aware

Definition at line 1255 of file GeometryCore.cxx.

References ChannelToWire(), WireIDsIntersect(), geo::WireIDIntersection::y, and geo::WireIDIntersection::z.

Referenced by vertex::FeatureVertexFinder::Find3dVtxFrom2dClusterVtxCand(), evd::TWQMultiTPCProjectionView::FindEndPoint(), evd::TWQMultiTPCProjectionView::FindLineLength(), cmtool::CFAlgoStartTimeCompat::Float(), vertex::FeatureVertexFinder::Get3dVertexCandidates(), util::GeometryUtilities::GetProjectedPoint(), util::GeometryUtilities::GetYZ(), shwf::ShowerReco::produce(), and vertex::VertexFinder2D::produce().

1259  {
1260 
1261  // [GP] these errors should be exceptions, and this function is deprecated
1262  // because it violates interoperability
1263  std::vector<geo::WireID> chan1wires = ChannelToWire(c1);
1264  if (chan1wires.empty()) {
1265  mf::LogError("ChannelsIntersect")
1266  << "1st channel " << c1 << " maps to no wire (is it a real one?)";
1267  return false;
1268  }
1269  std::vector<geo::WireID> chan2wires = ChannelToWire(c2);
1270  if (chan2wires.empty()) {
1271  mf::LogError("ChannelsIntersect")
1272  << "2nd channel " << c2 << " maps to no wire (is it a real one?)";
1273  return false;
1274  }
1275 
1276  if (chan1wires.size() > 1) {
1277  mf::LogWarning("ChannelsIntersect")
1278  << "1st channel " << c1 << " maps to " << chan2wires.size()
1279  << " wires; using the first!";
1280  return false;
1281  }
1282  if (chan2wires.size() > 1) {
1283  mf::LogError("ChannelsIntersect")
1284  << "2nd channel " << c2 << " maps to " << chan2wires.size()
1285  << " wires; using the first!";
1286  return false;
1287  }
1288 
1289  geo::WireIDIntersection widIntersect;
1290  if (this->WireIDsIntersect(chan1wires[0],chan2wires[0],widIntersect)){
1291  y = widIntersect.y;
1292  z = widIntersect.z;
1293  return true;
1294  }
1295  else{
1296  y = widIntersect.y;
1297  z = widIntersect.z;
1298  return false;
1299  }
1300  }
double z
z position of intersection
Definition: geo_types.h:805
Float_t y
Definition: compare.C:6
Double_t z
Definition: plot.C:279
std::vector< geo::WireID > ChannelToWire(raw::ChannelID_t const channel) const
Returns a list of wires connected to the specified TPC channel.
MaybeLogger_< ELseverityLevel::ELsev_error, false > LogError
TCanvas * c1
Definition: plotHisto.C:7
TCanvas * c2
Definition: plot_hist.C:75
bool WireIDsIntersect(WireID const &wid1, WireID const &wid2, geo::Point_t &intersection) const
Computes the intersection between two wires.
double y
y position of intersection
Definition: geo_types.h:804
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
std::vector< raw::ChannelID_t > geo::GeometryCore::ChannelsInTPCs ( ) const

Returns an std::vector<ChannelID_t> in all TPCs in a TPCSet.

Definition at line 205 of file GeometryCore.cxx.

References fChannelMapAlg, IterateTPCsetIDs(), and IterateWireIDs().

206  {
207  std::vector<raw::ChannelID_t> channels;
208  channels.reserve(fChannelMapAlg->Nchannels());
209 
210  for (const readout::TPCsetID & ts: IterateTPCsetIDs())
211  {
212  for (auto const t: fChannelMapAlg->TPCsetToTPCs(ts))
213  {
214  for (auto const & wire: IterateWireIDs(t))
215  {
216  channels.push_back(fChannelMapAlg->PlaneWireToChannel(wire));
217  }
218  }
219  }
220  std::sort(channels.begin(), channels.end());
221  auto last = std::unique(channels.begin(), channels.end());
222  channels.erase(last, channels.end());
223  return channels;
224  }
std::unique_ptr< const geo::ChannelMapAlg > fChannelMapAlg
Object containing the channel to wire mapping.
Class identifying a set of TPC sharing readout channels.
Definition: readout_types.h:70
IteratorBox< wire_id_iterator,&GeometryCore::begin_wire_id,&GeometryCore::end_wire_id > IterateWireIDs() const
Enables ranged-for loops on all wire IDs of the detector.
IteratorBox< TPCset_id_iterator,&GeometryCore::begin_TPCset_id,&GeometryCore::end_TPCset_id > IterateTPCsetIDs() const
Enables ranged-for loops on all TPC set IDs of the detector.
const AuxDetGeo & geo::GeometryCore::ChannelToAuxDet ( std::string const &  auxDetName,
uint32_t const &  channel 
) const

Returns the number of auxiliary detectors.

Todo:
use a AutDetID_t instead of unsigned int?

This method returns the total number of scintillator paddles (Auxiliary Detectors aka AuxDet) outside of the cryostat

Todo:
Change return type to size_t

Definition at line 539 of file GeometryCore.cxx.

References AuxDet(), AuxDets(), and fChannelMapAlg.

541  {
542  size_t adIdx = fChannelMapAlg->ChannelToAuxDet(AuxDets(), auxDetName, channel);
543  return this->AuxDet(adIdx);
544  }
std::unique_ptr< const geo::ChannelMapAlg > fChannelMapAlg
Object containing the channel to wire mapping.
AuxDetList_t & AuxDets()
Return the interfal auxiliary detectors list.
AuxDetGeo const & AuxDet(unsigned int const ad=0) const
Returns the specified auxiliary detector.
const AuxDetSensitiveGeo & geo::GeometryCore::ChannelToAuxDetSensitive ( std::string const &  auxDetName,
uint32_t const &  channel 
) const

Returns the number of auxiliary detectors.

Todo:
use a AutDetID_t instead of unsigned int?

This method returns the total number of scintillator paddles (Auxiliary Detectors aka AuxDet) outside of the cryostat

Todo:
Change return type to size_t

Definition at line 547 of file GeometryCore.cxx.

References AuxDet(), AuxDets(), fChannelMapAlg, and geo::AuxDetGeo::SensitiveVolume().

549  {
550  auto idx = fChannelMapAlg->ChannelToSensitiveAuxDet(AuxDets(), auxDetName, channel);
551  return this->AuxDet(idx.first).SensitiveVolume(idx.second);
552  }
std::unique_ptr< const geo::ChannelMapAlg > fChannelMapAlg
Object containing the channel to wire mapping.
AuxDetSensitiveGeo const & SensitiveVolume(size_t sv) const
Definition: AuxDetGeo.h:171
AuxDetList_t & AuxDets()
Return the interfal auxiliary detectors list.
AuxDetGeo const & AuxDet(unsigned int const ad=0) const
Returns the specified auxiliary detector.
readout::ROPID geo::GeometryCore::ChannelToROP ( raw::ChannelID_t  channel) const

Returns the ID of the ROP the channel belongs to

Exceptions
cet::exception(category: "Geometry") if non-existent channel

Definition at line 1097 of file GeometryCore.cxx.

References fChannelMapAlg, and WireCoordinate().

Referenced by reco3d::TripletFinder::FillBadMap(), reco3d::TripletFinder::FillHitMap(), and View().

1098  {
1099  return fChannelMapAlg->ChannelToROP(channel);
1100  } // GeometryCore::ChannelToROP()
std::unique_ptr< const geo::ChannelMapAlg > fChannelMapAlg
Object containing the channel to wire mapping.
std::vector< geo::WireID > geo::GeometryCore::ChannelToWire ( raw::ChannelID_t const  channel) const

Returns a list of wires connected to the specified TPC channel.

Parameters
channelTPC channel ID
Returns
vector containing the ID of all the connected wires
Exceptions
cet::exception(category: "Geometry") if non-existent channel

Definition at line 1091 of file GeometryCore.cxx.

References fChannelMapAlg.

Referenced by hit::MCHitAnaExample::analyze(), MCBTDemo::analyze(), detsim::WienerFilterAna::analyze(), apa::APAGeometryAlg::APAChannelsIntersect(), lar_cluster3d::StandardHit3DBuilder::BuildChannelStatusVec(), ChannelsIntersect(), apa::APAGeometryAlg::ChanSegsPerSide(), lar_cluster3d::StandardHit3DBuilder::CollectArtHits(), apa::DisambigAlg::CompareViews(), lar_cluster3d::MinSpanTreeAlg::configure(), reco3d::TripletFinder::FillHitMap(), evd::RawDataDrawer::FillQHisto(), evd::RecoBaseDrawer::FillQHisto(), lar_pandora::PFParticleHitDumper::FillRecoWires(), evd::RecoBaseDrawer::FillTQHisto(), evd::RecoBaseDrawer::FillTQHistoDP(), reco_tool::CandHitStandard::findHitCandidates(), reco_tool::CandHitDerivative::findHitCandidates(), reco_tool::CandHitMorphological::findHitCandidates(), hit::HitCheater::FindHitsOnChannel(), evd::RecoBaseDrawer::GetHits(), cluster::SmallClusterFinderAlg::GetPlaneAndTPC(), corner::CornerFinderAlg::GrabWires(), evd::RecoBaseDrawer::Hit2D(), lar_cluster3d::SpacePointHit3DBuilder::Hit3DBuilder(), apa::APAGeometryAlg::Init(), hit::DisambigCheater::InitHitToWids(), reco3d::IntersectionCache::ISect(), apa::APAGeometryAlg::LineSegChanIntersect(), apa::DisambigAlg::MakeCloseHits(), sim::MCRecoEdep::MakeMCEdep(), apa::APAGeometryAlg::NearestWireIDOnChan(), btutil::MCBTAlg::ProcessSimChannel(), hit::TTHitFinder::produce(), hit::RawHitFinder::produce(), hit::FFTHitFinder::produce(), hit::GausHitFinder::produce(), hit::DPRawHitFinder::produce(), evd::RawDataDrawer::RawDigit2D(), hit::RFFHitFinderAlg::Run(), hit::CCHitFinderAlg::RunCCHitFinder(), evd::RawDataDrawer::RunOperation(), img::DataProviderAlg::setWireDriftData(), apa::APAGeometryAlg::ThreeChanPos(), apa::DisambigAlg::TrivialDisambig(), and evd::RecoBaseDrawer::Wire2D().

1092  {
1093  return fChannelMapAlg->ChannelToWire(channel);
1094  }
std::unique_ptr< const geo::ChannelMapAlg > fChannelMapAlg
Object containing the channel to wire mapping.
void geo::GeometryCore::CheckIndependentPlanesOnSameTPC ( geo::PlaneID const &  pid1,
geo::PlaneID const &  pid2,
const char *  caller 
)
staticprivate

Throws an exception ("GeometryCore" category) unless pid1 and pid2 are on different planes of the same TPC (ID validity is not checked)

Definition at line 1526 of file GeometryCore.cxx.

References geo::TPCID::asTPCID().

Referenced by ThirdPlane(), ThirdPlane_dTdW(), and ThirdPlaneSlope().

1527  {
1528  if(pid1.asTPCID() != pid2.asTPCID()) {
1529  throw cet::exception("GeometryCore")
1530  << caller << " needs two planes on the same TPC (got "
1531  << std::string(pid1) << " and " << std::string(pid2) << ")\n";
1532  }
1533  if(pid1 == pid2) { // was: return 999;
1534  throw cet::exception("GeometryCore")
1535  << caller << " needs two different planes, got "
1536  << std::string(pid1) << " twice\n";
1537  }
1538  } // GeometryCore::CheckIndependentPlanesOnSameTPC()
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
void geo::GeometryCore::ClearGeometry ( )
private

Deletes the detector geometry structures.

Definition at line 144 of file GeometryCore.cxx.

References AuxDets(), and Cryostats().

Referenced by LoadGeometryFile(), and ~GeometryCore().

145  {
146  Cryostats().clear();
147  AuxDets().clear();
148  }
AuxDetList_t & AuxDets()
Return the interfal auxiliary detectors list.
CryostatList_t & Cryostats()
Return the internal cryostat list.
double geo::GeometryCore::ComputeThirdPlane_dTdW ( double  angle1,
double  pitch1,
double  dTdW1,
double  angle2,
double  pitch2,
double  dTdW2,
double  angle_target,
double  pitch_target 
)
static

Returns the slope on the third plane, given it in the other two.

Parameters
angle1angle or the wires on the first plane
pitch1wire pitch on the first plane
dTdW1slope in dt/dw units as observed on the first plane
angle2angle or the wires on the second plane
pitch2wire pitch on the second plane
dTdW2slope in dt/dw units as observed on the second plane
angle_targetangle or the wires on the target plane
pitch_targetwire pitch on the target plane
Returns
dt/dw slope as measured on the third plane, or 999 if infinity

The input slope must be specified in dt/dw non-homogeneous coordinates.

This function will return a small slope if both input slopes are small.

Definition at line 1644 of file GeometryCore.cxx.

References ComputeThirdPlaneSlope().

Referenced by ThirdPlane_dTdW().

1649  {
1650  // we need to convert dt/dw into homogeneous coordinates, and then back;
1651  // slope = [dT * (TDCperiod / driftVelocity)] / [dW * wirePitch]
1652  // The coefficient of dT is assumed to be the same for all the planes,
1653  // and it finally cancels out. Pitches cancel out only if they are all
1654  // the same.
1655  return pitch_target * ComputeThirdPlaneSlope
1656  (angle1, dTdW1 / pitch1, angle2, dTdW2 / pitch2, angle_target);
1657  } // GeometryCore::ComputeThirdPlane_dTdW()
static double ComputeThirdPlaneSlope(double angle1, double slope1, double angle2, double slope2, double angle_target)
Returns the slope on the third plane, given it in the other two.
double geo::GeometryCore::ComputeThirdPlaneSlope ( double  angle1,
double  slope1,
double  angle2,
double  slope2,
double  angle_target 
)
static

Returns the slope on the third plane, given it in the other two.

Parameters
angle1angle or the wires on the first plane
slope1slope as observed on the first plane
angle2angle or the wires on the second plane
slope2slope as observed on the second plane
angle_targetangle or the wires on the target plane
Returns
the slope as measure on the third plane, or 999 if infinity

This function will return a small slope if both input slopes are small.

Definition at line 1619 of file GeometryCore.cxx.

References util::abs().

Referenced by ComputeThirdPlane_dTdW(), ThirdPlane_dTdW(), and ThirdPlaneSlope().

1620  {
1621  // note that, if needed, the trigonometric functions can be pre-calculated.
1622 
1623  // Can't resolve very small slopes
1624  if ((std::abs(slope1) < 0.001) && (std::abs(slope2)) < 0.001) return 0.001;
1625 
1626  // We need the "wire coordinate direction" for each plane.
1627  // This is perpendicular to the wire orientation.
1628  double slope3 = 0.001;
1629  if (std::abs(slope1) > 0.001 && std::abs(slope2) > 0.001) {
1630  slope3
1631  = (
1632  + (1./slope1)*std::sin(angle3-angle2)
1633  - (1./slope2)*std::sin(angle3-angle1)
1634  ) / std::sin(angle1-angle2)
1635  ;
1636  }
1637  if (slope3 != 0.) slope3 = 1./slope3;
1638  else slope3 = 999.;
1639 
1640  return slope3;
1641  } // GeometryCore::ComputeThirdPlaneSlope()
constexpr auto abs(T v)
Returns the absolute value of the argument.
CryostatGeo const & geo::GeometryCore::Cryostat ( geo::CryostatID const &  cryoid) const

Returns the specified cryostat.

Parameters
cstatnumber of cryostat
cryoidcryostat ID
Returns
a constant reference to the specified cryostat
Exceptions
cet::exception(GeometryCore category) if cryostat not present

The GetElement() method is overloaded and its return depends on the type of ID.

Todo:
Make the cryostat number mandatory (as CryostatID)

Definition at line 305 of file GeometryCore.cxx.

References geo::CryostatID::Cryostat, and CryostatPtr().

Referenced by opdet::SimPhotonCounter::beginJob(), trkf::SpacePointAna::bookHistograms(), pma::ProjectionMatchingAlg::buildShowerSeg(), util::DetectorPropertiesServiceArgoNeuT::CalculateXTicksParams(), detinfo::DetectorPropertiesStandard::CalculateXTicksParams(), larg4::LArVoxelReadoutGeometry::Construct(), ems::MultiEMShowers::convCluster(), lar_pandora::LArPandoraInput::CreatePandoraHits2D(), lar_pandora::LArPandoraInput::CreatePandoraReadoutGaps(), CryostatBoundaries(), CryostatHalfHeight(), CryostatHalfWidth(), CryostatLength(), hit::DisambigCheater::DisambigCheater(), evd::RecoBaseDrawer::DrawTrack2D(), cluster::EndPointAlg::EndPoint(), cluster::HoughBaseAlg::FastTransform(), trkf::SpacePointAlg::fillComplexSpacePoint(), cosmic::BeamFlashTrackMatchTaggerAlg::FillFlashProperties(), opdet::FlashHypothesisAnaAlg::FillOpDetPositions(), vertex::FeatureVertexFinder::Find2dClusterVertexCandidates(), vertex::FeatureVertexFinder::Find3dVtxFrom2dClusterVtxCand(), vertex::FeatureVertexFinder::Get3dVertexCandidates(), corner::CornerFinderAlg::get_feature_points_fast(), GetCryostatVolumeName(), lar_pandora::LArPandoraInput::GetTrueX0(), lar_pandora::PFParticleHitDumper::GetUVW(), ems::EMShower3D::LinkCandidates(), trkf::SpacePointAlg::makeSpacePoints(), NOpDets(), OpDetFromCryo(), OpDetGeoFromOpDet(), OpDetGeoName(), PositionToCryostat(), cluster::ClusterCheater::produce(), trkf::CCTrackMaker::produce(), vertex::FeatureVertexFinder::produce(), larg4::LArG4::produce(), evd::SimulationDrawer::SimulationDrawer(), apa::APAGeometryAlg::ThreeChanPos(), cluster::HoughBaseAlg::Transform(), apa::DisambigAlg::TrivialDisambig(), DUNE::NeutrinoTrackingEff::truthLength(), trkf::SpacePointAlg::update(), apa::DisambigAlg::UseEndPts(), and trkf::VertexFitAlg::VertexFit().

305  {
306  CryostatGeo const* pCryo = CryostatPtr(cryoid);
307  if(!pCryo) {
308  throw cet::exception("GeometryCore") << "Cryostat #"
309  << cryoid.Cryostat
310  << " does not exist\n";
311  }
312  return *pCryo;
313  } // GeometryCore::Cryostat(CryostatID)
CryostatGeo const * CryostatPtr(geo::CryostatID const &cryoid) const
Returns the specified cryostat.
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
CryostatGeo const& geo::GeometryCore::Cryostat ( unsigned int const  cstat = 0) const
inline

Returns the specified cryostat.

Parameters
cstatnumber of cryostat
cryoidcryostat ID
Returns
a constant reference to the specified cryostat
Exceptions
cet::exception(GeometryCore category) if cryostat not present

The GetElement() method is overloaded and its return depends on the type of ID.

Todo:
Make the cryostat number mandatory (as CryostatID)

Definition at line 2031 of file GeometryCore.h.

2032  { return Cryostat(geo::CryostatID(cstat)); }
CryostatGeo const & Cryostat(geo::CryostatID const &cryoid) const
Returns the specified cryostat.
The data type to uniquely identify a cryostat.
Definition: geo_types.h:190
void geo::GeometryCore::CryostatBoundaries ( double *  boundaries,
geo::CryostatID const &  cid 
) const

Returns the boundaries of the specified cryostat.

Parameters
boundaries(output) pointer to an area of 6 doubles for boundaries
cidcryostat ID
Exceptions
cet::exception("GeometryCore" category) if cryostat not present
See also
CryostatGeo::Boundaries()

The boundaries array is filled with: [0] lower x coordinate [1] upper x coordinate [2] lower y coordinate [3] upper y coordinate [4] lower z coordinate [5] upper z coordinate

Deprecated:
Use CryostatGeo::Boundaries() (from Cryostat(cid)).
Todo:
What happen on invalid cryostat?

Definition at line 775 of file GeometryCore.cxx.

References geo::CryostatGeo::Boundaries(), and Cryostat().

Referenced by evgen::GaisserParam::beginJob(), opdet::SimPhotonCounter::beginJob(), CryostatLength(), evgen::CORSIKAGen::populateNShowers(), evgen::CosmicsGen::produce(), evgen::CORSIKAGen::produce(), and phot::PhotonVisibilityService::reconfigure().

776  {
777  geo::CryostatGeo const& cryo = Cryostat(cid);
778  cryo.Boundaries(boundaries);
779  } // GeometryCore::CryostatBoundaries()
Geometry information for a single cryostat.
Definition: CryostatGeo.h:43
CryostatGeo const & Cryostat(geo::CryostatID const &cryoid) const
Returns the specified cryostat.
geo::BoxBoundedGeo const & Boundaries() const
Returns boundaries of the cryostat (in centimetres).
Definition: CryostatGeo.h:115
void geo::GeometryCore::CryostatBoundaries ( double *  boundaries,
unsigned int  cstat = 0 
) const
inline

Returns the boundaries of the specified cryostat.

Parameters
boundaries(output) pointer to an area of 6 doubles for boundaries
cstatnumber of cryostat
Exceptions
cet::exception("GeometryCore" category) if cryostat not present
See also
CryostatGeo::Boundaries()

The boundaries array is filled with: [0] lower x coordinate [1] upper x coordinate [2] lower y coordinate [3] upper y coordinate [4] lower z coordinate [5] upper z coordinate

Deprecated:
Use CryostatBoundaries(double*, geo::CryostatID const&) or (recommended) CryostatGeo::Boundaries() from Cryostat(cid) instead

Definition at line 2260 of file GeometryCore.h.

2261  { CryostatBoundaries(boundaries, geo::CryostatID(cstat)); }
void CryostatBoundaries(double *boundaries, geo::CryostatID const &cid) const
Returns the boundaries of the specified cryostat.
The data type to uniquely identify a cryostat.
Definition: geo_types.h:190
geo::Length_t geo::GeometryCore::CryostatHalfHeight ( geo::CryostatID const &  cid) const

Returns the height of the cryostat (y direction)

Definition at line 762 of file GeometryCore.cxx.

References Cryostat(), and geo::CryostatGeo::HalfHeight().

Referenced by CryostatHalfWidth(), simfilter::FilterNoDirtNeutrinos::filter(), and evgen::FileMuons::ReadEvents().

763  {
764  return Cryostat(cid).HalfHeight();
765  }
CryostatGeo const & Cryostat(geo::CryostatID const &cryoid) const
Returns the specified cryostat.
double HalfHeight() const
Half height of the cryostat [cm].
geo::Length_t geo::GeometryCore::CryostatHalfHeight ( unsigned int  cstat = 0) const
inline

Returns the height of the cryostat (y direction)

Definition at line 2214 of file GeometryCore.h.

2215  { return CryostatHalfHeight(geo::CryostatID(cstat)); }
geo::Length_t CryostatHalfHeight(geo::CryostatID const &cid) const
Returns the height of the cryostat (y direction)
The data type to uniquely identify a cryostat.
Definition: geo_types.h:190
geo::Length_t geo::GeometryCore::CryostatHalfWidth ( geo::CryostatID const &  cid) const

Returns the half width of the cryostat (x direction)

Definition at line 755 of file GeometryCore.cxx.

References Cryostat(), CryostatHalfHeight(), and geo::CryostatGeo::HalfWidth().

Referenced by DetLength(), simfilter::FilterNoDirtNeutrinos::filter(), and evgen::FileMuons::ReadEvents().

756  {
757  return Cryostat(cid).HalfWidth();
758  }
double HalfWidth() const
Half width of the cryostat [cm].
CryostatGeo const & Cryostat(geo::CryostatID const &cryoid) const
Returns the specified cryostat.
geo::Length_t geo::GeometryCore::CryostatHalfWidth ( unsigned int  cstat = 0) const
inline

Returns the half width of the cryostat (x direction)

Definition at line 2207 of file GeometryCore.h.

2208  { return CryostatHalfWidth(geo::CryostatID(cstat)); }
geo::Length_t CryostatHalfWidth(geo::CryostatID const &cid) const
Returns the half width of the cryostat (x direction)
The data type to uniquely identify a cryostat.
Definition: geo_types.h:190
geo::Length_t geo::GeometryCore::CryostatLength ( geo::CryostatID const &  cid) const

Returns the length of the cryostat (z direction)

Definition at line 768 of file GeometryCore.cxx.

References Cryostat(), CryostatBoundaries(), and geo::CryostatGeo::Length().

Referenced by evgen::FileMuons::ReadEvents().

769  {
770  return Cryostat(cid).Length();
771  }
CryostatGeo const & Cryostat(geo::CryostatID const &cryoid) const
Returns the specified cryostat.
double Length() const
Length of the cryostat [cm].
Definition: CryostatGeo.h:107
geo::Length_t geo::GeometryCore::CryostatLength ( unsigned int  cstat = 0) const
inline

Returns the length of the cryostat (z direction)

Definition at line 2221 of file GeometryCore.h.

2222  { return CryostatLength(geo::CryostatID(cstat)); }
geo::Length_t CryostatLength(geo::CryostatID const &cid) const
Returns the length of the cryostat (z direction)
The data type to uniquely identify a cryostat.
Definition: geo_types.h:190
CryostatGeo const* geo::GeometryCore::CryostatPtr ( geo::CryostatID const &  cryoid) const
inline

Returns the specified cryostat.

Parameters
cryoidcryostat ID
Returns
a constant pointer to the specified cryostat, or nullptr if none

The GetElementPtr() method is overloaded and its return depends on the type of ID.

Definition at line 2046 of file GeometryCore.h.

References geo::CryostatID::Cryostat.

Referenced by Cryostat().

2047  { return HasCryostat(cryoid)? &(Cryostats()[cryoid.Cryostat]): nullptr; }
CryostatList_t & Cryostats()
Return the internal cryostat list.
bool HasCryostat(geo::CryostatID const &cryoid) const
Returns whether we have the specified cryostat.
CryostatList_t& geo::GeometryCore::Cryostats ( )
inlineprotected

Return the internal cryostat list.

Definition at line 5469 of file GeometryCore.h.

Referenced by BuildGeometry(), ClearGeometry(), MaxPlanes(), MaxTPCs(), MaxWires(), SortGeometry(), TotalNTPC(), and UpdateAfterSorting().

5469 { return fGeoData.cryostats; }
GeometryData_t fGeoData
The detector description data.
CryostatList_t cryostats
The detector cryostats.
Definition: GeometryData.h:38
CryostatList_t const& geo::GeometryCore::Cryostats ( ) const
inlineprotected

Return the internal cryostat list.

Definition at line 5470 of file GeometryCore.h.

5470 { return fGeoData.cryostats; }
GeometryData_t fGeoData
The detector description data.
CryostatList_t cryostats
The detector cryostats.
Definition: GeometryData.h:38
double geo::GeometryCore::DefaultWiggle ( ) const
inline

Returns the tolerance used in looking for positions.

Returns
the tolerance value

This parameter is used as tolerance ("wiggle") for methods that require it (e.g. geo::CryostatGeo::FindTPCAtPosition()). Typically, it's a additional fraction of tolerance: 0 means no tolerance, 0.1 means 10% tolerance.

Todo:
Confirm the definition of wiggle: this one is taken from other doc

Definition at line 1731 of file GeometryCore.h.

1731 { return fPositionWiggle; }
double fPositionWiggle
accounting for rounding errors when testing positions
geo::BoxBoundedGeo geo::GeometryCore::DetectorEnclosureBox ( std::string const &  name = "volDetEnclosure") const

Returns the absolute coordinates of the detector enclosure volume [cm].

Parameters
namename of the volume to be sought (default: volDetEnclosure)
Exceptions
cet::exceptionif the specified volume is not found

Definition at line 613 of file GeometryCore.cxx.

References FindDetectorEnclosure(), and geo::LocalTransformation< StoredMatrix >::LocalToWorld().

Referenced by GetWorldVolumeName().

614  {
615  auto const& path = FindDetectorEnclosure(name);
616  if (path.empty()) {
617  throw cet::exception("GeometryCore")
618  << "DetectorEnclosureBox(): can't find enclosure volume '" << name << "'\n";
619  }
620 
621  TGeoVolume const* pEncl = path.back()->GetVolume();
622  auto const* pBox = dynamic_cast<TGeoBBox const*>(pEncl->GetShape());
623 
624  // check that this is indeed a box
625  if (!pBox) {
626  // at initialisation time we don't know yet our real ID
627  throw cet::exception("GeometryCore") << "Detector enclosure '"
628  << name << "' is not a box! (it is a " << pEncl->GetShape()->IsA()->GetName()
629  << ")\n";
630  }
631 
632  geo::LocalTransformation<TGeoHMatrix> trans(path, path.size() - 1);
633  // get the half width, height, etc of the cryostat
634  const double halfwidth = pBox->GetDX();
635  const double halfheight = pBox->GetDY();
636  const double halflength = pBox->GetDZ();
637 
638  return {
639  trans.LocalToWorld(geo::Point_t{ -halfwidth, -halfheight, -halflength }),
640  trans.LocalToWorld(geo::Point_t{ +halfwidth, +halfheight, +halflength })
641  };
642  } // geo::GeometryCore::DetectorEnclosureBox()
std::vector< TGeoNode const * > FindDetectorEnclosure(std::string const &name="volDetEnclosure") const
void LocalToWorld(double const *local, double *world) const
Transforms a point from local frame to world frame.
Class to transform between world and local coordinates.
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space.
Definition: geo_vectors.h:184
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
geo::Length_t geo::GeometryCore::DetHalfHeight ( geo::TPCID const &  tpcid) const

Returns the half height of the active volume of the specified TPC.

Parameters
tpcidID of the TPC
tpcTPC number within the cryostat
cstatnumber of cryostat
Returns
the value of the half height of the specified TPC
Exceptions
cet::exception(GeometryCore category) if cryostat not present
cet::exception(TPCOutOfRange category) if no such TPC
See also
geo::TPCGeo::ActiveHalfHeight()

See geo::TPCGeo::ActiveHalfHeight() for more details.

Todo:

deprecate this function

rename the function

Definition at line 742 of file GeometryCore.cxx.

References geo::TPCGeo::ActiveHalfHeight(), and TPC().

Referenced by lar::example::AnalysisExample::analyze(), evgen::NDKGen::beginJob(), evgen::GENIEGen::beginJob(), trkf::SpacePointAna::bookHistograms(), LArStackingAction::ClassifyNewTrack(), evd_tool::MicroBooNEDrawer::DetOutline3D(), evd::Display3DPad::Draw(), lar_pandora::PFParticleCosmicAna::FillRecoTree(), tca::FillWireHitRange(), simfilter::FilterNoDirtNeutrinos::filter(), cmtool::CFAlgoVolumeOverlap::Float(), cmtool::CFAlgoWireOverlap::Float(), util::GeometryUtilities::Get2DangleFrom3D(), trk::TrackContainmentAlg::GetCosmicTagID(), cosmic::BeamFlashTrackMatchTaggerAlg::InDetector(), tca::InsideTPC(), trk::TrackContainmentAlg::IsContained(), trkf::SeedAna::MCHists::MCHists(), trkf::TrackAna::MCHists::MCHists(), evd::Ortho3DPad::Ortho3DPad(), trk::TrackContainmentAlg::ProcessTracks(), trkf::SpacePts::produce(), trkf::Track3Dreco::produce(), evgen::NDKGen::produce(), vertex::VertexFinder2D::produce(), trkf::Track3DKalmanSPS::produce(), trkf::SeedAna::RecoHists::RecoHists(), trkf::TrackAna::RecoHists::RecoHists(), and trkf::CCTrackMaker::TagCosmics().

743  {
744  return TPC(tpcid).ActiveHalfHeight();
745  }
double ActiveHalfHeight() const
Half height (associated with y coordinate) of active TPC volume [cm].
Definition: TPCGeo.h:99
TPCGeo const & TPC(unsigned int const tpc=0, unsigned int const cstat=0) const
Returns the specified TPC.
geo::Length_t geo::GeometryCore::DetHalfHeight ( unsigned int  tpc = 0,
unsigned int  cstat = 0 
) const
inline

Returns the half height of the active volume of the specified TPC.

Parameters
tpcidID of the TPC
tpcTPC number within the cryostat
cstatnumber of cryostat
Returns
the value of the half height of the specified TPC
Exceptions
cet::exception(GeometryCore category) if cryostat not present
cet::exception(TPCOutOfRange category) if no such TPC
See also
geo::TPCGeo::ActiveHalfHeight()

See geo::TPCGeo::ActiveHalfHeight() for more details.

Todo:

deprecate this function

rename the function

Definition at line 2738 of file GeometryCore.h.

2739  { return DetHalfHeight(geo::TPCID(cstat, tpc)); }
geo::Length_t DetHalfHeight(geo::TPCID const &tpcid) const
Returns the half height of the active volume of the specified TPC.
The data type to uniquely identify a TPC.
Definition: geo_types.h:386
geo::Length_t geo::GeometryCore::DetHalfWidth ( geo::TPCID const &  tpcid) const

Returns the half width of the active volume of the specified TPC.

Parameters
tpcidID of the TPC
tpcTPC number within the cryostat
cstatnumber of cryostat
Returns
the value of the half width of the specified TPC
Exceptions
cet::exception(GeometryCore category) if cryostat not present
cet::exception(TPCOutOfRange category) if no such TPC
See also
geo::TPCGeo::ActiveHalfWidth()
Todo:

deprecate this function

rename the function

Definition at line 736 of file GeometryCore.cxx.

References geo::TPCGeo::ActiveHalfWidth(), and TPC().

Referenced by lar::example::AnalysisExample::analyze(), evgen::NDKGen::beginJob(), evgen::GENIEGen::beginJob(), trkf::SpacePointAna::bookHistograms(), LArStackingAction::ClassifyNewTrack(), evd_tool::MicroBooNEDrawer::DetOutline3D(), evd::Display3DPad::Draw(), lar_pandora::PFParticleCosmicAna::FillRecoTree(), tca::FillWireHitRange(), simfilter::FilterNoDirtNeutrinos::filter(), util::GeometryUtilities::Get2DangleFrom3D(), trk::TrackContainmentAlg::GetCosmicTagID(), cosmic::BeamFlashTrackMatchTaggerAlg::InDetector(), cosmic::BeamFlashTrackMatchTaggerAlg::InDriftWindow(), tca::InsideTPC(), trk::TrackContainmentAlg::IsContained(), trkf::SeedAna::MCHists::MCHists(), trkf::TrackAna::MCHists::MCHists(), evd::RecoBaseDrawer::OpFlashOrtho(), evd::Ortho3DPad::Ortho3DPad(), trkf::CCTrackMaker::PlnMatch(), trk::TrackContainmentAlg::ProcessTracks(), evgen::NDKGen::produce(), trkf::Track3DKalmanSPS::produce(), trkf::SeedAna::RecoHists::RecoHists(), trkf::TrackAna::RecoHists::RecoHists(), trkf::CCTrackMaker::TagCosmics(), and evd::RecoBaseDrawer::Vertex2D().

737  {
738  return TPC(tpcid).ActiveHalfWidth();
739  }
double ActiveHalfWidth() const
Half width (associated with x coordinate) of active TPC volume [cm].
Definition: TPCGeo.h:95
TPCGeo const & TPC(unsigned int const tpc=0, unsigned int const cstat=0) const
Returns the specified TPC.
geo::Length_t geo::GeometryCore::DetHalfWidth ( unsigned int  tpc = 0,
unsigned int  cstat = 0 
) const
inline

Returns the half width of the active volume of the specified TPC.

Parameters
tpcidID of the TPC
tpcTPC number within the cryostat
cstatnumber of cryostat
Returns
the value of the half width of the specified TPC
Exceptions
cet::exception(GeometryCore category) if cryostat not present
cet::exception(TPCOutOfRange category) if no such TPC
See also
geo::TPCGeo::ActiveHalfWidth()
Todo:

deprecate this function

rename the function

Definition at line 2716 of file GeometryCore.h.

2717  { return DetHalfWidth(geo::TPCID(cstat, tpc)); }
geo::Length_t DetHalfWidth(geo::TPCID const &tpcid) const
Returns the half width of the active volume of the specified TPC.
The data type to uniquely identify a TPC.
Definition: geo_types.h:386
geo::Length_t geo::GeometryCore::DetLength ( geo::TPCID const &  tpcid) const

Returns the length of the active volume of the specified TPC.

Parameters
tpcidID of the TPC
tpcTPC number within the cryostat
cstatnumber of cryostat
Returns
the value of the length of the specified TPC
Exceptions
cet::exception(GeometryCore category) if cryostat not present
cet::exception(TPCOutOfRange category) if no such TPC
See also
geo::TPCGeo::ActiveLength()

See geo::TPCGeo::ActiveLength() for more details.

Todo:

deprecate this function

rename the function

Definition at line 748 of file GeometryCore.cxx.

References geo::TPCGeo::ActiveLength(), CryostatHalfWidth(), and TPC().

Referenced by lar::example::AnalysisExample::analyze(), evgen::NDKGen::beginJob(), evgen::GENIEGen::beginJob(), trkf::SpacePointAna::bookHistograms(), LArStackingAction::ClassifyNewTrack(), evd_tool::MicroBooNEDrawer::DetOutline3D(), evd::Display3DPad::Draw(), lar_pandora::PFParticleCosmicAna::FillRecoTree(), tca::FillWireHitRange(), simfilter::FilterNoDirtNeutrinos::filter(), cmtool::CFAlgoVolumeOverlap::Float(), cmtool::CFAlgoWireOverlap::Float(), util::GeometryUtilities::Get2DangleFrom3D(), trk::TrackContainmentAlg::GetCosmicTagID(), cosmic::BeamFlashTrackMatchTaggerAlg::InDetector(), tca::InsideTPC(), trk::TrackContainmentAlg::IsContained(), trkf::SeedAna::MCHists::MCHists(), trkf::TrackAna::MCHists::MCHists(), lar_cluster3d::StandardHit3DBuilder::NearestWireID(), evd::Ortho3DPad::Ortho3DPad(), trkf::CCTrackMaker::PlnMatch(), trk::TrackContainmentAlg::ProcessTracks(), evgen::CosmicsGen::produce(), evgen::NDKGen::produce(), trkf::Track3DKalmanSPS::produce(), trkf::SeedAna::RecoHists::RecoHists(), trkf::TrackAna::RecoHists::RecoHists(), trkf::CCTrackMaker::TagCosmics(), and evd::RecoBaseDrawer::Vertex2D().

749  {
750  return TPC(tpcid).ActiveLength();
751  }
double ActiveLength() const
Length (associated with z coordinate) of active TPC volume [cm].
Definition: TPCGeo.h:103
TPCGeo const & TPC(unsigned int const tpc=0, unsigned int const cstat=0) const
Returns the specified TPC.
geo::Length_t geo::GeometryCore::DetLength ( unsigned int  tpc = 0,
unsigned int  cstat = 0 
) const
inline

Returns the length of the active volume of the specified TPC.

Parameters
tpcidID of the TPC
tpcTPC number within the cryostat
cstatnumber of cryostat
Returns
the value of the length of the specified TPC
Exceptions
cet::exception(GeometryCore category) if cryostat not present
cet::exception(TPCOutOfRange category) if no such TPC
See also
geo::TPCGeo::ActiveLength()

See geo::TPCGeo::ActiveLength() for more details.

Todo:

deprecate this function

rename the function

Definition at line 2759 of file GeometryCore.h.

2760  { return DetLength(geo::TPCID(cstat, tpc)); }
geo::Length_t DetLength(geo::TPCID const &tpcid) const
Returns the length of the active volume of the specified TPC.
The data type to uniquely identify a TPC.
Definition: geo_types.h:386
cryostat_iterator geo::GeometryCore::end_cryostat ( ) const
inline

Returns an iterator pointing after the last cryostat.

Definition at line 2158 of file GeometryCore.h.

References begin_cryostat_id(), end_cryostat_id(), and geo::details::geometry_iterator_types::end_pos.

Referenced by evd_tool::ICARUSDrawer::DetOutline3D(), and IterateCryostatIDs().

geo::cryostat_iterator cryostat_iterator
Forward-iterator browsing all cryostats in the detector.
static constexpr EndPos_t end_pos
Definition: GeometryCore.h:108
cryostat_id_iterator geo::GeometryCore::end_cryostat_id ( ) const
inline

Returns an iterator pointing after the last cryostat ID.

Definition at line 2150 of file GeometryCore.h.

References geo::details::geometry_iterator_types::end_pos.

Referenced by end_cryostat().

static constexpr EndPos_t end_pos
Definition: GeometryCore.h:108
geo::cryostat_id_iterator cryostat_id_iterator
Forward-iterator browsing all cryostat IDs in the detector.
plane_iterator geo::GeometryCore::end_plane ( ) const
inline

Returns an iterator pointing after the last plane in the detector.

Definition at line 3088 of file GeometryCore.h.

References geo::details::geometry_iterator_types::end_pos.

Referenced by IteratePlaneIDs(), and IteratePlanes().

3089  { return plane_iterator(this, plane_iterator::end_pos); }
static constexpr EndPos_t end_pos
Definition: GeometryCore.h:108
geo::plane_iterator plane_iterator
Forward-iterator browsing all planes in the detector.
plane_iterator geo::GeometryCore::end_plane ( geo::CryostatID const &  ID) const
inline

Returns an iterator pointing after the last plane in the specified cryostat.

Definition at line 3098 of file GeometryCore.h.

3099  { return plane_iterator(this, GetEndPlaneID(ID)); }
geo::plane_iterator plane_iterator
Forward-iterator browsing all planes in the detector.
geo::PlaneID GetEndPlaneID(geo::CryostatID const &id) const
plane_iterator geo::GeometryCore::end_plane ( geo::TPCID const &  ID) const
inline

Returns an iterator pointing after the last plane in the specified TPC.

Definition at line 3106 of file GeometryCore.h.

References begin_plane_id(), and end_plane_id().

3107  { return plane_iterator(this, GetEndPlaneID(ID)); }
geo::plane_iterator plane_iterator
Forward-iterator browsing all planes in the detector.
geo::PlaneID GetEndPlaneID(geo::CryostatID const &id) const
plane_id_iterator geo::GeometryCore::end_plane_id ( ) const
inline

Returns an iterator pointing after the last plane ID in the detector.

Definition at line 3060 of file GeometryCore.h.

References geo::details::geometry_iterator_types::end_pos.

Referenced by end_plane(), and IteratePlaneIDs().

static constexpr EndPos_t end_pos
Definition: GeometryCore.h:108
geo::plane_id_iterator plane_id_iterator
Forward-iterator browsing all plane IDs in the detector.
plane_id_iterator geo::GeometryCore::end_plane_id ( geo::CryostatID const &  ID) const
inline

Returns an iterator pointing after the last plane ID in the specified cryostat.

Definition at line 3070 of file GeometryCore.h.

3071  { return plane_id_iterator(this, GetEndPlaneID(ID)); }
geo::plane_id_iterator plane_id_iterator
Forward-iterator browsing all plane IDs in the detector.
geo::PlaneID GetEndPlaneID(geo::CryostatID const &id) const
plane_id_iterator geo::GeometryCore::end_plane_id ( geo::TPCID const &  ID) const
inline

Returns an iterator pointing after the last plane ID in the specified TPC.

Definition at line 3080 of file GeometryCore.h.

3081  { return plane_id_iterator(this, GetEndPlaneID(ID)); }
geo::plane_id_iterator plane_id_iterator
Forward-iterator browsing all plane IDs in the detector.
geo::PlaneID GetEndPlaneID(geo::CryostatID const &id) const
ROP_id_iterator geo::GeometryCore::end_ROP_id ( ) const
inline

Returns an iterator pointing after the last ROP ID in the detector.

Definition at line 5208 of file GeometryCore.h.

References geo::details::geometry_iterator_types::end_pos.

Referenced by end_ROP_id(), and IterateROPIDs().

5209  { return ROP_id_iterator(this, ROP_id_iterator::end_pos); }
details::ROP_id_iterator_base< readout::ROPID > ROP_id_iterator
Forward iterator browsing all readout planes in the detector.
static constexpr EndPos_t end_pos
Definition: GeometryCore.h:108
ROP_id_iterator geo::GeometryCore::end_ROP_id ( geo::CryostatID const &  ID) const
inline

Returns an iterator pointing after the last readout plane ID in the specified cryostat.

Definition at line 5218 of file GeometryCore.h.

5219  { return ROP_id_iterator(this, GetEndROPID(ID)); }
readout::ROPID GetEndROPID(geo::CryostatID const &id) const
details::ROP_id_iterator_base< readout::ROPID > ROP_id_iterator
Forward iterator browsing all readout planes in the detector.
ROP_id_iterator geo::GeometryCore::end_ROP_id ( readout::TPCsetID const &  ID) const
inline

Returns an iterator pointing after the last readout plane ID in the specified TPC set.

Definition at line 5228 of file GeometryCore.h.

References begin_ROP_id(), and end_ROP_id().

5229  { return ROP_id_iterator(this, GetEndROPID(ID)); }
readout::ROPID GetEndROPID(geo::CryostatID const &id) const
details::ROP_id_iterator_base< readout::ROPID > ROP_id_iterator
Forward iterator browsing all readout planes in the detector.
TPC_iterator geo::GeometryCore::end_TPC ( ) const
inline

Returns an iterator pointing after the last TPC in the detector.

Definition at line 2568 of file GeometryCore.h.

References geo::details::geometry_iterator_types::end_pos.

Referenced by lar::example::SpacePointIsolationAlg::fillAlgConfigFromGeometry(), IterateTPCIDs(), IterateTPCs(), and sim::MCRecoPart::MCRecoPart().

2569  { return TPC_iterator(this, TPC_iterator::end_pos); }
geo::TPC_iterator TPC_iterator
Forward-iterator browsing all TPCs in the detector.
static constexpr EndPos_t end_pos
Definition: GeometryCore.h:108
TPC_iterator geo::GeometryCore::end_TPC ( geo::CryostatID const &  cid) const
inline

Returns an iterator pointing after the last TPC in the detector.

Definition at line 2576 of file GeometryCore.h.

References begin_TPC_id(), and end_TPC_id().

2577  { return TPC_iterator(this, GetEndTPCID(cid)); }
geo::TPCID GetEndTPCID(geo::CryostatID const &id) const
geo::TPC_iterator TPC_iterator
Forward-iterator browsing all TPCs in the detector.
TPC_id_iterator geo::GeometryCore::end_TPC_id ( ) const
inline

Returns an iterator pointing after the last TPC ID in the detector.

Definition at line 2550 of file GeometryCore.h.

References geo::details::geometry_iterator_types::end_pos.

Referenced by pma::PMAlgTracker::build(), end_TPC(), IterateTPCIDs(), and tss::TrackShowerHits::produce().

2551  { return TPC_id_iterator(this, TPC_id_iterator::end_pos); }
static constexpr EndPos_t end_pos
Definition: GeometryCore.h:108
geo::TPC_id_iterator TPC_id_iterator
Forward-iterator browsing all TPC IDs in the detector.
TPC_id_iterator geo::GeometryCore::end_TPC_id ( geo::CryostatID const &  cid) const
inline

Returns an iterator pointing after the last TPC ID in the specified cryostat.

Definition at line 2560 of file GeometryCore.h.

2561  { return TPC_id_iterator(this, GetEndTPCID(cid)); }
geo::TPCID GetEndTPCID(geo::CryostatID const &id) const
geo::TPC_id_iterator TPC_id_iterator
Forward-iterator browsing all TPC IDs in the detector.
TPCset_id_iterator geo::GeometryCore::end_TPCset_id ( ) const
inline

Returns an iterator pointing after the last TPC set ID in the detector.

Definition at line 4973 of file GeometryCore.h.

References geo::details::geometry_iterator_types::end_pos.

Referenced by end_TPCset_id(), and IterateTPCsetIDs().

static constexpr EndPos_t end_pos
Definition: GeometryCore.h:108
details::TPCset_id_iterator_base< readout::TPCsetID > TPCset_id_iterator
Forward iterator browsing all TPC sets in the detector.
TPCset_id_iterator geo::GeometryCore::end_TPCset_id ( geo::CryostatID const &  cid) const
inline

Returns an iterator pointing after the last TPC set ID in the specified cryostat.

Definition at line 4983 of file GeometryCore.h.

References begin_TPCset_id(), and end_TPCset_id().

4984  { return TPCset_id_iterator(this, GetEndTPCsetID(cid)); }
readout::TPCsetID GetEndTPCsetID(geo::CryostatID const &id) const
details::TPCset_id_iterator_base< readout::TPCsetID > TPCset_id_iterator
Forward iterator browsing all TPC sets in the detector.
wire_iterator geo::GeometryCore::end_wire ( ) const
inline

Returns an iterator pointing after the last wire in the detector.

Definition at line 3508 of file GeometryCore.h.

References geo::details::geometry_iterator_types::end_pos.

Referenced by IterateWireIDs(), and IterateWires().

3509  { return wire_iterator(this, wire_iterator::end_pos); }
static constexpr EndPos_t end_pos
Definition: GeometryCore.h:108
geo::wire_iterator wire_iterator
Forward-iterator browsing all wires in the detector.
wire_iterator geo::GeometryCore::end_wire ( geo::CryostatID const &  id) const
inline

Returns an iterator pointing after the last wire in specified cryostat.

Definition at line 3516 of file GeometryCore.h.

3517  { return wire_iterator(end_wire_id(id)); }
wire_id_iterator end_wire_id() const
Returns an iterator pointing after the last wire ID in the detector.
geo::wire_iterator wire_iterator
Forward-iterator browsing all wires in the detector.
wire_iterator geo::GeometryCore::end_wire ( geo::TPCID const &  id) const
inline

Returns an iterator pointing after the last wire in specified TPC.

Definition at line 3524 of file GeometryCore.h.

3525  { return wire_iterator(end_wire_id(id)); }
wire_id_iterator end_wire_id() const
Returns an iterator pointing after the last wire ID in the detector.
geo::wire_iterator wire_iterator
Forward-iterator browsing all wires in the detector.
wire_iterator geo::GeometryCore::end_wire ( geo::PlaneID const &  id) const
inline

Returns an iterator pointing after the last wire in specified plane.

Definition at line 3532 of file GeometryCore.h.

References begin_wire_id(), and end_wire_id().

3533  { return wire_iterator(end_wire_id(id)); }
wire_id_iterator end_wire_id() const
Returns an iterator pointing after the last wire ID in the detector.
geo::wire_iterator wire_iterator
Forward-iterator browsing all wires in the detector.
wire_id_iterator geo::GeometryCore::end_wire_id ( ) const
inline

Returns an iterator pointing after the last wire ID in the detector.

Definition at line 3475 of file GeometryCore.h.

References geo::details::geometry_iterator_types::end_pos.

Referenced by end_wire(), IterateWireIDs(), lariov::SIOVElectronicsCalibProvider::Reconfigure(), and lariov::DetPedestalRetrievalAlg::Reconfigure().

3476  { return wire_id_iterator(this, wire_id_iterator::end_pos); }
static constexpr EndPos_t end_pos
Definition: GeometryCore.h:108
geo::wire_id_iterator wire_id_iterator
Forward-iterator browsing all wire IDs in the detector.
wire_id_iterator geo::GeometryCore::end_wire_id ( geo::CryostatID const &  id) const
inline

Returns an iterator pointing after the last wire ID in specified cryostat.

Definition at line 3484 of file GeometryCore.h.

3485  { return wire_id_iterator(this, GetEndWireID(id)); }
geo::WireID GetEndWireID(geo::CryostatID const &id) const
geo::wire_id_iterator wire_id_iterator
Forward-iterator browsing all wire IDs in the detector.
wire_id_iterator geo::GeometryCore::end_wire_id ( geo::TPCID const &  id) const
inline

Returns an iterator pointing after the last wire ID in specified TPC.

Definition at line 3492 of file GeometryCore.h.

3493  { return wire_id_iterator(this, GetEndWireID(id)); }
geo::WireID GetEndWireID(geo::CryostatID const &id) const
geo::wire_id_iterator wire_id_iterator
Forward-iterator browsing all wire IDs in the detector.
wire_id_iterator geo::GeometryCore::end_wire_id ( geo::PlaneID const &  id) const
inline

Returns an iterator pointing after the last wire ID in specified plane.

Definition at line 3500 of file GeometryCore.h.

3501  { return wire_id_iterator(this, GetEndWireID(id)); }
geo::WireID GetEndWireID(geo::CryostatID const &id) const
geo::wire_id_iterator wire_id_iterator
Forward-iterator browsing all wire IDs in the detector.
std::vector< std::vector< TGeoNode const * > > geo::GeometryCore::FindAllVolumePaths ( std::set< std::string > const &  vol_names) const

Returns paths of all nodes with volumes with the specified names.

Parameters
vol_nameslist of names of volumes
Returns
list paths of the found nodes

All the nodes in the geometry are checked, and the path of all the ones that contain a volume with a name among the ones specified in vol_names is saved in the collection and returned. A node path is a ordered list of all nodes leading to the final one, starting from thetop level (root) down. The node at the back() of the path is the one with name in vol_names. No empty paths are returned.

Definition at line 707 of file GeometryCore.cxx.

References geo::CollectPathsByName::paths, and ROOTGeoManager().

Referenced by FindAllVolumes().

708  {
709  CollectPathsByName path_collector(vol_names);
710 
711  ROOTGeoNodeForwardIterator iNode(ROOTGeoManager()->GetTopNode());
712 
713  while (*iNode) {
714  path_collector(iNode);
715  ++iNode;
716  } // while
717 
718  return path_collector.paths;
719  } // GeometryCore::FindAllVolumePaths()
TGeoManager * ROOTGeoManager() const
Access to the ROOT geometry description manager.
std::vector< TGeoNode const * > geo::GeometryCore::FindAllVolumes ( std::set< std::string > const &  vol_names) const

Returns all the nodes with volumes with any of the specified names.

Parameters
vol_nameslist of names of volumes
Returns
list of nodes found

All the nodes in the geometry are checked, and all the ones that contain a volume with a name among the ones specified in vol_names are saved in the collection and returned.

Definition at line 690 of file GeometryCore.cxx.

References FindAllVolumePaths(), geo::CollectNodesByName::nodes, and ROOTGeoManager().

691  {
692  CollectNodesByName node_collector(vol_names);
693 
694  ROOTGeoNodeForwardIterator iNode(ROOTGeoManager()->GetTopNode());
695  TGeoNode const* pCurrentNode;
696 
697  while ((pCurrentNode = *iNode)) {
698  node_collector(*pCurrentNode);
699  ++iNode;
700  } // while
701 
702  return node_collector.nodes;
703  } // GeometryCore::FindAllVolumes()
TGeoManager * ROOTGeoManager() const
Access to the ROOT geometry description manager.
unsigned int geo::GeometryCore::FindAuxDetAtPosition ( double const  worldLoc[3]) const

Returns the index of the auxiliary detector at specified location.

Parameters
worldLoc3D coordinates of the point (world reference frame)
Returns
the index of the detector, or std::numeric_limits<unsigned int>max() if no detector is there
Bug:
Actually, an exception is thrown.
Deprecated:
Use the version with geo::Point_t.

Definition at line 489 of file GeometryCore.cxx.

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

Referenced by FindAuxDetSensitiveAtPosition(), and PositionToAuxDet().

unsigned int FindAuxDetAtPosition(double const worldLoc[3]) const
Returns the index of the auxiliary detector at specified location.
GENVECTOR_CONSTEXPR::geo::Point_t makePointFromCoords(Coords &&coords)
Creates a geo::Point_t from its coordinates (see makeFromCoords()).
unsigned int geo::GeometryCore::FindAuxDetAtPosition ( geo::Point_t const &  point) const

Returns the index of the auxiliary detector at specified location.

Parameters
pointlocation to be tested
Returns
the index of the detector, or std::numeric_limits<unsigned int>max() if no detector is there
Bug:
Actually, an exception is thrown.

Definition at line 480 of file GeometryCore.cxx.

References AuxDets(), and fChannelMapAlg.

481  {
482  // BUG the double brace syntax is required to work around clang bug 21629
483  // (https://bugs.llvm.org/show_bug.cgi?id=21629)
484  std::array<double, 3U> worldPos = {{ point.X(), point.Y(), point.Z() }};
485  return fChannelMapAlg->NearestAuxDet(worldPos.data(), AuxDets());
486  } // GeometryCore::FindAuxDetAtPosition()
std::unique_ptr< const geo::ChannelMapAlg > fChannelMapAlg
Object containing the channel to wire mapping.
AuxDetList_t & AuxDets()
Return the interfal auxiliary detectors list.
void geo::GeometryCore::FindAuxDetSensitiveAtPosition ( geo::Point_t const &  point,
std::size_t &  adg,
std::size_t &  sv 
) const

Fills the indices of the sensitive auxiliary detector at location.

Parameters
pointlocation to be tested
adg_(output)_ auxiliary detector index
sv_(output)_ sensitive volume index

Definition at line 509 of file GeometryCore.cxx.

References AuxDets(), fChannelMapAlg, and FindAuxDetAtPosition().

Referenced by larg4::AuxDetReadoutGeometry::FindAndMakeAuxDetSensitive(), FindAuxDetSensitiveAtPosition(), PositionToAuxDet(), and PositionToAuxDetSensitive().

510  {
511  adg = FindAuxDetAtPosition(point);
512  // BUG the double brace syntax is required to work around clang bug 21629
513  // (https://bugs.llvm.org/show_bug.cgi?id=21629)
514  std::array<double, 3U> const worldPos = {{ point.X(), point.Y(), point.Z() }};
515  sv = fChannelMapAlg->NearestSensitiveAuxDet(worldPos.data(), AuxDets());
516  } // GeometryCore::FindAuxDetAtPosition()
std::unique_ptr< const geo::ChannelMapAlg > fChannelMapAlg
Object containing the channel to wire mapping.
AuxDetList_t & AuxDets()
Return the interfal auxiliary detectors list.
unsigned int FindAuxDetAtPosition(double const worldLoc[3]) const
Returns the index of the auxiliary detector at specified location.
void geo::GeometryCore::FindAuxDetSensitiveAtPosition ( double const  worldLoc[3],
size_t &  adg,
size_t &  sv 
) const

Fills the indices of the sensitive auxiliary detector at location.

Parameters
worldLoc3D coordinates of the point (world reference frame)
adg(output) auxiliary detector index
sv(output) sensitive volume index
Deprecated:
Use the version with geo::Point_t.

Definition at line 520 of file GeometryCore.cxx.

References FindAuxDetSensitiveAtPosition(), geo::vect::makePointFromCoords(), and PositionToAuxDetSensitive().

521  { return FindAuxDetSensitiveAtPosition(geo::vect::makePointFromCoords(worldPos), adg, sv); }
void FindAuxDetSensitiveAtPosition(geo::Point_t const &point, std::size_t &adg, std::size_t &sv) const
Fills the indices of the sensitive auxiliary detector at location.
GENVECTOR_CONSTEXPR::geo::Point_t makePointFromCoords(Coords &&coords)
Creates a geo::Point_t from its coordinates (see makeFromCoords()).
geo::CryostatID::CryostatID_t geo::GeometryCore::FindCryostatAtPosition ( geo::Point_t const &  worldLoc) const

Returns the index of the cryostat at specified location.

Parameters
worldLoc3D coordinates of the point (world reference frame)
Returns
the index of the cryostat, or UINT_MAX if no cryostat is there
Deprecated:
Use PositionToCryostatID() instead

Definition at line 377 of file GeometryCore.cxx.

References geo::CryostatID::Cryostat, geo::CryostatGeo::ID(), geo::CryostatID::InvalidID, and PositionToCryostatPtr().

Referenced by pma::ProjectionMatchingAlg::buildShowerSeg(), ems::MultiEMShowers::convCluster(), evd::RecoBaseDrawer::DrawTrack2D(), FindCryostatAtPosition(), evd::SimulationDrawer::MCTruthOrtho(), PositionToCryostat(), and PositionToCryostatID().

378  {
379  geo::CryostatGeo const* cryo = PositionToCryostatPtr(worldLoc);
380  return cryo? cryo->ID().Cryostat: geo::CryostatID::InvalidID;
381  } // GeometryCore::FindCryostatAtPosition(Point)
CryostatID_t Cryostat
Index of cryostat.
Definition: geo_types.h:212
Geometry information for a single cryostat.
Definition: CryostatGeo.h:43
geo::CryostatGeo const * PositionToCryostatPtr(geo::Point_t const &point) const
Returns the cryostat at specified location.
static constexpr CryostatID_t InvalidID
Special code for an invalid ID.
Definition: geo_types.h:208
geo::CryostatID const & ID() const
Returns the identifier of this cryostat.
Definition: CryostatGeo.h:132
geo::CryostatID::CryostatID_t geo::GeometryCore::FindCryostatAtPosition ( double const  worldLoc[3]) const

Returns the index of the cryostat at specified location.

Parameters
worldLoc3D coordinates of the point (world reference frame)
Returns
the index of the cryostat, or UINT_MAX if no cryostat is there
Deprecated:
Use PositionToCryostatID() instead

Definition at line 386 of file GeometryCore.cxx.

References FindCryostatAtPosition(), geo::vect::makePointFromCoords(), and PositionToTPCptr().

387  {
389  } // GeometryCore::FindCryostatAtPosition(double[])
GENVECTOR_CONSTEXPR::geo::Point_t makePointFromCoords(Coords &&coords)
Creates a geo::Point_t from its coordinates (see makeFromCoords()).
geo::CryostatID::CryostatID_t FindCryostatAtPosition(geo::Point_t const &worldLoc) const
Returns the index of the cryostat at specified location.
std::vector< TGeoNode const * > geo::GeometryCore::FindDetectorEnclosure ( std::string const &  name = "volDetEnclosure") const
private

Definition at line 982 of file GeometryCore.cxx.

References FindFirstVolume(), and ROOTGeoManager().

Referenced by DetectorEnclosureBox(), and MaterialName().

983  {
984  std::vector<TGeoNode const*> path { ROOTGeoManager()->GetTopNode() };
985  if (!FindFirstVolume(name, path)) path.clear();
986  return path;
987  } // FindDetectorEnclosure()
bool FindFirstVolume(std::string const &name, std::vector< const TGeoNode * > &path) const
TGeoManager * ROOTGeoManager() const
Access to the ROOT geometry description manager.
bool geo::GeometryCore::FindFirstVolume ( std::string const &  name,
std::vector< const TGeoNode * > &  path 
) const
private

Definition at line 991 of file GeometryCore.cxx.

Referenced by FindDetectorEnclosure().

992  {
993  assert(!path.empty());
994 
995  auto const* pCurrent = path.back();
996 
997  // first check the current layer
998  if (strncmp(name.c_str(), pCurrent->GetName(), name.length()) == 0)
999  return true;
1000 
1001  //explore the next layer down
1002  auto const* pCurrentVolume = pCurrent->GetVolume();
1003  unsigned int nd = pCurrentVolume->GetNdaughters();
1004  for(unsigned int i = 0; i < nd; ++i) {
1005  path.push_back(pCurrentVolume->GetNode(i));
1006  if (FindFirstVolume(name, path)) return true;
1007  path.pop_back();
1008  } // for
1009  return false;
1010  } // FindFirstVolume()
bool FindFirstVolume(std::string const &name, std::vector< const TGeoNode * > &path) const
geo::TPCID geo::GeometryCore::FindTPCAtPosition ( double const  worldLoc[3]) const
inline

Returns the ID of the TPC at specified location.

Parameters
worldLoc3D coordinates of the point (world reference frame) [cm]
Returns
the TPC ID, or an invalid one if no TPC is there

Definition at line 2454 of file GeometryCore.h.

References geo::vect::makePointFromCoords().

Referenced by pma::ProjectionMatchingAlg::buildShowerSeg(), ShowerRecoTools::ShowerStandardCalodEdx::CalculateElement(), ShowerRecoTools::ShowerPMATrackFinder::CalculateElement(), ShowerRecoTools::ShowerSlidingStandardCalodEdx::CalculateElement(), ems::MultiEMShowers::convCluster(), evd::RecoBaseDrawer::DrawTrack2D(), hit::HitCheater::FindHitsOnChannel(), shower::EMShowerAlg::FindInitialTrackHits(), FindTPCsetAtPosition(), opdet::GetHitGeometryInfo(), nnet::TrainingDataAlg::getProjection(), lar_pandora::LArPandoraInput::GetTrueStartAndEndPoints(), hit::DisambigCheater::InitHitToWids(), evd::SimulationDrawer::MCTruthOrtho(), shower::EMShowerAlg::OrderShowerHits(), calo::Calorimetry::produce(), shower::EMShowerAlg::Project3DPointOntoPlane(), filt::LArG4ParticleFilter::StartInTPCCheck(), filt::LArG4ParticleFilter::StopInTPCCheck(), filt::LArG4ParticleFilter::TPCTrajLengthCheck(), DUNE::NeutrinoTrackingEff::truthLength(), and DUNE::MuonTrackingEff::truthLength().

2455  { return FindTPCAtPosition(geo::vect::makePointFromCoords(worldLoc)); }
geo::TPCID FindTPCAtPosition(double const worldLoc[3]) const
Returns the ID of the TPC at specified location.
GENVECTOR_CONSTEXPR::geo::Point_t makePointFromCoords(Coords &&coords)
Creates a geo::Point_t from its coordinates (see makeFromCoords()).
geo::TPCID geo::GeometryCore::FindTPCAtPosition ( geo::Point_t const &  point) const

Returns the ID of the TPC at specified location.

Parameters
worldLoc3D point (world reference frame, centimeters)
Returns
the TPC ID, or an invalid one if no TPC is there

Definition at line 336 of file GeometryCore.cxx.

References geo::CryostatID::Cryostat, fPositionWiggle, geo::CryostatGeo::ID(), geo::CryostatID::markInvalid(), PositionToCryostatPtr(), and geo::CryostatGeo::PositionToTPCID().

336  {
337 
338  // first find the cryostat
339  geo::CryostatGeo const* cryo = PositionToCryostatPtr(point);
340  if (!cryo) return {};
341 
342  // then ask it about the TPC
343  geo::TPCID tpcid = cryo->PositionToTPCID(point, 1. + fPositionWiggle);
344  if (tpcid) return tpcid;
345 
346  // return an invalid TPC ID with cryostat information set:
347  tpcid.Cryostat = cryo->ID().Cryostat;
348  tpcid.markInvalid();
349  return tpcid;
350 
351  } // GeometryCore::FindTPCAtPosition()
CryostatID_t Cryostat
Index of cryostat.
Definition: geo_types.h:212
Geometry information for a single cryostat.
Definition: CryostatGeo.h:43
The data type to uniquely identify a TPC.
Definition: geo_types.h:386
void markInvalid()
Sets the ID as invalid.
Definition: geo_types.h:240
double fPositionWiggle
accounting for rounding errors when testing positions
geo::CryostatGeo const * PositionToCryostatPtr(geo::Point_t const &point) const
Returns the cryostat at specified location.
geo::TPCID PositionToTPCID(geo::Point_t const &point, double wiggle) const
Returns the ID of the TPC at specified location.
geo::CryostatID const & ID() const
Returns the identifier of this cryostat.
Definition: CryostatGeo.h:132
geo::TPCID geo::GeometryCore::FindTPCAtPosition ( TVector3 const &  point) const
inline

Returns the ID of the TPC at specified location.

Parameters
worldLoc3D point (world reference frame, centimeters)
Returns
the TPC ID, or an invalid one if no TPC is there

Definition at line 2464 of file GeometryCore.h.

References geo::vect::toPoint().

2465  { return FindTPCAtPosition(geo::vect::toPoint(point)); }
::geo::Point_t toPoint(Point const &p)
Convert the specified point into a geo::Point_t.
geo::TPCID FindTPCAtPosition(double const worldLoc[3]) const
Returns the ID of the TPC at specified location.
readout::TPCsetID geo::GeometryCore::FindTPCsetAtPosition ( double const  worldLoc[3]) const

Returns the ID of the TPC set at specified location.

Parameters
worldLoc3D coordinates of the point (world reference frame)
Returns
the TPC set ID, or an invalid one if no TPC set is there

Definition at line 1703 of file GeometryCore.cxx.

References FindTPCAtPosition(), and TPCtoTPCset().

Referenced by HasTPCset().

1704  {
1705  return TPCtoTPCset(FindTPCAtPosition(worldLoc));
1706  } // GeometryCore::FindTPCsetAtPosition()
readout::TPCsetID TPCtoTPCset(geo::TPCID const &tpcid) const
Returns the ID of the TPC set tpcid belongs to.
geo::TPCID FindTPCAtPosition(double const worldLoc[3]) const
Returns the ID of the TPC at specified location.
raw::ChannelID_t geo::GeometryCore::FirstChannelInROP ( readout::ROPID const &  ropid) const

Returns the ID of the first channel in the specified readout plane.

Parameters
ropidID of the readout plane
Returns
ID of first channel, or raw::InvalidChannelID if ID is invalid

Note that this check is performed on the validity of the readout plane ID, that does not necessarily imply that the readout plane specified by the ID actually exists. Check if the ROP exists with HasROP(). The behaviour for non-existing readout planes is undefined.

Definition at line 1770 of file GeometryCore.cxx.

References fChannelMapAlg.

Referenced by ROPtoTPCs().

1771  {
1772  return fChannelMapAlg->FirstChannelInROP(ropid);
1773  } // GeometryCore::FirstChannelInROP()
std::unique_ptr< const geo::ChannelMapAlg > fChannelMapAlg
Object containing the channel to wire mapping.
std::string geo::GeometryCore::GDMLFile ( ) const
inline

Returns the full directory path to the GDML file source.

Returns
the full directory path to the GDML file source

This is the full path of the source of the detector geometry handed to the detector simulation (GEANT).

Definition at line 1749 of file GeometryCore.h.

Referenced by larg4::LArG4::beginJob().

1749 { return fGDMLfile; }
std::string fGDMLfile
path to geometry file used for Geant4 simulation
template<typename GeoID >
GeoID geo::GeometryCore::GetBeginID ( ) const
inline

Returns the ID of the first element of the detector.

Template Parameters
GeoIDtype of the ID to be returned
Returns
ID of the first subelement in the detector

Definition at line 1933 of file GeometryCore.h.

References GetBeginID().

Referenced by GetBeginID().

1933 { GeoID id; GetBeginID(id); return id; }
GeoID GetBeginID() const
Returns the ID of the first element of the detector.
template<typename GeoID , typename ContextID >
GeoID geo::GeometryCore::GetBeginID ( ContextID const &  id) const

Returns the ID of the first subelement of the specified element.

Template Parameters
GeoIDtype of the ID to be returned
ContextIDtype of the ID of the containing element
Parameters
idID of the containing element
Returns
ID of the first subelement in the specified geometry element
void geo::GeometryCore::GetBeginID ( geo::CryostatID id) const
inline

Initializes the specified ID with the ID of the first cryostat.

Definition at line 2134 of file GeometryCore.h.

2135  { id = geo::CryostatID(0, HasCryostat(geo::CryostatID(0))); }
IDparameter< geo::CryostatID > CryostatID
Member type of validated geo::CryostatID parameter.
bool HasCryostat(geo::CryostatID const &cryoid) const
Returns whether we have the specified cryostat.
The data type to uniquely identify a cryostat.
Definition: geo_types.h:190
void geo::GeometryCore::GetBeginID ( geo::TPCID id) const
inline

Initializes the specified ID with the ID of the first TPC.

iterators

Definition at line 2524 of file GeometryCore.h.

2525  { GetBeginID(id.asCryostatID()); id.TPC = 0; }
GeoID GetBeginID() const
Returns the ID of the first element of the detector.
void geo::GeometryCore::GetBeginID ( geo::PlaneID id) const
inline

Initializes the specified ID with the ID of the first plane.

Definition at line 3026 of file GeometryCore.h.

3027  { GetBeginID(id.asTPCID()); id.Plane = 0; }
GeoID GetBeginID() const
Returns the ID of the first element of the detector.
void geo::GeometryCore::GetBeginID ( geo::WireID id) const
inline

Initializes the specified ID with the ID of the first wire.

Definition at line 3432 of file GeometryCore.h.

3433  { GetBeginID(id.asPlaneID()); id.Wire = 0; }
GeoID GetBeginID() const
Returns the ID of the first element of the detector.
void geo::GeometryCore::GetBeginID ( readout::TPCsetID id) const
inline

Initializes the specified ID with the ID of the first TPC set.

iterators

Definition at line 4947 of file GeometryCore.h.

4948  { GetBeginID(id.asCryostatID()); id.TPCset = 0; }
GeoID GetBeginID() const
Returns the ID of the first element of the detector.
void geo::GeometryCore::GetBeginID ( readout::ROPID id) const
inline

Initializes the specified ID with the ID of the first readout plane.

iterators

Definition at line 5174 of file GeometryCore.h.

5175  { GetBeginID(id.asTPCsetID()); id.ROP = 0; }
GeoID GetBeginID() const
Returns the ID of the first element of the detector.
geo::PlaneID geo::GeometryCore::GetBeginPlaneID ( geo::CryostatID const &  id) const
inline

Returns the ID of the first plane of the specified cryostat.

Definition at line 3038 of file GeometryCore.h.

3039  { return { GetBeginTPCID(id), 0 }; }
geo::TPCID GetBeginTPCID(geo::CryostatID const &id) const
Returns the ID of the first TPC in the specified cryostat.
geo::PlaneID geo::GeometryCore::GetBeginPlaneID ( geo::TPCID const &  id) const
inline

Returns the ID of the first plane of the specified TPC.

Definition at line 3047 of file GeometryCore.h.

3048  { return { id, 0 }; }
readout::ROPID geo::GeometryCore::GetBeginROPID ( geo::CryostatID const &  id) const
inline

Returns the ID of the first readout plane of the specified cryostat.

Definition at line 5186 of file GeometryCore.h.

5187  { return { GetBeginTPCsetID(id), 0 }; }
readout::TPCsetID GetBeginTPCsetID(geo::CryostatID const &id) const
Returns the ID of the first TPC set in the specified cryostat.
readout::ROPID geo::GeometryCore::GetBeginROPID ( readout::TPCsetID const &  id) const
inline

Returns the ID of the first readout plane of the specified TPC set.

Definition at line 5195 of file GeometryCore.h.

5196  { return { id, 0 }; }
geo::TPCID geo::GeometryCore::GetBeginTPCID ( geo::CryostatID const &  id) const
inline

Returns the ID of the first TPC in the specified cryostat.

Definition at line 2536 of file GeometryCore.h.

2537  { return { id, 0 }; }
readout::TPCsetID geo::GeometryCore::GetBeginTPCsetID ( geo::CryostatID const &  id) const
inline

Returns the ID of the first TPC set in the specified cryostat.

Definition at line 4959 of file GeometryCore.h.

4960  { return { id, 0 }; }
geo::WireID geo::GeometryCore::GetBeginWireID ( geo::CryostatID const &  id) const
inline

Returns the ID of the first wire in the specified cryostat.

Definition at line 3444 of file GeometryCore.h.

3445  { return { GetBeginPlaneID(id), 0 }; }
geo::PlaneID GetBeginPlaneID(geo::CryostatID const &id) const
Returns the ID of the first plane of the specified cryostat.
geo::WireID geo::GeometryCore::GetBeginWireID ( geo::TPCID const &  id) const
inline

Returns the ID of the first wire of the specified TPC.

Definition at line 3453 of file GeometryCore.h.

3454  { return { geo::PlaneID(id, 0), 0 }; }
IDparameter< geo::PlaneID > PlaneID
Member type of validated geo::PlaneID parameter.
geo::WireID geo::GeometryCore::GetBeginWireID ( geo::PlaneID const &  id) const
inline

Returns the ID of the first wire of the specified wire plane.

Definition at line 3462 of file GeometryCore.h.

3463  { return { id, 0 }; }
unsigned int geo::GeometryCore::GetClosestOpDet ( geo::Point_t const &  point) const

Find the nearest OpChannel to some point.

Parameters
xyzpoint to be queried, in world coordinates
Returns
the nearest OpChannel to the point, or std::numeric_limits<unsigned int>max() if invalid point
Deprecated:
This method does not tell in which cryostat the detector is; use geo::CryostatGeo::GetClosestOpDet() instead (find the cryostat with PositionToCryostatPtr()).

Definition at line 1879 of file GeometryCore.cxx.

References geo::CryostatID::Cryostat, geo::CryostatGeo::GetClosestOpDet(), geo::CryostatGeo::ID(), max, OpDetFromCryo(), and PositionToCryostatPtr().

Referenced by GetClosestOpDet().

1880  {
1881  geo::CryostatGeo const* cryo = PositionToCryostatPtr(point);
1882  if (!cryo) return std::numeric_limits<unsigned int>::max();
1883  int o = cryo->GetClosestOpDet(point);
1884  return OpDetFromCryo(o, cryo->ID().Cryostat);
1885  }
unsigned int GetClosestOpDet(geo::Point_t const &point) const
CryostatID_t Cryostat
Index of cryostat.
Definition: geo_types.h:212
Geometry information for a single cryostat.
Definition: CryostatGeo.h:43
unsigned int OpDetFromCryo(unsigned int o, unsigned int c) const
Get unique opdet number from cryo and internal count.
Int_t max
Definition: plot.C:27
geo::CryostatGeo const * PositionToCryostatPtr(geo::Point_t const &point) const
Returns the cryostat at specified location.
geo::CryostatID const & ID() const
Returns the identifier of this cryostat.
Definition: CryostatGeo.h:132
unsigned int geo::GeometryCore::GetClosestOpDet ( double const *  point) const

Number of OpDets in the whole detector.

Definition at line 1890 of file GeometryCore.cxx.

References GetClosestOpDet(), geo::vect::makePointFromCoords(), and WireIDIntersectionCheck().

unsigned int GetClosestOpDet(geo::Point_t const &point) const
Find the nearest OpChannel to some point.
GENVECTOR_CONSTEXPR::geo::Point_t makePointFromCoords(Coords &&coords)
Creates a geo::Point_t from its coordinates (see makeFromCoords()).
std::string geo::GeometryCore::GetCryostatVolumeName ( geo::CryostatID const &  cid) const

Return the name of LAr TPC volume.

Parameters
cstatindex of the cryostat
Returns
the name of the specified TPC

This information is used in the event display.

Todo:

Use a cryostat ID instead

What if it does not exist?

Definition at line 730 of file GeometryCore.cxx.

References Cryostat().

731  {
732  return std::string(Cryostat(cid).Volume()->GetName());
733  }
CryostatGeo const & Cryostat(geo::CryostatID const &cryoid) const
Returns the specified cryostat.
std::string geo::GeometryCore::GetCryostatVolumeName ( unsigned int const  cstat = 0) const
inline

Return the name of LAr TPC volume.

Parameters
cstatindex of the cryostat
Returns
the name of the specified TPC

This information is used in the event display.

Todo:

Use a cryostat ID instead

What if it does not exist?

Definition at line 2280 of file GeometryCore.h.

2281  { return GetCryostatVolumeName(geo::CryostatID(cstat)); }
std::string GetCryostatVolumeName(geo::CryostatID const &cid) const
Return the name of LAr TPC volume.
The data type to uniquely identify a cryostat.
Definition: geo_types.h:190
CryostatGeo const& geo::GeometryCore::GetElement ( geo::CryostatID const &  cryoid) const
inline

Returns the specified cryostat.

Parameters
cstatnumber of cryostat
cryoidcryostat ID
Returns
a constant reference to the specified cryostat
Exceptions
cet::exception(GeometryCore category) if cryostat not present

The GetElement() method is overloaded and its return depends on the type of ID.

Todo:
Make the cryostat number mandatory (as CryostatID)

Definition at line 2033 of file GeometryCore.h.

Referenced by evd::SimulationDrawer::MCTruthOrtho().

2034  { return Cryostat(cryoid); }
CryostatGeo const & Cryostat(geo::CryostatID const &cryoid) const
Returns the specified cryostat.
TPCGeo const& geo::GeometryCore::GetElement ( geo::TPCID const &  tpcid) const
inline

Returns the specified TPC.

Parameters
tpcidID of the tpc
tpctpc number within the cryostat
cstatnumber of cryostat
Returns
a constant reference to the specified TPC
Exceptions
cet::exception(GeometryCore category) if cryostat not present
cet::exception(TPCOutOfRange category) if no such TPC

The GetElement() method is overloaded and its return depends on the type of ID.

Todo:
remove the version with integers

Definition at line 2427 of file GeometryCore.h.

2428  { return TPC(tpcid); }
TPCGeo const & TPC(unsigned int const tpc=0, unsigned int const cstat=0) const
Returns the specified TPC.
PlaneGeo const& geo::GeometryCore::GetElement ( geo::PlaneID const &  planeid) const
inline

Returns the specified wire.

Parameters
planeidID of the plane
pplane number within the TPC
tpcTPC number within the cryostat
cstatnumber of cryostat
Returns
a constant reference to the specified plane
Exceptions
cet::exception(GeometryCore category) if cryostat not present
cet::exception(TPCOutOfRange category) if no such TPC
cet::exception(PlaneOutOfRange category) if no such plane

The GetElement() method is overloaded and its return depends on the type of ID.

Todo:
remove the version with integers

Definition at line 2999 of file GeometryCore.h.

3000  { return Plane(planeid); }
PlaneGeo const & Plane(unsigned int const p, unsigned int const tpc=0, unsigned int const cstat=0) const
Returns the specified wire.
WireGeo const& geo::GeometryCore::GetElement ( geo::WireID const &  wireid) const
inline

Returns the specified wire.

Parameters
wireidID of the wire
Returns
a constant reference to the specified wire
Exceptions
cet::exceptionif not found

The GetElement() method is overloaded and its return depends on the type of ID.

Definition at line 3423 of file GeometryCore.h.

3424  { return Wire(wireid); }
WireGeo const & Wire(geo::WireID const &wireid) const
Returns the specified wire.
CryostatGeo const* geo::GeometryCore::GetElementPtr ( geo::CryostatID const &  cryoid) const
inline

Returns the specified cryostat.

Parameters
cryoidcryostat ID
Returns
a constant pointer to the specified cryostat, or nullptr if none

The GetElementPtr() method is overloaded and its return depends on the type of ID.

Definition at line 2048 of file GeometryCore.h.

2049  { return CryostatPtr(cryoid); }
CryostatGeo const * CryostatPtr(geo::CryostatID const &cryoid) const
Returns the specified cryostat.
TPCGeo const* geo::GeometryCore::GetElementPtr ( geo::TPCID const &  tpcid) const
inline

Returns the specified TPC.

Parameters
tpcidTPC ID
Returns
a constant pointer to the specified TPC, or nullptr if none

The GetElementPtr() method is overloaded and its return depends on the type of ID.

Definition at line 2445 of file GeometryCore.h.

2446  { return TPCPtr(tpcid); }
TPCGeo const * TPCPtr(geo::TPCID const &tpcid) const
Returns the specified TPC.
PlaneGeo const* geo::GeometryCore::GetElementPtr ( geo::PlaneID const &  planeid) const
inline

Returns the specified plane.

Parameters
planeidplane ID
Returns
a constant pointer to the specified plane, or nullptr if none

The GetElementPtr() method is overloaded and its return depends on the type of ID.

Definition at line 3017 of file GeometryCore.h.

3018  { return PlanePtr(planeid); }
PlaneGeo const * PlanePtr(geo::PlaneID const &planeid) const
Returns the specified plane.
WireGeo const* geo::GeometryCore::GetElementPtr ( geo::WireID const &  wireid) const
inline

Returns the specified wire.

Parameters
wireidwire ID
Returns
a constant pointer to the specified wire, or nullptr if none

The GetElementPtr() method is overloaded and its return depends on the type of ID.

Definition at line 3405 of file GeometryCore.h.

3406  { return WirePtr(wireid); }
WireGeo const * WirePtr(geo::WireID const &wireid) const
Returns the specified wire.
template<typename GeoID >
GeoID geo::GeometryCore::GetEndID ( ) const
inline

Returns the (possibly invalid) ID after the last subelement of the detector.

Template Parameters
GeoIDtype of the ID to be returned
Returns
ID after the last subelement in the specified geometry element

Definition at line 1952 of file GeometryCore.h.

References GetEndID().

Referenced by GetEndID().

1952 { GeoID id; GetEndID(id); return id; }
GeoID GetEndID() const
Returns the (possibly invalid) ID after the last subelement of the detector.
template<typename GeoID , typename ContextID >
GeoID geo::GeometryCore::GetEndID ( ContextID const &  id) const

Returns the (possibly invalid) ID after the last subelement of the specified element.

Template Parameters
GeoIDtype of the ID to be returned
ContextIDtype of the ID of the containing element
Parameters
idID of the containing element
Returns
ID (possibly invalid) after the last subelement in the specified geometry element
void geo::GeometryCore::GetEndID ( geo::CryostatID id) const
inline

Initializes the specified ID with the invalid ID after the last cryostat.

Definition at line 2138 of file GeometryCore.h.

2139  { id = geo::CryostatID(Ncryostats(), false); }
IDparameter< geo::CryostatID > CryostatID
Member type of validated geo::CryostatID parameter.
unsigned int Ncryostats() const
Returns the number of cryostats in the detector.
void geo::GeometryCore::GetEndID ( geo::TPCID id) const
inline

Initializes the specified ID with the invalid ID after the last TPC.

Definition at line 2528 of file GeometryCore.h.

2529  { GetEndID(id.asCryostatID()); id.TPC = 0; }
GeoID GetEndID() const
Returns the (possibly invalid) ID after the last subelement of the detector.
void geo::GeometryCore::GetEndID ( geo::PlaneID id) const
inline

Initializes the specified ID with the invalid ID after the last plane.

Definition at line 3030 of file GeometryCore.h.

3031  { GetEndID(id.asTPCID()); id.Plane = 0; }
GeoID GetEndID() const
Returns the (possibly invalid) ID after the last subelement of the detector.
void geo::GeometryCore::GetEndID ( geo::WireID id) const
inline

Initializes the specified ID with the invalid ID after the last wire.

Definition at line 3436 of file GeometryCore.h.

3437  { GetEndID(id.asPlaneID()); id.Wire = 0; }
GeoID GetEndID() const
Returns the (possibly invalid) ID after the last subelement of the detector.
void geo::GeometryCore::GetEndID ( readout::TPCsetID id) const
inline

Initializes the specified ID with the invalid ID after the last TPC set.

Definition at line 4951 of file GeometryCore.h.

4952  { GetEndID(id.asCryostatID()); id.TPCset = 0; }
GeoID GetEndID() const
Returns the (possibly invalid) ID after the last subelement of the detector.
void geo::GeometryCore::GetEndID ( readout::ROPID id) const
inline

Initializes the specified ID with the invalid ID after the last ROP.

Definition at line 5178 of file GeometryCore.h.

5179  { GetEndID(id.asTPCsetID()); id.ROP = 0; }
GeoID GetEndID() const
Returns the (possibly invalid) ID after the last subelement of the detector.
geo::PlaneID geo::GeometryCore::GetEndPlaneID ( geo::CryostatID const &  id) const
inline

Returns the (possibly invalid) ID after the last plane of the specified cryostat.

Definition at line 3043 of file GeometryCore.h.

3044  { return { GetEndTPCID(id), 0 }; }
geo::TPCID GetEndTPCID(geo::CryostatID const &id) const
geo::PlaneID geo::GeometryCore::GetEndPlaneID ( geo::TPCID const &  id) const
inline

Returns the (possibly invalid) ID after the last plane of the specified TPC.

Definition at line 3052 of file GeometryCore.h.

3053  { return { GetNextID(id), 0 }; }
GeoID GetNextID(GeoID const &id) const
Returns the ID next to the specified one.
readout::ROPID geo::GeometryCore::GetEndROPID ( geo::CryostatID const &  id) const
inline

Returns the (possibly invalid) ID after the last readout plane of the specified cryostat.

Definition at line 5191 of file GeometryCore.h.

5192  { return { GetEndTPCsetID(id), 0 }; }
readout::TPCsetID GetEndTPCsetID(geo::CryostatID const &id) const
readout::ROPID geo::GeometryCore::GetEndROPID ( readout::TPCsetID const &  id) const
inline

Returns the (possibly invalid) ID after the last readout plane of the specified TPC set.

Definition at line 5200 of file GeometryCore.h.

5201  { return { GetNextID(id), 0 }; }
GeoID GetNextID(GeoID const &id) const
Returns the ID next to the specified one.
geo::TPCID geo::GeometryCore::GetEndTPCID ( geo::CryostatID const &  id) const
inline

Returns the (possibly invalid) ID after the last TPC of the specified cryostat.

Definition at line 2541 of file GeometryCore.h.

References geo::CryostatID::Cryostat.

2542  { return { id.Cryostat + 1, 0 }; }
readout::TPCsetID geo::GeometryCore::GetEndTPCsetID ( geo::CryostatID const &  id) const
inline

Returns the (possibly invalid) ID after the last TPC set of the specified cryostat.

Definition at line 4964 of file GeometryCore.h.

References geo::CryostatID::Cryostat.

4965  { return { id.Cryostat + 1, 0 }; }
geo::WireID geo::GeometryCore::GetEndWireID ( geo::CryostatID const &  id) const
inline

Returns the (possibly invalid) ID after the last wire in the specified cryostat.

Definition at line 3449 of file GeometryCore.h.

3450  { return { GetEndPlaneID(id), 0 }; }
geo::PlaneID GetEndPlaneID(geo::CryostatID const &id) const
geo::WireID geo::GeometryCore::GetEndWireID ( geo::TPCID const &  id) const
inline

Returns the (possibly invalid) ID after the last wire of the specified TPC.

Definition at line 3458 of file GeometryCore.h.

3459  { return { geo::PlaneID(GetNextID(id), 0), 0 }; }
IDparameter< geo::PlaneID > PlaneID
Member type of validated geo::PlaneID parameter.
GeoID GetNextID(GeoID const &id) const
Returns the ID next to the specified one.
geo::WireID geo::GeometryCore::GetEndWireID ( geo::PlaneID const &  id) const
inline

Returns the (possibly invalid) ID after the last wire of the specified wire plane.

Definition at line 3467 of file GeometryCore.h.

3468  { return { GetNextID(id), 0 }; }
GeoID GetNextID(GeoID const &id) const
Returns the ID next to the specified one.
std::string geo::GeometryCore::GetLArTPCVolumeName ( geo::TPCID const &  tpcid) const

Return the name of specified LAr TPC volume.

Parameters
tpcidID of the TPC
tpcindex of TPC in the cryostat
cstatindex of the cryostat
Returns
the name of the specified TPC

This information is used by Geant4 simulation

Todo:

Use a TPCID instead

What if it does not exist?

Definition at line 724 of file GeometryCore.cxx.

References TPC().

Referenced by LArStackingAction::ClassifyNewTrack(), trkf::SpacePts::produce(), trkf::Track3Dreco::produce(), trkf::Track3DKalman::produce(), vertex::VertexFinder2D::produce(), and trkf::Track3DKalmanSPS::produce().

725  {
726  return std::string(TPC(tpcid).ActiveVolume()->GetName());
727  }
TPCGeo const & TPC(unsigned int const tpc=0, unsigned int const cstat=0) const
Returns the specified TPC.
std::string geo::GeometryCore::GetLArTPCVolumeName ( unsigned int const  tpc = 0,
unsigned int const  cstat = 0 
) const
inline

Return the name of specified LAr TPC volume.

Parameters
tpcidID of the TPC
tpcindex of TPC in the cryostat
cstatindex of the cryostat
Returns
the name of the specified TPC

This information is used by Geant4 simulation

Todo:

Use a TPCID instead

What if it does not exist?

Definition at line 2824 of file GeometryCore.h.

2825  { return GetLArTPCVolumeName(geo::TPCID(cstat, tpc)); }
The data type to uniquely identify a TPC.
Definition: geo_types.h:386
std::string GetLArTPCVolumeName(geo::TPCID const &tpcid) const
Return the name of specified LAr TPC volume.
template<typename GeoID >
GeoID geo::GeometryCore::GetNextID ( GeoID const &  id) const
inline

Returns the ID next to the specified one.

Template Parameters
GeoIDtype of the ID to be returned
Parameters
idthe element ID to be incremented
Returns
ID of the next subelement after id

Definition at line 1942 of file GeometryCore.h.

1943  { auto nextID(id); IncrementID(nextID); return nextID; }
bool IncrementID(geo::CryostatID &id) const
template<typename Point >
Point geo::GeometryCore::GetTPCFrontFaceCenter ( geo::TPCID const &  tpcid) const
inline

Returns the center of side of the detector facing the beam.

Template Parameters
Point_(default: DefaultPoint_t)_ return this point type
Parameters
tpcidID of the TPC
Returns
position of center of TPC face toward the beam, in world coordinates [cm]

Effectively, this is the center of the side of TPC active volume which faces the negative z direction, the first that a beam following the positive z direction crosses.

Definition at line 2777 of file GeometryCore.h.

2778  { return TPC(tpcid).GetFrontFaceCenter<Point>(); }
std::tuple< double, double, const reco::ClusterHit3D * > Point
Definitions used by the VoronoiDiagram algorithm.
Definition: DCEL.h:44
Point GetFrontFaceCenter() const
Returns the center of the active TPC volume side facing negative z.
Definition: TPCGeo.h:308
TPCGeo const & TPC(unsigned int const tpc=0, unsigned int const cstat=0) const
Returns the specified TPC.
DefaultPoint_t geo::GeometryCore::GetTPCFrontFaceCenter ( geo::TPCID const &  tpcid) const
inline

Returns the center of side of the detector facing the beam.

Template Parameters
Point_(default: DefaultPoint_t)_ return this point type
Parameters
tpcidID of the TPC
Returns
position of center of TPC face toward the beam, in world coordinates [cm]

Effectively, this is the center of the side of TPC active volume which faces the negative z direction, the first that a beam following the positive z direction crosses.

Definition at line 2779 of file GeometryCore.h.

2780  { return GetTPCFrontFaceCenter<DefaultPoint_t>(tpcid); }
template<typename Point >
Point geo::GeometryCore::GetTPCFrontFaceCenter ( unsigned int  tpc = 0,
unsigned int  cstat = 0 
) const
inline

Returns the center of side of the detector facing the beam.

Template Parameters
Point_(default: DefaultPoint_t)_ return this point type
Parameters
tpc_(default: 0)_ TPC number within the cryostat cstat
cstat_(default: 0)_ number of cryostat
Returns
position of center of TPC face toward the beam, in world coordinates [cm]
See also
GetTPCFrontFaceCenter(geo::TPCID const&)
Note
Please use GetTPCFrontFaceCenter(geo::TPCID const&) instead.

Definition at line 2797 of file GeometryCore.h.

2798  { return GetTPCFrontFaceCenter<Point>(geo::TPCID(cstat, tpc)); }
IDparameter< geo::TPCID > TPCID
Member type of validated geo::TPCID parameter.
DefaultPoint_t geo::GeometryCore::GetTPCFrontFaceCenter ( unsigned int  tpc = 0,
unsigned int  cstat = 0 
) const
inline

Returns the center of side of the detector facing the beam.

Template Parameters
Point_(default: DefaultPoint_t)_ return this point type
Parameters
tpc_(default: 0)_ TPC number within the cryostat cstat
cstat_(default: 0)_ number of cryostat
Returns
position of center of TPC face toward the beam, in world coordinates [cm]
See also
GetTPCFrontFaceCenter(geo::TPCID const&)
Note
Please use GetTPCFrontFaceCenter(geo::TPCID const&) instead.

Definition at line 2800 of file GeometryCore.h.

2801  { return GetTPCFrontFaceCenter<DefaultPoint_t>(tpc, cstat); }
const std::string geo::GeometryCore::GetWorldVolumeName ( ) const

Return the name of the world volume (needed by Geant4 simulation)

Definition at line 603 of file GeometryCore.cxx.

References DetectorEnclosureBox().

Referenced by evgen::CosmicsGen::CosmicsGen(), WorldBox(), and WorldVolume().

604  {
605  // For now, and possibly forever, this is a constant (given the
606  // definition of "nodeNames" above).
607  return std::string("volWorld");
608  }
unsigned int geo::GeometryCore::HardwareChannelFromOpChannel ( int  opChannel) const

Convert unique channel to hardware channel.

Definition at line 267 of file GeometryCore.cxx.

References fChannelMapAlg.

268  {
269  return fChannelMapAlg->HardwareChannelFromOpChannel(opChannel);
270  }
std::unique_ptr< const geo::ChannelMapAlg > fChannelMapAlg
Object containing the channel to wire mapping.
bool geo::GeometryCore::HasChannel ( raw::ChannelID_t  channel) const

Returns whether the specified channel exists and is valid.

Parameters
channelthe ID of the channel
Returns
whether the specified channel exists

A channel is defined as existing and valid if its ID is not invalid and if the channel is physical.

Definition at line 591 of file GeometryCore.cxx.

References fChannelMapAlg.

591  {
592  return fChannelMapAlg->HasChannel(channel);
593  } // GeometryCore::HasChannel()
std::unique_ptr< const geo::ChannelMapAlg > fChannelMapAlg
Object containing the channel to wire mapping.
bool geo::GeometryCore::HasCryostat ( geo::CryostatID const &  cryoid) const
inline

Returns whether we have the specified cryostat.

The HasElement() method is overloaded and its meaning depends on the type of ID.

Definition at line 2011 of file GeometryCore.h.

References geo::CryostatID::Cryostat.

2012  { return cryoid.Cryostat < Ncryostats(); }
unsigned int Ncryostats() const
Returns the number of cryostats in the detector.
bool geo::GeometryCore::HasElement ( geo::CryostatID const &  cryoid) const
inline

Returns whether we have the specified cryostat.

The HasElement() method is overloaded and its meaning depends on the type of ID.

Definition at line 2013 of file GeometryCore.h.

2014  { return HasCryostat(cryoid); }
bool HasCryostat(geo::CryostatID const &cryoid) const
Returns whether we have the specified cryostat.
bool geo::GeometryCore::HasElement ( geo::TPCID const &  tpcid) const
inline

Returns whether we have the specified TPC.

Definition at line 2404 of file GeometryCore.h.

2404 { return HasTPC(tpcid); }
bool HasTPC(geo::TPCID const &tpcid) const
Returns whether we have the specified TPC.
bool geo::GeometryCore::HasElement ( geo::PlaneID const &  planeid) const
inline

Returns whether we have the specified plane.

The HasElement() method is overloaded and its meaning depends on the type of ID.

Definition at line 2972 of file GeometryCore.h.

2973  { return HasPlane(planeid); }
bool HasPlane(geo::PlaneID const &planeid) const
Returns whether we have the specified plane.
bool geo::GeometryCore::HasElement ( geo::WireID const &  wireid) const
inline

Returns whether we have the specified wire.

The HasElement() method is overloaded and its meaning depends on the type of ID.

Definition at line 3388 of file GeometryCore.h.

3388 { return HasWire(wireid); }
bool HasWire(geo::WireID const &wireid) const
Returns whether we have the specified wire.
bool geo::GeometryCore::HasElement ( readout::TPCsetID const &  tpcsetid) const
inline

Returns whether we have the specified TPC set.

Definition at line 4911 of file GeometryCore.h.

4912  { return HasTPCset(tpcsetid); }
bool HasTPCset(readout::TPCsetID const &tpcsetid) const
bool geo::GeometryCore::HasElement ( readout::ROPID const &  ropid) const
inline

Returns whether we have the specified readout plane

Returns
whether the readout plane is valid and exists

Definition at line 5113 of file GeometryCore.h.

5113 { return HasROP(ropid); }
bool HasROP(readout::ROPID const &ropid) const
bool geo::GeometryCore::HasPlane ( geo::PlaneID const &  planeid) const
inline

Returns whether we have the specified plane.

The HasElement() method is overloaded and its meaning depends on the type of ID.

Definition at line 2967 of file GeometryCore.h.

References geo::TPCGeo::HasPlane().

2968  {
2969  geo::TPCGeo const* pTPC = TPCPtr(planeid);
2970  return pTPC? pTPC->HasPlane(planeid): false;
2971  }
bool HasPlane(unsigned int iplane) const
Returns whether a plane with index iplane is present in this TPC.
Definition: TPCGeo.h:175
Geometry information for a single TPC.
Definition: TPCGeo.h:38
TPCGeo const * TPCPtr(geo::TPCID const &tpcid) const
Returns the specified TPC.
bool geo::GeometryCore::HasROP ( readout::ROPID const &  ropid) const

Returns whether we have the specified readout plane

Returns
whether the readout plane is valid and exists

Definition at line 1740 of file GeometryCore.cxx.

References fChannelMapAlg.

1740  {
1741  return fChannelMapAlg->HasROP(ropid);
1742  } // GeometryCore::HasROP()
std::unique_ptr< const geo::ChannelMapAlg > fChannelMapAlg
Object containing the channel to wire mapping.
bool geo::GeometryCore::HasTPC ( geo::TPCID const &  tpcid) const
inline

Returns whether we have the specified TPC.

Definition at line 2397 of file GeometryCore.h.

References geo::CryostatGeo::HasTPC().

Referenced by pma::ProjectionMatchingAlg::buildShowerSeg(), ems::MultiEMShowers::convCluster(), and evd::TWQProjectionView::SelectTPC().

2398  {
2399  CryostatGeo const* pCryo = CryostatPtr(tpcid);
2400  return pCryo? pCryo->HasTPC(tpcid): false;
2401  }
CryostatGeo const * CryostatPtr(geo::CryostatID const &cryoid) const
Returns the specified cryostat.
bool geo::GeometryCore::HasTPCset ( readout::TPCsetID const &  tpcsetid) const

Returns whether we have the specified TPC set

Returns
whether the TPC set is valid and exists

Definition at line 1696 of file GeometryCore.cxx.

References fChannelMapAlg, and FindTPCsetAtPosition().

1696  {
1697  return fChannelMapAlg->HasTPCset(tpcsetid);
1698  } // GeometryCore::HasTPCset()
std::unique_ptr< const geo::ChannelMapAlg > fChannelMapAlg
Object containing the channel to wire mapping.
bool geo::GeometryCore::HasWire ( geo::WireID const &  wireid) const
inline

Returns whether we have the specified wire.

The HasElement() method is overloaded and its meaning depends on the type of ID.

Definition at line 3383 of file GeometryCore.h.

References geo::PlaneGeo::HasWire().

Referenced by tca::FillmAllTraj(), pma::ProjectionMatchingAlg::validate(), pma::ProjectionMatchingAlg::validate_on_adc(), pma::ProjectionMatchingAlg::validate_on_adc_test(), and WireIDIntersectionCheck().

3384  {
3385  geo::PlaneGeo const* pPlane = PlanePtr(wireid);
3386  return pPlane? pPlane->HasWire(wireid): false;
3387  }
PlaneGeo const * PlanePtr(geo::PlaneID const &planeid) const
Returns the specified plane.
Geometry information for a single wire plane.The plane is represented in the geometry by a solid whic...
Definition: PlaneGeo.h:82
bool HasWire(unsigned int iwire) const
Returns whether a wire with index iwire is present in this plane.
Definition: PlaneGeo.h:279
bool geo::GeometryCore::IncrementID ( geo::CryostatID id) const
inline

Sets the ID to the ID after the specified one.

Returns
whether the ID is actually valid (validity flag is also set)

Definition at line 5605 of file GeometryCore.h.

5605  {
5606  ++id.Cryostat;
5607  if (id) id.isValid = HasCryostat(id); // if invalid already, it stays so
5608  return bool(id);
5609 } // geo::GeometryCore::IncrementID(geo::CryostatID)
bool HasCryostat(geo::CryostatID const &cryoid) const
Returns whether we have the specified cryostat.
bool geo::GeometryCore::IncrementID ( geo::TPCID id) const
inline

Sets the ID to the ID after the specified one.

Returns
whether the ID is actually valid (validity flag is also set)

Definition at line 5611 of file GeometryCore.h.

5611  {
5612  unsigned int const nTPCsInCryo = NTPC(id);
5613  if (++id.TPC < nTPCsInCryo) return bool(id); // if was invalid, it stays so
5614  // no more TPCs in this cryostat
5615  id.TPC = 0;
5616  return IncrementID(id.asCryostatID()); // also sets validity
5617 } // geo::GeometryCore::IncrementID(geo::TPCID)
bool IncrementID(geo::CryostatID &id) const
unsigned int NTPC(unsigned int cstat=0) const
Returns the total number of TPCs in the specified cryostat.
TPCGeo const & TPC(unsigned int const tpc=0, unsigned int const cstat=0) const
Returns the specified TPC.
bool geo::GeometryCore::IncrementID ( geo::PlaneID id) const
inline

Sets the ID to the ID after the specified one.

Returns
whether the ID is actually valid (validity flag is also set)

Definition at line 5619 of file GeometryCore.h.

5619  {
5620  // this implementation is non-optimal, in that the cryostat lookup is
5621  // performed both here and, potentially, in IncrementID(TPCID)
5622  unsigned int const nPlanesInTPC = Nplanes(id);
5623  if (++id.Plane < nPlanesInTPC) return bool(id); // if was invalid, stays so
5624  // no more planes in this TPCs
5625  id.Plane = 0;
5626  return IncrementID(id.asTPCID()); // also sets validity
5627 } // geo::GeometryCore::IncrementID(geo::PlaneID)
PlaneGeo const & Plane(unsigned int const p, unsigned int const tpc=0, unsigned int const cstat=0) const
Returns the specified wire.
bool IncrementID(geo::CryostatID &id) const
unsigned int Nplanes(unsigned int tpc=0, unsigned int cstat=0) const
Returns the total number of wire planes in the specified TPC.
bool geo::GeometryCore::IncrementID ( geo::WireID id) const
inline

Sets the ID to the ID after the specified one.

Returns
whether the ID is actually valid (validity flag is also set)

Definition at line 5629 of file GeometryCore.h.

5629  {
5630  // this implementation is non-optimal, in that the TPC lookup is
5631  // performed both here and, potentially, in IncrementID(PlaneID)
5632  unsigned int const nWiresInPlane = Nwires(id);
5633  if (++id.Wire < nWiresInPlane) return bool(id); // if was invalid, stays so
5634  // no more wires in this plane
5635  id.Wire = 0;
5636  return IncrementID(id.asPlaneID()); // also sets validity
5637 } // geo::GeometryCore::IncrementID(geo::WireID)
unsigned int Nwires(unsigned int p, unsigned int tpc=0, unsigned int cstat=0) const
Returns the total number of wires in the specified plane.
bool IncrementID(geo::CryostatID &id) const
WireGeo const & Wire(geo::WireID const &wireid) const
Returns the specified wire.
bool geo::GeometryCore::IncrementID ( readout::TPCsetID id) const
inline

Sets the ID to the ID after the specified one.

Returns
whether the ID is actually valid (validity flag is also set)

Definition at line 5639 of file GeometryCore.h.

5639  {
5640  unsigned int const nTPCsetsInCryo = NTPCsets(id);
5641  if (++id.TPCset < nTPCsetsInCryo)
5642  return bool(id); // if was invalid, it stays so
5643  // no more TPC sets in this cryostat
5644  id.TPCset = 0;
5645  return IncrementID(id.asCryostatID()); // also sets validity
5646 } // geo::GeometryCore::IncrementID(readout::TPCsetID)
unsigned int NTPCsets(readout::CryostatID const &cryoid) const
Returns the total number of TPC sets in the specified cryostat.
bool IncrementID(geo::CryostatID &id) const
bool geo::GeometryCore::IncrementID ( readout::ROPID id) const
inline

Sets the ID to the ID after the specified one.

Returns
whether the ID is actually valid (validity flag is also set)

Definition at line 5648 of file GeometryCore.h.

References WireEndPoints().

5648  {
5649  // this implementation is non-optimal, in that the cryostat lookup is
5650  // performed both here and, potentially, in IncrementID(TPCsetID)
5651  unsigned int const nROPinTPC = NROPs(id);
5652  if (++id.ROP < nROPinTPC) return bool(id); // if was invalid, stays so
5653  // no more readout planes in this TPC set
5654  id.ROP = 0;
5655  return IncrementID(id.asTPCsetID()); // also sets validity
5656 } // geo::GeometryCore::IncrementID(readout::ROPID)
bool IncrementID(geo::CryostatID &id) const
unsigned int NROPs(readout::TPCsetID const &tpcsetid) const
Returns the total number of ROP in the specified TPC set.
std::string geo::GeometryCore::Info ( std::string  indent = "  ") const

Returns a string with complete geometry information.

See also
Print()

Definition at line 1082 of file GeometryCore.cxx.

References Print().

1082  {
1083  std::ostringstream sstr;
1084  Print(sstr, indent);
1085  return sstr.str();
1086  } // GeometryCore::Info()
void Print(Stream &&out, std::string indent=" ") const
Prints geometry information with maximum verbosity.
std::string indent(std::size_t const i)
bool geo::GeometryCore::IntersectionPoint ( geo::WireID const &  wid1,
geo::WireID const &  wid2,
double &  y,
double &  z 
) const

Returns the intersection point of two wires.

Parameters
wid1ID of the first wire
wid2ID of the other wire
y(output) y coordinate of the intersection point
z(output) z coordinate of the intersection point
Returns
whether an intersection was found within the TPC
See also
WireIDsIntersect()

The behaviour of this method reflects the one of WireIDsIntersect(), which supersedes this one.

To test if the result is infinity, use e.g. std::isfinite(y).

Deprecated:
This method uses arbitrary assumptions and should not be used. Use WireIDsIntersect() returning a vector, instead.

Definition at line 1669 of file GeometryCore.cxx.

References WireIDsIntersect(), geo::WireIDIntersection::y, and geo::WireIDIntersection::z.

Referenced by pma::ProjectionMatchingAlg::addEndpointRef(), sppt::SpacePointAlg_TimeSort::fillCoordinatesArrays(), trkf::CCTrackMaker::FillEndMatch(), tca::FillWireIntersections(), filter::MuonFilter::filter(), tca::Find3DVertices(), trkf::CCTrackMaker::FindMidPointMatch(), cmtool::CFAlgoStartPointMatch::Float(), cmtool::CFAlgoStartPointCompat::Float(), vertex::FeatureVertexFinder::Get3dVertexCandidates(), tca::Match2Planes(), cluster::ClusterMatchAlg::Match_RoughZ(), trkf::CCTrackMaker::PlnMatch(), and trkf::TrackTrajectoryAlg::ShortTrackTrajectory().

1672  {
1673  geo::WireIDIntersection widIntersect;
1674  bool const found = WireIDsIntersect(wid1, wid2, widIntersect);
1675  y = widIntersect.y;
1676  z = widIntersect.z;
1677  return found;
1678  }
double z
z position of intersection
Definition: geo_types.h:805
Float_t y
Definition: compare.C:6
Double_t z
Definition: plot.C:279
bool WireIDsIntersect(WireID const &wid1, WireID const &wid2, geo::Point_t &intersection) const
Computes the intersection between two wires.
double y
y position of intersection
Definition: geo_types.h:804
bool geo::GeometryCore::IntersectionPoint ( unsigned int  wire1,
unsigned int  wire2,
unsigned int  plane1,
unsigned int  plane2,
unsigned int  cstat,
unsigned int  tpc,
double &  y,
double &  z 
) const
inline

Returns the intersection point of two wires.

Parameters
wire1wire index of the first wire
wire2wire index of the other wire
plane1plane index of the first wire
plane2plane index of the other wire
cstatcryostat number
tpctpc number within the cryostat where the planes belong
y(output) y coordinate of the intersection point
z(output) z coordinate of the intersection point
Returns
whether an intersection was found

No check is performed, not any information provided, about the validity of the result.

Deprecated:
This method uses arbitrary assumptions and should not be used. Use WireIDsIntersect() returning a vector, instead.

Definition at line 4242 of file GeometryCore.h.

4250  {
4251  return IntersectionPoint(
4252  geo::WireID(cstat, tpc, plane1, wire1),
4253  geo::WireID(cstat, tpc, plane2, wire2),
4254  y, z
4255  );
4256  }
Float_t y
Definition: compare.C:6
Double_t z
Definition: plot.C:279
bool IntersectionPoint(geo::WireID const &wid1, geo::WireID const &wid2, double &y, double &z) const
Returns the intersection point of two wires.
bool geo::GeometryCore::IntersectLines ( double  A_start_x,
double  A_start_y,
double  A_end_x,
double  A_end_y,
double  B_start_x,
double  B_start_y,
double  B_end_x,
double  B_end_y,
double &  x,
double &  y 
) const

Computes the intersection between two lines on a plane.

Parameters
A_start_xx coordinate of one point of the first segment
A_start_yy coordinate of one point of the first segment
A_end_xx coordinate of another point of the first segment
A_end_yy coordinate of another point of the first segment
B_start_xx coordinate of one point of the second segment
B_start_yy coordinate of one point of the second segment
B_end_xx coordinate of another point of the second segment
B_end_yy coordinate of another point of the second segment
x_(output)_ variable to store the x coordinate of intersection
y_(output)_ variable to store the y coordinate of intersection
Returns
whether intersection exists

The order of the ends is not relevant. The return value is false if the two segments are parallel. In that case, x and y variables are not changed. Otherwise, they hold the intersection coordinate, even if the intersection point is beyond one or both the segments.

Definition at line 1304 of file GeometryCore.cxx.

References B, coordIs, and lar::util::RealComparisons< RealType >::zero().

Referenced by IntersectSegments().

1308  {
1309 
1310  // Equation from http://en.wikipedia.org/wiki/Line%E2%80%93line_intersection
1311  // T.Yang Nov, 2014
1312  // Notation: x => coordinate orthogonal to the drift direction and to the beam direction
1313  // y => direction orthogonal to the previous and to beam direction
1314 
1315  double const denom = (A_start_x - A_end_x)*(B_start_y - B_end_y)
1316  - (A_start_y - A_end_y)*(B_start_x - B_end_x);
1317 
1318  if (coordIs.zero(denom)) return false;
1319 
1320  double const A = (A_start_x * A_end_y - A_start_y * A_end_x) / denom;
1321  double const B = (B_start_x * B_end_y - B_start_y * B_end_x) / denom;
1322 
1323  x = (B_start_x - B_end_x) * A - (A_start_x - A_end_x) * B;
1324  y = (B_start_y - B_end_y) * A - (A_start_y - A_end_y) * B;
1325 
1326  return true;
1327 
1328  } // GeometryCore::IntersectLines()
Float_t x
Definition: compare.C:6
Float_t y
Definition: compare.C:6
Int_t B
Definition: plot.C:25
constexpr bool zero(Value_t value) const
Returns whether the value is no farther from 0 than the threshold.
static lar::util::RealComparisons< geo::Length_t > coordIs
Value of tolerance for equality comparisons.
bool geo::GeometryCore::IntersectSegments ( double  A_start_x,
double  A_start_y,
double  A_end_x,
double  A_end_y,
double  B_start_x,
double  B_start_y,
double  B_end_x,
double  B_end_y,
double &  x,
double &  y 
) const

Computes the intersection between two segments on a plane.

Parameters
A_start_xx coordinate of the start of the first segment
A_start_yy coordinate of the start of the first segment
A_end_xx coordinate of the end of the first segment
A_end_yy coordinate of the end of the first segment
B_start_xx coordinate of the start of the second segment
B_start_yy coordinate of the start of the second segment
B_end_xx coordinate of the end of the second segment
B_end_yy coordinate of the end of the second segment
x_(output)_ variable to store the x coordinate of intersection
y_(output)_ variable to store the y coordinate of intersection
Returns
whether intersection exists and is on both segments

The order of the ends is not relevant. The return value is false if the two segments are parallel, or if their intersection point is not on both the segments. If the segments are parallel, x and y variables are not changed. Otherwise, they hold the intersection coordinate, even if the intersection point is beyond one or both the segments.

Definition at line 1331 of file GeometryCore.cxx.

References util::abs(), c1, c2, geo::vect::cross(), geo::WireGeo::Direction(), geo::vect::dot(), geo::GeometryCore::Segment< Point >::end(), geo::WireGeo::GetCenter(), geo::WireGeo::HalfL(), IntersectLines(), geo::TPCID::InvalidID, PointWithinSegments(), geo::GeometryCore::Segment< Point >::start(), ThirdPlane(), geo::vect::toTVector3(), geo::TPCID::TPC, geo::WireIDIntersection::TPC, Wire(), WireEndPoints(), WireIDIntersectionCheck(), WireIDsIntersect(), geo::WireIDIntersection::y, and geo::WireIDIntersection::z.

1335  {
1336 
1337  bool bCross = IntersectLines(
1338  A_start_x, A_start_y, A_end_x, A_end_y,
1339  B_start_x, B_start_y, B_end_x, B_end_y,
1340  x, y
1341  );
1342 
1343  if (bCross) {
1344  mf::LogWarning("IntersectSegments") << "The segments are parallel!";
1345  return false;
1346  }
1347 
1348  return PointWithinSegments(
1349  A_start_x, A_start_y, A_end_x, A_end_y,
1350  B_start_x, B_start_y, B_end_x, B_end_y,
1351  x, y
1352  );
1353 
1354  } // GeometryCore::IntersectSegments()
Float_t x
Definition: compare.C:6
Float_t y
Definition: compare.C:6
static bool PointWithinSegments(double A_start_x, double A_start_y, double A_end_x, double A_end_y, double B_start_x, double B_start_y, double B_end_x, double B_end_y, double x, double y)
Returns whether x and y are within both specified ranges (A and B).
bool IntersectLines(double A_start_x, double A_start_y, double A_end_x, double A_end_y, double B_start_x, double B_start_y, double B_end_x, double B_end_y, double &x, double &y) const
Computes the intersection between two lines on a plane.
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
bool geo::GeometryCore::IsValidOpChannel ( int  opChannel) const

Is this a valid OpChannel number?

Definition at line 274 of file GeometryCore.cxx.

References fChannelMapAlg, and NOpDets().

Referenced by cosmic::BeamFlashTrackMatchTaggerAlg::CheckCompatibility(), cosmic::BeamFlashTrackMatchTaggerAlg::PrintHypothesisFlashComparison(), lariov::SIOVPmtGainProvider::Reconfigure(), and opdet::RunHitFinder().

275  {
276  return fChannelMapAlg->IsValidOpChannel(opChannel, this->NOpDets());
277  }
std::unique_ptr< const geo::ChannelMapAlg > fChannelMapAlg
Object containing the channel to wire mapping.
unsigned int NOpDets() const
Number of OpDets in the whole detector.
IteratorBox< cryostat_id_iterator, &GeometryCore::begin_cryostat_id, &GeometryCore::end_cryostat_id > geo::GeometryCore::IterateCryostatIDs ( ) const
inline

Enables ranged-for loops on all cryostat IDs of the detector.

Returns
an object suitable for ranged-for loops on all cryostat IDs

Example of usage:

for (geo::CryostatID const& cID: geom->IterateCryostatIDs()) {
  geo::CryostatGeo const& Cryo = geom->Cryostat(cID);

  // useful code here

} // for all cryostats

Definition at line 2179 of file GeometryCore.h.

References begin_cryostat(), and end_cryostat().

2179 { return { this }; }
IteratorBox< cryostat_iterator, &GeometryCore::begin_cryostat, &GeometryCore::end_cryostat > geo::GeometryCore::IterateCryostats ( ) const
inline

Enables ranged-for loops on all cryostats of the detector.

Returns
an object suitable for ranged-for loops on all cryostats

Example of usage:

for (geo::CryostatGeo const& Cryo: geom->IterateCryostats()) {

  // useful code here

} // for all cryostats

Definition at line 2198 of file GeometryCore.h.

Referenced by larg4::OpFastScintillation::extractActiveVolumes(), and PositionToCryostatPtr().

2198 { return { this }; }
IteratorBox< plane_id_iterator, &GeometryCore::begin_plane_id, &GeometryCore::end_plane_id > geo::GeometryCore::IteratePlaneIDs ( ) const
inline

Enables ranged-for loops on all plane IDs of the detector.

Returns
an object suitable for ranged-for loops on all plane IDs

Example of usage:

for (geo::PlaneID const& pID: geom->IteratePlaneIDs()) {
geo::PlaneGeo const& Plane = geom->Plane(pID);
// useful code here
} // for all plane IDs

Definition at line 3127 of file GeometryCore.h.

References begin_plane_id(), and end_plane_id().

Referenced by vertex::FeatureVertexFinderAna::analyze(), ShowerRecoTools::ShowerSlidingStandardCalodEdx::CalculateElement(), corner::CornerFinderAlg::create_smaller_histos(), sim::details::createPlaneIndexMap(), corner::CornerFinderAlg::get_feature_points(), corner::CornerFinderAlg::get_feature_points_LineIntegralScore(), and cluster::DBScan3DAlg::init().

3127 { return { this }; }
LocalIteratorBox< plane_id_iterator, geo::CryostatID, &GeometryCore::begin_plane_id, &GeometryCore::end_plane_id > geo::GeometryCore::IteratePlaneIDs ( geo::CryostatID const &  cid) const
inline

Enables ranged-for loops on all plane IDs of the specified cryostat.

Parameters
cidthe ID of the cryostat to loop the plane IDs of
Returns
an object suitable for ranged-for loops on plane IDs

If the cryostat ID is invalid, the effect is undefined.

Example of usage:

geo::CryostatID cid{1}; // cryostat #1 (hope it exists!)
for (geo::PlaneID const& pID: geom->IteratePlaneIDs(cid)) {
geo::PlaneGeo const& plane = geom->Plane(pID);
// useful code here
} // for all planes in cryostat #1

Definition at line 3152 of file GeometryCore.h.

References begin_plane_id(), and end_plane_id().

3152 { return { this, cid }; }
LocalIteratorBox< plane_id_iterator, geo::TPCID, &GeometryCore::begin_plane_id, &GeometryCore::end_plane_id > geo::GeometryCore::IteratePlaneIDs ( geo::TPCID const &  tid) const
inline

Enables ranged-for loops on all plane IDs of the specified TPC.

Parameters
tidthe ID of the TPC to loop the plane IDs of
Returns
an object suitable for ranged-for loops on plane IDs

If the TPC ID is invalid, the effect is undefined.

Example of usage:

geo::TPCID tid{ 0, 1 }; // C:0 T:1 (hope it exists!)
for (geo::PlaneID const& pID: geom->IteratePlaneIDs(tid)) {
geo::PlaneGeo const& plane = geom->Plane(pID);
// useful code here
} // for all planes in C:0 T:1

Definition at line 3176 of file GeometryCore.h.

References begin_plane(), and end_plane().

3176 { return { this, tid }; }
void geo::GeometryCore::IteratePlaneIDs ( geo::PlaneID const &  pid) const
delete

IteratePlaneIDs() is not supported on plane IDs.

void geo::GeometryCore::IteratePlaneIDs ( geo::WireID const &  pid) const
delete

IteratePlaneIDs() is not supported on wire IDs.

void geo::GeometryCore::IteratePlaneIDs ( readout::TPCsetID const &  ) const
delete

IteratePlaneIDs() is not supported on readout IDs.

void geo::GeometryCore::IteratePlaneIDs ( readout::ROPID const &  ) const
delete

IteratePlaneIDs() is not supported on readout IDs.

IteratorBox< plane_iterator, &GeometryCore::begin_plane, &GeometryCore::end_plane > geo::GeometryCore::IteratePlanes ( ) const
inline

Enables ranged-for loops on all planes of the detector.

Returns
an object suitable for ranged-for loops on all planes

Example of usage:

for (geo::PlaneGeo const& Plane: geom->IteratePlanes()) {
// useful code here
} // for all planes

Definition at line 3209 of file GeometryCore.h.

References begin_plane(), and end_plane().

Referenced by mvapid::MVAAlg::GetWireNormals().

3209 { return { this }; }
LocalIteratorBox< plane_iterator, geo::CryostatID, &GeometryCore::begin_plane, &GeometryCore::end_plane > geo::GeometryCore::IteratePlanes ( geo::CryostatID const &  cid) const
inline

Enables ranged-for loops on all planes of the specified cryostat.

Parameters
cidthe ID of the cryostat to loop the planes of
Returns
an object suitable for ranged-for loops on planes

If the cryostat ID is invalid, the effect is undefined.

Example of usage:

geo::CryostatID cid{1}; // cryostat #1 (hope it exists!)
for (geo::PlaneGeo const& plane: geom->IteratePlanes(cid)) {
// useful code here
} // for planes in cryostat 1

Definition at line 3232 of file GeometryCore.h.

References begin_plane(), and end_plane().

3232 { return { this, cid }; }
LocalIteratorBox< plane_iterator, geo::TPCID, &GeometryCore::begin_plane, &GeometryCore::end_plane > geo::GeometryCore::IteratePlanes ( geo::TPCID const &  tid) const
inline

Enables ranged-for loops on all planes of the specified TPC.

Parameters
tidthe ID of the TPC to loop the planes of
Returns
an object suitable for ranged-for loops on planes

If the TPC ID is invalid, the effect is undefined.

Example of usage:

geo::TPCID tid{ 0, 1 }; // C:0 T:1 (hope it exists!)
for (geo::PlaneGeo const& plane: geom->IteratePlanes(tid)) {
// useful code here
} // for planes in C:0 T:1

Definition at line 3255 of file GeometryCore.h.

3255 { return { this, tid }; }
void geo::GeometryCore::IteratePlanes ( geo::PlaneID const &  pid) const
delete

IteratePlanes() is not supported on plane IDs.

void geo::GeometryCore::IteratePlanes ( geo::WireID const &  pid) const
delete

IteratePlanes() is not supported on wire IDs.

void geo::GeometryCore::IteratePlanes ( readout::TPCsetID const &  ) const
delete

IteratePlanes() is not supported on readout IDs.

void geo::GeometryCore::IteratePlanes ( readout::ROPID const &  ) const
delete

IteratePlanes() is not supported on readout IDs.

IteratorBox< ROP_id_iterator, &GeometryCore::begin_ROP_id, &GeometryCore::end_ROP_id > geo::GeometryCore::IterateROPIDs ( ) const
inline

Enables ranged-for loops on all readout plane IDs of the detector.

Returns
an object suitable for ranged-for loops on all ROP IDs

Example of usage:

for (readout::ROPID const& rID: geom->IterateROPIDs()) {
// useful code here
} // for all ROPs

Definition at line 5249 of file GeometryCore.h.

References begin_ROP_id(), and end_ROP_id().

5249 { return { this }; }
LocalIteratorBox< ROP_id_iterator, geo::CryostatID, &GeometryCore::begin_ROP_id, &GeometryCore::end_ROP_id > geo::GeometryCore::IterateROPIDs ( geo::CryostatID const &  cid) const
inline

Enables ranged-for loops on all readout plane IDs of the specified cryostat.

Parameters
cidthe ID of the cryostat to loop the readout plane IDs of
Returns
an object suitable for ranged-for loops on readout plane IDs

If the cryostat ID is invalid, the effect is undefined.

Example of usage:

geo::CryostatID cid{1}; // cryostat #1 (hope it exists!)
for (readout::ROPID const& rID: geom->IterateROPIDs(cid)) {
// useful code here
} // for all readout planes in cryostat #1

Definition at line 5273 of file GeometryCore.h.

References begin_ROP_id(), and end_ROP_id().

5273 { return { this, cid }; }
LocalIteratorBox< ROP_id_iterator, readout::TPCsetID, &GeometryCore::begin_ROP_id, &GeometryCore::end_ROP_id > geo::GeometryCore::IterateROPIDs ( readout::TPCsetID const &  sid) const
inline

Enables ranged-for loops on all readout plane IDs of the specified TPC set.

Parameters
sidthe ID of the TPC set to loop the readout plane IDs of
Returns
an object suitable for ranged-for loops on readout plane IDs

If the TPC set ID is invalid, the effect is undefined.

Example of usage:

readout::TPCsetID sid{ 0, 1 }; // C:0 S:1 (hope it exists!)
for (readout::ROPID const& rID: geom->IterateROPIDs(sid)) {
// useful code here
} // for all readout planes in C:0 S:1

Definition at line 5297 of file GeometryCore.h.

References max, min, and fhicl::detail::atom::value().

5297 { return { this, sid }; }
IteratorBox< TPC_id_iterator, &GeometryCore::begin_TPC_id, &GeometryCore::end_TPC_id > geo::GeometryCore::IterateTPCIDs ( ) const
inline

Enables ranged-for loops on all TPC IDs of the detector.

Returns
an object suitable for ranged-for loops on all TPC IDs

Example of usage:

for (geo::TPCID const& tID: geom->IterateTPCIDs()) {
geo::TPCGeo const& TPC = geom->TPC(tID);
// useful code here
} // for all TPC

Definition at line 2597 of file GeometryCore.h.

References begin_TPC_id(), and end_TPC_id().

Referenced by tca::InsideTPC().

2597 { return { this }; }
LocalIteratorBox< TPC_id_iterator, geo::CryostatID, &GeometryCore::begin_TPC_id, &GeometryCore::end_TPC_id > geo::GeometryCore::IterateTPCIDs ( geo::CryostatID const &  cid) const
inline

Enables ranged-for loops on all TPC IDs of the specified cryostat.

Parameters
cidthe ID of the cryostat to loop the TPC IDs of
Returns
an object suitable for ranged-for loops on TPC IDs

If the cryostat ID is invalid, the effect is undefined.

Example of usage:

geo::CryostatID cid{1}; // cryostat #1 (hope it exists!)
for (geo::TPCID const& tID: geom->IterateTPCIDs(cid)) {
geo::TPCGeo const& TPC = geom->TPC(tID);
// useful code here
} // for all TPC in cryostat #1

Definition at line 2621 of file GeometryCore.h.

References begin_TPC(), and end_TPC().

2621 { return { this, cid }; }
void geo::GeometryCore::IterateTPCIDs ( geo::TPCID const &  pid) const
delete

IterateTPCIDs() is not supported on TPC IDs.

void geo::GeometryCore::IterateTPCIDs ( geo::PlaneID const &  pid) const
delete

IterateTPCIDs() is not supported on plane IDs.

void geo::GeometryCore::IterateTPCIDs ( geo::WireID const &  pid) const
delete

IterateTPCIDs() is not supported on wire IDs.

void geo::GeometryCore::IterateTPCIDs ( readout::TPCsetID const &  ) const
delete

IterateTPCIDs() is not supported on readout IDs.

void geo::GeometryCore::IterateTPCIDs ( readout::ROPID const &  ) const
delete

IterateTPCIDs() is not supported on readout IDs.

IteratorBox<TPC_iterator, &GeometryCore::begin_TPC, &GeometryCore::end_TPC> geo::GeometryCore::IterateTPCs ( ) const
inline

Enables ranged-for loops on all TPCs of the detector.

Returns
an object suitable for ranged-for loops on all TPCs

If the cryostat ID is invalid, the effect is undefined.

Example of usage:

for (geo::TPCGeo const& TPC: geom->IterateTPCs()) {
// useful code here
} // for TPCs

Definition at line 2655 of file GeometryCore.h.

References begin_TPC(), and end_TPC().

Referenced by ems::MCinfo::Findtpcborders(), and UpdateAfterSorting().

2655 { return { this }; }
LocalIteratorBox< TPC_iterator, geo::CryostatID, &GeometryCore::begin_TPC, &GeometryCore::end_TPC > geo::GeometryCore::IterateTPCs ( geo::CryostatID const &  cid) const
inline

Enables ranged-for loops on all TPCs of the specified cryostat.

Parameters
cidthe ID of the cryostat to loop the TPCs of
Returns
an object suitable for ranged-for loops on TPCs

If the cryostat ID is invalid, the effect is undefined.

Example of usage:

geo::CryostatID cid{1}; // cryostat #1 (hope it exists!)
for (geo::TPCGeo const& TPC: geom->IterateTPCs(cid)) {
// useful code here
} // for TPCs in cryostat 1

Definition at line 2678 of file GeometryCore.h.

2678 { return { this, cid }; }
void geo::GeometryCore::IterateTPCs ( geo::TPCID const &  pid) const
delete

IterateTPCs() is not supported on TPC IDs.

void geo::GeometryCore::IterateTPCs ( geo::PlaneID const &  pid) const
delete

IterateTPCs() is not supported on plane IDs.

void geo::GeometryCore::IterateTPCs ( geo::WireID const &  pid) const
delete

IterateTPCs() is not supported on wire IDs.

void geo::GeometryCore::IterateTPCs ( readout::TPCsetID const &  ) const
delete

IterateTPCs() is not supported on readout IDs.

void geo::GeometryCore::IterateTPCs ( readout::ROPID const &  ) const
delete

IterateTPCs() is not supported on readout IDs.

IteratorBox< TPCset_id_iterator, &GeometryCore::begin_TPCset_id, &GeometryCore::end_TPCset_id > geo::GeometryCore::IterateTPCsetIDs ( ) const
inline

Enables ranged-for loops on all TPC set IDs of the detector.

Returns
an object suitable for ranged-for loops on all TPC set IDs

Example of usage:

for (readout::TPCsetID const& sID: geom->IterateTPCsetIDs()) {
// useful code here
} // for all TPC sets

Definition at line 5004 of file GeometryCore.h.

References begin_TPCset_id(), and end_TPCset_id().

Referenced by ChannelsInTPCs().

5004 { return { this }; }
LocalIteratorBox< TPCset_id_iterator, geo::CryostatID, &GeometryCore::begin_TPCset_id, &GeometryCore::end_TPCset_id > geo::GeometryCore::IterateTPCsetIDs ( geo::CryostatID const &  cid) const
inline

Enables ranged-for loops on all TPC set IDs of the specified cryostat.

Parameters
cidthe ID of the cryostat to loop the TPC set IDs of
Returns
an object suitable for ranged-for loops on TPC set IDs

If the cryostat ID is invalid, the effect is undefined.

Example of usage:

geo::CryostatID cid{1}; // cryostat #1 (hope it exists!)
for (readout::TPCsetID const& tID: geom->IterateTPCsetIDs(cid)) {
// useful code here
} // for all TPC sets in cryostat #1

Definition at line 5028 of file GeometryCore.h.

5028 { return { this, cid }; }
IteratorBox< wire_id_iterator, &GeometryCore::begin_wire_id, &GeometryCore::end_wire_id > geo::GeometryCore::IterateWireIDs ( ) const
inline

Enables ranged-for loops on all wire IDs of the detector.

Returns
an object suitable for ranged-for loops on all wire IDs

Example of usage:

for (geo::WireID const& wID: geom->IterateWireIDs()) {
geo::WireGeo const& Wire = geom->Wire(wID);
// useful code here
} // for all wires

Definition at line 3554 of file GeometryCore.h.

References begin_wire_id(), and end_wire_id().

Referenced by ChannelsInTPCs(), and cluster::DBScan3DAlg::init().

3554 { return { this }; }
LocalIteratorBox< wire_id_iterator, geo::CryostatID, &GeometryCore::begin_wire_id, &GeometryCore::end_wire_id > geo::GeometryCore::IterateWireIDs ( geo::CryostatID const &  cid) const
inline

Enables ranged-for loops on all wire IDs of specified cryostat.

Parameters
cidthe ID of the cryostat to loop the wires of
Returns
an object suitable for ranged-for loops on cryostat wire IDs

If the cryostat ID is invalid, the effect is undefined.

Example of usage:

geo::CryostatID cid{1}; // cryostat #1 (hope it exists!)
for (geo::WireID const& wID: geom->IterateWireIDs(cid)) {
geo::WireGeo const& Wire = geom->Wire(wID);
// useful code here
} // for all wires

Definition at line 3579 of file GeometryCore.h.

References begin_wire_id(), and end_wire_id().

3579 { return { this, cid }; }
LocalIteratorBox< wire_id_iterator, geo::TPCID, &GeometryCore::begin_wire_id, &GeometryCore::end_wire_id > geo::GeometryCore::IterateWireIDs ( geo::TPCID const &  tid) const
inline

Enables ranged-for loops on all wire IDs of specified TPC.

Parameters
tidthe ID of the TPC to loop the wires of
Returns
an object suitable for ranged-for loops on TPC wire IDs

If the TPC ID is invalid, the effect is undefined.

Example of usage:

geo::TPCID tid{0, 1}; // C:0 T:1 (hope it exists!)
for (geo::WireID const& wID: geom->IterateWireIDs(tid)) {
geo::WireGeo const& Wire = geom->Wire(wID);
// useful code here
} // for all wires in C:0 T:1

Definition at line 3604 of file GeometryCore.h.

References begin_wire_id(), and end_wire_id().

3604 { return { this, tid }; }
LocalIteratorBox< wire_id_iterator, geo::PlaneID, &GeometryCore::begin_wire_id, &GeometryCore::end_wire_id > geo::GeometryCore::IterateWireIDs ( geo::PlaneID const &  pid) const
inline

Enables ranged-for loops on all wire IDs of specified wire plane.

Parameters
pidthe ID of the wire plane to loop the wires of
Returns
an object suitable for ranged-for loops on plane wire IDs

If the wire plane ID is invalid, the effect is undefined.

Example of usage:

geo::PlaneID pid{0, 0, 1}; // C:0 T:0 P:1
for (geo::WireID const& wID: geom->IterateWireIDs(pid)) {
geo::WireGeo const& Wire = geom->Wire(wID);
// useful code here
} // for all wires in C:0 T:0 P:1

Definition at line 3629 of file GeometryCore.h.

References begin_wire(), and end_wire().

3629 { return { this, pid }; }
void geo::GeometryCore::IterateWireIDs ( geo::WireID const &  pid) const
delete

IterateWireIDs() is not supported on wire IDs.

void geo::GeometryCore::IterateWireIDs ( readout::TPCsetID const &  ) const
delete

IterateWireIDs() is not supported on readout IDs.

void geo::GeometryCore::IterateWireIDs ( readout::ROPID const &  ) const
delete

IterateWireIDs() is not supported on readout IDs.

IteratorBox< wire_iterator, &GeometryCore::begin_wire, &GeometryCore::end_wire > geo::GeometryCore::IterateWires ( ) const
inline

Enables ranged-for loops on all wires of the detector.

Returns
an object suitable for ranged-for loops on all wires

Example of usage:

for (geo::WireGeo const& Wire: geom->IterateWires()) {
// useful code here
} // for all wires

Definition at line 3658 of file GeometryCore.h.

References begin_wire(), and end_wire().

3658 { return { this }; }
LocalIteratorBox< wire_iterator, geo::CryostatID, &GeometryCore::begin_wire, &GeometryCore::end_wire > geo::GeometryCore::IterateWires ( geo::CryostatID const &  cid) const
inline

Enables ranged-for loops on all wires of specified cryostat.

Parameters
cidthe ID of the cryostat to loop the wires of
Returns
an object suitable for ranged-for loops on cryostat wires

If the cryostat ID is invalid, the effect is undefined.

Example of usage:

geo::CryostatID cid{1}; // cryostat #1 (hope it exists!)
for (geo::WireID const& Wire: geom->IterateWires(cid)) {
// useful code here
} // for all wires

Definition at line 3682 of file GeometryCore.h.

References begin_wire(), and end_wire().

3682 { return { this, cid }; }
LocalIteratorBox< wire_iterator, geo::TPCID, &GeometryCore::begin_wire, &GeometryCore::end_wire > geo::GeometryCore::IterateWires ( geo::TPCID const &  tid) const
inline

Enables ranged-for loops on all wires of specified TPC.

Parameters
tidthe ID of the TPC to loop the wires of
Returns
an object suitable for ranged-for loops on TPC wires

If the TPC ID is invalid, the effect is undefined.

Example of usage:

geo::TPCID tid{0, 1}; // C:0 T:1 (hope it exists!)
for (geo::WireID const& Wire: geom->IterateWires(tid)) {
// useful code here
} // for all wires in C:0 T:1

Definition at line 3706 of file GeometryCore.h.

References begin_wire(), and end_wire().

3706 { return { this, tid }; }
LocalIteratorBox< wire_iterator, geo::PlaneID, &GeometryCore::begin_wire, &GeometryCore::end_wire > geo::GeometryCore::IterateWires ( geo::PlaneID const &  tid) const
inline

Enables ranged-for loops on all wires of specified wire plane.

Parameters
pidthe ID of the wire plane to loop the wires of
Returns
an object suitable for ranged-for loops on plane wires

If the wire plane ID is invalid, the effect is undefined.

Example of usage:

geo::PlaneID pid{0, 1}; // C:0 T:0 P:1
for (geo::WireID const& Wire: geom->IterateWires(pid)) {
// useful code here
} // for all wires in C:0 T:0 T:1

Definition at line 3730 of file GeometryCore.h.

3730 { return { this, tid }; }
void geo::GeometryCore::IterateWires (