Public Types | Public Member Functions | Private Attributes | List of all members
geo::ProtoDUNEChannelMapAlg Class Reference

#include <ProtoDUNEChannelMapAlg.h>

Inheritance diagram for geo::ProtoDUNEChannelMapAlg:
geo::DuneApaChannelMapAlg geo::ChannelMapAlg

Public Types

typedef unsigned int Index
 

Public Member Functions

 ProtoDUNEChannelMapAlg (const fhicl::ParameterSet &pset)
 
void Initialize (GeometryData_t const &geodata) override
 Geometry initialisation. More...
 
void Uninitialize () override
 Deconfiguration: prepare for a following call of Initialize() More...
 
Index NOpChannels (Index NOpDets) const override
 Returns the number of optical channels contained in some detectors. More...
 
Index MaxOpChannel (Index NOpDets) const override
 Returns the number of optical channels contained in some detectors. More...
 
Index NOpHardwareChannels (Index opDet) const override
 Returns the number of channels in the specified optical detectors. More...
 
Index OpChannel (Index detNum, Index channel) const override
 Returns the channel ID of the specified hardware channel. More...
 
Index OpDetFromOpChannel (Index opChannel) const override
 Returns the optical detector the specified optical channel belongs. More...
 
Index HardwareChannelFromOpChannel (Index opChannel) const override
 Returns the hardware channel number of specified optical channel. More...
 
bool IsValidOpChannel (Index opChannel, Index) const override
 Returns whether the ID identifies a valid optical detector channel. More...
 
Index SSPfromOpDet (Index opDet) const
 
Index FirstSSPChFromOpDet (Index OpDet) const
 
Index OpChannelFromSSP (Index ssp, Index sspch) const
 
void PrintChannelMaps () const
 
- Public Member Functions inherited from geo::DuneApaChannelMapAlg
 DuneApaChannelMapAlg (const fhicl::ParameterSet &pset)
 
void setSorter (const geo::GeoObjectSorter &sort)
 
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...
 
double WireCoordinate (double YPos, double ZPos, unsigned int PlaneNo, unsigned int TPCNo, unsigned int cstat) const override
 Returns the index of the wire nearest to the specified position. More...
 
double WireCoordinate (double YPos, double ZPos, geo::PlaneID const &planeID) const override
 Returns the index of the wire nearest to the specified position. More...
 
SigType_t SignalTypeForChannelImpl (raw::ChannelID_t const channel) const override
 Return the signal type of the specified channel. More...
 
std::set< PlaneID > const & PlaneIDs () const override
 Returns a list of the plane IDs in the whole detector. More...
 
virtual geo::GeoObjectSorter const & Sorter () const override
 Returns the object to sort geometry with. More...
 
virtual WireID NearestWireID (const TVector3 &worldPos, unsigned int PlaneNo, unsigned int TPCNo, unsigned int cstat) const override
 Returns the ID of the wire nearest to the specified position. More...
 
virtual WireID NearestWireID (const TVector3 &worldPos, geo::PlaneID const &planeID) const override
 Returns the ID of the wire nearest to the specified position. More...
 
virtual raw::ChannelID_t PlaneWireToChannel (unsigned int plane, unsigned int wire, unsigned int tpc, unsigned int cstat) const override
 Returns the channel ID a wire is connected to. More...
 
virtual raw::ChannelID_t PlaneWireToChannel (geo::WireID const &wireID) const override
 Returns the channel ID a wire is connected to. More...
 
virtual unsigned int NTPCsets (readout::CryostatID const &cryoid) const override
 Returns the total number of TPC sets in the specified cryostat. More...
 
virtual unsigned int MaxTPCsets () const override
 
virtual bool HasTPCset (readout::TPCsetID const &tpcsetid) const override
 
virtual readout::TPCsetID TPCtoTPCset (geo::TPCID const &tpcid) const override
 Returns the ID of the TPC set the specified TPC belongs to. More...
 
virtual std::vector< geo::TPCIDTPCsetToTPCs (readout::TPCsetID const &tpcsetid) const override
 Returns a list of ID of TPCs belonging to the specified TPC set. More...
 
virtual geo::TPCID FirstTPCinTPCset (readout::TPCsetID const &tpcsetid) const override
 
virtual unsigned int NROPs (readout::TPCsetID const &tpcsetid) const override
 Returns the total number of ROP in the specified TPC set. More...
 
virtual unsigned int MaxROPs () const override
 
virtual bool HasROP (readout::ROPID const &ropid) const override
 
virtual readout::ROPID WirePlaneToROP (geo::PlaneID const &planeid) const override
 Returns the ID of the ROP planeid belongs to, or invalid if none. More...
 
virtual std::vector< geo::PlaneIDROPtoWirePlanes (readout::ROPID const &ropid) const override
 Returns a list of ID of wire planes belonging to the specified ROP. More...
 
virtual std::vector< geo::TPCIDROPtoTPCs (readout::ROPID const &ropid) const override
 Returns a list of ID of TPCs the specified ROP spans. More...
 
virtual readout::ROPID ChannelToROP (raw::ChannelID_t channel) const override
 
virtual raw::ChannelID_t FirstChannelInROP (readout::ROPID const &ropid) const override
 Returns the ID of the first channel in the specified readout plane. More...
 
virtual geo::PlaneID FirstWirePlaneInROP (readout::ROPID const &ropid) const override
 Returns the ID of the first plane belonging to the specified ROP. More...
 
- Public Member Functions inherited from geo::ChannelMapAlg
virtual ~ChannelMapAlg ()=default
 Virtual destructor. More...
 
unsigned int NearestWire (const TVector3 &worldPos, geo::PlaneID const &planeID) const
 Returns the index of the wire nearest to the specified position. More...
 
unsigned int NearestWire (const TVector3 &worldPos, unsigned int PlaneNo, unsigned int TPCNo, unsigned int cstat) const
 Returns the index of the wire nearest to the specified position. More...
 
virtual size_t NearestAuxDet (const double *point, std::vector< geo::AuxDetGeo > const &auxDets, double tolerance=0) const
 Returns the auxiliary detector closest to the specified point. More...
 
virtual size_t NearestSensitiveAuxDet (const double *point, std::vector< geo::AuxDetGeo > const &auxDets, double tolerance=0) const
 Returns sensitive auxiliary detector closest to specified point. More...
 
virtual size_t ChannelToAuxDet (std::vector< geo::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< geo::AuxDetGeo > const &auxDets, std::string const &detName, uint32_t const &channel) const
 Returns the index of the sensitive detector containing the channel. More...
 
const std::vector< std::vector< std::vector< raw::ChannelID_t > > > FirstChannelInNextPlane () const
 Retrieve the private fFirstChannelInNextPlane vector for testing. More...
 
const std::vector< std::vector< std::vector< raw::ChannelID_t > > > FirstChannelInThisPlane () const
 Retrieve the private fFirstChannelInThisPlane vector for testing. More...
 
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...
 
geo::SigType_t SignalTypeForChannel (raw::ChannelID_t const channel) const
 Return the signal type of the specified channel. More...
 
geo::SigType_t SignalTypeForROPID (readout::ROPID const &ropid) const
 Return the signal type on the specified readout plane. More...
 

Private Attributes

Index fMaxOpChannel
 
Index fNOpChannels
 
std::map< Index, IndexfSSP
 
std::map< Index, IndexfSSPChOne
 
std::map< Index, IndexfOpDet
 
std::map< Index, IndexfHWChannel
 

Additional Inherited Members

- Protected Types inherited from geo::DuneApaChannelMapAlg
template<class T >
using Vector = std::vector< T >
 
template<class T >
using TwoVector = Vector< Vector< T >>
 
template<class T >
using ThreeVector = Vector< TwoVector< T >>
 
template<class T >
using FourVector = Vector< ThreeVector< T >>
 
- Protected Types inherited from geo::ChannelMapAlg
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 inherited from geo::DuneApaChannelMapAlg
bool HasCryostat (CryostatID const &cid) const
 Returns whether the specified ID represents a valid cryostat. More...
 
- Protected Member Functions inherited from geo::ChannelMapAlg
template<typename T >
T const & AccessElement (PlaneInfoMap_t< T > const &map, geo::PlaneID const &id) const
 Returns the specified element of the plane map. More...
 
template<typename T >
size_t AccessElementSize (PlaneInfoMap_t< T > const &map, geo::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, geo::PlaneID const &id) const
 Returns a pointer to the specified element, or nullptr if invalid. More...
 
template<typename T >
T const & AccessElement (TPCInfoMap_t< T > const &map, geo::TPCID const &id) const
 Returns the specified element of the TPC map. More...
 
template<typename T >
size_t AccessElementSize (TPCInfoMap_t< T > const &map, geo::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, geo::CryostatID const &id) const
 Returns whether the ID specifies a valid entry. More...
 
template<typename T >
bool isValidElement (TPCInfoMap_t< T > const &map, geo::TPCID const &id) const
 
template<typename T >
bool isValidElement (PlaneInfoMap_t< T > const &map, geo::CryostatID const &id) const
 Returns whether the ID specifies a valid entry. More...
 
template<typename T >
bool isValidElement (PlaneInfoMap_t< T > const &map, geo::TPCID const &id) const
 
template<typename T >
bool isValidElement (PlaneInfoMap_t< T > const &map, geo::PlaneID const &id) const
 
virtual geo::SigType_t SignalTypeForROPIDImpl (readout::ROPID const &ropid) const
 Return the signal type on the specified readout plane. More...
 
- Protected Attributes inherited from geo::DuneApaChannelMapAlg
unsigned int fOpDetFlag
 
unsigned int fChannelsPerOpDet
 Flag for OpDet channel map. More...
 
unsigned int fNcryostat
 number of cryostats in the detector More...
 
unsigned int fNchannels
 number of channels in the detector More...
 
unsigned int fChannelsPerAPA
 number of channels in each APA More...
 
raw::ChannelID_t fTopChannel
 book keeping highest channel # More...
 
unsigned int fNTpcMax
 Max # TPCs in any cryostat. More...
 
unsigned int fNApaMax
 Max # TPCs in any cryostat. More...
 
unsigned int fNRopMax
 Max # ROPs in any APA. More...
 
std::vector< unsigned int > fNTpc
 number of TPCs in each cryostat More...
 
std::vector< unsigned int > fNApa
 number of APAs 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...
 
ThreeVector< unsigned int > fWiresPerPlane
 

wires/TPC plane for each (cry, tpc, pla)

More...
 
TwoVector< unsigned int > fPlanesPerTpc
 

planes for each (cry, tpc)

More...
 
TwoVector< unsigned int > fRopsPerApa
 

ROPs for each (cry, apa)

More...
 
ThreeVector< unsigned int > fApaTpcs
 TPCs for each APA. More...
 
ThreeVector< unsigned int > fPlanesPerRop
 

TPC planes for each (cry, apa, rop)

More...
 
FourVector< unsigned int > fRopTpc
 

TPC planes for each (cry, apa, rop, rpl)

More...
 
FourVector< unsigned int > fRopPlane
 

TPC plane index for each (cry, apa, rop, rpl)

More...
 
TwoVector< unsigned int > fChannelsPerApa
 

channels for each APA

More...
 
ThreeVector< unsigned int > fChannelsPerRop
 

channels for each Rop

More...
 
ThreeVector< unsigned int > fAnchoredWires
 

anchored wires for each (cry, tpc, pla)

More...
 
ThreeVector< unsigned int > fPlaneApa
 APA for each TPC plane (cry, tpc, pla) More...
 
ThreeVector< unsigned int > fPlaneRop
 ROP for each TPC plane (cry, tpc, pla) More...
 
ThreeVector< unsigned int > fPlaneRopIndex
 Index in ROP for each TPC plane (cry, tpc, pla) More...
 
ThreeVector< unsigned int > fAnchoredPlaneRop
 ROP holding the anchored wires for (cry, tpc, pla) More...
 
ThreeVector< unsigned int > fWiresPerRop
 

wires/ROP for each (cry, apa, rop)

More...
 
PlaneInfoMap_t< raw::ChannelID_tfFirstChannelInThisRop
 (cry, apa, rop) More...
 
PlaneInfoMap_t< raw::ChannelID_tfFirstChannelInNextRop
 (cry, apa, rop) More...
 
const geo::GeoObjectSorterfSorter
 sorts geo::XXXGeo objects More...
 
PlaneInfoMap_t< PlaneData_tfPlaneData
 
std::vector< double > fWirePitch
 
std::vector< double > fOrientation
 
std::vector< double > fSinOrientation
 
std::vector< double > fCosOrientation
 
- Protected Attributes inherited from geo::ChannelMapAlg
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
 

Detailed Description

Definition at line 30 of file ProtoDUNEChannelMapAlg.h.

Member Typedef Documentation

typedef unsigned int geo::ProtoDUNEChannelMapAlg::Index

Definition at line 34 of file ProtoDUNEChannelMapAlg.h.

Constructor & Destructor Documentation

geo::ProtoDUNEChannelMapAlg::ProtoDUNEChannelMapAlg ( const fhicl::ParameterSet pset)

Definition at line 37 of file ProtoDUNEChannelMapAlg.cxx.

40  {
41  fSorter = new GeoObjectSorterAPA(p);
42  }
const geo::GeoObjectSorter * fSorter
sorts geo::XXXGeo objects
DuneApaChannelMapAlg(const fhicl::ParameterSet &pset)
p
Definition: test.py:223

Member Function Documentation

Index geo::ProtoDUNEChannelMapAlg::FirstSSPChFromOpDet ( Index  OpDet) const
Index geo::ProtoDUNEChannelMapAlg::HardwareChannelFromOpChannel ( Index  opChannel) const
overridevirtual

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.

Reimplemented from geo::DuneApaChannelMapAlg.

Definition at line 222 of file ProtoDUNEChannelMapAlg.cxx.

222  {
223  if (!IsValidOpChannel(opChannel, 60)) {
224  mf::LogWarning("ProtoDUNEChannelMapAlg") << "Requesting an OpDet number for an uninstrumented channel, " << opChannel;
225  return 99999;
226  }
227  return fHWChannel.at(opChannel);
228  }
bool IsValidOpChannel(Index opChannel, Index) const override
Returns whether the ID identifies a valid optical detector channel.
std::map< Index, Index > fHWChannel
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
void geo::ProtoDUNEChannelMapAlg::Initialize ( GeometryData_t const &  geodata)
overridevirtual

Geometry initialisation.

Reimplemented from geo::DuneApaChannelMapAlg.

Definition at line 47 of file ProtoDUNEChannelMapAlg.cxx.

47  {
48  Uninitialize();
49 
50  // Call the base-class version to perform TPC-related actions
52 
53  // Manually entered based on maps from Chris Macias
54  // http://indico.fnal.gov/event/14582/session/30/contribution/30/material/slides/0.pdf
55  //
56  // That gives SSP and channel ranges from OpDet. These offline channels correspond
57  // to the APAs listed. Channel numbers increase by 2 going from top to bottom
58  //
59  // USDaS MSDaS DSDaS
60  // 41-59 21-39 1-19
61  //
62  // USRaS MSRaS DSRaS
63  // 40-58 20-38 0-18
64 
65 
66  // DSDaS -- "normal" pattern
67  fSSP[ 0] = 41; fSSPChOne[ 0] = 0;
68  fSSP[ 2] = 41; fSSPChOne[ 2] = 4;
69  fSSP[ 4] = 41; fSSPChOne[ 4] = 8;
70  fSSP[ 6] = 42; fSSPChOne[ 6] = 0;
71  fSSP[ 8] = 42; fSSPChOne[ 8] = 4;
72  fSSP[10] = 42; fSSPChOne[10] = 8;
73  fSSP[12] = 43; fSSPChOne[12] = 0;
74  fSSP[14] = 43; fSSPChOne[14] = 4;
75  fSSP[16] = 43; fSSPChOne[16] = 8;
76  fSSP[18] = 44; fSSPChOne[18] = 0;
77 
78  // MSDaS -- unusual patternfor ARAPUCA
79  fSSP[20] = 61; fSSPChOne[20] = 0;
80  fSSP[22] = 61; fSSPChOne[22] = 4;
81  fSSP[24] = 61; fSSPChOne[24] = 8;
82  fSSP[26] = 62; fSSPChOne[26] = 0;
83  fSSP[28] = 62; fSSPChOne[28] = 4;
84  fSSP[30] = 63; fSSPChOne[30] = 0; // ARAPUCA
85  fSSP[32] = 62; fSSPChOne[32] = 8;
86  fSSP[34] = 64; fSSPChOne[34] = 0;
87  fSSP[36] = 64; fSSPChOne[36] = 4;
88  fSSP[38] = 64; fSSPChOne[38] = 8;
89 
90  // USDaS -- unusual pattern
91  fSSP[40] = 53; fSSPChOne[40] = 0;
92  fSSP[42] = 53; fSSPChOne[42] = 4;
93  fSSP[44] = 53; fSSPChOne[44] = 8;
94  fSSP[46] = 54; fSSPChOne[46] = 0;
95  fSSP[48] = 51; fSSPChOne[48] = 0;
96  fSSP[50] = 54; fSSPChOne[50] = 4;
97  fSSP[52] = 51; fSSPChOne[52] = 4;
98  fSSP[54] = 51; fSSPChOne[54] = 8;
99  fSSP[56] = 54; fSSPChOne[56] = 8;
100  fSSP[58] = 52; fSSPChOne[58] = 0;
101 
102  // DSRaS -- "normal" pattern
103  fSSP[ 1] = 11; fSSPChOne[ 1] = 0;
104  fSSP[ 3] = 11; fSSPChOne[ 3] = 4;
105  fSSP[ 5] = 11; fSSPChOne[ 5] = 8;
106  fSSP[ 7] = 12; fSSPChOne[ 7] = 0;
107  fSSP[ 9] = 12; fSSPChOne[ 9] = 4;
108  fSSP[11] = 12; fSSPChOne[11] = 8;
109  fSSP[13] = 13; fSSPChOne[13] = 0;
110  fSSP[15] = 13; fSSPChOne[15] = 4;
111  fSSP[17] = 13; fSSPChOne[17] = 8;
112  fSSP[19] = 14; fSSPChOne[19] = 0;
113 
114  // MSRaS -- "normal" pattern
115  fSSP[21] = 21; fSSPChOne[21] = 0;
116  fSSP[23] = 21; fSSPChOne[23] = 4;
117  fSSP[25] = 21; fSSPChOne[25] = 8;
118  fSSP[27] = 22; fSSPChOne[27] = 0;
119  fSSP[29] = 22; fSSPChOne[29] = 4;
120  fSSP[31] = 22; fSSPChOne[31] = 8;
121  fSSP[33] = 23; fSSPChOne[33] = 0;
122  fSSP[35] = 23; fSSPChOne[35] = 4;
123  fSSP[37] = 23; fSSPChOne[37] = 8;
124  fSSP[39] = 24; fSSPChOne[39] = 0;
125 
126  // USRaS -- unusual patternfor ARAPUCA
127  fSSP[41] = 31; fSSPChOne[41] = 0;
128  fSSP[43] = 31; fSSPChOne[43] = 4;
129  fSSP[45] = 31; fSSPChOne[45] = 8;
130  fSSP[47] = 34; fSSPChOne[47] = 0; // ARAPUCA
131  fSSP[49] = 32; fSSPChOne[49] = 0;
132  fSSP[51] = 32; fSSPChOne[51] = 4;
133  fSSP[53] = 32; fSSPChOne[53] = 8;
134  fSSP[55] = 33; fSSPChOne[55] = 0;
135  fSSP[57] = 33; fSSPChOne[57] = 4;
136  fSSP[59] = 33; fSSPChOne[59] = 8;
137 
138  // The above enables OpDet + HW channel -> OpChannel
139  //
140  // Fill the maps below to do the reverse by looping through
141  // all possible OpDet and HW Channel combinations
142 
143  fMaxOpChannel = 0;
144  fNOpChannels = 0;
145 
146  for (Index opDet = 0; opDet < 60; opDet++) {
147  for (Index hwCh = 0; hwCh < NOpHardwareChannels(opDet); hwCh++) {
148 
149  // Find the channel number for this opDet and hw channel
150  Index opChannel = OpChannel(opDet, hwCh);
151 
152  // Count channels and record the maximum possible channel
153  if (opChannel > fMaxOpChannel) fMaxOpChannel = opChannel;
154  fNOpChannels++;
155 
156  // Fill maps for opChannel -> opDet and hwChannel
157  fOpDet[opChannel] = opDet;
158  fHWChannel[opChannel] = hwCh;
159  }
160  }
161 
162  }
std::map< Index, Index > fSSPChOne
std::map< Index, Index > fHWChannel
Index NOpHardwareChannels(Index opDet) const override
Returns the number of channels in the specified optical detectors.
unsigned int Index
void Initialize(GeometryData_t const &geodata) override
Geometry initialisation.
std::map< Index, Index > fSSP
void Uninitialize() override
Deconfiguration: prepare for a following call of Initialize()
std::map< Index, Index > fOpDet
Index OpChannel(Index detNum, Index channel) const override
Returns the channel ID of the specified hardware channel.
bool geo::ProtoDUNEChannelMapAlg::IsValidOpChannel ( Index  opChannel,
Index  NOpDets 
) const
inlineoverridevirtual

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().

Reimplemented from geo::ChannelMapAlg.

Definition at line 49 of file ProtoDUNEChannelMapAlg.h.

50  {return fOpDet.count(opChannel); }
std::map< Index, Index > fOpDet
Index geo::ProtoDUNEChannelMapAlg::MaxOpChannel ( Index  NOpDets) const
overridevirtual

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.

Reimplemented from geo::ChannelMapAlg.

Definition at line 180 of file ProtoDUNEChannelMapAlg.cxx.

180  {
181  return fMaxOpChannel;
182  }
Index geo::ProtoDUNEChannelMapAlg::NOpChannels ( Index  NOpDets) const
overridevirtual

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.

Reimplemented from geo::DuneApaChannelMapAlg.

Definition at line 174 of file ProtoDUNEChannelMapAlg.cxx.

174  {
175  return fNOpChannels;
176  }
Index geo::ProtoDUNEChannelMapAlg::NOpHardwareChannels ( Index  opDet) const
overridevirtual

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.

Reimplemented from geo::DuneApaChannelMapAlg.

Definition at line 186 of file ProtoDUNEChannelMapAlg.cxx.

186  {
187 
188  // ARAPUCAs
189  if (opDet == 30 or opDet == 47)
190  return 12;
191  else
192  return 4;
193  }
Index geo::ProtoDUNEChannelMapAlg::OpChannel ( Index  detNum,
Index  hwchannel 
) const
overridevirtual

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.

Reimplemented from geo::DuneApaChannelMapAlg.

Definition at line 197 of file ProtoDUNEChannelMapAlg.cxx.

197  {
198 
199  Index sspch = fSSPChOne.at(detNum) + channel;
200  Index ssp = fSSP.at(detNum);
201 
202  // Special handling of ARAPUCA in MSDaS which cross between SSP 62 and 63
203  if (sspch > 12) {
204  mf::LogError("ProtoDUNEChannelMapAlg") << "Invalid address: SSP #" << ssp << ", SSP channel" << sspch;
205  }
206 
207  return OpChannelFromSSP(ssp, sspch);
208  }
std::map< Index, Index > fSSPChOne
Index OpChannelFromSSP(Index ssp, Index sspch) const
uint8_t channel
Definition: CRTFragment.hh:201
MaybeLogger_< ELseverityLevel::ELsev_error, false > LogError
unsigned int Index
std::map< Index, Index > fSSP
Index geo::ProtoDUNEChannelMapAlg::OpChannelFromSSP ( Index  ssp,
Index  sspch 
) const

Definition at line 233 of file ProtoDUNEChannelMapAlg.cxx.

233  {
234  // Expects SSP #'s of the from NM where N is APA number and M is SSP within the APA
235  // So, IP 504 -> AP # 54
236 
237  // ( ( APA # - 1 ) )*4 + SSP per APA)*12 + SSP channel
238  Index ch = ( (trunc(ssp/10) - 1)*4 + ssp%10 - 1 )*12 + sspch;
239  return ch;
240 
241  }
unsigned int Index
Index geo::ProtoDUNEChannelMapAlg::OpDetFromOpChannel ( Index  opChannel) const
overridevirtual

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.

Reimplemented from geo::DuneApaChannelMapAlg.

Definition at line 212 of file ProtoDUNEChannelMapAlg.cxx.

212  {
213  if (!IsValidOpChannel(opChannel, 60)) {
214  mf::LogWarning("ProtoDUNEChannelMapAlg") << "Requesting an OpDet number for an uninstrumented channel, " << opChannel;
215  return 99999;
216  }
217  return fOpDet.at(opChannel);
218  }
bool IsValidOpChannel(Index opChannel, Index) const override
Returns whether the ID identifies a valid optical detector channel.
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
std::map< Index, Index > fOpDet
void geo::ProtoDUNEChannelMapAlg::PrintChannelMaps ( ) const

Definition at line 247 of file ProtoDUNEChannelMapAlg.cxx.

247  {
248 
249 
250  cout << "---------------------------------------------------------------" << endl;
251  cout << "---------------------------------------------------------------" << endl;
252  cout << "---------------------------------------------------------------" << endl;
253  cout << "---------------------------------------------------------------" << endl;
254  cout << "---------------------------------------------------------------" << endl;
255  cout << "---------------------------------------------------------------" << endl;
256  cout << "---------------------------------------------------------------" << endl;
257  cout << endl << endl;
258 
259  std::vector<Index> ssps = { 11, 12, 13, 14,
260  21, 22, 23, 24,
261  31, 32, 33, 34,
262  41, 42, 43, 44,
263  51, 52, 53, 54,
264  61, 62, 63, 64 };
265 
266  cout << endl << "By SSP" << endl;
267  for (Index ssp : ssps) {
268  for (Index sspch = 0; sspch < 12; sspch++) {
269  cout << setw(2) << ssp << " " << setw(2) << sspch << ": " << setw(3) << OpChannelFromSSP(ssp, sspch) << endl;
270  }
271  }
272 
273  cout << endl << "Beam side" << endl;
274  for (Index opDet = 1; opDet < 60; opDet += 2) {
275  cout << setw(2) << opDet << ":";
276  for (Index hwCh = 0; hwCh < NOpHardwareChannels(opDet); hwCh++) {
277  cout << " " << setw(2) << OpChannel(opDet, hwCh);
278  }
279  cout << endl;
280  }
281 
282 
283  cout << endl << "Non-Beam side" << endl;
284  for (Index opDet = 0; opDet < 60; opDet += 2) {
285  cout << setw(2) << opDet << ":";
286  for (Index hwCh = 0; hwCh < NOpHardwareChannels(opDet); hwCh++) {
287  cout << " " << setw(2) << OpChannel(opDet, hwCh);
288  }
289  cout << endl;
290  }
291 
292 
293  cout << endl << "Online -> offline" << endl;
294  for (Index opCh = 0; opCh < MaxOpChannel(60); opCh++) {
295  cout << setw(3) << opCh << ": ";
296  if ( IsValidOpChannel(opCh, 60) ) {
297  cout << setw(2) << OpDetFromOpChannel(opCh) << ", "
298  << setw(2) << HardwareChannelFromOpChannel(opCh) << endl;
299  }
300  else {
301  cout << "empty channel" << endl;
302  }
303  }
304 
305  cout << endl << endl;
306  cout << "---------------------------------------------------------------" << endl;
307  cout << "---------------------------------------------------------------" << endl;
308  cout << "---------------------------------------------------------------" << endl;
309  cout << "---------------------------------------------------------------" << endl;
310  cout << "---------------------------------------------------------------" << endl;
311  cout << "---------------------------------------------------------------" << endl;
312  cout << "---------------------------------------------------------------" << endl;
313 
314  }
bool IsValidOpChannel(Index opChannel, Index) const override
Returns whether the ID identifies a valid optical detector channel.
Index OpChannelFromSSP(Index ssp, Index sspch) const
Index NOpHardwareChannels(Index opDet) const override
Returns the number of channels in the specified optical detectors.
unsigned int Index
Index HardwareChannelFromOpChannel(Index opChannel) const override
Returns the hardware channel number of specified optical channel.
Index MaxOpChannel(Index NOpDets) const override
Returns the number of optical channels contained in some detectors.
Q_EXPORT QTSManip setw(int w)
Definition: qtextstream.h:331
Index OpDetFromOpChannel(Index opChannel) const override
Returns the optical detector the specified optical channel belongs.
Index OpChannel(Index detNum, Index channel) const override
Returns the channel ID of the specified hardware channel.
QTextStream & endl(QTextStream &s)
Index geo::ProtoDUNEChannelMapAlg::SSPfromOpDet ( Index  opDet) const
void geo::ProtoDUNEChannelMapAlg::Uninitialize ( )
overridevirtual

Deconfiguration: prepare for a following call of Initialize()

Reimplemented from geo::DuneApaChannelMapAlg.

Definition at line 167 of file ProtoDUNEChannelMapAlg.cxx.

167  {
168  // Call the base-class version to perform TPC-related actions
170  }
void Uninitialize() override
Deconfiguration: prepare for a following call of Initialize()

Member Data Documentation

std::map<Index, Index> geo::ProtoDUNEChannelMapAlg::fHWChannel
private

Definition at line 65 of file ProtoDUNEChannelMapAlg.h.

Index geo::ProtoDUNEChannelMapAlg::fMaxOpChannel
private

Definition at line 60 of file ProtoDUNEChannelMapAlg.h.

Index geo::ProtoDUNEChannelMapAlg::fNOpChannels
private

Definition at line 61 of file ProtoDUNEChannelMapAlg.h.

std::map<Index, Index> geo::ProtoDUNEChannelMapAlg::fOpDet
private

Definition at line 64 of file ProtoDUNEChannelMapAlg.h.

std::map<Index, Index> geo::ProtoDUNEChannelMapAlg::fSSP
private

Definition at line 62 of file ProtoDUNEChannelMapAlg.h.

std::map<Index, Index> geo::ProtoDUNEChannelMapAlg::fSSPChOne
private

Definition at line 63 of file ProtoDUNEChannelMapAlg.h.


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