Skip to content

Commit

Permalink
Migrate to the new SiStripFedCabling API for feds.
Browse files Browse the repository at this point in the history
- New API uses iterator pairs rather than container references,
  adapt everywhere to it.
- Get rid of the obsolete API, which is thread unsafe.
  • Loading branch information
ktf committed Nov 25, 2013
1 parent 4178261 commit c549611
Show file tree
Hide file tree
Showing 38 changed files with 119 additions and 1,442 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ bool LaserAlignmentEventFilter::filter( edm::Event& iEvent, const edm::EventSetu
}

// get the cabling connections for this FED
const std::vector<FedChannelConnection>& conns = cabling->connections(*ifed);
auto conns = cabling->fedConnections(*ifed);

// construct FEDBuffer
std::auto_ptr<sistrip::FEDBuffer> buffer;
Expand Down
8 changes: 3 additions & 5 deletions CalibFormats/SiStripObjects/src/SiStripDetCabling.cc
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,10 @@ SiStripDetCabling::SiStripDetCabling(const SiStripFedCabling& fedcabling) : full
// --- CONNECTED = have fedid and i2cAddr
// create fullcabling_, loop over vector of FedChannelConnection, either make new element of map, or add to appropriate vector of existing map element
// get feds list (vector) from fedcabling object - these are the active FEDs
const std::vector<uint16_t>& feds = fedcabling.feds();
std::vector<uint16_t>::const_iterator ifed;
for ( ifed = feds.begin(); ifed != feds.end(); ifed++ ) { // iterate over active feds, get all their FedChannelConnection-s
auto feds = fedcabling.fedIds();
for ( auto ifed = feds.begin(); ifed != feds.end(); ifed++ ) { // iterate over active feds, get all their FedChannelConnection-s
SiStripFedCabling::ConnsConstIterRange conns = fedcabling.fedConnections( *ifed );
std::vector<FedChannelConnection>::const_iterator iconn;
for ( iconn = conns.begin(); iconn != conns.end(); iconn++ ) { // loop over FedChannelConnection objects
for ( auto iconn = conns.begin(); iconn != conns.end(); iconn++ ) { // loop over FedChannelConnection objects
addDevices(*iconn, fullcabling_); // leave separate method, in case you will need to add devices also after constructing
bool have_fed_id = iconn->fedId();
std::vector<int> vector_of_connected_apvs;
Expand Down
10 changes: 4 additions & 6 deletions CalibFormats/SiStripObjects/src/SiStripFecCabling.cc
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,12 @@ void SiStripFecCabling::buildFecCabling( const SiStripFedCabling& fed_cabling )
<< " Building FEC cabling...";

// Retrieve and iterate through FED ids
const std::vector<uint16_t>& feds = fed_cabling.feds();
std::vector<uint16_t>::const_iterator ifed;
for ( ifed = feds.begin(); ifed != feds.end(); ifed++ ) {
auto feds = fed_cabling.fedIds();
for ( auto ifed = feds.begin(); ifed != feds.end(); ifed++ ) {

// Retrieve and iterate through FED channel connections
const std::vector<FedChannelConnection>& conns = fed_cabling.connections( *ifed );
std::vector<FedChannelConnection>::const_iterator iconn;
for ( iconn = conns.begin(); iconn != conns.end(); iconn++ ) {
auto conns = fed_cabling.fedConnections( *ifed );
for ( auto iconn = conns.begin(); iconn != conns.end(); iconn++ ) {

// Check that FED id is not invalid and add devices
if ( iconn->fedId() != sistrip::invalid_ ) { addDevices( *iconn ); }
Expand Down
10 changes: 6 additions & 4 deletions CalibFormats/SiStripObjects/src/SiStripQuality.cc
Original file line number Diff line number Diff line change
Expand Up @@ -156,8 +156,9 @@ void SiStripQuality::add(const RunInfo *runInfo)

if( !allFedsEmpty || useEmptyRunInfo_ ) {
// Take the list of active feds from fedCabling
std::vector<uint16_t> activeFedsFromCabling = SiStripDetCabling_->fedCabling()->feds();
auto ids = SiStripDetCabling_->fedCabling()->fedIds();

std::vector<uint16_t> activeFedsFromCabling(ids.begin(), ids.end());
// Take the list of active feds from RunInfo
std::vector<int> activeFedsFromRunInfo;
// Take only Tracker feds (remove all non Tracker)
Expand All @@ -180,7 +181,8 @@ void SiStripQuality::add(const RunInfo *runInfo)
activeFedsFromRunInfo.begin(), activeFedsFromRunInfo.end(),
std::back_inserter(differentFeds));

printActiveFedsInfo(activeFedsFromCabling, activeFedsFromRunInfo, differentFeds, printDebug_);
// IGNORE for time being.
//printActiveFedsInfo(activeFedsFromCabling, activeFedsFromRunInfo, differentFeds, printDebug_);

// Feds in the differentFeds vector are now to be turned off as they are off according to RunInfo
// but were not off in cabling and thus are still active for the SiStripQuality.
Expand Down Expand Up @@ -767,8 +769,8 @@ void SiStripQuality::turnOffFeds(const std::vector<int> & fedsList, const bool t

std::vector<int>::const_iterator fedIdIt = fedsList.begin();
for( ; fedIdIt != fedsList.end(); ++fedIdIt ) {
std::vector<FedChannelConnection>::const_iterator fedChIt = SiStripDetCabling_->fedCabling()->connections( *fedIdIt ).begin();
for( ; fedChIt != SiStripDetCabling_->fedCabling()->connections( *fedIdIt ).end(); ++fedChIt ) {
std::vector<FedChannelConnection>::const_iterator fedChIt = SiStripDetCabling_->fedCabling()->fedConnections( *fedIdIt ).begin();
for( ; fedChIt != SiStripDetCabling_->fedCabling()->fedConnections( *fedIdIt ).end(); ++fedChIt ) {
uint32_t detId = fedChIt->detId();
if (detId == 0 || detId == 0xFFFFFFFF) continue;
uint16_t apvPairNumber = fedChIt->apvPairNumber();
Expand Down
4 changes: 2 additions & 2 deletions CalibTracker/SiStripCommon/src/SiStripDCSStatus.cc
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ void SiStripDCSStatus::initialise(edm::Event const& e, edm::EventSetup const& eS

edm::ESHandle< SiStripFedCabling > fedCabling_;
eSetup.get<SiStripFedCablingRcd>().get(fedCabling_);
const std::vector<uint16_t>& connectedFEDs = fedCabling_->feds();
auto connectedFEDs = fedCabling_->fedIds();

edm::Handle<FEDRawDataCollection> rawDataHandle;
e.getByLabel("source", rawDataHandle);
Expand All @@ -117,7 +117,7 @@ void SiStripDCSStatus::initialise(edm::Event const& e, edm::EventSetup const& eS
rawdataAbsent = false;
const FEDRawDataCollection& rawDataCollection = *rawDataHandle;
for(std::vector<unsigned short>::const_iterator ifed = connectedFEDs.begin(); ifed != connectedFEDs.end(); ifed++){
const std::vector<FedChannelConnection> fedChannels = fedCabling_->connections( *ifed );
auto fedChannels = fedCabling_->fedConnections( *ifed );
if (!(rawDataCollection.FEDData(*ifed).size()) || !(rawDataCollection.FEDData(*ifed).data()) ) continue;
// Check Modules Connected
for (std::vector<FedChannelConnection>::const_iterator iconn = fedChannels.begin();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,12 +105,10 @@ void SiStripFedCablingManipulator::manipulate(const SiStripFedCabling* iobj,SiSt

std::vector<FedChannelConnection> conns;

const std::vector<uint16_t>& feds=iobj->feds();
std::vector<uint16_t>::const_iterator ifeds=feds.begin();
for(;ifeds!=feds.end();ifeds++){
const std::vector<FedChannelConnection>& conns_per_fed =iobj->connections( *ifeds );
std::vector<FedChannelConnection>::const_iterator iconn=conns_per_fed.begin();
for(;iconn!=conns_per_fed.end();++iconn){
auto feds=iobj->fedIds();
for(auto ifeds=feds.begin();ifeds!=feds.end();ifeds++){
auto conns_per_fed =iobj->fedConnections( *ifeds );
for(auto iconn=conns_per_fed.begin();iconn!=conns_per_fed.end();++iconn){
std::map<uint32_t, std::pair<uint32_t, uint32_t> >::const_iterator it=dcuDetIdMap.find(iconn->dcuId());
if(it!=dcuDetIdMap.end() && it->second.first==iconn->detId()){
edm::LogInfo("SiStripFedCablingManipulator")<< "::manipulate - fedid "<< *ifeds << " dcuid " << iconn->dcuId() << " oldDet " << iconn->detId() << " newDetID " << it->second.second ;
Expand Down
6 changes: 3 additions & 3 deletions CommonTools/TrackerMap/src/TrackerMap.cc
Original file line number Diff line number Diff line change
Expand Up @@ -66,14 +66,14 @@ TrackerMap::TrackerMap(const edm::ParameterSet & tkmapPset,const SiStripFedCabli
init();
// Now load fed cabling information
if(enableFedProcessing){
const std::vector<unsigned short> feds = tkFed->feds();
auto feds = tkFed->fedIds();
std::cout<<"SiStripFedCabling has "<< feds.size()<<" active FEDS"<<std::endl;
// int num_board=0;
// int num_crate=0;
for(std::vector<unsigned short>::const_iterator ifed = feds.begin();ifed<feds.end();ifed++){
const std::vector<FedChannelConnection> theconn = tkFed->connections( *ifed );
auto theconn = tkFed->fedConnections( *ifed );
int num_conn=0;
for(std::vector<FedChannelConnection>::const_iterator iconn = theconn.begin();iconn<theconn.end();iconn++){
for(auto iconn = theconn.begin();iconn<theconn.end();iconn++){

if( iconn->fedId()== sistrip::invalid_ ||
iconn->detId() == sistrip::invalid_ ||
Expand Down
Loading

0 comments on commit c549611

Please sign in to comment.