34 #include <boost/cstdint.hpp> 40 #include <sys/types.h> 44 #include <arpa/inet.h> 47 #include <sys/socket.h> 48 #include <sys/unistd.h> 59 inputModuleLabel_( pset.getParameter<
std::
string>(
"InputModuleLabel" ) ),
60 inputModuleLabelAlt_(pset.existsAs<
std::
string>(
"InputModuleLabelAlt")?pset.getParameter<
std::
string>(
"InputModuleLabelAlt" ):
""),
61 inputModuleLabelSummary_( pset.getParameter<
std::
string>(
"SummaryInputModuleLabel" ) ),
62 inputClusterLabel_(pset.existsAs<
std::
string>(
"InputClusterLabel") ? pset.getParameter<
std::
string>(
"InputClusterLabel" ) :
""),
65 partitionName_(pset.existsAs<
std::
string>(
"PartitionName") ? pset.getParameter<
std::
string>(
"PartitionName") :
""),
67 isSpy_(pset.existsAs<
bool>(
"isSpy")?pset.getParameter<
bool>(
"isSpy"):
false),
68 taskConfigurable_( pset.getUntrackedParameter<
std::
string>(
"CommissioningTask",
"UNDEFINED") ),
74 updateFreq_( pset.getUntrackedParameter<
int>(
"HistoUpdateFreq",1) ),
76 view_( pset.getUntrackedParameter<
std::
string>(
"View",
"Default") ),
92 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 93 <<
" Constructing object...";
95 tasks_.resize( 1024,
VecOfTasks(96,static_cast<CommissioningTask*>(
nullptr)) );
102 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 103 <<
" Destructing object...";
110 std::stringstream ss;
111 if ( !method.empty() ) { ss <<
"[SiStripCommissioningSource::" << method <<
"]" << std::endl; }
112 else { ss <<
"[SiStripCommissioningSource]" << std::endl; }
113 ss <<
" NULL pointer to DQMStore";
116 }
else {
return dqm_; }
125 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 126 <<
" Configuring..." << std::endl;
132 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 133 <<
" DQMStore service: " 136 dqm()->setVerbose(0);
140 std::stringstream
dir(
"");
149 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 150 <<
"Initialized FED cabling. Number of FEDs is " <<
fedCabling_->
fedIds().size();
153 std::stringstream ss;
154 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 155 <<
" Empty std::vector returned by FEC cabling object!" 156 <<
" Check if database connection failed...";
177 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 178 <<
" Halting..." << std::endl;
183 if ( itask->second ) { itask->second->updateHistograms(); }
187 for (uint16_t partition = 0; partition < 4; ++partition) {
188 tasks_[0][partition]->updateHistograms();
191 tasks_[0][0]->updateHistograms();
199 for (
auto iconn = conns.begin(); iconn != conns.end(); iconn++ ) {
200 if ( !iconn->isConnected() ) {
continue; }
201 fed_id = iconn->fedId();
202 fed_ch = iconn->fedCh();
203 if (
tasks_[fed_id][fed_ch] ) {
204 tasks_[fed_id][fed_ch]->updateHistograms();
205 delete tasks_[fed_id][fed_ch];
220 if ( getenv(scratch.c_str()) !=
nullptr ) {
221 dir = getenv(scratch.c_str());
225 std::stringstream ss;
226 if ( !dir.empty() ) { ss << dir <<
"/"; }
227 else { ss <<
"/tmp/"; }
239 if (
run_ != 0 ) {
dqm()->save( ss.str() ); }
242 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 243 <<
" NULL value for RunNumber! No root file saved!";
247 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 248 <<
" NULL value for filename! No root file saved!";
252 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 253 <<
" Saved all histograms to file \"" 285 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 286 <<
" Unknown/undefined RunType and NULL parameter values!" 287 <<
" It may be that the 'trigger FED' object was not found!";
295 run_ =
event.id().run();
301 std::stringstream ss;
302 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 304 <<
" events were processed at a rate of ";
305 if (
time(
nullptr) ==
time_ ) { ss <<
">" << updateFreq_ <<
" Hz"; }
306 else { ss << (updateFreq_/(
time(
nullptr)-
time_)) <<
" Hz"; }
316 t->eventSetup(&setup);
340 std::stringstream ss;
341 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 342 <<
" Requested DAQ_SCOPE_MODE but unknown FED" 343 <<
" readout mode retrieved from SiStripEventSummary: " 367 std::stringstream ss;
368 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 369 <<
" Unknown CommissioningTask: " 371 <<
" Unable to establish FED readout mode and retrieve digi container!" 372 <<
" Check if SiStripEventSummary object is found/present in Event";
379 std::stringstream ss;
380 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" << std::endl
381 <<
" NULL pointer to DetSetVector!" << std::endl
382 <<
" Unable to fill histograms!";
388 std::stringstream ss;
389 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" << std::endl
390 <<
" NULL pointer to DetSetVector!" << std::endl
391 <<
" Unable to fill histograms!";
397 std::stringstream ss;
398 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" << std::endl
399 <<
" NULL pointer to DetSetVector!" << std::endl
400 <<
" Unable to fill histograms!";
417 uint16_t lld_channel = ( summary->
deviceId() & 0x3 ) + 1;
424 uint32_t fec_key = key_object.
key();
425 std::stringstream sss;
426 sss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 428 << std::hex << std::setw(8) << std::setfill(
'0') << summary->
dcuId() <<
std::dec 429 <<
" with Crate/FEC/Ring/CCU/Module/LLD: " 442 std::stringstream ss;
443 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 445 << std::hex << std::setw(8) << std::setfill(
'0') << summary->
dcuId() <<
std::dec 446 <<
" in 'DAQ register' field not found in cabling map!" 447 <<
" (NULL values returned for FEC path)";
459 std::map<uint16_t,float> medians; medians.clear();
460 std::map<uint16_t,float> medians1; medians1.clear();
463 for ( uint16_t ichan = 0; ichan < 96; ichan++ ) {
468 std::vector< edm::DetSet<SiStripRawDigi> >::const_iterator digis = raw.
find( fed_key );
469 if ( digis != raw.
end() ) {
470 if ( digis->data.empty() ) {
continue; }
473 for ( uint16_t idigi = 0; idigi < digis->data.size(); idigi++ ) {
474 ave.add( static_cast<uint32_t>(digis->data[idigi].adc()) );
478 medians[ichan] = params.
median_;
479 medians1[ichan] = digis->data[0].adc();
487 std::map<uint16_t,float>::const_iterator
ii = medians.begin();
488 for ( ; ii != medians.end(); ii++ ) { average.add( ii->second ); }
492 std::stringstream ss;
493 ss <<
"FED Averages:" << std::endl
494 <<
" nChans: " << medians.size() << std::endl
495 <<
" num/mean/median/rms/max/min: " 501 << tmp.
min_ << std::endl;
506 std::map<uint16_t,float>::const_iterator
jj = medians.begin();
507 for ( ; jj != medians.end(); jj++ ) {
509 truncated.add( jj->second );
513 truncated.calc(params);
515 std::stringstream ss1;
516 ss1 <<
"Truncated Averages:" << std::endl
517 <<
" nChans: " << medians.size() << std::endl
518 <<
" num/mean/median/rms/max/min: " 519 << params.
num_ <<
"/" 520 << params.
mean_ <<
"/" 522 << params.
rms_ <<
"/" 523 << params.
max_ <<
"/" 524 << params.
min_ << std::endl;
528 std::stringstream ss2;
529 std::stringstream ss3;
530 std::map<uint16_t,float> channels;
531 std::map<uint16_t,float>::const_iterator ichan = medians.begin();
532 for ( ; ichan != medians.end(); ichan++ ) {
533 if ( ichan->second > 200. ) {
534 LogTrace(
mlTest_) <<
"TEST FOUND SIGNAL HIGH: " << *ifed <<
" " << ichan->first <<
" " << ichan->second;
535 channels[ichan->first] = ichan->second;
538 << ichan->second <<
" ";
540 << medians1[ichan->first] <<
" ";
550 if ( !channels.empty() ) {
551 cablingTasks_[fec_key]->fillHistograms( *summary, *ifed, channels );
553 std::stringstream ss;
554 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 555 <<
" Filled histogram for '" <<
cablingTasks_[fec_key]->myName()
556 <<
"' object with FecKey: 0x" 557 << std::hex << std::setfill(
'0') << std::setw(8) << fec_key <<
std::dec 558 <<
" and Crate/FEC/ring/CCU/module/LLDchan: " 569 std::stringstream ss;
570 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 571 <<
" Unable to find CommissioningTask object with FecKey: 0x" 572 << std::hex << std::setfill(
'0') << std::setw(8) << fec_key <<
std::dec 573 <<
" and Crate/FEC/ring/CCU/module/LLDchan: " 595 std::vector<uint16_t> stripOnClusters;
601 for (
auto iconn = conns.begin() ; iconn != conns.end(); iconn++ ) {
603 if ( !(iconn->fedId()) || iconn->fedId() >
sistrip::valid_ ) {
continue; }
604 if ( !iconn->isConnected() ) {
continue; }
611 std::vector< edm::DetSet<SiStripRawDigi> >::const_iterator digis = raw.
find( fed_key );
614 std::vector< edm::DetSet<SiStripRawDigi> >::const_iterator digisAlt;
615 if(not rawAlt.
empty()){
616 digisAlt = rawAlt.
find(fed_key);
617 if(digisAlt == rawAlt.
end())
continue;
621 stripOnClusters.clear();
622 if(not clusters.
empty()){
624 if(DSViter->id() != iconn->detId())
continue;
626 if(DSiter->firstStrip() >= iconn->apvPairNumber()*256 and DSiter->firstStrip() < (1+iconn->apvPairNumber())*256){
627 for(
size_t istrip = 0; istrip < DSiter->amplitudes().size(); istrip++){
628 stripOnClusters.push_back(DSiter->firstStrip()+istrip-iconn->apvPairNumber()*256);
635 if ( digis != raw.
end() ) {
638 if(
tasks_[0][iconn->fecCrate()-1] ) {
639 tasks_[0][iconn->fecCrate()-1]->fillHistograms( *summary, *digis );
642 std::stringstream ss;
643 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 644 <<
" Unable to find CommissioningTask for FEC crate " 645 << iconn->fecCrate() <<
". Unable to fill histograms!";
651 tasks_[0][0]->fillHistograms( *summary, *digis );
654 std::stringstream ss;
655 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 656 <<
" Unable to find global CommissioningTask for FineDelay. Unable to fill histograms!";
661 if (
tasks_[iconn->fedId()][iconn->fedCh()] ) {
662 if(not rawAlt.
empty()
or digisAlt == rawAlt.
end())
663 tasks_[iconn->fedId()][iconn->fedCh()]->fillHistograms( *summary, *digis );
665 if(stripOnClusters.empty())
666 tasks_[iconn->fedId()][iconn->fedCh()]->fillHistograms( *summary, *digis, *digisAlt);
668 tasks_[iconn->fedId()][iconn->fedCh()]->fillHistograms( *summary, *digis, *digisAlt, stripOnClusters);
673 std::stringstream ss;
674 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 675 <<
" Unable to find CommissioningTask object with FED key " 676 << std::hex << std::setfill(
'0') << std::setw(8) << fed_key <<
std::dec 678 << iconn->fedId() <<
"/" 680 <<
" Unable to fill histograms!";
690 std::stringstream ss;
691 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 692 <<
" Unable to find any DetSet containing digis for FED key " 693 << std::hex << std::setfill(
'0') << std::setw(8) << fed_key <<
std::dec 695 << iconn->fedId() <<
"/" 711 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 712 <<
" NULL run number!";
718 std::stringstream
run;
734 std::stringstream ss;
735 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 736 <<
" Identified CommissioningTask from EventSummary to be \"" 742 std::stringstream ss;
743 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 744 <<
" NULL pointer to SiStripEventSummary!" 745 <<
" Check SiStripEventSummary is found/present in Event";
753 std::stringstream ss;
754 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 755 <<
" Overriding CommissioningTask from EventSummary (\"" 757 <<
"\") with value retrieved from .cfg file (\"" 761 task_ = configurable;
772 std::stringstream ss;
773 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 774 <<
" Unexpected CommissioningTask found (" 775 <<
static_cast<uint16_t
>(
task_) <<
") \"" 777 <<
" Unexpected value found in SiStripEventSummary and/or cfg file" 778 <<
" If SiStripEventSummary is not present in Event," 779 <<
" check 'CommissioningTask' configurable in cfg file";
783 std::stringstream ss;
784 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 785 <<
" Identified CommissioningTask to be \"" 795 std::stringstream ss;
796 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 797 <<
" CommissioningTask: " 802 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 803 <<
" Creating CommissioningTask objects and booking histograms...";
807 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 808 <<
" Finished booking histograms!";
820 for ( std::vector<SiStripFec>::const_iterator ifec = icrate->fecs().begin(); ifec != icrate->fecs().end(); ifec++ ) {
821 for ( std::vector<SiStripRing>::const_iterator iring = ifec->rings().begin(); iring != ifec->rings().end(); iring++ ) {
822 for ( std::vector<SiStripCcu>::const_iterator iccu = iring->ccus().begin(); iccu != iring->ccus().end(); iccu++ ) {
823 for ( std::vector<SiStripModule>::const_iterator imodule = iccu->modules().begin(); imodule != iccu->modules().end(); imodule++ ) {
830 imodule->ccuChan() );
833 if ( !
path.isValid() ) {
continue; }
837 dqm()->setCurrentFolder( dir );
840 for ( uint16_t ipair = 0; ipair < imodule->nApvPairs(); ipair++ ) {
855 imodule->nApvPairs() );
863 imodule->lldChannel(ipair) ).
key();
868 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 869 <<
" Unexpected NULL value for FEC key!";
880 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 881 <<
" Undefined CommissioningTask" 882 <<
" Unable to create FedCablingTask object!";
885 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 886 <<
" Unknown CommissioningTask" 887 <<
" Unable to create FedCablingTask object!";
890 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 891 <<
" Unexpected CommissioningTask: " 893 <<
" Unable to create FedCablingTask object!";
902 std::stringstream ss;
903 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 905 <<
"' object with key 0x" << std::hex << std::setfill(
'0') << std::setw(8) << key <<
std::dec 906 <<
" in directory \"" << dir <<
"\"";
909 std::stringstream ss;
910 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 911 <<
" NULL pointer to CommissioningTask for key 0x" 912 << std::hex << std::setfill(
'0') << std::setw(8) << key <<
std::dec 913 <<
" in directory " << dir
914 <<
" Unable to book histograms!";
918 std::stringstream ss;
919 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 920 <<
" Unable to find CommissioningTask for key 0x" 921 << std::hex << std::setfill(
'0') << std::setw(8) << key <<
std::dec 922 <<
" in directory " << dir
923 <<
" Unable to book histograms!";
928 std::stringstream ss;
929 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 930 <<
" CommissioningTask object already exists for key 0x" 931 << std::hex << std::setfill(
'0') << std::setw(8) << key <<
std::dec 932 <<
" in directory " << dir
933 <<
" Unable to create FedCablingTask object!";
945 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 946 <<
" Created " << booked
947 <<
" CommissioningTask objects and booked histograms";
960 for (uint16_t partition = 0; partition < 4; ++partition) {
963 tasks_[0][partition]->eventSetup( &setup );
964 tasks_[0][partition]->bookHistograms();
973 tasks_[0][0]->eventSetup( &setup );
974 tasks_[0][0]->bookHistograms();
985 for (
auto iconn = conns.begin() ; iconn != conns.end(); ++iconn ) {
997 if ( !iconn->isConnected() ) {
continue; }
1003 std::stringstream
dir;
1005 if (
view_ ==
"Default") {
1007 dir << fed_key.path();
1009 dir << fec_key.path();
1011 }
else if (
view_ ==
"FecView") {
1012 dir << fec_key.path();
1013 }
else if (
view_ ==
"FedView") {
1014 dir << fed_key.path();
1015 }
else if (
view_ ==
"DetView") {
1022 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 1023 <<
" Invalid view " <<
view_ << std::endl
1024 <<
" Histograms will end up all in the top directory.";
1026 dqm()->setCurrentFolder( dir.str() );
1029 if ( !
tasks_[iconn->fedId()][iconn->fedCh()] ) {
1059 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 1060 <<
" Undefined CommissioningTask" 1061 <<
" Unable to create CommissioningTask object!";
1064 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 1065 <<
" Unknown CommissioningTask" 1066 <<
" Unable to create CommissioningTask object!";
1070 if (
tasks_[iconn->fedId()][iconn->fedCh()] ) {
1071 tasks_[iconn->fedId()][iconn->fedCh()]->eventSetup( &setup );
1076 tasks_[iconn->fedId()][iconn->fedCh()]->bookHistograms();
1086 std::stringstream ss;
1087 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 1088 <<
" NULL pointer to CommissioningTask for key 0x" 1089 << std::hex << std::setfill(
'0') << std::setw(8) << fed_key.key() <<
std::dec 1090 <<
" in directory " << dir.str()
1091 <<
" Unable to book histograms!";
1095 std::stringstream ss;
1096 ss <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 1097 <<
" CommissioningTask object already exists for key 0x" 1098 << std::hex << std::setfill(
'0') << std::setw(8) << fed_key.key() <<
std::dec 1099 <<
" in directory " << dir.str()
1100 <<
" Unable to create CommissioningTask object!";
1107 <<
"[SiStripCommissioningSource::" << __func__ <<
"]" 1108 <<
" Created " << booked
1109 <<
" CommissioningTask objects and booked histograms";
1117 if ( itask->second ) {
delete itask->second; }
1125 if (
tasks_.empty() ) {
return; }
1126 VecOfVecOfTasks::iterator ifed =
tasks_.begin();
1127 for ( ; ifed !=
tasks_.end(); ifed++ ) {
1128 VecOfTasks::iterator ichan = ifed->begin();
1129 for ( ; ichan != ifed->end(); ichan++ ) {
1130 if ( *ichan ) {
delete *ichan; *ichan = 0; }
1132 ifed->resize(96,
nullptr);
1141 dqm()->removeContents();
1151 uint32_t run_number ) {
1155 gethostname( hn,
sizeof(hn) );
1157 he = gethostbyname(hn);
1164 host_ip =
std::string( inet_ntoa( *(
struct in_addr*)(he->h_addr) ) );
1166 host_name =
"unknown.cern.ch";
1167 host_ip =
"255.255.255.255";
1172 std::stringstream ip;
1174 while ( pos != std::string::npos ) {
1176 if ( tmp != std::string::npos ) {
1178 << std::setfill(
'0')
1179 << host_ip.substr( pos, tmp-pos )
1184 << std::setfill(
'0')
1185 << host_ip.substr( pos );
1186 pos = std::string::npos;
1191 pid_t
pid = getpid();
1196 << std::setfill(
'0')
1203 << std::setfill(
'0')
static const char runNumber_[]
Device and connection information at the level of a front-end module.
EventNumber_t event() const
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
const_iterator end(bool update=false) const
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiReorderedToken_
void createCablingTasks()
iterator find(det_id_type id)
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiVirginRawToken_
const uint16_t & fecRing() const
void createTask(const SiStripEventSummary *const, const edm::EventSetup &)
A container class for generic run and event-related info, information required by the commissioning a...
bool getByToken(EDGetToken token, Handle< PROD > &result) const
const SiStripModule & module(const FedChannelConnection &conn) const
DQMStore *const dqm(std::string method="") const
const SiStripFecKey & key() const
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clustersToken_
void fillHistos(const SiStripEventSummary *const, const edm::DetSetVector< SiStripRawDigi > &, const edm::DetSetVector< SiStripRawDigi > &=edm::DetSetVector< SiStripRawDigi >(), const edmNew::DetSetVector< SiStripCluster > &=edmNew::DetSetVector< SiStripCluster >())
static const char mlDqmSource_[]
SiStripCommissioningSource()=delete
void createTasks(sistrip::RunType, const edm::EventSetup &)
const std::vector< SiStripFecCrate > & crates() const
def setup(process, global_tag, zero_tesla=False)
data_type const * const_iterator
const uint16_t & fecSlot() const
static const uint16_t valid_
static const char detectorView_[]
void analyze(const edm::Event &, const edm::EventSetup &) override
std::string inputModuleLabel_
void directory(std::stringstream &, uint32_t run_number=0)
const uint32_t & key() const
Utility class that identifies a position within the strip tracker control structure, down to the level of an APV25.
void beginRun(edm::Run const &, const edm::EventSetup &) override
static std::string runType(const sistrip::RunType &)
const sistrip::RunType & runType() const
std::vector< CommissioningTask * > VecOfTasks
Class containning control, module, detector and connection information, at the level of a FED channel...
std::string inputModuleLabelAlt_
FedsConstIterRange fedIds() const
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
static const char taskId_[]
void fillCablingHistos(const SiStripEventSummary *const, const edm::DetSetVector< SiStripRawDigi > &)
static const char dqmSourceFileName_[]
const uint32_t & dcuId() const
static const char mlTest_[]
SiStripFecCabling * fecCabling_
std::string inputClusterLabel_
edm::ParameterSet parameters_
iterator end()
Return the off-the-end iterator.
std::string partitionName_
const uint16_t & fecCrate() const
const uint32_t & deviceId() const
const uint16_t & feUnit() const
T const * product() const
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiFineDelaySelectionToken_
const uint16_t & channel() const
~SiStripCommissioningSource() override
bool empty() const
Return true if we contain no DetSets.
const uint16_t & ccuAddr() const
static const uint16_t invalid_
std::string inputModuleLabelSummary_
ConnsConstIterRange fedConnections(uint16_t fed_id) const
Contains cabling info at the device level, including DetId, APV pair numbers, hardware addresses...
const sistrip::FedReadoutMode & fedReadoutMode() const
std::vector< std::vector< double > > tmp
edm::EDGetTokenT< SiStripEventSummary > inputModuleSummaryToken_
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiScopeModeToken_
std::string taskConfigurable_
SiStripFedCabling * fedCabling_
const uint16_t & feChan() const
static const char root_[]
const uint16_t & ccuChan() const
std::pair< uint16_t, uint16_t > PairOfU16
T const * product() const
const_iterator begin(bool update=false) const
static std::string fedReadoutMode(const sistrip::FedReadoutMode &)