11 using std::ostringstream;
26 : m_UseOffline(true), m_LogLevel(1) {
27 const string myname =
"Dune35tChannelGroupService::ctor: ";
28 const Index nAsicPerRce = 8;
29 const Index nRegPerRce = 2;
30 const string plname[4] = {
"u",
"v",
"z1",
"z2"};
36 const Index ncha = 2048;
37 bool useAPA = m_Grouping ==
"APA";
38 bool useASIC = m_Grouping ==
"ASIC";
39 bool useRegulator = m_Grouping ==
"Regulator";
44 Index npla = split ? 4 : 1;
45 for (
Index icha=0; icha<ncha; ++icha ) {
51 igrp =
m_pcms->APAFromOnlineChannel(chon);
52 }
else if ( useASIC ) {
54 igrp = nAsicPerRce*irce + iasc;
55 }
else if ( useRegulator ) {
56 Index ireg =
m_pcms->RegulatorFromOnlineChannel(chon);
57 igrp = nRegPerRce*irce + ireg;
59 cout << myname <<
"ERROR: Invalid group name: " << m_Grouping <<
endl;
66 Index iview = split ? ipla : 0;
67 vvvchans[igrp][iview].push_back(icha);
71 useRegulator ?
"reg" :
"Unknown";
75 for (
Index igrp=0; igrp<ngrp; ++igrp ) {
76 for (
Index ipla=0; ipla<npla; ++ipla ) {
81 if ( ngrp > 100 && igrp < 100 ) ssnam <<
"0";
82 if ( ngrp > 10 && igrp < 10 ) ssnam <<
"0";
84 if ( split ) ssnam << plname[ipla];
109 return "NoSuchGroup";
123 out << prefix <<
"Dune35tChannelGroupService: " <<
endl;
124 out << prefix <<
" UseOffline: " << (
m_UseOffline ?
"true" :
"false") << endl;
127 out << prefix <<
" # groups: " <<
size() <<
endl;
Dune35tChannelGroupService(fhicl::ParameterSet const &pset)
#define DEFINE_ART_SERVICE_INTERFACE_IMPL(svc, iface)
vector< ChannelVectorVector > ChannelVectorVectorVector
art::ServiceHandle< lbne::ChannelMapService > m_pcms
ChannelVectorVector m_chanvecs
T get(std::string const &key) const
bool get_if_present(std::string const &key, T &value) const
Q_EXPORT QTSManip setw(int w)
vector< ChannelVector > ChannelVectorVector
ChannelGroupService::Index Index
ChannelGroupService::ChannelVector ChannelVector
std::ostream & print(std::ostream &out=std::cout, std::string prefix="") const
std::vector< ChannelVector > ChannelVectorVector
Name name(Index igrp) const
ChannelGroupService::Name Name
void split(std::string const &s, char c, OutIter dest)
Q_EXPORT QTSManip setfill(int f)
const ChannelVector & channels(Index igrp) const
decltype(auto) constexpr empty(T &&obj)
ADL-aware version of std::empty.
QTextStream & endl(QTextStream &s)
std::vector< Channel > ChannelVector