LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
geo::ChannelMapStandardAlg Class Reference

#include "ChannelMapStandardAlg.h"

Inheritance diagram for geo::ChannelMapStandardAlg:
geo::ChannelMapAlg

Public Member Functions

 ChannelMapStandardAlg (fhicl::ParameterSet const &p)
 
void Initialize (GeometryData_t const &geodata) override
 Geometry initialisation. More...
 
void Uninitialize () override
 Deconfiguration: prepare for a following call of Initialize() More...
 
std::vector< WireIDChannelToWire (raw::ChannelID_t channel) const override
 
unsigned int Nchannels () const override
 Returns the total number of channels present (not necessarily contiguous) More...
 
unsigned int Nchannels (readout::ROPID const &ropid) const override
 Returns the number of channels in the specified ROP. More...
 
std::set< PlaneID > const & PlaneIDs () const override
 Returns a list of the plane IDs in the whole detector. More...
 
GeoObjectSorter const & Sorter () const override
 Return the sorter. More...
 
double WireCoordinate (double YPos, double ZPos, PlaneID const &planeID) const override
 Returns the index of the wire nearest to the specified position. More...
 
WireID NearestWireID (Point_t const &worldPos, PlaneID const &planeID) const override
 Returns the ID of the wire nearest to the specified position. More...
 
raw::ChannelID_t PlaneWireToChannel (WireID const &wireID) const override
 Returns the channel ID a wire is connected to. More...
 
TPC set mapping
unsigned int NTPCsets (readout::CryostatID const &cryoid) const override
 Returns the total number of TPC sets in the specified cryostat. More...
 
unsigned int MaxTPCsets () const override
 Returns the largest number of TPC sets any cryostat in the detector has. More...
 
bool HasTPCset (readout::TPCsetID const &tpcsetid) const override
 
readout::TPCsetID TPCtoTPCset (TPCID const &tpcid) const override
 Returns the ID of the TPC set the specified TPC belongs to. More...
 
std::vector< TPCIDTPCsetToTPCs (readout::TPCsetID const &tpcsetid) const override
 Returns a list of ID of TPCs belonging to the specified TPC set. More...
 
TPCID FirstTPCinTPCset (readout::TPCsetID const &tpcsetid) const override
 Returns the ID of the first TPC belonging to the specified TPC set. More...
 
Readout plane mapping
unsigned int NROPs (readout::TPCsetID const &tpcsetid) const override
 Returns the total number of ROPs in the specified TPC set. More...
 
unsigned int MaxROPs () const override
 Returns the largest number of ROPs a TPC set in the detector has. More...
 
bool HasROP (readout::ROPID const &ropid) const override
 
readout::ROPID WirePlaneToROP (PlaneID const &planeid) const override
 Returns the ID of the ROP planeid belongs to, or invalid if none. More...
 
std::vector< PlaneIDROPtoWirePlanes (readout::ROPID const &ropid) const override
 Returns a list of ID of wire planes belonging to the specified ROP. More...
 
std::vector< TPCIDROPtoTPCs (readout::ROPID const &ropid) const override
 Returns a list of ID of TPCs the specified ROP spans. More...
 
readout::ROPID ChannelToROP (raw::ChannelID_t channel) const override
 Returns the ID of the ROP the channel belongs to (invalid if none) More...
 
raw::ChannelID_t FirstChannelInROP (readout::ROPID const &ropid) const override
 Returns the ID of the first channel in the specified readout plane. More...
 
PlaneID FirstWirePlaneInROP (readout::ROPID const &ropid) const override
 Returns the ID of the first plane belonging to the specified ROP. More...
 
Optical detector channel mapping
virtual unsigned int NOpChannels (unsigned int NOpDets) const
 Returns the number of optical channels contained in some detectors. More...
 
virtual unsigned int MaxOpChannel (unsigned int NOpDets) const
 Returns the number of optical channels contained in some detectors. More...
 
virtual unsigned int NOpHardwareChannels (unsigned int opDet) const
 Returns the number of channels in the specified optical detectors. More...
 
virtual bool IsValidOpChannel (unsigned int opChannel, unsigned int NOpDets) const
 Returns whether the ID identifies a valid optical detector channel. More...
 
virtual unsigned int OpChannel (unsigned int detNum, unsigned int hwchannel=0) const
 Returns the channel ID of the specified hardware channel. More...
 
virtual unsigned int OpDetFromOpChannel (unsigned int opChannel) const
 Returns the optical detector the specified optical channel belongs. More...
 
virtual unsigned int HardwareChannelFromOpChannel (unsigned int opChannel) const
 Returns the hardware channel number of specified optical channel. More...
 
Auxiliary detectors
virtual size_t NearestAuxDet (Point_t const &point, std::vector< AuxDetGeo > const &auxDets, double tolerance=0) const
 Returns the auxiliary detector closest to the specified point. More...
 
virtual size_t NearestSensitiveAuxDet (Point_t const &point, std::vector< AuxDetGeo > const &auxDets, double tolerance=0) const
 Returns sensitive auxiliary detector closest to specified point. More...
 
virtual size_t ChannelToAuxDet (std::vector< AuxDetGeo > const &auxDets, std::string const &detName, uint32_t const &channel) const
 Returns the index of the detector containing the specified channel. More...
 
virtual std::pair< size_t, size_t > ChannelToSensitiveAuxDet (std::vector< AuxDetGeo > const &auxDets, std::string const &detName, uint32_t const &channel) const
 Returns the index of the sensitive detector containing the channel. More...
 
Testing (not in the interface)
std::vector< std::vector< std::vector< raw::ChannelID_t > > > const & FirstChannelInNextPlane () const
 Retrieve the private fFirstChannelInNextPlane vector for testing. More...
 
std::vector< std::vector< std::vector< raw::ChannelID_t > > > const & FirstChannelInThisPlane () const
 Retrieve the private fFirstChannelInThisPlane vector for testing. More...
 

Protected Types

template<typename T >
using TPCInfoMap_t = std::vector< std::vector< T >>
 Data type for per-TPC information. More...
 
template<typename T >
using PlaneInfoMap_t = TPCInfoMap_t< std::vector< T >>
 Data type for per-plane information. More...
 

Protected Member Functions

template<typename T >
T const & AccessElement (PlaneInfoMap_t< T > const &map, PlaneID const &id) const
 Returns the specified element of the plane map. More...
 
template<typename T >
size_t AccessElementSize (PlaneInfoMap_t< T > const &map, TPCID const &id) const
 Returns the number of elements in the specified TPC of the plane map. More...
 
template<typename T >
T const * GetElementPtr (PlaneInfoMap_t< T > const &map, PlaneID const &id) const
 Returns a pointer to the specified element, or nullptr if invalid. More...
 
Internal structure data access

These functions allow access to the XxxInfoMap_t types based on geometry element IDs. They are strictly internal.

template<typename T >
T const & AccessElement (TPCInfoMap_t< T > const &map, TPCID const &id) const
 Returns the specified element of the TPC map. More...
 
template<typename T >
size_t AccessElementSize (TPCInfoMap_t< T > const &map, CryostatID const &id) const
 Returns the number of elements in the specified cryostat of the TPC map. More...
 
template<typename T >
bool isValidElement (TPCInfoMap_t< T > const &map, CryostatID const &id) const
 Returns whether the ID specifies a valid entry. More...
 
template<typename T >
bool isValidElement (TPCInfoMap_t< T > const &map, TPCID const &id) const
 Returns the specified element of the TPC map. More...
 
template<typename T >
bool isValidElement (PlaneInfoMap_t< T > const &map, CryostatID const &id) const
 Returns whether the ID specifies a valid entry. More...
 
template<typename T >
bool isValidElement (PlaneInfoMap_t< T > const &map, TPCID const &id) const
 Returns whether the ID specifies a valid entry. More...
 
template<typename T >
bool isValidElement (PlaneInfoMap_t< T > const &map, PlaneID const &id) const
 Returns whether the ID specifies a valid entry. More...
 

Protected Attributes

PlaneInfoMap_t< raw::ChannelID_tfFirstChannelInThisPlane
 
PlaneInfoMap_t< raw::ChannelID_tfFirstChannelInNextPlane
 
std::map< std::string, size_t > fADNameToGeo
 map the names of the dets to the AuxDetGeo objects More...
 
std::map< size_t, std::vector< size_t > > fADChannelToSensitiveGeo
 

Private Member Functions

SigType_t SignalTypeForChannelImpl (raw::ChannelID_t const channel) const override
 Return the signal type of the specified channel. More...
 
unsigned int WireCount (PlaneID const &id) const
 Retrieved the wire cound for the specified plane ID. More...
 
unsigned int MaxTPCs () const
 Returns the largest number of TPCs in a single cryostat. More...
 

Static Private Member Functions

static readout::TPCsetID ConvertTPCtoTPCset (TPCID const &tpcid)
 Converts a TPC ID into a TPC set ID using the same numerical indices. More...
 
static TPCID ConvertTPCsetToTPC (readout::TPCsetID const &tpcsetid)
 Converts a TPC set ID into a TPC ID using the same numerical indices. More...
 
static readout::ROPID ConvertWirePlaneToROP (PlaneID const &planeid)
 Converts a ROP ID into a wire plane ID using the same numerical indices. More...
 
static PlaneID ConvertROPtoWirePlane (readout::ROPID const &ropid)
 Converts a wire plane ID into a ROP ID using the same numerical indices. More...
 

Private Attributes

unsigned int fNcryostat
 number of cryostats in the detector More...
 
unsigned int fNchannels
 number of channels in the detector More...
 
raw::ChannelID_t fTopChannel
 book keeping highest channel # More...
 
std::vector< unsigned int > fNTPC
 number of TPCs in each cryostat More...
 
std::set< View_tfViews
 vector of the views present in the detector More...
 
std::set< PlaneIDfPlaneIDs
 vector of the PlaneIDs present in the detector More...
 
PlaneInfoMap_t< float > fFirstWireProj
 
PlaneInfoMap_t< float > fOrthVectorsY
 Unit vectors orthogonal to wires in. More...
 
PlaneInfoMap_t< float > fOrthVectorsZ
 
PlaneInfoMap_t< float > fWireCounts
 
TPCInfoMap_t< unsigned int > fNPlanes
 
PlaneInfoMap_t< unsigned int > fPlaneBaselines
 
PlaneInfoMap_t< unsigned int > fWiresPerPlane
 
GeoObjectSorterStandard fSorter
 class to sort geo objects More...
 

TPC channel mapping

virtual bool HasChannel (raw::ChannelID_t channel) const
 Returns whether the specified channel is valid This default implementation assumes all channels up to Nchannels() valid. More...
 
SigType_t SignalTypeForChannel (raw::ChannelID_t const channel) const
 Return the signal type of the specified channel. More...
 
SigType_t SignalTypeForROPID (readout::ROPID const &ropid) const
 Return the signal type on the specified readout plane. More...
 
virtual SigType_t SignalTypeForROPIDImpl (readout::ROPID const &ropid) const
 Return the signal type on the specified readout plane. More...
 

Detailed Description

Definition at line 22 of file ChannelMapStandardAlg.h.

Member Typedef Documentation

template<typename T >
using geo::ChannelMapAlg::PlaneInfoMap_t = TPCInfoMap_t<std::vector<T>>
protectedinherited

Data type for per-plane information.

Definition at line 484 of file ChannelMapAlg.h.

template<typename T >
using geo::ChannelMapAlg::TPCInfoMap_t = std::vector<std::vector<T>>
protectedinherited

Data type for per-TPC information.

Definition at line 480 of file ChannelMapAlg.h.

Constructor & Destructor Documentation

geo::ChannelMapStandardAlg::ChannelMapStandardAlg ( fhicl::ParameterSet const &  p)

Definition at line 22 of file ChannelMapStandardAlg.cxx.

23  : fSorter(GeoObjectSorterStandard(p))
24  {}
GeoObjectSorterStandard fSorter
class to sort geo objects

Member Function Documentation

template<typename T >
T const& geo::ChannelMapAlg::AccessElement ( TPCInfoMap_t< T > const &  map,
TPCID const &  id 
) const
inlineprotectedinherited

Returns the specified element of the TPC map.

Definition at line 508 of file ChannelMapAlg.h.

Referenced by FirstChannelInROP(), NROPs(), WireCoordinate(), and WireCount().

509  {
510  return map[id.Cryostat][id.TPC];
511  }
template<typename T >
T const& geo::ChannelMapAlg::AccessElement ( PlaneInfoMap_t< T > const &  map,
PlaneID const &  id 
) const
inlineprotectedinherited

Returns the specified element of the plane map.

Definition at line 536 of file ChannelMapAlg.h.

537  {
538  return map[id.Cryostat][id.TPC][id.Plane];
539  }
template<typename T >
size_t geo::ChannelMapAlg::AccessElementSize ( TPCInfoMap_t< T > const &  map,
CryostatID const &  id 
) const
inlineprotectedinherited

Returns the number of elements in the specified cryostat of the TPC map.

Definition at line 515 of file ChannelMapAlg.h.

516  {
517  return map[id.Cryostat].size();
518  }
template<typename T >
size_t geo::ChannelMapAlg::AccessElementSize ( PlaneInfoMap_t< T > const &  map,
TPCID const &  id 
) const
inlineprotectedinherited

Returns the number of elements in the specified TPC of the plane map.

Definition at line 543 of file ChannelMapAlg.h.

544  {
545  return map[id.Cryostat][id.TPC].size();
546  }
size_t geo::ChannelMapAlg::ChannelToAuxDet ( std::vector< AuxDetGeo > const &  auxDets,
std::string const &  detName,
uint32_t const &  channel 
) const
virtualinherited

Returns the index of the detector containing the specified channel.

Parameters
auxDetslist of the auxiliary detectors
detNamename of the auxiliary detector being investigated
channelnumber of the channel within that auxiliary detector
Returns
index of the sought auxiliary detector within auxDets
Bug:
This function is somehow broken in that it ignores the auxDets in the arguments and instead relies on a cache that is never filled by this class (derived classes can fill it though).

Definition at line 137 of file ChannelMapAlg.cxx.

References geo::ChannelMapAlg::fADNameToGeo.

Referenced by geo::ChannelMapAlg::ChannelToSensitiveAuxDet(), and geo::ChannelMapAlg::HasChannel().

140  {
141  // loop over the map of AuxDet names to Geo object numbers to determine which auxdet
142  // we have. If no name in the map matches the provided string, throw an exception
143  for (auto itr : fADNameToGeo)
144  if (itr.first.compare(detName) == 0) return itr.second;
145 
146  throw cet::exception("Geometry") << "No AuxDetGeo matching name: " << detName;
147  }
std::map< std::string, size_t > fADNameToGeo
map the names of the dets to the AuxDetGeo objects
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
readout::ROPID geo::ChannelMapStandardAlg::ChannelToROP ( raw::ChannelID_t  channel) const
overridevirtual

Returns the ID of the ROP the channel belongs to (invalid if none)

Implements geo::ChannelMapAlg.

Definition at line 394 of file ChannelMapStandardAlg.cxx.

References ChannelToWire(), raw::isValidChannelID(), and WirePlaneToROP().

395  {
396  if (!raw::isValidChannelID(channel)) return {}; // invalid ROP returned
397 
398  // which wires does the channel cover?
399  std::vector<WireID> wires = ChannelToWire(channel);
400 
401  // - none:
402  if (wires.empty()) return {}; // invalid ROP returned
403 
404  // - one: maps its plane ID into a ROP ID
405  return WirePlaneToROP(wires[0]);
406  }
readout::ROPID WirePlaneToROP(PlaneID const &planeid) const override
Returns the ID of the ROP planeid belongs to, or invalid if none.
constexpr bool isValidChannelID(raw::ChannelID_t channel)
Definition: RawTypes.h:35
std::vector< WireID > ChannelToWire(raw::ChannelID_t channel) const override
std::pair< size_t, size_t > geo::ChannelMapAlg::ChannelToSensitiveAuxDet ( std::vector< AuxDetGeo > const &  auxDets,
std::string const &  detName,
uint32_t const &  channel 
) const
virtualinherited

Returns the index of the sensitive detector containing the channel.

Parameters
auxDetslist of the sensitive auxiliary detectors
detNamename of the auxiliary detector being investigated
channelnumber of the channel within that auxiliary detector
Returns
index of the sought sensitive auxiliary detector within auxDets

Definition at line 152 of file ChannelMapAlg.cxx.

References geo::ChannelMapAlg::ChannelToAuxDet(), and geo::ChannelMapAlg::fADChannelToSensitiveGeo.

Referenced by geo::ChannelMapAlg::HasChannel().

156  {
157  size_t adGeoIdx = this->ChannelToAuxDet(auxDets, detName, channel);
158 
159  // look for the index of the sensitive volume for the given channel
160  if (fADChannelToSensitiveGeo.count(adGeoIdx) > 0) {
161 
162  auto itr = fADChannelToSensitiveGeo.find(adGeoIdx);
163 
164  // get the vector of channels to AuxDetSensitiveGeo index
165  if (channel < itr->second.size()) return std::make_pair(adGeoIdx, itr->second[channel]);
166 
167  throw cet::exception("Geometry")
168  << "Given AuxDetSensitive channel, " << channel
169  << ", cannot be found in vector associated to AuxDetGeo index: " << adGeoIdx
170  << ". Vector has size " << itr->second.size();
171  }
172 
173  throw cet::exception("Geometry") << "Given AuxDetGeo with index " << adGeoIdx
174  << " does not correspond to any vector of sensitive volumes";
175  }
virtual size_t ChannelToAuxDet(std::vector< AuxDetGeo > const &auxDets, std::string const &detName, uint32_t const &channel) const
Returns the index of the detector containing the specified channel.
std::map< size_t, std::vector< size_t > > fADChannelToSensitiveGeo
second_as<> second
Type of time stored in seconds, in double precision.
Definition: spacetime.h:82
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
std::vector< WireID > geo::ChannelMapStandardAlg::ChannelToWire ( raw::ChannelID_t  channel) const
overridevirtual

Returns a list of TPC wires connected to the specified readout channel ID

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

Implements geo::ChannelMapAlg.

Definition at line 136 of file ChannelMapStandardAlg.cxx.

References geo::ChannelMapAlg::fFirstChannelInNextPlane, geo::ChannelMapAlg::fFirstChannelInThisPlane, fNcryostat, fNTPC, and fTopChannel.

Referenced by ChannelToROP().

137  {
138  std::vector<WireID> AllSegments;
139  unsigned int cstat = 0;
140  unsigned int tpc = 0;
141  unsigned int plane = 0;
142  unsigned int wire = 0;
143 
144  // first check if this channel ID is legal
145  if (channel > fTopChannel)
146  throw cet::exception("Geometry") << "ILLEGAL CHANNEL ID for channel " << channel << "\n";
147 
148  // then go find which plane, tpc and cryostat it is in from the information we stored earlier
149  bool foundWid(false);
150  for (unsigned int csloop = 0; csloop != fNcryostat; ++csloop) {
151  for (unsigned int tpcloop = 0; tpcloop != fNTPC[csloop]; ++tpcloop) {
152  for (unsigned int planeloop = 0;
153  planeloop != fFirstChannelInNextPlane[csloop][tpcloop].size();
154  ++planeloop) {
155  if (channel < fFirstChannelInNextPlane[csloop][tpcloop][planeloop]) {
156  cstat = csloop;
157  tpc = tpcloop;
158  plane = planeloop;
159  wire = channel - fFirstChannelInThisPlane[cstat][tpcloop][planeloop];
160  foundWid = true;
161  break;
162  }
163  if (foundWid) break;
164  } // end plane loop
165  if (foundWid) break;
166  } // end tpc loop
167  if (foundWid) break;
168  } // end cryostat loop
169 
170  WireID CodeWire(cstat, tpc, plane, wire);
171 
172  AllSegments.push_back(CodeWire);
173 
174  return AllSegments;
175  }
PlaneInfoMap_t< raw::ChannelID_t > fFirstChannelInThisPlane
IDparameter< geo::WireID > WireID
Member type of validated geo::WireID parameter.
unsigned int fNcryostat
number of cryostats in the detector
raw::ChannelID_t fTopChannel
book keeping highest channel #
PlaneInfoMap_t< raw::ChannelID_t > fFirstChannelInNextPlane
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
std::vector< unsigned int > fNTPC
number of TPCs in each cryostat
PlaneID geo::ChannelMapStandardAlg::ConvertROPtoWirePlane ( readout::ROPID const &  ropid)
staticprivate

Converts a wire plane ID into a ROP ID using the same numerical indices.

Definition at line 446 of file ChannelMapStandardAlg.cxx.

References geo::CryostatID::Cryostat, geo::CryostatID::isValid, readout::ROPID::ROP, and readout::TPCsetID::TPCset.

Referenced by FirstChannelInROP(), FirstWirePlaneInROP(), and WireCount().

447  {
448  if (!ropid.isValid) return {};
449  return {(CryostatID::CryostatID_t)ropid.Cryostat,
450  (TPCID::TPCID_t)ropid.TPCset,
451  (PlaneID::PlaneID_t)ropid.ROP};
452  }
unsigned int PlaneID_t
Type for the ID number.
Definition: geo_types.h:464
unsigned int CryostatID_t
Type for the ID number.
Definition: geo_types.h:193
unsigned int TPCID_t
Type for the ID number.
Definition: geo_types.h:382
TPCID geo::ChannelMapStandardAlg::ConvertTPCsetToTPC ( readout::TPCsetID const &  tpcsetid)
staticprivate

Converts a TPC set ID into a TPC ID using the same numerical indices.

Definition at line 430 of file ChannelMapStandardAlg.cxx.

References geo::CryostatID::Cryostat, geo::CryostatID::isValid, and readout::TPCsetID::TPCset.

Referenced by FirstTPCinTPCset(), ROPtoTPCs(), TPCsetToTPCs(), and WireCount().

431  {
432  if (!tpcsetid.isValid) return {};
433  return {(CryostatID::CryostatID_t)tpcsetid.Cryostat, (TPCID::TPCID_t)tpcsetid.TPCset};
434  }
unsigned int CryostatID_t
Type for the ID number.
Definition: geo_types.h:193
unsigned int TPCID_t
Type for the ID number.
Definition: geo_types.h:382
readout::TPCsetID geo::ChannelMapStandardAlg::ConvertTPCtoTPCset ( TPCID const &  tpcid)
staticprivate

Converts a TPC ID into a TPC set ID using the same numerical indices.

Definition at line 422 of file ChannelMapStandardAlg.cxx.

References geo::CryostatID::Cryostat, geo::CryostatID::isValid, and geo::TPCID::TPC.

Referenced by TPCtoTPCset(), and WireCount().

423  {
424  if (!tpcid.isValid) return {}; // invalid ID, default-constructed
425  return {(readout::CryostatID::CryostatID_t)tpcid.Cryostat,
426  (readout::TPCsetID::TPCsetID_t)tpcid.TPC};
427  }
unsigned short TPCsetID_t
Type for the ID number.
Definition: readout_types.h:73
unsigned int CryostatID_t
Type for the ID number.
Definition: geo_types.h:193
readout::ROPID geo::ChannelMapStandardAlg::ConvertWirePlaneToROP ( PlaneID const &  planeid)
staticprivate

Converts a ROP ID into a wire plane ID using the same numerical indices.

Definition at line 437 of file ChannelMapStandardAlg.cxx.

References geo::CryostatID::Cryostat, geo::CryostatID::isValid, geo::PlaneID::Plane, and geo::TPCID::TPC.

Referenced by WireCount(), and WirePlaneToROP().

438  {
439  if (!planeid.isValid) return {}; // invalid ID, default-constructed
440  return {(readout::CryostatID::CryostatID_t)planeid.Cryostat,
441  (readout::TPCsetID::TPCsetID_t)planeid.TPC,
442  (readout::ROPID::ROPID_t)planeid.Plane};
443  }
unsigned int ROPID_t
Type for the ID number.
unsigned short TPCsetID_t
Type for the ID number.
Definition: readout_types.h:73
unsigned int CryostatID_t
Type for the ID number.
Definition: geo_types.h:193
std::vector<std::vector<std::vector<raw::ChannelID_t> > > const& geo::ChannelMapAlg::FirstChannelInNextPlane ( ) const
inlineinherited

Retrieve the private fFirstChannelInNextPlane vector for testing.

Definition at line 462 of file ChannelMapAlg.h.

References geo::ChannelMapAlg::fFirstChannelInThisPlane.

463  {
465  }
PlaneInfoMap_t< raw::ChannelID_t > fFirstChannelInThisPlane
raw::ChannelID_t geo::ChannelMapStandardAlg::FirstChannelInROP ( readout::ROPID const &  ropid) const
overridevirtual

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.

Implements geo::ChannelMapAlg.

Definition at line 409 of file ChannelMapStandardAlg.cxx.

References geo::ChannelMapAlg::AccessElement(), ConvertROPtoWirePlane(), fPlaneBaselines, raw::InvalidChannelID, and geo::CryostatID::isValid.

410  {
411  if (!ropid.isValid) return raw::InvalidChannelID;
413  }
T const & AccessElement(TPCInfoMap_t< T > const &map, TPCID const &id) const
Returns the specified element of the TPC map.
constexpr ChannelID_t InvalidChannelID
ID of an invalid channel.
Definition: RawTypes.h:31
PlaneInfoMap_t< unsigned int > fPlaneBaselines
static PlaneID ConvertROPtoWirePlane(readout::ROPID const &ropid)
Converts a wire plane ID into a ROP ID using the same numerical indices.
unsigned int ChannelID_t
Type representing the ID of a readout channel.
Definition: RawTypes.h:28
std::vector<std::vector<std::vector<raw::ChannelID_t> > > const& geo::ChannelMapAlg::FirstChannelInThisPlane ( ) const
inlineinherited

Retrieve the private fFirstChannelInThisPlane vector for testing.

Definition at line 468 of file ChannelMapAlg.h.

References geo::ChannelMapAlg::fFirstChannelInNextPlane.

469  {
471  }
PlaneInfoMap_t< raw::ChannelID_t > fFirstChannelInNextPlane
TPCID geo::ChannelMapStandardAlg::FirstTPCinTPCset ( readout::TPCsetID const &  tpcsetid) const
overridevirtual

Returns the ID of the first TPC belonging to the specified TPC set.

Implements geo::ChannelMapAlg.

Definition at line 333 of file ChannelMapStandardAlg.cxx.

References ConvertTPCsetToTPC().

Referenced by NROPs().

334  {
335  return ConvertTPCsetToTPC(tpcsetid);
336  }
static TPCID ConvertTPCsetToTPC(readout::TPCsetID const &tpcsetid)
Converts a TPC set ID into a TPC ID using the same numerical indices.
PlaneID geo::ChannelMapStandardAlg::FirstWirePlaneInROP ( readout::ROPID const &  ropid) const
overridevirtual

Returns the ID of the first plane belonging to the specified ROP.

Implements geo::ChannelMapAlg.

Definition at line 416 of file ChannelMapStandardAlg.cxx.

References ConvertROPtoWirePlane().

Referenced by Nchannels(), and ROPtoWirePlanes().

417  {
418  return ConvertROPtoWirePlane(ropid);
419  }
static PlaneID ConvertROPtoWirePlane(readout::ROPID const &ropid)
Converts a wire plane ID into a ROP ID using the same numerical indices.
template<typename T >
T const* geo::ChannelMapAlg::GetElementPtr ( PlaneInfoMap_t< T > const &  map,
PlaneID const &  id 
) const
inlineprotectedinherited

Returns a pointer to the specified element, or nullptr if invalid.

Definition at line 569 of file ChannelMapAlg.h.

Referenced by PlaneWireToChannel().

570  {
571  if (id.Cryostat >= map.size()) return nullptr;
572  auto const& cryo_map = map[id.Cryostat];
573  if (id.TPC >= cryo_map.size()) return nullptr;
574  auto const& TPC_map = cryo_map[id.TPC];
575  if (id.Plane >= TPC_map.size()) return nullptr;
576  auto const& plane_map = TPC_map[id.Plane];
577  return &plane_map;
578  } // GetElementPtr()
recob::tracking::Plane Plane
Definition: TrackState.h:17
unsigned int geo::ChannelMapAlg::HardwareChannelFromOpChannel ( unsigned int  opChannel) const
virtualinherited

Returns the hardware channel number of specified optical channel.

Parameters
opChannelthe optical detector channel being queried
Returns
the optical detector the specified optical channel belongs to

If the specified optical channel is invalid, behaviour is undefined.

Definition at line 47 of file ChannelMapAlg.cxx.

Referenced by geo::ChannelMapAlg::HasChannel(), and geo::ChannelMapAlg::IsValidOpChannel().

48  {
49  return 0;
50  }
virtual bool geo::ChannelMapAlg::HasChannel ( raw::ChannelID_t  channel) const
inlinevirtualinherited

Returns whether the specified channel is valid This default implementation assumes all channels up to Nchannels() valid.

Definition at line 77 of file ChannelMapAlg.h.

References geo::ChannelMapAlg::ChannelToAuxDet(), geo::ChannelMapAlg::ChannelToROP(), geo::ChannelMapAlg::ChannelToSensitiveAuxDet(), geo::ChannelMapAlg::ChannelToWire(), geo::ChannelMapAlg::FirstChannelInROP(), geo::ChannelMapAlg::FirstTPCinTPCset(), geo::ChannelMapAlg::FirstWirePlaneInROP(), geo::ChannelMapAlg::HardwareChannelFromOpChannel(), geo::ChannelMapAlg::HasROP(), geo::ChannelMapAlg::HasTPCset(), raw::isValidChannelID(), geo::ChannelMapAlg::IsValidOpChannel(), geo::ChannelMapAlg::MaxOpChannel(), geo::ChannelMapAlg::MaxROPs(), geo::ChannelMapAlg::MaxTPCsets(), geo::ChannelMapAlg::Nchannels(), geo::ChannelMapAlg::NearestAuxDet(), geo::ChannelMapAlg::NearestSensitiveAuxDet(), geo::ChannelMapAlg::NearestWireID(), geo::ChannelMapAlg::NOpChannels(), geo::ChannelMapAlg::NOpHardwareChannels(), geo::ChannelMapAlg::NROPs(), geo::ChannelMapAlg::NTPCsets(), geo::ChannelMapAlg::OpChannel(), geo::ChannelMapAlg::OpDetFromOpChannel(), geo::ChannelMapAlg::PlaneIDs(), geo::ChannelMapAlg::PlaneWireToChannel(), geo::ChannelMapAlg::ROPtoTPCs(), geo::ChannelMapAlg::ROPtoWirePlanes(), geo::ChannelMapAlg::SignalTypeForChannel(), geo::ChannelMapAlg::SignalTypeForChannelImpl(), geo::ChannelMapAlg::SignalTypeForROPID(), geo::ChannelMapAlg::SignalTypeForROPIDImpl(), geo::ChannelMapAlg::Sorter(), geo::ChannelMapAlg::TPCsetToTPCs(), geo::ChannelMapAlg::TPCtoTPCset(), geo::ChannelMapAlg::WireCoordinate(), and geo::ChannelMapAlg::WirePlaneToROP().

78  {
79  return raw::isValidChannelID(channel) ? channel < Nchannels() : false;
80  }
virtual unsigned int Nchannels() const =0
Returns the total number of channels present (not necessarily contiguous)
constexpr bool isValidChannelID(raw::ChannelID_t channel)
Definition: RawTypes.h:35
bool geo::ChannelMapStandardAlg::HasROP ( readout::ROPID const &  ropid) const
overridevirtual

Returns whether we have the specified ROP

Returns
whether the readout plane is valid and exists

Implements geo::ChannelMapAlg.

Definition at line 365 of file ChannelMapStandardAlg.cxx.

References NROPs(), and readout::ROPID::ROP.

Referenced by Nchannels().

366  {
367  return ropid.ROP < NROPs(ropid);
368  }
unsigned int NROPs(readout::TPCsetID const &tpcsetid) const override
Returns the total number of ROPs in the specified TPC set.
bool geo::ChannelMapStandardAlg::HasTPCset ( readout::TPCsetID const &  tpcsetid) const
overridevirtual

Returns whether we have the specified TPC set

Returns
whether the TPC set is valid and exists

Implements geo::ChannelMapAlg.

Definition at line 313 of file ChannelMapStandardAlg.cxx.

References NTPCsets(), and readout::TPCsetID::TPCset.

Referenced by NROPs().

314  {
315  return tpcsetid.TPCset < NTPCsets(tpcsetid);
316  }
unsigned int NTPCsets(readout::CryostatID const &cryoid) const override
Returns the total number of TPC sets in the specified cryostat.
void geo::ChannelMapStandardAlg::Initialize ( GeometryData_t const &  geodata)
overridevirtual

Geometry initialisation.

Implements geo::ChannelMapAlg.

Definition at line 27 of file ChannelMapStandardAlg.cxx.

References geo::WireGeo::CosThetaZ(), geo::GeometryData_t::cryostats, geo::ChannelMapAlg::fFirstChannelInNextPlane, geo::ChannelMapAlg::fFirstChannelInThisPlane, fFirstWireProj, fNchannels, fNcryostat, fNPlanes, fNTPC, fOrthVectorsY, fOrthVectorsZ, fPlaneBaselines, fPlaneIDs, fTopChannel, fWireCounts, fWiresPerPlane, geo::WireGeo::GetCenter(), MF_LOG_DEBUG, geo::TPCGeo::Nplanes(), geo::CryostatGeo::NTPC(), geo::PlaneGeo::Nwires(), geo::TPCGeo::Plane(), geo::WireGeo::SinThetaZ(), geo::CryostatGeo::TPC(), Uninitialize(), geo::PlaneGeo::Wire(), and geo::TPCGeo::WirePitch().

28  {
29  // start over:
30  Uninitialize();
31 
32  std::vector<CryostatGeo> const& cgeo = geodata.cryostats;
33 
34  fNcryostat = cgeo.size();
35 
36  mf::LogInfo("ChannelMapStandardAlg") << "Initializing Standard ChannelMap...";
37 
38  fNTPC.resize(fNcryostat);
39  fWireCounts.resize(fNcryostat);
40  fNPlanes.resize(fNcryostat);
41  fFirstWireProj.resize(fNcryostat);
42  fOrthVectorsY.resize(fNcryostat);
43  fOrthVectorsZ.resize(fNcryostat);
45  fWiresPerPlane.resize(fNcryostat);
48  fPlaneIDs.clear();
49  fTopChannel = 0;
50 
51  int RunningTotal = 0;
52 
53  for (unsigned int cs = 0; cs != fNcryostat; ++cs) {
54  CryostatGeo const& cryo = cgeo[cs];
55  fNTPC[cs] = cryo.NTPC();
56 
57  // Size up all the vectors
58  fWireCounts[cs].resize(fNTPC[cs]);
59  fFirstWireProj[cs].resize(fNTPC[cs]);
60  fOrthVectorsY[cs].resize(fNTPC[cs]);
61  fOrthVectorsZ[cs].resize(fNTPC[cs]);
62  fPlaneBaselines[cs].resize(fNTPC[cs]);
63  fWiresPerPlane[cs].resize(fNTPC[cs]);
64  fNPlanes[cs].resize(fNTPC[cs]);
65  fFirstChannelInThisPlane[cs].resize(fNTPC[cs]);
66  fFirstChannelInNextPlane[cs].resize(fNTPC[cs]);
67 
68  for (unsigned int TPCCount = 0; TPCCount != fNTPC[cs]; ++TPCCount) {
69  TPCGeo const& TPC = cryo.TPC(TPCCount);
70  unsigned int PlanesThisTPC = TPC.Nplanes();
71  fWireCounts[cs][TPCCount].resize(PlanesThisTPC);
72  fFirstWireProj[cs][TPCCount].resize(PlanesThisTPC);
73  fOrthVectorsY[cs][TPCCount].resize(PlanesThisTPC);
74  fOrthVectorsZ[cs][TPCCount].resize(PlanesThisTPC);
75  fNPlanes[cs][TPCCount] = PlanesThisTPC;
76  for (unsigned int PlaneCount = 0; PlaneCount != PlanesThisTPC; ++PlaneCount) {
77  PlaneGeo const& plane = TPC.Plane(PlaneCount);
78 
79  fPlaneIDs.emplace(PlaneID(cs, TPCCount, PlaneCount));
80  double ThisWirePitch = TPC.WirePitch(PlaneCount);
81  fWireCounts[cs][TPCCount][PlaneCount] = plane.Nwires();
82 
83  const WireGeo& firstWire = plane.Wire(0);
84  const double sth = firstWire.SinThetaZ(), cth = firstWire.CosThetaZ();
85 
86  auto WireCenter1 = firstWire.GetCenter();
87  auto WireCenter2 = plane.Wire(1).GetCenter();
88 
89  // figure out if we need to flip the orthogonal vector
90  // (should point from wire n -> n+1)
91  double OrthY = cth, OrthZ = -sth;
92  if (((WireCenter2.Y() - WireCenter1.Y()) * OrthY +
93  (WireCenter2.Z() - WireCenter1.Z()) * OrthZ) < 0) {
94  OrthZ *= -1;
95  OrthY *= -1;
96  }
97 
98  // Overall we are trying to build an expression that looks like
99  // int NearestWireNumber = round((worldPos.OrthVector - FirstWire.OrthVector)/WirePitch);
100  // That runs as fast as humanly possible.
101  // We predivide everything by the wire pitch so we don't do this in the loop.
102  //
103  // Putting this together into the useful constants we will use later per plane and tpc:
104  fOrthVectorsY[cs][TPCCount][PlaneCount] = OrthY / ThisWirePitch;
105  fOrthVectorsZ[cs][TPCCount][PlaneCount] = OrthZ / ThisWirePitch;
106 
107  fFirstWireProj[cs][TPCCount][PlaneCount] =
108  WireCenter1.Y() * OrthY + WireCenter1.Z() * OrthZ;
109  fFirstWireProj[cs][TPCCount][PlaneCount] /= ThisWirePitch;
110 
111  // now to count up wires in each plane and get first channel in each plane
112  int WiresThisPlane = plane.Nwires();
113  fWiresPerPlane[cs].at(TPCCount).push_back(WiresThisPlane);
114  fPlaneBaselines[cs].at(TPCCount).push_back(RunningTotal);
115 
116  RunningTotal += WiresThisPlane;
117 
118  fFirstChannelInThisPlane[cs].at(TPCCount).push_back(fTopChannel);
119  fTopChannel += WiresThisPlane;
120  fFirstChannelInNextPlane[cs].at(TPCCount).push_back(fTopChannel);
121 
122  } // end loop over planes
123  } // end loop over TPCs
124  } // end loop over cryostats
125 
126  // calculate the total number of channels in the detector
128 
129  MF_LOG_DEBUG("ChannelMapStandard") << "# of channels is " << fNchannels;
130  }
TPCInfoMap_t< unsigned int > fNPlanes
PlaneInfoMap_t< float > fWireCounts
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
PlaneInfoMap_t< raw::ChannelID_t > fFirstChannelInThisPlane
PlaneInfoMap_t< float > fOrthVectorsZ
IDparameter< geo::PlaneID > PlaneID
Member type of validated geo::PlaneID parameter.
unsigned int fNcryostat
number of cryostats in the detector
PlaneInfoMap_t< unsigned int > fPlaneBaselines
PlaneInfoMap_t< unsigned int > fWiresPerPlane
PlaneInfoMap_t< float > fFirstWireProj
std::set< PlaneID > fPlaneIDs
vector of the PlaneIDs present in the detector
unsigned int fNchannels
number of channels in the detector
void Uninitialize() override
Deconfiguration: prepare for a following call of Initialize()
#define MF_LOG_DEBUG(id)
PlaneInfoMap_t< float > fOrthVectorsY
Unit vectors orthogonal to wires in.
raw::ChannelID_t fTopChannel
book keeping highest channel #
PlaneInfoMap_t< raw::ChannelID_t > fFirstChannelInNextPlane
std::vector< unsigned int > fNTPC
number of TPCs in each cryostat
template<typename T >
bool geo::ChannelMapAlg::isValidElement ( TPCInfoMap_t< T > const &  map,
CryostatID const &  id 
) const
inlineprotectedinherited

Returns whether the ID specifies a valid entry.

Definition at line 523 of file ChannelMapAlg.h.

Referenced by geo::ChannelMapAlg::isValidElement().

524  {
525  return id.Cryostat < map.size();
526  }
template<typename T >
bool geo::ChannelMapAlg::isValidElement ( TPCInfoMap_t< T > const &  map,
TPCID const &  id 
) const
inlineprotectedinherited

Returns the specified element of the TPC map.

Definition at line 528 of file ChannelMapAlg.h.

References geo::ChannelMapAlg::isValidElement().

529  {
530  return isValidElement(map, id.asCryostatID()) && (id.TPC < map[id.Cryostat].size());
531  }
bool isValidElement(TPCInfoMap_t< T > const &map, CryostatID const &id) const
Returns whether the ID specifies a valid entry.
template<typename T >
bool geo::ChannelMapAlg::isValidElement ( PlaneInfoMap_t< T > const &  map,
CryostatID const &  id 
) const
inlineprotectedinherited

Returns whether the ID specifies a valid entry.

Definition at line 551 of file ChannelMapAlg.h.

552  {
553  return id.Cryostat < map.size();
554  }
template<typename T >
bool geo::ChannelMapAlg::isValidElement ( PlaneInfoMap_t< T > const &  map,
TPCID const &  id 
) const
inlineprotectedinherited

Returns whether the ID specifies a valid entry.

Definition at line 556 of file ChannelMapAlg.h.

References geo::ChannelMapAlg::isValidElement().

557  {
558  return isValidElement(map, id.asCryostatID()) && (id.TPC < map[id.Cryostat].size());
559  }
bool isValidElement(TPCInfoMap_t< T > const &map, CryostatID const &id) const
Returns whether the ID specifies a valid entry.
template<typename T >
bool geo::ChannelMapAlg::isValidElement ( PlaneInfoMap_t< T > const &  map,
PlaneID const &  id 
) const
inlineprotectedinherited

Returns whether the ID specifies a valid entry.

Definition at line 561 of file ChannelMapAlg.h.

References geo::ChannelMapAlg::isValidElement().

562  {
563  return isValidElement(map, id.asTPCID()) && (id.Plane < AccessSize(map, id.asTPCID()));
564  }
bool isValidElement(TPCInfoMap_t< T > const &map, CryostatID const &id) const
Returns whether the ID specifies a valid entry.
bool geo::ChannelMapAlg::IsValidOpChannel ( unsigned int  opChannel,
unsigned int  NOpDets 
) const
virtualinherited

Returns whether the ID identifies a valid optical detector channel.

Parameters
opChannelchannel number
NOpDetsnumber of optical detectors in the detector
Returns
whether opChannel would be a valid channel

The specification of the number of optical channels reflects the logic described in NOpChannel().

Definition at line 53 of file ChannelMapAlg.cxx.

References geo::ChannelMapAlg::HardwareChannelFromOpChannel(), geo::ChannelMapAlg::NOpChannels(), geo::ChannelMapAlg::NOpHardwareChannels(), and geo::ChannelMapAlg::OpDetFromOpChannel().

Referenced by geo::ChannelMapAlg::HasChannel().

54  {
55  // Check channel number
56  if (opChannel >= this->NOpChannels(NOpDets)) return false;
57 
58  // Check opdet number
59  unsigned int opdet = this->OpDetFromOpChannel(opChannel);
60  if (opdet >= NOpDets) return false;
61 
62  // Check hardware channel number
63  unsigned int hChan = this->HardwareChannelFromOpChannel(opChannel);
64  if (hChan >= this->NOpHardwareChannels(opdet)) return false;
65 
66  return true;
67  }
virtual unsigned int NOpChannels(unsigned int NOpDets) const
Returns the number of optical channels contained in some detectors.
virtual unsigned int OpDetFromOpChannel(unsigned int opChannel) const
Returns the optical detector the specified optical channel belongs.
virtual unsigned int HardwareChannelFromOpChannel(unsigned int opChannel) const
Returns the hardware channel number of specified optical channel.
virtual unsigned int NOpHardwareChannels(unsigned int opDet) const
Returns the number of channels in the specified optical detectors.
unsigned int geo::ChannelMapAlg::MaxOpChannel ( unsigned int  NOpDets) const
virtualinherited

Returns the number of optical channels contained in some detectors.

Parameters
NOpDetsnumber of optical detectors
Returns
optical channels contained in NOpDets detectors

This function returns the first optical channel ID larger than the last channel ID in a detector with NOpDets optical detectors (with the same logic as NOpChannels()). For example, in a detector with 32 channels with contiguous IDs starting at 0, this function would return 32. If the channels started with ID 1, this function would instead return 33 and if there were a 16 channel gap, so that valid channels are from 0 to 15 and from 32 to 47, this function would return 48.

Definition at line 21 of file ChannelMapAlg.cxx.

References geo::ChannelMapAlg::NOpChannels().

Referenced by geo::ChannelMapAlg::HasChannel().

22  {
23  // By default just return the number of optical detectos
24  return NOpChannels(NOpDets);
25  }
virtual unsigned int NOpChannels(unsigned int NOpDets) const
Returns the number of optical channels contained in some detectors.
unsigned int geo::ChannelMapStandardAlg::MaxROPs ( ) const
overridevirtual

Returns the largest number of ROPs a TPC set in the detector has.

Implements geo::ChannelMapAlg.

Definition at line 355 of file ChannelMapStandardAlg.cxx.

References fNPlanes.

356  {
357  unsigned int max = 0;
358  for (auto const& cryo_tpc : fNPlanes)
359  for (unsigned int nPlanes : cryo_tpc)
360  if (nPlanes > max) max = nPlanes;
361  return max;
362  }
TPCInfoMap_t< unsigned int > fNPlanes
unsigned int geo::ChannelMapStandardAlg::MaxTPCs ( ) const
private

Returns the largest number of TPCs in a single cryostat.

Definition at line 339 of file ChannelMapStandardAlg.cxx.

References fNTPC.

Referenced by MaxTPCsets(), and WireCount().

340  {
341  unsigned int max = 0;
342  for (unsigned int nTPCs : fNTPC)
343  if (nTPCs > max) max = nTPCs;
344  return max;
345  }
std::vector< unsigned int > fNTPC
number of TPCs in each cryostat
unsigned int geo::ChannelMapStandardAlg::MaxTPCsets ( ) const
overridevirtual

Returns the largest number of TPC sets any cryostat in the detector has.

Implements geo::ChannelMapAlg.

Definition at line 307 of file ChannelMapStandardAlg.cxx.

References MaxTPCs().

308  {
309  return MaxTPCs();
310  }
unsigned int MaxTPCs() const
Returns the largest number of TPCs in a single cryostat.
raw::ChannelID_t geo::ChannelMapStandardAlg::Nchannels ( ) const
overridevirtual

Returns the total number of channels present (not necessarily contiguous)

Implements geo::ChannelMapAlg.

Definition at line 178 of file ChannelMapStandardAlg.cxx.

References fNchannels.

179  {
180  return fNchannels;
181  }
unsigned int fNchannels
number of channels in the detector
unsigned int geo::ChannelMapStandardAlg::Nchannels ( readout::ROPID const &  ropid) const
overridevirtual

Returns the number of channels in the specified ROP.

Returns
number of channels in the specified ROP, 0 if non-existent

Implements geo::ChannelMapAlg.

Definition at line 184 of file ChannelMapStandardAlg.cxx.

References FirstWirePlaneInROP(), HasROP(), and WireCount().

185  {
186  if (!HasROP(ropid)) return 0;
187  // The number of channels matches the number of wires. Life is easy.
188  return WireCount(FirstWirePlaneInROP(ropid));
189  }
PlaneID FirstWirePlaneInROP(readout::ROPID const &ropid) const override
Returns the ID of the first plane belonging to the specified ROP.
bool HasROP(readout::ROPID const &ropid) const override
unsigned int WireCount(PlaneID const &id) const
Retrieved the wire cound for the specified plane ID.
size_t geo::ChannelMapAlg::NearestAuxDet ( Point_t const &  point,
std::vector< AuxDetGeo > const &  auxDets,
double  tolerance = 0 
) const
virtualinherited

Returns the auxiliary detector closest to the specified point.

Parameters
pointcoordinates of the position to be investigated (x, y, z)
auxDetslist of the sought auxiliary detectors
tolerancetolerance for comparison. Default 0.
Returns
index of auxiliary detector within auxDets

Definition at line 70 of file ChannelMapAlg.cxx.

References tca::Length().

Referenced by geo::ChannelMapAlg::HasChannel(), and geo::ChannelMapAlg::NearestSensitiveAuxDet().

73  {
74  for (size_t a = 0; a < auxDets.size(); ++a) {
75  auto const localPoint = auxDets[a].toLocalCoords(point);
76 
77  double const HalfCenterWidth = 0.5 * (auxDets[a].HalfWidth1() + auxDets[a].HalfWidth2());
78 
79  if (localPoint.Z() >= -(auxDets[a].Length() / 2 + tolerance) &&
80  localPoint.Z() <= (auxDets[a].Length() / 2 + tolerance) &&
81  localPoint.Y() >= -auxDets[a].HalfHeight() - tolerance &&
82  localPoint.Y() <= auxDets[a].HalfHeight() + tolerance &&
83  // if AuxDet a is a box, then HalfSmallWidth = HalfWidth
84  localPoint.X() >= -HalfCenterWidth +
85  localPoint.Z() * (HalfCenterWidth - auxDets[a].HalfWidth2()) /
86  (0.5 * auxDets[a].Length()) -
87  tolerance &&
88  localPoint.X() <= HalfCenterWidth -
89  localPoint.Z() * (HalfCenterWidth - auxDets[a].HalfWidth2()) /
90  (0.5 * auxDets[a].Length()) +
91  tolerance)
92  return a;
93 
94  } // for loop over AudDet a
95 
96  // throw an exception because we couldn't find the sensitive volume
97  throw cet::exception("ChannelMap") << "Can't find AuxDet for position (" << point.X() << ","
98  << point.Y() << "," << point.Z() << ")\n";
99  }
float Length(const PFPStruct &pfp)
Definition: PFPUtils.cxx:3269
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
size_t geo::ChannelMapAlg::NearestSensitiveAuxDet ( Point_t const &  point,
std::vector< AuxDetGeo > const &  auxDets,
double  tolerance = 0 
) const
virtualinherited

Returns sensitive auxiliary detector closest to specified point.

Parameters
pointcoordinates of the position to be investigated (x, y, z)
auxDetslist of the auxiliary detectors
tolerancetolerance for comparison. Default 0.
Returns
index of sought sensitive auxiliary detector within auxDets

Definition at line 102 of file ChannelMapAlg.cxx.

References geo::AuxDetSensitiveGeo::HalfHeight(), geo::AuxDetSensitiveGeo::HalfWidth1(), geo::AuxDetSensitiveGeo::HalfWidth2(), geo::AuxDetSensitiveGeo::Length(), geo::ChannelMapAlg::NearestAuxDet(), geo::AuxDetGeo::NSensitiveVolume(), geo::AuxDetGeo::SensitiveVolume(), and geo::AuxDetSensitiveGeo::toLocalCoords().

Referenced by geo::ChannelMapAlg::HasChannel().

105  {
106  size_t auxDetIdx = NearestAuxDet(point, auxDets, tolerance);
107  geo::AuxDetGeo const& adg = auxDets[auxDetIdx];
108 
109  for (size_t a = 0; a < adg.NSensitiveVolume(); ++a) {
110  geo::AuxDetSensitiveGeo const& adsg = adg.SensitiveVolume(a);
111  auto const localPoint = adsg.toLocalCoords(point);
112 
113  double const HalfCenterWidth = 0.5 * (adsg.HalfWidth1() + adsg.HalfWidth2());
114 
115  if (localPoint.Z() >= -(adsg.Length() / 2 + tolerance) &&
116  localPoint.Z() <= (adsg.Length() / 2 + tolerance) &&
117  localPoint.Y() >= -adsg.HalfHeight() - tolerance &&
118  localPoint.Y() <= adsg.HalfHeight() + tolerance &&
119  // if AuxDet a is a box, then HalfSmallWidth = HalfWidth
120  localPoint.X() >=
121  -HalfCenterWidth +
122  localPoint.Z() * (HalfCenterWidth - adsg.HalfWidth2()) / (0.5 * adsg.Length()) -
123  tolerance &&
124  localPoint.X() <=
125  HalfCenterWidth -
126  localPoint.Z() * (HalfCenterWidth - adsg.HalfWidth2()) / (0.5 * adsg.Length()) +
127  tolerance)
128  return a;
129  } // for loop over AuxDetSensitive a
130 
131  // throw an exception because we couldn't find the sensitive volume
132  throw cet::exception("Geometry") << "Can't find AuxDetSensitive for position (" << point.X()
133  << "," << point.Y() << "," << point.Z() << ")\n";
134  }
AuxDetSensitiveGeo const & SensitiveVolume(size_t sv) const
Definition: AuxDetGeo.h:143
size_t NSensitiveVolume() const
Definition: AuxDetGeo.h:144
virtual size_t NearestAuxDet(Point_t const &point, std::vector< AuxDetGeo > const &auxDets, double tolerance=0) const
Returns the auxiliary detector closest to the specified point.
LocalPoint_t toLocalCoords(geo::Point_t const &world) const
Transform point from world frame to local auxiliary detector frame.
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
WireID geo::ChannelMapStandardAlg::NearestWireID ( Point_t const &  worldPos,
PlaneID const &  planeID 
) const
overridevirtual

Returns the ID of the wire nearest to the specified position.

Parameters
worldPosposition to be tested
planeIDplane containing the wire
Returns
the ID of the wire closest to worldPos in the specified plane
Exceptions
InvalidWireIDErrorthe ID found is not present in the detector
See also
WireCoordinate(double, double, geo::PlaneID const&)

The plane is required to be valid and exist in the detector. Otherwise, the behaviour is undefined. An exception is thrown if the wire that would be the closest is actually not present; but no check is performed whether the specified position is outside the wire plane: wires are extrapolated to be infinitely long. In other words, the result can be trusted only as long as the position is within the specified wire plane.

Implements geo::ChannelMapAlg.

Definition at line 201 of file ChannelMapStandardAlg.cxx.

References WireCoordinate(), and WireCount().

202  {
203 
204  // This part is the actual calculation of the nearest wire number, where we assume
205  // uniform wire pitch and angle within a wireplane
206 
207  // add 0.5 to have the correct rounding
208  int NearestWireNumber = int(0.5 + WireCoordinate(worldPos.Y(), worldPos.Z(), planeID));
209 
210  // If we are outside of the wireplane range, throw an exception
211  // (this response maintains consistency with the previous
212  // implementation based on geometry lookup)
213  if (NearestWireNumber < 0 || (unsigned int)NearestWireNumber >= WireCount(planeID)) {
214  int wireNumber = NearestWireNumber; // save for the output
215 
216  if (NearestWireNumber < 0)
217  NearestWireNumber = 0;
218  else
219  NearestWireNumber = WireCount(planeID) - 1;
220 
221  throw InvalidWireError("Geometry", planeID, wireNumber, NearestWireNumber)
222  << "Can't Find Nearest Wire for position (" << worldPos.X() << "," << worldPos.Y() << ","
223  << worldPos.Z() << ")"
224  << " in plane " << std::string(planeID) << " approx wire number # " << wireNumber
225  << " (capped from " << NearestWireNumber << ")\n";
226  }
227 
228  return WireID(planeID, (WireID::WireID_t)NearestWireNumber);
229  }
double WireCoordinate(double YPos, double ZPos, PlaneID const &planeID) const override
Returns the index of the wire nearest to the specified position.
IDparameter< geo::WireID > WireID
Member type of validated geo::WireID parameter.
unsigned int WireCount(PlaneID const &id) const
Retrieved the wire cound for the specified plane ID.
unsigned int WireID_t
Type for the ID number.
Definition: geo_types.h:546
unsigned int geo::ChannelMapAlg::NOpChannels ( unsigned int  NOpDets) const
virtualinherited

Returns the number of optical channels contained in some detectors.

Parameters
NOpDetsnumber of optical detectors
Returns
optical channels contained in NOpDets detectors

This function returns how many channels can be expected to be present in a detector with NOpDets optical detectors. This is an upper limit, as not all channels have necessarily to be present.

For example: if a detector has four channels per optical detector, the returned value will be four times the argument NOpDets. If there is a single channel on each optical detector, the return value will be the value NOpDets (this is in fact the fallback implementation). If each optical detector can have anywhere between 2 and 12 channels, the returned value is 12 times NOpDets, and it will be an overestimation of the number of channels.

Definition at line 14 of file ChannelMapAlg.cxx.

Referenced by geo::ChannelMapAlg::HasChannel(), geo::ChannelMapAlg::IsValidOpChannel(), and geo::ChannelMapAlg::MaxOpChannel().

15  {
16  // By default just return the number of optical detectos
17  return NOpDets;
18  }
unsigned int geo::ChannelMapAlg::NOpHardwareChannels ( unsigned int  opDet) const
virtualinherited

Returns the number of channels in the specified optical detectors.

Parameters
opDetID of the chosen optical detector
Returns
optical channels contained in optical detector with ID opDet

This function returns how many channels are actually present in the optical detector with the specified ID.

For example: if a detector has four channels per optical detector, the returned value will be four, regardless opDet, and . If there is a single channel on each optical detector, the return value will be 1, again ignoring opDet (this is in fact the fallback implementation). If each optical detector can have anywhere between 2 and 12 channels, the returned value will be 2, 12, etc., that is the exact number of channels in opDet.

Although implementations are encouraged to return 0 on invalid optical detectors, the actual return value in that case is undefined.

Definition at line 28 of file ChannelMapAlg.cxx.

Referenced by geo::ChannelMapAlg::HasChannel(), and geo::ChannelMapAlg::IsValidOpChannel().

29  {
30  // By defualt, 1 channel per optical detector
31  return 1;
32  }
unsigned int geo::ChannelMapStandardAlg::NROPs ( readout::TPCsetID const &  tpcsetid) const
overridevirtual

Returns the total number of ROPs in the specified TPC set.

Parameters
tpcsetidTPC set ID
Returns
number of readout planes in the TPC sets, or 0 if ID is invalid

Note that this methods explicitly check the existence of the TPC set.

In this mapping, planes have independent readout and there is one wire plane in each readout plane and one readout plane for each wire plane.

Implements geo::ChannelMapAlg.

Definition at line 348 of file ChannelMapStandardAlg.cxx.

References geo::ChannelMapAlg::AccessElement(), FirstTPCinTPCset(), fNPlanes, and HasTPCset().

Referenced by HasROP().

349  {
350  if (!HasTPCset(tpcsetid)) return 0;
351  return AccessElement(fNPlanes, FirstTPCinTPCset(tpcsetid));
352  }
TPCInfoMap_t< unsigned int > fNPlanes
TPCID FirstTPCinTPCset(readout::TPCsetID const &tpcsetid) const override
Returns the ID of the first TPC belonging to the specified TPC set.
T const & AccessElement(TPCInfoMap_t< T > const &map, TPCID const &id) const
Returns the specified element of the TPC map.
bool HasTPCset(readout::TPCsetID const &tpcsetid) const override
unsigned int geo::ChannelMapStandardAlg::NTPCsets ( readout::CryostatID const &  cryoid) const
overridevirtual

Returns the total number of TPC sets in the specified cryostat.

Parameters
cryoidcryostat ID
Returns
number of TPC sets in the cryostat, or 0 if no cryostat found

In this mapping, TPCs have independent readout and there is one TPC in each TPC set and one TPC set for each TPC.

Implements geo::ChannelMapAlg.

Definition at line 300 of file ChannelMapStandardAlg.cxx.

References geo::CryostatID::Cryostat, fNTPC, and geo::CryostatID::isValid.

Referenced by HasTPCset().

301  {
302  // return the same number as the number of TPCs
303  return (cryoid.isValid && cryoid.Cryostat < fNTPC.size()) ? fNTPC[cryoid.Cryostat] : 0;
304  }
std::vector< unsigned int > fNTPC
number of TPCs in each cryostat
unsigned int geo::ChannelMapAlg::OpChannel ( unsigned int  detNum,
unsigned int  hwchannel = 0 
) const
virtualinherited

Returns the channel ID of the specified hardware channel.

Parameters
detNumoptical detector ID
hwchannelhardware channel within the specified optical detector
Returns
ID of the channel identified by detector and hardware channel IDs

If the input IDs identify a non-existing channel, the result is undefined.

Definition at line 35 of file ChannelMapAlg.cxx.

Referenced by geo::ChannelMapAlg::HasChannel().

36  {
37  return detNum;
38  }
unsigned int geo::ChannelMapAlg::OpDetFromOpChannel ( unsigned int  opChannel) const
virtualinherited

Returns the optical detector the specified optical channel belongs.

Parameters
opChannelthe optical detector channel being queried
Returns
the optical detector the specified optical channel belongs to

If the specified optical channel is invalid, behaviour is undefined.

Definition at line 41 of file ChannelMapAlg.cxx.

Referenced by geo::ChannelMapAlg::HasChannel(), and geo::ChannelMapAlg::IsValidOpChannel().

42  {
43  return opChannel;
44  }
std::set< PlaneID > const & geo::ChannelMapStandardAlg::PlaneIDs ( ) const
overridevirtual

Returns a list of the plane IDs in the whole detector.

Implements geo::ChannelMapAlg.

Definition at line 294 of file ChannelMapStandardAlg.cxx.

References fPlaneIDs.

295  {
296  return fPlaneIDs;
297  }
std::set< PlaneID > fPlaneIDs
vector of the PlaneIDs present in the detector
raw::ChannelID_t geo::ChannelMapStandardAlg::PlaneWireToChannel ( WireID const &  wireID) const
overridevirtual

Returns the channel ID a wire is connected to.

Parameters
wireIDID of the wire
Returns
the ID of the channel
See also
PlaneWireToChannel(geo::WireID const&)

Behaviour on an invalid or not present wires is undefined.

Implements geo::ChannelMapAlg.

Definition at line 244 of file ChannelMapStandardAlg.cxx.

References fPlaneBaselines, geo::ChannelMapAlg::GetElementPtr(), raw::InvalidChannelID, and geo::WireID::Wire.

245  {
246  unsigned int const* pBaseLine = GetElementPtr(fPlaneBaselines, wireID);
247  // This is the actual lookup part - first make sure coordinates are legal
248  if (pBaseLine) {
249  // if the channel has legal coordinates, its ID is given by the wire
250  // number above the number of wires in lower planes, tpcs and cryostats
251  return *pBaseLine + wireID.Wire;
252  }
253  else {
254  // if the coordinates were bad, throw an exception
255  throw cet::exception("ChannelMapStandardAlg")
256  << "NO CHANNEL FOUND for " << std::string(wireID);
257  }
258 
259  // made it here, that shouldn't happen, return raw::InvalidChannelID
260  mf::LogWarning("ChannelMapStandardAlg")
261  << "should not be at the point in the function, returning "
262  << "invalid channel";
263  return raw::InvalidChannelID;
264  }
constexpr ChannelID_t InvalidChannelID
ID of an invalid channel.
Definition: RawTypes.h:31
PlaneInfoMap_t< unsigned int > fPlaneBaselines
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
T const * GetElementPtr(PlaneInfoMap_t< T > const &map, PlaneID const &id) const
Returns a pointer to the specified element, or nullptr if invalid.
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
std::vector< TPCID > geo::ChannelMapStandardAlg::ROPtoTPCs ( readout::ROPID const &  ropid) const
overridevirtual

Returns a list of ID of TPCs the specified ROP spans.

Parameters
ropidID of the readout plane
Returns
the list of TPC IDs, empty if readout plane ID is invalid

In this mapping, readout planes and wire planes are mapped one-to-one. The returned list contains always one entry, unless the specified readout plane ID is invalid, in which case the list is empty. 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 on non-existing readout planes is undefined.

Implements geo::ChannelMapAlg.

Definition at line 385 of file ChannelMapStandardAlg.cxx.

References readout::TPCsetID::asTPCsetID(), ConvertTPCsetToTPC(), and geo::CryostatID::isValid.

386  {
387  std::vector<TPCID> IDs;
388  // we take the TPC set of the ROP and convert it straight into a TPC ID
389  if (ropid.isValid) IDs.emplace_back(ConvertTPCsetToTPC(ropid.asTPCsetID()));
390  return IDs;
391  }
static TPCID ConvertTPCsetToTPC(readout::TPCsetID const &tpcsetid)
Converts a TPC set ID into a TPC ID using the same numerical indices.
std::vector< PlaneID > geo::ChannelMapStandardAlg::ROPtoWirePlanes ( readout::ROPID const &  ropid) const
overridevirtual

Returns a list of ID of wire planes belonging to the specified ROP.

Parameters
ropidID of the readout plane to convert into wire planes
Returns
the list of wire plane IDs, empty if readout plane ID is invalid

In this mapping, readout planes and wire planes are mapped one-to-one. The returned list contains always one entry, unless the specified readout plane ID is invalid, in which case the list is empty. 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.

Implements geo::ChannelMapAlg.

Definition at line 377 of file ChannelMapStandardAlg.cxx.

References FirstWirePlaneInROP(), and geo::CryostatID::isValid.

378  {
379  std::vector<PlaneID> IDs;
380  if (ropid.isValid) IDs.emplace_back(FirstWirePlaneInROP(ropid));
381  return IDs;
382  }
PlaneID FirstWirePlaneInROP(readout::ROPID const &ropid) const override
Returns the ID of the first plane belonging to the specified ROP.
geo::SigType_t geo::ChannelMapAlg::SignalTypeForChannel ( raw::ChannelID_t const  channel) const
inherited

Return the signal type of the specified channel.

Parameters
channelID of the channel
Returns
signal type of the channel, or geo::kMysteryType if not known

On any type of error (e.g., invalid or unknown channel ID), geo::kMysteryType is returned.

Definition at line 177 of file ChannelMapAlg.cxx.

References geo::ChannelMapAlg::SignalTypeForChannelImpl().

Referenced by geo::ChannelMapAlg::HasChannel(), and geo::ChannelMapAlg::SignalTypeForROPIDImpl().

178  {
179  return SignalTypeForChannelImpl(channel);
180  }
virtual SigType_t SignalTypeForChannelImpl(raw::ChannelID_t const channel) const =0
Return the signal type of the specified channel.
SigType_t geo::ChannelMapStandardAlg::SignalTypeForChannelImpl ( raw::ChannelID_t const  channel) const
overrideprivatevirtual

Return the signal type of the specified channel.

Parameters
channelID of the channel
Returns
signal type of the channel, or geo::kMysteryType if not known

On any type of error (e.g., invalid or unknown channel ID), geo::kMysteryType is returned.

Implements geo::ChannelMapAlg.

Definition at line 267 of file ChannelMapStandardAlg.cxx.

References geo::ChannelMapAlg::fFirstChannelInNextPlane, geo::ChannelMapAlg::fFirstChannelInThisPlane, fNchannels, fNPlanes, fNTPC, geo::kCollection, geo::kInduction, and geo::kMysteryType.

268  {
269 
270  // still assume one cryostat for now -- faster
271  unsigned int nChanPerTPC = fNchannels / fNTPC[0];
272  // casting wil trunc towards 0 -- faster than floor
273  unsigned int tpc = channel / nChanPerTPC;
274  //need number of planes to know Collection
275  unsigned int PlanesThisTPC = fNPlanes[0][tpc];
276 
277  SigType_t sigt = kMysteryType;
278  if ((channel >= fFirstChannelInThisPlane[0][tpc][0]) &&
279  (channel < fFirstChannelInNextPlane[0][tpc][PlanesThisTPC - 2])) {
280  sigt = kInduction;
281  }
282  else if ((channel >= fFirstChannelInThisPlane[0][tpc][PlanesThisTPC - 1]) &&
283  (channel < fFirstChannelInNextPlane[0][tpc][PlanesThisTPC - 1])) {
284  sigt = kCollection;
285  }
286  else
287  mf::LogWarning("BadChannelSignalType")
288  << "Channel " << channel << " not given signal type." << std::endl;
289 
290  return sigt;
291  }
TPCInfoMap_t< unsigned int > fNPlanes
Who knows?
Definition: geo_types.h:153
PlaneInfoMap_t< raw::ChannelID_t > fFirstChannelInThisPlane
Signal from induction planes.
Definition: geo_types.h:151
enum geo::_plane_sigtype SigType_t
Enumerate the possible plane projections.
unsigned int fNchannels
number of channels in the detector
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
PlaneInfoMap_t< raw::ChannelID_t > fFirstChannelInNextPlane
std::vector< unsigned int > fNTPC
number of TPCs in each cryostat
Signal from collection planes.
Definition: geo_types.h:152
geo::SigType_t geo::ChannelMapAlg::SignalTypeForROPID ( readout::ROPID const &  ropid) const
inherited

Return the signal type on the specified readout plane.

Parameters
ropidID of the readout plane
Returns
signal type on the plane, or geo::kMysteryType if not known

If the readout plane ID is marked invalid, geo::kMysteryType is returned. If the readout plane is not marked invalid, but it does not match an existing readout plane, the result is undefined.

The default implementation uses readout plane to channel mapping. Other implementation may decide to do the opposite.

Definition at line 182 of file ChannelMapAlg.cxx.

References geo::ChannelMapAlg::SignalTypeForROPIDImpl().

Referenced by geo::ChannelMapAlg::HasChannel().

183  {
184  return SignalTypeForROPIDImpl(ropid);
185  }
virtual SigType_t SignalTypeForROPIDImpl(readout::ROPID const &ropid) const
Return the signal type on the specified readout plane.
geo::SigType_t geo::ChannelMapAlg::SignalTypeForROPIDImpl ( readout::ROPID const &  ropid) const
protectedvirtualinherited

Return the signal type on the specified readout plane.

Parameters
ropidID of the readout plane
Returns
signal type on the plane, or geo::kMysteryType if not known

If the readout plane ID is marked invalid, geo::kMysteryType is returned. If the readout plane is not marked invalid, but it does not match an existing readout plane, the result is undefined.

The default implementation uses readout plane to channel mapping. Other implementation may decide to do the opposite.

Definition at line 187 of file ChannelMapAlg.cxx.

References geo::ChannelMapAlg::FirstChannelInROP(), and geo::ChannelMapAlg::SignalTypeForChannel().

Referenced by geo::ChannelMapAlg::HasChannel(), and geo::ChannelMapAlg::SignalTypeForROPID().

188  {
190  }
SigType_t SignalTypeForChannel(raw::ChannelID_t const channel) const
Return the signal type of the specified channel.
virtual raw::ChannelID_t FirstChannelInROP(readout::ROPID const &ropid) const =0
Returns the ID of the first channel in the specified readout plane.
GeoObjectSorter const& geo::ChannelMapStandardAlg::Sorter ( ) const
inlineoverridevirtual

Return the sorter.

Implements geo::ChannelMapAlg.

Definition at line 194 of file ChannelMapStandardAlg.h.

References fSorter.

194 { return fSorter; }
GeoObjectSorterStandard fSorter
class to sort geo objects
std::vector< TPCID > geo::ChannelMapStandardAlg::TPCsetToTPCs ( readout::TPCsetID const &  tpcsetid) const
overridevirtual

Returns a list of ID of TPCs belonging to the specified TPC set.

Parameters
tpcsetidID of the TPC set to convert into TPC IDs
Returns
the list of TPCs, empty if TPC set is invalid

In this mapping, TPC sets and TPCs are mapped one-to-one. The returned list contains always one entry, unless the specified TPC set ID is invalid, in which case the list is empty. Note that the check is performed on the validity of the TPC set ID, that does not necessarily imply that the TPC set specified by the ID actually exists. Check the existence of the TPC set first (HasTPCset()). Behaviour on valid, non-existent TPC set IDs is undefined.

Implements geo::ChannelMapAlg.

Definition at line 325 of file ChannelMapStandardAlg.cxx.

References ConvertTPCsetToTPC(), and geo::CryostatID::isValid.

326  {
327  std::vector<TPCID> IDs;
328  if (tpcsetid.isValid) IDs.emplace_back(ConvertTPCsetToTPC(tpcsetid));
329  return IDs;
330  }
static TPCID ConvertTPCsetToTPC(readout::TPCsetID const &tpcsetid)
Converts a TPC set ID into a TPC ID using the same numerical indices.
readout::TPCsetID geo::ChannelMapStandardAlg::TPCtoTPCset ( TPCID const &  tpcid) const
overridevirtual

Returns the ID of the TPC set the specified TPC belongs to.

Parameters
tpcidID of the TPC
Returns
the ID of the corresponding TPC set, or invalid ID when tpcid is

In this mapping, TPC sets and TPCs are mapped one-to-one. The returned value mirrors the TPC ID in the readout space. If the TPC ID is not valid, an invalid TPC set ID is returned. Note that this check is performed on the validity of the TPC ID, that does not necessarily imply that the TPC specified by the ID actually exists.

Implements geo::ChannelMapAlg.

Definition at line 319 of file ChannelMapStandardAlg.cxx.

References ConvertTPCtoTPCset().

320  {
321  return ConvertTPCtoTPCset(tpcid);
322  }
static readout::TPCsetID ConvertTPCtoTPCset(TPCID const &tpcid)
Converts a TPC ID into a TPC set ID using the same numerical indices.
void geo::ChannelMapStandardAlg::Uninitialize ( )
overridevirtual

Deconfiguration: prepare for a following call of Initialize()

Implements geo::ChannelMapAlg.

Definition at line 133 of file ChannelMapStandardAlg.cxx.

Referenced by Initialize().

133 {}
double geo::ChannelMapStandardAlg::WireCoordinate ( double  YPos,
double  ZPos,
PlaneID const &  planeID 
) const
overridevirtual

Returns the index of the wire nearest to the specified position.

Parameters
YPosy coordinate on the wire plane
ZPosz coordinate on the wire plane
planeIDID of the plane
Returns
an index interpolation between the two nearest wires
See also
NearestWireID()

Respect to NearestWireID(), this method returns a real number, representing a continuous coordinate in the wire axis, with the round values corresponding to the actual wires.

The plane is required to be valid and exist in the detector. Otherwise, the behaviour is undefined.

Implements geo::ChannelMapAlg.

Definition at line 192 of file ChannelMapStandardAlg.cxx.

References geo::ChannelMapAlg::AccessElement(), fFirstWireProj, fOrthVectorsY, and fOrthVectorsZ.

Referenced by NearestWireID().

195  {
196  return YPos * AccessElement(fOrthVectorsY, planeID) +
197  ZPos * AccessElement(fOrthVectorsZ, planeID) - AccessElement(fFirstWireProj, planeID);
198  }
T const & AccessElement(TPCInfoMap_t< T > const &map, TPCID const &id) const
Returns the specified element of the TPC map.
PlaneInfoMap_t< float > fOrthVectorsZ
PlaneInfoMap_t< float > fFirstWireProj
PlaneInfoMap_t< float > fOrthVectorsY
Unit vectors orthogonal to wires in.
unsigned int geo::ChannelMapStandardAlg::WireCount ( PlaneID const &  id) const
inlineprivate

Retrieved the wire cound for the specified plane ID.

Definition at line 224 of file ChannelMapStandardAlg.h.

References geo::ChannelMapAlg::AccessElement(), ConvertROPtoWirePlane(), ConvertTPCsetToTPC(), ConvertTPCtoTPCset(), ConvertWirePlaneToROP(), and MaxTPCs().

Referenced by Nchannels(), and NearestWireID().

224 { return AccessElement(fWireCounts, id); }
PlaneInfoMap_t< float > fWireCounts
T const & AccessElement(TPCInfoMap_t< T > const &map, TPCID const &id) const
Returns the specified element of the TPC map.
readout::ROPID geo::ChannelMapStandardAlg::WirePlaneToROP ( PlaneID const &  planeid) const
overridevirtual

Returns the ID of the ROP planeid belongs to, or invalid if none.

Parameters
planeidID of the plane
Returns
the ID of the corresponding ROP, or invalid ID when planeid is

In this mapping, readout planes and wire planes are mapped one-to-one. The returned value mirrors the plane ID in the readout space. If the plane ID is not valid, an invalid readout plane ID is returned. Note that this check is performed on the validity of the plane ID, that does not necessarily imply that the plane specified by the ID actually exists.

Implements geo::ChannelMapAlg.

Definition at line 371 of file ChannelMapStandardAlg.cxx.

References ConvertWirePlaneToROP().

Referenced by ChannelToROP().

372  {
373  return ConvertWirePlaneToROP(planeid);
374  }
static readout::ROPID ConvertWirePlaneToROP(PlaneID const &planeid)
Converts a ROP ID into a wire plane ID using the same numerical indices.

Member Data Documentation

std::map<size_t, std::vector<size_t> > geo::ChannelMapAlg::fADChannelToSensitiveGeo
protectedinherited

map the AuxDetGeo index to a vector of indices corresponding to the AuxDetSensitiveGeo index

Definition at line 494 of file ChannelMapAlg.h.

Referenced by geo::ChannelMapAlg::ChannelToSensitiveAuxDet().

std::map<std::string, size_t> geo::ChannelMapAlg::fADNameToGeo
protectedinherited

map the names of the dets to the AuxDetGeo objects

Definition at line 492 of file ChannelMapAlg.h.

Referenced by geo::ChannelMapAlg::ChannelToAuxDet().

PlaneInfoMap_t<raw::ChannelID_t> geo::ChannelMapAlg::fFirstChannelInNextPlane
protectedinherited
PlaneInfoMap_t<raw::ChannelID_t> geo::ChannelMapAlg::fFirstChannelInThisPlane
protectedinherited
PlaneInfoMap_t<float> geo::ChannelMapStandardAlg::fFirstWireProj
private

Distance (0,0,0) to first wire along orth vector per plane per TPC

Definition at line 203 of file ChannelMapStandardAlg.h.

Referenced by Initialize(), and WireCoordinate().

unsigned int geo::ChannelMapStandardAlg::fNchannels
private

number of channels in the detector

Definition at line 198 of file ChannelMapStandardAlg.h.

Referenced by Initialize(), Nchannels(), and SignalTypeForChannelImpl().

unsigned int geo::ChannelMapStandardAlg::fNcryostat
private

number of cryostats in the detector

Definition at line 197 of file ChannelMapStandardAlg.h.

Referenced by ChannelToWire(), and Initialize().

TPCInfoMap_t<unsigned int> geo::ChannelMapStandardAlg::fNPlanes
private

Number of planes in each TPC - for range checking after calculation

Definition at line 211 of file ChannelMapStandardAlg.h.

Referenced by Initialize(), MaxROPs(), NROPs(), and SignalTypeForChannelImpl().

std::vector<unsigned int> geo::ChannelMapStandardAlg::fNTPC
private

number of TPCs in each cryostat

Definition at line 200 of file ChannelMapStandardAlg.h.

Referenced by ChannelToWire(), Initialize(), MaxTPCs(), NTPCsets(), and SignalTypeForChannelImpl().

PlaneInfoMap_t<float> geo::ChannelMapStandardAlg::fOrthVectorsY
private

Unit vectors orthogonal to wires in.

Definition at line 205 of file ChannelMapStandardAlg.h.

Referenced by Initialize(), and WireCoordinate().

PlaneInfoMap_t<float> geo::ChannelMapStandardAlg::fOrthVectorsZ
private

each plane - stored as 2 components to avoid having to invoke any bulky TObjects / CLHEP vectors etc

Definition at line 206 of file ChannelMapStandardAlg.h.

Referenced by Initialize(), and WireCoordinate().

PlaneInfoMap_t<unsigned int> geo::ChannelMapStandardAlg::fPlaneBaselines
private

The number of wires in all the tpcs and planes up to this one in the heirachy

Definition at line 213 of file ChannelMapStandardAlg.h.

Referenced by FirstChannelInROP(), Initialize(), and PlaneWireToChannel().

std::set<PlaneID> geo::ChannelMapStandardAlg::fPlaneIDs
private

vector of the PlaneIDs present in the detector

Definition at line 202 of file ChannelMapStandardAlg.h.

Referenced by Initialize(), and PlaneIDs().

GeoObjectSorterStandard geo::ChannelMapStandardAlg::fSorter
private

class to sort geo objects

Definition at line 219 of file ChannelMapStandardAlg.h.

Referenced by Sorter().

raw::ChannelID_t geo::ChannelMapStandardAlg::fTopChannel
private

book keeping highest channel #

Definition at line 199 of file ChannelMapStandardAlg.h.

Referenced by ChannelToWire(), and Initialize().

std::set<View_t> geo::ChannelMapStandardAlg::fViews
private

vector of the views present in the detector

Definition at line 201 of file ChannelMapStandardAlg.h.

PlaneInfoMap_t<float> geo::ChannelMapStandardAlg::fWireCounts
private

Number of wires in each plane - for range checking after calculation

Definition at line 209 of file ChannelMapStandardAlg.h.

Referenced by Initialize().

PlaneInfoMap_t<unsigned int> geo::ChannelMapStandardAlg::fWiresPerPlane
private

The number of wires in this plane in the heirachy

Definition at line 216 of file ChannelMapStandardAlg.h.

Referenced by Initialize().


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