diff --git a/MuonSpectrometer/MuonAlignment/MuonAlignmentData/MuonAlignmentData/MuonAlignmentPar.h b/MuonSpectrometer/MuonAlignment/MuonAlignmentData/MuonAlignmentData/MuonAlignmentPar.h index 60c5629a97e751b31dfa16d655b2b5cbf080aaa7..409fc0f39b85074d6d2ac1f82cfd0958c15cb726 100755 --- a/MuonSpectrometer/MuonAlignment/MuonAlignmentData/MuonAlignmentData/MuonAlignmentPar.h +++ b/MuonSpectrometer/MuonAlignment/MuonAlignmentData/MuonAlignmentData/MuonAlignmentPar.h @@ -17,7 +17,7 @@ public: Identifier identify() const { return m_stationId; } std::string key() const { return m_stationKey; } - void setAmdbId(const std::string& type, int jff, int jzz, int job); + void setAmdbId(std::string_view type, int jff, int jzz, int job); void getAmdbId(std::string& type, int& jff, int& jzz, int& job) const; bool isNew() const { return m_isNew; } diff --git a/MuonSpectrometer/MuonAlignment/MuonAlignmentData/src/MuonAlignmentPar.cxx b/MuonSpectrometer/MuonAlignment/MuonAlignmentData/src/MuonAlignmentPar.cxx index 73ed0dd5a97c06669a6bfe0b01df0bcfd08be22f..3f658810ac0af42e0a193309270eb7ff807be4d6 100755 --- a/MuonSpectrometer/MuonAlignment/MuonAlignmentData/src/MuonAlignmentPar.cxx +++ b/MuonSpectrometer/MuonAlignment/MuonAlignmentData/src/MuonAlignmentPar.cxx @@ -6,8 +6,8 @@ MuonAlignmentPar::MuonAlignmentPar() : m_Jff(0), m_Jzz(0), m_Job(0), m_isNew(false) {} -void MuonAlignmentPar::setAmdbId(const std::string& type, int jff, int jzz, int job) { - m_Type = type; +void MuonAlignmentPar::setAmdbId(std::string_view type, int jff, int jzz, int job) { + m_Type = std::string(type); m_Jff = jff; m_Jzz = jzz; m_Job = job; diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingAlg.cxx b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingAlg.cxx index 088d736986f9a5cf1603dcd99d7f4cf30d148819..4328abcf232117d89708cc6237019240b6cb9256 100644 --- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingAlg.cxx +++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingAlg.cxx @@ -154,9 +154,8 @@ StatusCode MuonMDT_CablingAlg::execute(){ // convert the subdetector id to integer int subdetectorId = atoi(subdetector_id.c_str()); - std::string delimiter = ","; - std::vector<std::string> info_map; - MuonCalib::MdtStringUtils::tokenize(map,info_map,delimiter); + char delimiter = ','; + auto info_map = MuonCalib::MdtStringUtils::tokenize(map,delimiter); ATH_MSG_VERBOSE( " parsing of the map" ); int index=0; @@ -170,7 +169,7 @@ StatusCode MuonMDT_CablingAlg::execute(){ for(unsigned int i=0; i<info_map.size();i++){ ATH_MSG_VERBOSE( i << "..."<< info_map[i] ); - int info = atoi(info_map[i].c_str()); + int info = MuonCalib::MdtStringUtils::atoi(info_map[i]); index++; // this is a tdcid if (index==1) { diff --git a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/TGCDatabasePPToSL.cxx b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/TGCDatabasePPToSL.cxx index 4b6ebf7dc731bc3327523361251fc242b5706f71..57090fd3e05ae8ae3237fd4fd4c8aad0be06b0d7 100644 --- a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/TGCDatabasePPToSL.cxx +++ b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/TGCDatabasePPToSL.cxx @@ -15,7 +15,7 @@ TGCDatabasePPToSL::TGCDatabasePPToSL(const std::string& filename, : TGCDatabase(TGCDatabase::PPToSL, filename, blockname) { // read out ascii file and fill database - if(m_database.size()==0) readDB(); + if(m_database.empty()) readDB(); } TGCDatabasePPToSL::TGCDatabasePPToSL(const TGCDatabasePPToSL& right) @@ -28,10 +28,10 @@ void TGCDatabasePPToSL::readDB(void) { std::ifstream file(m_filename.c_str()); std::string buf; - unsigned int space = m_blockname.find(" "); - std::string module = m_blockname.substr(0,space); - std::string region = m_blockname.substr(space+1,1); - std::string type = m_blockname.substr(space+2); + unsigned int space = m_blockname.find(' '); + std::string_view module =std::string_view( m_blockname).substr(0,space); + std::string_view region = std::string_view(m_blockname).substr(space+1,1); + std::string_view type = std::string_view(m_blockname).substr(space+2); int offset=-1; if(type == "WT") offset = 1; @@ -44,16 +44,16 @@ void TGCDatabasePPToSL::readDB(void) { if(type == "S") offset = 2; while(getline(file,buf)){ - if(buf.substr(0,1)==region) break; + if(buf.compare(0,1,region)==0) break; } while(getline(file,buf)){ - if(buf.substr(1,module.size())==module) break; + if(buf.compare(1,module.size(),module)==0) break; } while(getline(file,buf)){ - if(buf.substr(0,2)!=" ") break; - if(buf.substr(2,1)=="0") offset--; + if(buf.compare(0,2," ")!=0) break; + if(buf.compare(2,1,"0")==0) offset--; if(offset==0){ std::istringstream line(buf); std::vector<int> entry; @@ -62,7 +62,7 @@ void TGCDatabasePPToSL::readDB(void) { line >> temp; entry.push_back(temp); } - m_database.push_back(entry); + m_database.emplace_back(std::move(entry)); } } diff --git a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/TGCDatabaseSLBToROD.cxx b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/TGCDatabaseSLBToROD.cxx index c02386de14eda1da0cdc6915e90ebcd48526b211..f889491cc46a97a90edfde14b8f6b9eca56e6bc5 100644 --- a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/TGCDatabaseSLBToROD.cxx +++ b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/TGCDatabaseSLBToROD.cxx @@ -15,7 +15,7 @@ TGCDatabaseSLBToROD::TGCDatabaseSLBToROD(const std::string& filename, : TGCDatabase(TGCDatabase::SLBToROD, filename, blockname) { // read out ascii file and fill database - if(m_database.size()==0) readDB(); + if(m_database.empty()) readDB(); } TGCDatabaseSLBToROD::TGCDatabaseSLBToROD(const TGCDatabaseSLBToROD& right) @@ -27,20 +27,20 @@ void TGCDatabaseSLBToROD::readDB(void) { std::ifstream file(m_filename.c_str()); std::string buf; - unsigned int space = m_blockname.find(" "); - std::string module = m_blockname.substr(0,space); - std::string type = m_blockname.substr(space+1); + unsigned int space = m_blockname.find(' '); + std::string_view module = std::string_view(m_blockname).substr(0,space); + std::string_view type = std::string_view(m_blockname).substr(space+1); while(getline(file,buf)){ - if(buf.substr(0,module.size())==module) break; + if(buf.compare(0,module.size(),module)==0) break; } while(getline(file,buf)){ - if(buf.substr(1,type.size())==type) break; + if(buf.compare(1,type.size(),type)==0) break; } while(getline(file,buf)){ - if(buf.substr(0,2)!=" ") break; + if(buf.compare(0,2," ")!=0) break; std::istringstream line(buf); std::vector<int> entry; for(int i=0; i<6; i++){ @@ -48,7 +48,7 @@ void TGCDatabaseSLBToROD::readDB(void) { line >> temp; entry.push_back(temp); } - m_database.push_back(entry); + m_database.emplace_back(std::move(entry)); } file.close(); diff --git a/MuonSpectrometer/MuonCablings/TGCcabling/src/TGCDatabasePPToSL.cxx b/MuonSpectrometer/MuonCablings/TGCcabling/src/TGCDatabasePPToSL.cxx index dc396a4e24df0327aafdced9f44fab3d8437e628..a3999dbbba1e0cd826a386d802e9bb5ce28cc4f6 100755 --- a/MuonSpectrometer/MuonCablings/TGCcabling/src/TGCDatabasePPToSL.cxx +++ b/MuonSpectrometer/MuonCablings/TGCcabling/src/TGCDatabasePPToSL.cxx @@ -15,10 +15,10 @@ void TGCDatabasePPToSL::readDB (void) { std::ifstream file(m_filename.c_str()); std::string buf; - unsigned int space = m_blockname.find(" "); - std::string module = m_blockname.substr(0,space); - std::string region = m_blockname.substr(space+1,1); - std::string type = m_blockname.substr(space+2); + unsigned int space = m_blockname.find(' '); + std::string_view module = std::string_view(m_blockname).substr(0,space); + std::string_view region = std::string_view(m_blockname).substr(space+1,1); + std::string_view type = std::string_view(m_blockname).substr(space+2); int offset=-1; if(type == "WT") offset = 1; @@ -31,16 +31,16 @@ void TGCDatabasePPToSL::readDB (void) { if(type == "S") offset = 2; while(getline(file,buf)){ - if(buf.substr(0,1)==region) break; + if(buf.compare(0,1, region)==0) break; } while(getline(file,buf)){ - if(buf.substr(1,module.size())==module) break; + if(buf.compare(1,module.size(), module)==0) break; } while(getline(file,buf)){ - if(buf.substr(0,2)!=" ") break; - if(buf.substr(2,1)=="0") offset--; + if(buf.compare(0,2," ")!=0) break; + if(buf.compare(2,1,"0")==0) offset--; if(offset==0){ std::istringstream line(buf); std::vector<int> entry; @@ -49,7 +49,7 @@ void TGCDatabasePPToSL::readDB (void) { line >> temp; entry.push_back(temp); } - m_database.push_back(entry); + m_database.emplace_back(std::move(entry)); } } diff --git a/MuonSpectrometer/MuonCablings/TGCcabling/src/TGCDatabaseSLBToROD.cxx b/MuonSpectrometer/MuonCablings/TGCcabling/src/TGCDatabaseSLBToROD.cxx index 68642cc11b3860ab8981e0ecec44ae920dca3137..157b00c344434dabce3559167324b69bf1dc991a 100755 --- a/MuonSpectrometer/MuonCablings/TGCcabling/src/TGCDatabaseSLBToROD.cxx +++ b/MuonSpectrometer/MuonCablings/TGCcabling/src/TGCDatabaseSLBToROD.cxx @@ -15,20 +15,20 @@ void TGCDatabaseSLBToROD::readDB (void) { std::ifstream file(m_filename.c_str()); std::string buf; - unsigned int space = m_blockname.find(" "); - std::string module = m_blockname.substr(0,space); - std::string type = m_blockname.substr(space+1); + unsigned int space = m_blockname.find(' '); + std::string_view module = std::string_view(m_blockname).substr(0,space); + std::string_view type = std::string_view(m_blockname).substr(space+1); while(getline(file,buf)){ - if(buf.substr(0,module.size())==module) break; + if(buf.compare(0,module.size(),module)==0) break; } while(getline(file,buf)){ - if(buf.substr(1,type.size())==type) break; + if(buf.compare(1,type.size(),type)==0) break; } while(getline(file,buf)){ - if(buf.substr(0,2)!=" ") break; + if(buf.compare(0,2," ")!=0) break; std::istringstream line(buf); std::vector<int> entry; for(int i=0; i<4; i++){ @@ -36,7 +36,7 @@ void TGCDatabaseSLBToROD::readDB (void) { line >> temp; entry.push_back(temp); } - m_database.push_back(entry); + m_database.emplace_back(std::move(entry)); } file.close(); diff --git a/MuonSpectrometer/MuonCalib/MuonCalibIdentifier/src/MdtGasChannel.cxx b/MuonSpectrometer/MuonCalib/MuonCalibIdentifier/src/MdtGasChannel.cxx index 147869b686dc8b0b46c60eb60d70f39d72a4ab76..3307f4a4e7663af1178703f356d0675c3d51c788 100644 --- a/MuonSpectrometer/MuonCalib/MuonCalibIdentifier/src/MdtGasChannel.cxx +++ b/MuonSpectrometer/MuonCalib/MuonCalibIdentifier/src/MdtGasChannel.cxx @@ -44,16 +44,13 @@ bool MdtGasChannel::readFile() lnstr>>chan; if(lnstr.eof()) continue; lnstr>>stations; - if((pos=chan.find("/"))==std::string::npos) continue; + if((pos=chan.find('/'))==std::string::npos) continue; chan[pos]=' '; std::istringstream chanstr(chan); GasChannel c; chanstr>>c.first; chanstr>>c.second; - while((pos=stations.find(","))!=std::string::npos) - { - stations[pos]=' '; - } + std::replace(stations.begin(), stations.end(), ',', ' '); std::istringstream st_stream(stations); std::string station; while(1) diff --git a/MuonSpectrometer/MuonCnv/MuonPrdSelector/src/MuonIdCutTool.cxx b/MuonSpectrometer/MuonCnv/MuonPrdSelector/src/MuonIdCutTool.cxx index f017b71f949d62e3e267dce3c10a23175d4a47fa..f7c7f3de6d63ed312197c4859f5479cae433d2b7 100644 --- a/MuonSpectrometer/MuonCnv/MuonPrdSelector/src/MuonIdCutTool.cxx +++ b/MuonSpectrometer/MuonCnv/MuonPrdSelector/src/MuonIdCutTool.cxx @@ -6,7 +6,7 @@ #include "MuonCalibTools/IdToFixedIdTool.h" #include "MuonCalibIdentifier/MuonFixedId.h" - +#include "MuonCondSvc/MdtStringUtils.h" //Tool to impliment a set of cuts on an Identifier, and then determine if a given ID is in that set @@ -72,15 +72,15 @@ StatusCode MuonIdCutTool::initialize() { int max = m_EELList.size(); for(int i=0;i<max;i++){ - std::string cut = m_EELList[i]; + std::string_view cut = m_EELList[i]; ATH_MSG_DEBUG( "EEL String: " << cut ); size_t length = cut.size(); size_t loc = cut.find('/'); if (loc!=std::string::npos){ - std::string etaString = cut.substr(0,loc); - std::string sectorString = cut.substr(loc+1,length-loc-1); - int eta = atoi(etaString.c_str()); - int sector = atoi(sectorString.c_str()); + std::string_view etaString = cut.substr(0,loc); + std::string_view sectorString = cut.substr(loc+1,length-loc-1); + int eta = MuonCalib::MdtStringUtils::atoi(etaString); + int sector = MuonCalib::MdtStringUtils::atoi(sectorString); ATH_MSG_DEBUG( "EEL eta/phi string: "<< etaString << " " << sectorString ); ATH_MSG_DEBUG( "EEL eta/phi int: "<< eta << " " << sector ); diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/CscCondDbAlg.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/CscCondDbAlg.cxx index df7780722a85480192c63fab0e0dd5d615cc30bd..ccda0c7b974763d9bf59677e2f804368aaff4a44 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/CscCondDbAlg.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/CscCondDbAlg.cxx @@ -115,7 +115,7 @@ StatusCode CscCondDbAlg::loadDataHv(writeHandle_t& writeHandle, CscCondDbData* w CondAttrListCollection::const_iterator itr; std::map<Identifier, int> layerMap; int hv_state, lv_state, hv_setpoint0, hv_setpoint1; - + using namespace MuonCalib; unsigned int chan_index = 0; for (itr = readCdo->begin(); itr != readCdo->end(); ++itr) { unsigned int chanNum = readCdo->chanNum(chan_index); @@ -129,27 +129,26 @@ StatusCode CscCondDbAlg::loadDataHv(writeHandle_t& writeHandle, CscCondDbData* w hv_setpoint0 = *(static_cast<const int*>((atr["HVSetpoint0"]).addressOfData())); hv_setpoint1 = *(static_cast<const int*>((atr["HVSetpoint1"]).addressOfData())); - std::string delimiter = "_"; - std::vector<std::string> tokens; - MuonCalib::MdtStringUtils::tokenize(csc_chan_name, tokens, delimiter); + char delimiter = '_'; + auto tokens = MuonCalib::MdtStringUtils::tokenize(csc_chan_name, delimiter); if ((hv_state != 1 or lv_state != 1 or hv_setpoint0 < 1000 or hv_setpoint1 < 1000) && !tokens.empty()) { - std::string layer = tokens[1]; - std::string number_layer = tokens[1].substr(1, 2); - int wirelayer = atoi(const_cast<char*>(number_layer.c_str())); + std::string_view layer = tokens[1]; + std::string_view number_layer = tokens[1].substr(1, 2); + int wirelayer = MdtStringUtils::atoi(number_layer); int eta = 0; - std::string eta_side = tokens[0].substr(0, 1); - if (eta_side == "A") eta = +1; - if (eta_side == "C") eta = -1; + char eta_side = tokens[0][0]; + if (eta_side == 'A') eta = +1; + if (eta_side == 'C') eta = -1; - std::string chamber_name; - std::string size_side = tokens[0].substr(1, 1); - if (size_side == "L") chamber_name = "CSL"; - if (size_side == "S") chamber_name = "CSS"; + std::string_view chamber_name; + char size_side = tokens[0][1]; + if (size_side == 'L') chamber_name = "CSL"; + if (size_side == 'S') chamber_name = "CSS"; int phi = 0; - std::string sector_side = tokens[0].substr(2, 4); + std::string_view sector_side = tokens[0].substr(2, 4); if (sector_side == "01" || sector_side == "02") phi = 1; if (sector_side == "03" || sector_side == "04") phi = 2; if (sector_side == "05" || sector_side == "06") phi = 3; @@ -161,7 +160,13 @@ StatusCode CscCondDbAlg::loadDataHv(writeHandle_t& writeHandle, CscCondDbData* w Identifier ChamberId = m_idHelperSvc->cscIdHelper().elementID(chamber_name, eta, phi); Identifier WireLayerId = m_idHelperSvc->cscIdHelper().channelID(ChamberId, 1, wirelayer, 1, 1); - std::string WireLayerstring = chamber_name + "_" + eta_side + "_" + sector_side + "_" + layer; + std::string WireLayerstring = std::string(chamber_name); + WireLayerstring += '_'; + WireLayerstring += eta_side; + WireLayerstring += '_'; + WireLayerstring += sector_side; + WireLayerstring += '_'; + WireLayerstring += layer; writeCdo->setDeadLayer(WireLayerstring, WireLayerId); if (layerMap.count(ChamberId) == 0) layerMap[ChamberId] = 0; diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MdtCondDbAlg.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MdtCondDbAlg.cxx index fe6ec8a4636f54ca00e0b75c36940b179076cc1c..f5b84d4a9af8b9812d18a08200f433c4a03e472d 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MdtCondDbAlg.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MdtCondDbAlg.cxx @@ -111,34 +111,36 @@ StatusCode MdtCondDbAlg::loadDataPsHv(writeHandle_t& wh, MdtCondDbData* writeCdo if (atr.size() == 1) { hv_name = *(static_cast<const std::string*>((atr["fsm_currentState"]).addressOfData())); - std::string delimiter = " "; - std::vector<std::string> tokens; - MuonCalib::MdtStringUtils::tokenize(hv_name, tokens, delimiter); + char delimiter = ' '; + auto tokens = MuonCalib::MdtStringUtils::tokenize(hv_name, delimiter); std::string thename; - std::string delimiter2 = "_"; - std::vector<std::string> tokens2; - MuonCalib::MdtStringUtils::tokenize(hv_payload, tokens2, delimiter2); + char delimiter2 = '_'; + auto tokens2 = MuonCalib::MdtStringUtils::tokenize(hv_payload, delimiter2); if (tokens[0] != "ON" && tokens[0] != "STANDBY" && tokens[0] != "UNKNOWN") { - int multilayer = atoi((tokens2[3].c_str())); - std::string chamber_name = tokens2[2]; + int multilayer = MuonCalib::MdtStringUtils::atoi(tokens2[3]); + const auto &chamber_name = tokens2[2]; Identifier ChamberId = m_condMapTool->ConvertToOffline(chamber_name, true); if (ChamberId.is_valid()) { Identifier MultiLayerId = m_idHelperSvc->mdtIdHelper().channelID(ChamberId, multilayer, 1, 1); - thename = chamber_name + "_multilayer" + tokens2[3]; + thename = std::string(chamber_name); + thename += "_multilayer"; + thename += tokens2[3]; writeCdo->setDeadMultilayer(thename, MultiLayerId); writeCdo->setDeadChamber(ChamberId); cachedDeadMultiLayersId_standby.push_back(MultiLayerId); } } if (tokens[0] == "STANDBY") { - int multilayer = atoi((tokens2[3].c_str())); - std::string chamber_name = tokens2[2]; + int multilayer = MuonCalib::MdtStringUtils::atoi(tokens2[3]); + const auto &chamber_name = tokens2[2]; Identifier ChamberId = m_condMapTool->ConvertToOffline(chamber_name, true); if (ChamberId.is_valid()) { Identifier MultiLayerId = m_idHelperSvc->mdtIdHelper().channelID(ChamberId, multilayer, 1, 1); - thename = chamber_name + "_multilayer" + tokens2[3]; + thename = std::string(chamber_name); + thename += "_multilayer"; + thename += tokens2[3]; writeCdo->setDeadMultilayer(thename, MultiLayerId); writeCdo->setDeadChamber(ChamberId); cachedDeadMultiLayersId_standby.push_back(MultiLayerId); @@ -188,17 +190,18 @@ StatusCode MdtCondDbAlg::loadDataPsHv(writeHandle_t& wh, MdtCondDbData* writeCdo if (atr_v0.size() == 1) { setPointsV0_name = *(static_cast<const float*>((atr_v0["readBackSettings_v0"]).addressOfData())); - std::string delimiter2 = "_"; - std::vector<std::string> tokens2; - MuonCalib::MdtStringUtils::tokenize(setPointsV0_payload, tokens2, delimiter2); - - int multilayer = atoi(tokens2[3].c_str()); - std::string chamber_name = tokens2[2]; - std::string thename = chamber_name + "_" + tokens2[3]; + char delimiter2 = '_'; + auto tokens2 = MuonCalib::MdtStringUtils::tokenize(setPointsV0_payload, delimiter2); + + int multilayer = MuonCalib::MdtStringUtils::atoi(tokens2[3]); + const auto &chamber_name = tokens2[2]; + std::string thename = std::string(chamber_name); + thename += '_'; + thename += tokens2[3]; Identifier ChamberId = m_condMapTool->ConvertToOffline(chamber_name); Identifier MultiLayerId = m_idHelperSvc->mdtIdHelper().channelID(ChamberId, multilayer, 1, 1); chamberML_V0[MultiLayerId] = setPointsV0_name; - mlname[MultiLayerId] = thename; + mlname[MultiLayerId] = std::move(thename); } } @@ -213,17 +216,18 @@ StatusCode MdtCondDbAlg::loadDataPsHv(writeHandle_t& wh, MdtCondDbData* writeCdo if (atr_v1.size() == 1) { setPointsV1_name = *(static_cast<const float*>((atr_v1["readBackSettings_v1"]).addressOfData())); - std::string delimiter2 = "_"; - std::vector<std::string> tokens2; - MuonCalib::MdtStringUtils::tokenize(setPointsV1_payload, tokens2, delimiter2); + char delimiter2 = '_'; + auto tokens2= MuonCalib::MdtStringUtils::tokenize(setPointsV1_payload, delimiter2); - int multilayer = atoi(tokens2[3].c_str()); - std::string chamber_name = tokens2[2]; - std::string thename = chamber_name + "_" + tokens2[3]; + int multilayer = MuonCalib::MdtStringUtils::atoi(tokens2[3]); + const auto &chamber_name = tokens2[2]; + std::string thename = std::string(chamber_name); + thename += '_'; + thename += tokens2[3]; Identifier ChamberId = m_condMapTool->ConvertToOffline(chamber_name); Identifier MultiLayerId = m_idHelperSvc->mdtIdHelper().channelID(ChamberId, multilayer, 1, 1); chamberML_V1[MultiLayerId] = setPointsV1_name; - mlname[MultiLayerId] = thename; + mlname[MultiLayerId] = std::move(thename); } } @@ -266,15 +270,13 @@ StatusCode MdtCondDbAlg::loadDataPsLv(writeHandle_t& wh, MdtCondDbData* writeCdo if (!atr.size()) { continue; } hv_name = *(static_cast<const std::string*>((atr["fsm_currentState"]).addressOfData())); - std::string delimiter = " "; - std::vector<std::string> tokens; - MuonCalib::MdtStringUtils::tokenize(hv_name, tokens, delimiter); - std::string delimiter2 = "_"; - std::vector<std::string> tokens2; - MuonCalib::MdtStringUtils::tokenize(hv_payload, tokens2, delimiter2); + char delimiter = ' '; + auto tokens = MuonCalib::MdtStringUtils::tokenize(hv_name, delimiter); + char delimiter2 = '_'; + auto tokens2 = MuonCalib::MdtStringUtils::tokenize(hv_payload, delimiter2); if (tokens[0] != "ON") { - std::string chamber_name = tokens2[2]; + const auto &chamber_name = tokens2[2]; Identifier ChamberId = m_condMapTool->ConvertToOffline(chamber_name, true); if (ChamberId.is_valid()) { writeCdo->setDeadStation(chamber_name, ChamberId); } } @@ -314,17 +316,16 @@ StatusCode MdtCondDbAlg::loadDataHv(writeHandle_t& wh, MdtCondDbData* writeCdo, hv_v1_ml2 = *(static_cast<const float*>((atr["v1set_ML2"]).addressOfData())); std::string thename; - std::string delimiter2 = "_"; - std::vector<std::string> tokens2; - MuonCalib::MdtStringUtils::tokenize(hv_payload, tokens2, delimiter2); + char delimiter2 = '_'; + auto tokens2 = MuonCalib::MdtStringUtils::tokenize(hv_payload, delimiter2); if (hv_name_ml1 != "ON" && hv_name_ml1 != "STANDBY" && hv_name_ml1 != "UNKNOWN") { int multilayer = 1; - std::string chamber_name = tokens2[0]; + const auto &chamber_name = tokens2[0]; Identifier ChamberId = m_condMapTool->ConvertToOffline(chamber_name, true); if (ChamberId.is_valid()) { Identifier MultiLayerId = m_idHelperSvc->mdtIdHelper().channelID(ChamberId, multilayer, 1, 1); - thename = chamber_name + "_multilayer1"; + thename = std::string(chamber_name) + "_multilayer1"; writeCdo->setDeadMultilayer(thename, MultiLayerId); writeCdo->setDeadChamber(ChamberId); } @@ -332,11 +333,11 @@ StatusCode MdtCondDbAlg::loadDataHv(writeHandle_t& wh, MdtCondDbData* writeCdo, if (hv_name_ml1 == "STANDBY" && hv_v0_ml1 != hv_v1_ml1) { int multilayer = 1; - std::string chamber_name = tokens2[0]; + const auto &chamber_name = tokens2[0]; Identifier ChamberId = m_condMapTool->ConvertToOffline(chamber_name, true); if (ChamberId.is_valid()) { Identifier MultiLayerId = m_idHelperSvc->mdtIdHelper().channelID(ChamberId, multilayer, 1, 1); - thename = chamber_name + "_multilayer1"; + thename = std::string(chamber_name) + "_multilayer1"; writeCdo->setDeadMultilayer(thename, MultiLayerId); writeCdo->setDeadChamber(ChamberId); } @@ -344,11 +345,11 @@ StatusCode MdtCondDbAlg::loadDataHv(writeHandle_t& wh, MdtCondDbData* writeCdo, if (hv_name_ml2 != "ON" && hv_name_ml2 != "STANDBY" && hv_name_ml2 != "UNKNOWN") { int multilayer = 2; - std::string chamber_name = tokens2[0]; + const auto &chamber_name = tokens2[0]; Identifier ChamberId = m_condMapTool->ConvertToOffline(chamber_name, true); if (ChamberId.is_valid()) { Identifier MultiLayerId = m_idHelperSvc->mdtIdHelper().channelID(ChamberId, multilayer, 1, 1); - thename = chamber_name + "_multilayer2"; + thename = std::string(chamber_name) + "_multilayer2"; writeCdo->setDeadMultilayer(thename, MultiLayerId); writeCdo->setDeadChamber(ChamberId); } @@ -356,11 +357,11 @@ StatusCode MdtCondDbAlg::loadDataHv(writeHandle_t& wh, MdtCondDbData* writeCdo, if (hv_name_ml2 == "STANDBY" && hv_v0_ml2 != hv_v1_ml2) { int multilayer = 2; - std::string chamber_name = tokens2[0]; + const auto &chamber_name = tokens2[0]; Identifier ChamberId = m_condMapTool->ConvertToOffline(chamber_name, true); if (ChamberId.is_valid()) { Identifier MultiLayerId = m_idHelperSvc->mdtIdHelper().channelID(ChamberId, multilayer, 1, 1); - thename = chamber_name + "_multilayer2"; + thename = std::string(chamber_name) + "_multilayer2"; writeCdo->setDeadMultilayer(thename, MultiLayerId); writeCdo->setDeadChamber(ChamberId); } @@ -368,12 +369,12 @@ StatusCode MdtCondDbAlg::loadDataHv(writeHandle_t& wh, MdtCondDbData* writeCdo, if (hv_name_ml2 != "ON" && hv_name_ml2 != "STANDBY" && hv_name_ml2 != "UNKNOWN" && hv_name_ml1 != "ON" && hv_name_ml1 != "STANDBY" && hv_name_ml1 != "UNKNOWN") { - std::string chamber_name = tokens2[0]; + const auto &chamber_name = tokens2[0]; Identifier ChamberId = m_condMapTool->ConvertToOffline(chamber_name, true); if (ChamberId.is_valid()) { writeCdo->setDeadStation(chamber_name, ChamberId); } } if (hv_name_ml2 == "STANDBY" && hv_v0_ml2 != hv_v1_ml2 && hv_name_ml1 == "STANDBY" && hv_v0_ml1 != hv_v1_ml1) { - std::string chamber_name = tokens2[0]; + const auto &chamber_name = tokens2[0]; Identifier ChamberId = m_condMapTool->ConvertToOffline(chamber_name, true); if (ChamberId.is_valid()) { writeCdo->setDeadStation(chamber_name, ChamberId); } } @@ -402,15 +403,13 @@ StatusCode MdtCondDbAlg::loadDataLv(writeHandle_t& wh, MdtCondDbData* writeCdo, if (!atr.size()) { continue; } hv_name = *(static_cast<const std::string*>((atr["fsmCurrentState_LV"]).addressOfData())); - std::string delimiter = " "; - std::vector<std::string> tokens; - MuonCalib::MdtStringUtils::tokenize(hv_name, tokens, delimiter); - std::string delimiter2 = "_"; - std::vector<std::string> tokens2; - MuonCalib::MdtStringUtils::tokenize(hv_payload, tokens2, delimiter2); + char delimiter = ' '; + auto tokens = MuonCalib::MdtStringUtils::tokenize(hv_name, delimiter); + char delimiter2 = '_'; + auto tokens2 = MuonCalib::MdtStringUtils::tokenize(hv_payload, delimiter2); if (tokens[0] != "ON") { - std::string chamber_name = tokens2[0]; + const auto &chamber_name = tokens2[0]; Identifier ChamberId = m_condMapTool->ConvertToOffline(chamber_name, true); if (ChamberId.is_valid()) { writeCdo->setDeadStation(chamber_name, ChamberId); } } @@ -437,12 +436,11 @@ StatusCode MdtCondDbAlg::loadDroppedChambers(writeHandle_t& wh, MdtCondDbData* w std::string chamber_dropped; chamber_dropped = *(static_cast<const std::string*>((atr["Chambers_disabled"]).addressOfData())); - std::string delimiter = " "; - std::vector<std::string> tokens; - MuonCalib::MdtStringUtils::tokenize(chamber_dropped, tokens, delimiter); + char delimiter = ' '; + auto tokens = MuonCalib::MdtStringUtils::tokenize(chamber_dropped, delimiter); for (unsigned int i = 0; i < tokens.size(); i++) { if (tokens[i] != "0") { - std::string chamber_name = tokens[i]; + const auto &chamber_name = tokens[i]; Identifier ChamberId = m_condMapTool->ConvertToOffline(chamber_name, true); if (ChamberId.is_valid()) { writeCdo->setDeadStation(chamber_name, ChamberId); } } @@ -474,22 +472,21 @@ StatusCode MdtCondDbAlg::loadMcDeadElements(writeHandle_t& wh, MdtCondDbData* wr list_tube = *(static_cast<const std::string*>((atr["Dead_tube"]).addressOfData())); std::string thename; - std::string delimiter = " "; - std::vector<std::string> tokens; - std::vector<std::string> tokens_mlayer; - std::vector<std::string> tokens_layer; + char delimiter = ' '; Identifier ChamberId = m_condMapTool->ConvertToOffline(chamber_name); - MuonCalib::MdtStringUtils::tokenize(list_tube, tokens, delimiter); - MuonCalib::MdtStringUtils::tokenize(list_mlayer, tokens_mlayer, delimiter); - MuonCalib::MdtStringUtils::tokenize(list_layer, tokens_layer, delimiter); + auto tokens = MuonCalib::MdtStringUtils::tokenize(list_tube, delimiter); + auto tokens_mlayer = MuonCalib::MdtStringUtils::tokenize(list_mlayer, delimiter); + auto tokens_layer = MuonCalib::MdtStringUtils::tokenize(list_layer, delimiter); for (unsigned int i = 0; i < tokens.size(); i++) { if (tokens[i] != "0") { - int ml = atoi((tokens[i].substr(0, 1)).c_str()); - int layer = atoi((tokens[i].substr(1, 2)).c_str()); - int tube = atoi((tokens[i].substr(2)).c_str()); + int ml = MuonCalib::MdtStringUtils::atoi(tokens[i].substr(0, 1)); + int layer = MuonCalib::MdtStringUtils::atoi(tokens[i].substr(1, 2)); + int tube = MuonCalib::MdtStringUtils::atoi(tokens[i].substr(2)); Identifier ChannelId = m_idHelperSvc->mdtIdHelper().channelID(ChamberId, ml, layer, tube); - thename = chamber_name + "_" + tokens[i]; + thename = chamber_name; + thename += '_'; + thename += tokens[i]; writeCdo->setDeadTube(thename, ChannelId); writeCdo->setDeadChamber(ChamberId); } @@ -497,9 +494,11 @@ StatusCode MdtCondDbAlg::loadMcDeadElements(writeHandle_t& wh, MdtCondDbData* wr for (unsigned int i = 0; i < tokens_mlayer.size(); i++) { if (tokens_mlayer[i] != "0") { - int ml = atoi((tokens_mlayer[i].substr(0)).c_str()); + int ml = MuonCalib::MdtStringUtils::atoi(tokens_mlayer[i].substr(0)); Identifier ChannelId = m_idHelperSvc->mdtIdHelper().channelID(ChamberId, ml, 1, 1); - thename = chamber_name + "_" + tokens[i]; + thename = chamber_name; + thename += '_'; + thename += tokens[i]; writeCdo->setDeadMultilayer(thename, ChannelId); writeCdo->setDeadChamber(ChamberId); } @@ -507,10 +506,12 @@ StatusCode MdtCondDbAlg::loadMcDeadElements(writeHandle_t& wh, MdtCondDbData* wr for (unsigned int i = 0; i < tokens_layer.size(); i++) { if (tokens_layer[i] != "0") { - int ml = atoi((tokens_layer[i].substr(0, 1)).c_str()); - int layer = atoi((tokens_layer[i].substr(1)).c_str()); + int ml = MuonCalib::MdtStringUtils::atoi(tokens_layer[i].substr(0, 1)); + int layer = MuonCalib::MdtStringUtils::atoi(tokens_layer[i].substr(1)); Identifier ChannelId = m_idHelperSvc->mdtIdHelper().channelID(ChamberId, ml, layer, 1); - thename = chamber_name + "_" + tokens[i]; + thename = chamber_name; + thename += '_'; + thename += tokens[i]; writeCdo->setDeadLayer(thename, ChannelId); writeCdo->setDeadChamber(ChamberId); } @@ -543,17 +544,19 @@ StatusCode MdtCondDbAlg::loadMcDeadTubes(writeHandle_t& wh, MdtCondDbData* write chamber_name = *(static_cast<const std::string*>((atr["Chamber_Name"]).addressOfData())); std::string thename; - std::vector<std::string> tokens; - std::string delimiter = " "; - MuonCalib::MdtStringUtils::tokenize(dead_tube, tokens, delimiter); + char delimiter = ' '; + auto tokens = MuonCalib::MdtStringUtils::tokenize(dead_tube, delimiter); Identifier ChamberId = m_condMapTool->ConvertToOffline(chamber_name); for (unsigned int i = 0; i < tokens.size(); i++) { - int ml = atoi((tokens[i].substr(0, 1)).c_str()); - int layer = atoi((tokens[i].substr(1, 2)).c_str()); - int tube = atoi((tokens[i].substr(2)).c_str()); - thename = chamber_name + "_" + tokens[i]; - tube_list = tokens[i] + "."; + int ml = MuonCalib::MdtStringUtils::atoi(tokens[i].substr(0, 1)); + int layer = MuonCalib::MdtStringUtils::atoi(tokens[i].substr(1, 2)); + int tube = MuonCalib::MdtStringUtils::atoi(tokens[i].substr(2)); + thename = chamber_name; + thename += '_'; + thename += tokens[i]; + tube_list = tokens[i]; + tube_list += '.'; Identifier ChannelId = m_idHelperSvc->mdtIdHelper().channelID(ChamberId, ml, layer, tube); writeCdo->setDeadTube(thename, ChannelId); } @@ -585,15 +588,13 @@ StatusCode MdtCondDbAlg::loadMcNoisyChannels(writeHandle_t& wh, MdtCondDbData* w if (atr.size()) { hv_name = *(static_cast<const std::string*>((atr["fsm_currentState"]).addressOfData())); - std::string delimiter = " "; - std::vector<std::string> tokens; - MuonCalib::MdtStringUtils::tokenize(hv_name, tokens, delimiter); - std::string delimiter2 = "_"; - std::vector<std::string> tokens2; - MuonCalib::MdtStringUtils::tokenize(hv_payload, tokens2, delimiter2); + char delimiter = ' '; + auto tokens = MuonCalib::MdtStringUtils::tokenize(hv_name, delimiter); + char delimiter2 = '_'; + auto tokens2 = MuonCalib::MdtStringUtils::tokenize(hv_payload, delimiter2); if (tokens[0] != "ON") { - std::string chamber_name = tokens2[2]; + const auto &chamber_name = tokens2[2]; Identifier ChamberId = m_condMapTool->ConvertToOffline(chamber_name); writeCdo->setDeadStation(chamber_name, ChamberId); } diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MuonAlignmentCondAlg.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MuonAlignmentCondAlg.cxx index 8705b75c43f0f82d0cc98685ba66f3eaf5e30c5d..7c64daf532f7cd9a2095573b6b5810de1b075eaf 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MuonAlignmentCondAlg.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MuonAlignmentCondAlg.cxx @@ -187,35 +187,30 @@ StatusCode MuonAlignmentCondAlg::loadAlignABLines() { } StatusCode MuonAlignmentCondAlg::loadAlignABLinesData(const std::string& folderName, const std::string& data, nlohmann::json& json, bool hasBLine) { - // Check the first word to see if it is a correction - std::string type; + using namespace MuonCalib; // Parse corrections - std::string since_str; - std::string till_str; - std::string delimiter = "\n"; + char delimiter = '\n'; json = nlohmann::json::array(); - std::vector<std::string> lines; - MuonCalib::MdtStringUtils::tokenize(data, lines, delimiter); - for (const std::string& blobline : lines) { + auto lines = MdtStringUtils::tokenize(data, delimiter); + for (const std::string_view& blobline : lines) { nlohmann::json line; - std::string delimiter = ":"; - std::vector<std::string> tokens; - MuonCalib::MdtStringUtils::tokenize(blobline, tokens, delimiter); + char delimiter = ':'; + const auto tokens = MdtStringUtils::tokenize(blobline, delimiter); // Check if tokens is not empty if (tokens.empty()) { ATH_MSG_FATAL("Empty string retrieved from DB in folder " << folderName); return StatusCode::FAILURE; } - type = tokens[0]; + const std::string_view &type = tokens[0]; // Parse line - if (type.find('#') == 0) { + if (type[0] == '#') { // skip it continue; } - if (type.find("Corr") == 0) { + if (type.compare(0, 4, "Corr") == 0) { //#: Corr line is counter typ, jff, jzz, job, * Chamber information //#: svalue, zvalue, tvalue, tsv, tzv, ttv, * A lines //#: bz, bp, bn, sp, sn, tw, pg, tr, eg, ep, en * B lines @@ -224,9 +219,8 @@ StatusCode MuonAlignmentCondAlg::loadAlignABLinesData(const std::string& folderN // Corr: EMS 4 1 0 2.260 3.461 28.639 -0.002402 -0.002013 0.000482 -0.006 -0.013 -0.006000 0.000000 // 0.000000 0.026 -0.353 0.000000 0.070000 0.012000 -0.012 EMS1A08 - std::string delimiter = " "; - std::vector<std::string> tokens; - MuonCalib::MdtStringUtils::tokenize(blobline, tokens, delimiter); + char delimiter = ' '; + auto tokens = MdtStringUtils::tokenize(blobline, delimiter); // Check if tokens has the right length // if (tokens.size() != 12 and tokens.size() != 23) { @@ -237,7 +231,7 @@ StatusCode MuonAlignmentCondAlg::loadAlignABLinesData(const std::string& folderN } ATH_MSG_VERBOSE("Parsing Line = "); - for (const std::string& token : tokens) ATH_MSG_VERBOSE(token << " | "); + for (const std::string_view& token : tokens) ATH_MSG_VERBOSE(token << " | "); ATH_MSG_VERBOSE(" "); bool thisRowHasBLine = true; @@ -254,16 +248,13 @@ StatusCode MuonAlignmentCondAlg::loadAlignABLinesData(const std::string& folderN int jff; int jzz; int job; - std::string stationType = tokens[ival++]; - line["typ"] = stationType; - std::string jff_str = tokens[ival++]; - sscanf(jff_str.c_str(), "%80d", &jff); + std::string stationType = std::string(tokens[ival++]); + line["typ"] = std::move(stationType); + jff = MdtStringUtils::atoi(tokens[ival++]); line["jff"] = jff; - std::string jzz_str = tokens[ival++]; - sscanf(jzz_str.c_str(), "%80d", &jzz); + jzz = MdtStringUtils::atoi(tokens[ival++]); line["jzz"] = jzz; - std::string job_str = tokens[ival++]; - sscanf(job_str.c_str(), "%80d", &job); + job = MdtStringUtils::atoi(tokens[ival++]); line["job"] = job; // A-line @@ -273,78 +264,58 @@ StatusCode MuonAlignmentCondAlg::loadAlignABLinesData(const std::string& folderN float ths; float thz; float tht; - std::string s_str = tokens[ival++]; - sscanf(s_str.c_str(), "%80f", &s); + s = MdtStringUtils::stof(tokens[ival++]); line["svalue"] = s; - std::string z_str = tokens[ival++]; - sscanf(z_str.c_str(), "%80f", &z); + z = MdtStringUtils::stof(tokens[ival++]); line["zvalue"] = z; - std::string t_str = tokens[ival++]; - sscanf(t_str.c_str(), "%80f", &t); + t = MdtStringUtils::stof(tokens[ival++]); line["tvalue"] = t; - std::string ths_str = tokens[ival++]; - sscanf(ths_str.c_str(), "%80f", &ths); + ths = MdtStringUtils::stof(tokens[ival++]); line["tsv"] = ths; - std::string thz_str = tokens[ival++]; - sscanf(thz_str.c_str(), "%80f", &thz); + thz = MdtStringUtils::stof(tokens[ival++]); line["tzv"] = thz; - std::string tht_str = tokens[ival++]; - sscanf(tht_str.c_str(), "%80f", &tht); + tht = MdtStringUtils::stof(tokens[ival++]); line["ttv"] = tht; // B-line float bz, bp, bn, sp, sn, tw, pg, tr, eg, ep, en; float xAtlas, yAtlas; - std::string ChamberHwName = ""; if (hasBLine && thisRowHasBLine) { - std::string tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(), "%80f", &bz); + bz = MdtStringUtils::stof(tokens[ival++]); line["bz"] = bz; - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(), "%80f", &bp); + bp = MdtStringUtils::stof(tokens[ival++]); line["bp"] = bp; - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(), "%80f", &bn); + bn = MdtStringUtils::stof(tokens[ival++]); line["bn"] = bn; - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(), "%80f", &sp); + sp = MdtStringUtils::stof(tokens[ival++]); line["sp"] = sp; - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(), "%80f", &sn); + sn = MdtStringUtils::stof(tokens[ival++]); line["sn"] = sn; - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(), "%80f", &tw); + tw = MdtStringUtils::stof(tokens[ival++]); line["tw"] = tw; - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(), "%80f", &pg); + pg = MdtStringUtils::stof(tokens[ival++]); line["pg"] = pg; - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(), "%80f", &tr); + tr = MdtStringUtils::stof(tokens[ival++]); line["tr"] = tr; - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(), "%80f", &eg); + eg = MdtStringUtils::stof(tokens[ival++]); line["eg"] = eg; - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(), "%80f", &ep); + ep = MdtStringUtils::stof(tokens[ival++]); line["ep"] = ep; - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(), "%80f", &en); + en = MdtStringUtils::stof(tokens[ival++]); line["en"] = en; - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(), "%80f", &xAtlas); + xAtlas = MdtStringUtils::stof(tokens[ival++]); line["xAtlas"] = xAtlas; - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(), "%80f", &yAtlas); + yAtlas = MdtStringUtils::stof(tokens[ival++]); line["yAtlas"] = yAtlas; // ChamberName (hardware convention) - line["hwElement"] = tokens[ival++]; + line["hwElement"] = std::string(tokens[ival++]); } } if (line.empty()) continue; - json.push_back(line); + json.push_back(std::move(line)); } return StatusCode::SUCCESS; } @@ -802,43 +773,36 @@ StatusCode MuonAlignmentCondAlg::loadAlignILines(const std::string& folderName) } StatusCode MuonAlignmentCondAlg::loadAlignILinesData(const std::string& folderName, const std::string& data, nlohmann::json& json) { - // Check the first word to see if it is a correction - std::string type; - + using namespace MuonCalib; // Parse corrections - std::string since_str; - std::string till_str; - std::string delimiter = "\n"; + char delimiter = '\n'; json = nlohmann::json::array(); - std::vector<std::string> lines; - MuonCalib::MdtStringUtils::tokenize(data, lines, delimiter); - for (const std::string& blobline : lines) { + auto lines = MuonCalib::MdtStringUtils::tokenize(data, delimiter); + for (const std::string_view& blobline : lines) { nlohmann::json line; - std::string delimiter = ":"; - std::vector<std::string> tokens; - MuonCalib::MdtStringUtils::tokenize(blobline, tokens, delimiter); + char delimiter = ':'; + auto tokens = MuonCalib::MdtStringUtils::tokenize(blobline, delimiter); // Check if tokens is not empty if (tokens.empty()) { ATH_MSG_FATAL("Empty string retrieved from DB in folder " << folderName); return StatusCode::FAILURE; } - type = tokens[0]; + const std::string_view &type = tokens[0]; // Parse line - if (type.find('#') == 0) { + if ('#' == type[0]) { // skip it continue; } - if (type.find("Corr") == 0) { + if (type.compare(0, 4, "Corr") == 0) { //# Amdb like clob for ilines using geometry tag ISZT-R06-02 //# ISZT_DATA_ID VERS TYP JFF JZZ JOB JLAY TRAS TRAZ TRAT ROTS ROTZ ROTT // //.... example // Corr: CSL 1 -1 3 1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 - std::string delimiter = " "; - std::vector<std::string> tokens; - MuonCalib::MdtStringUtils::tokenize(blobline, tokens, delimiter); + char delimiter = ' '; + auto tokens = MuonCalib::MdtStringUtils::tokenize(blobline, delimiter); if (tokens.size() != 12) { ATH_MSG_FATAL("Invalid length in string retrieved from DB in folder " << folderName << " String length is " << tokens.size()); @@ -846,7 +810,7 @@ StatusCode MuonAlignmentCondAlg::loadAlignILinesData(const std::string& folderNa } ATH_MSG_VERBOSE("Parsing Line = "); - for (const std::string& token : tokens) ATH_MSG_VERBOSE(token << " | "); + for (const std::string_view& token : tokens) ATH_MSG_VERBOSE(token << " | "); ATH_MSG_VERBOSE(" "); // Start parsing @@ -857,19 +821,15 @@ StatusCode MuonAlignmentCondAlg::loadAlignILinesData(const std::string& folderNa int jzz; int job; int jlay; - std::string stationType = tokens[ival++]; - line["typ"] = stationType; - std::string jff_str = tokens[ival++]; - sscanf(jff_str.c_str(), "%80d", &jff); + std::string stationType = std::string(tokens[ival++]); + line["typ"] = std::move(stationType); + jff = MdtStringUtils::atoi(tokens[ival++]); line["jff"] = jff; - std::string jzz_str = tokens[ival++]; - sscanf(jzz_str.c_str(), "%80d", &jzz); + jzz = MdtStringUtils::atoi(tokens[ival++]); line["jzz"] = jzz; - std::string job_str = tokens[ival++]; - sscanf(job_str.c_str(), "%80d", &job); + job = MdtStringUtils::atoi(tokens[ival++]); line["job"] = job; - std::string jlay_str = tokens[ival++]; - sscanf(jlay_str.c_str(), "%80d", &jlay); + jlay = MdtStringUtils::atoi(tokens[ival++]); line["jlay"] = jlay; // I-line @@ -879,27 +839,21 @@ StatusCode MuonAlignmentCondAlg::loadAlignILinesData(const std::string& folderNa float rots; float rotz; float rott; - std::string tras_str = tokens[ival++]; - sscanf(tras_str.c_str(), "%80f", &tras); + tras = MdtStringUtils::stof(tokens[ival++]); line["tras"] = tras; - std::string traz_str = tokens[ival++]; - sscanf(traz_str.c_str(), "%80f", &traz); + traz = MdtStringUtils::stof(tokens[ival++]); line["traz"] = traz; - std::string trat_str = tokens[ival++]; - sscanf(trat_str.c_str(), "%80f", &trat); + trat = MdtStringUtils::stof(tokens[ival++]); line["trat"] = trat; - std::string rots_str = tokens[ival++]; - sscanf(rots_str.c_str(), "%80f", &rots); + rots = MdtStringUtils::stof(tokens[ival++]); line["rots"] = rots; - std::string rotz_str = tokens[ival++]; - sscanf(rotz_str.c_str(), "%80f", &rotz); + rotz = MdtStringUtils::stof(tokens[ival++]); line["rotz"] = rotz; - std::string rott_str = tokens[ival++]; - sscanf(rott_str.c_str(), "%80f", &rott); + rott = MdtStringUtils::stof(tokens[ival++]); line["rott"] = rott; } if (line.empty()) continue; - json.push_back(line); + json.push_back(std::move(line)); } return StatusCode::SUCCESS; } @@ -957,34 +911,29 @@ StatusCode MuonAlignmentCondAlg::loadAlignAsBuilt(const std::string& folderName) ATH_MSG_DEBUG("Data load is " << data << " FINISHED HERE "); - // Check the first word to see if it is a correction - std::string type; - // Parse corrections - std::string delimiter = "\n"; + char delimiter = '\n'; - std::vector<std::string> lines; - MuonCalib::MdtStringUtils::tokenize(data, lines, delimiter); - for (const std::string& blobline : lines) { + auto lines = MuonCalib::MdtStringUtils::tokenize(data, delimiter); + for (const std::string_view& blobline : lines) { ++nLines; - std::string delimiter = ":"; - std::vector<std::string> tokens; - MuonCalib::MdtStringUtils::tokenize(blobline, tokens, delimiter); + char delimiter = ':'; + auto tokens = MuonCalib::MdtStringUtils::tokenize(blobline, delimiter); // Check if tokens is not empty if (tokens.empty()) { ATH_MSG_FATAL("Empty string retrieved from DB in folder " << folderName); return StatusCode::FAILURE; } - type = tokens[0]; + const std::string_view &type = tokens[0]; // Parse line - if (type.find('#') == 0) { + if (type[0] == '#') { // skip it continue; } - if (type.find("Corr") == 0) { - if (!xPar.setFromAscii(blobline)) { + if (type.compare(0, 4, "Corr") == 0) { + if (!xPar.setFromAscii(std::string(blobline))) { ATH_MSG_ERROR("Unable to parse AsBuilt params from Ascii line: " << blobline); continue; } diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MuonAlignmentErrorDbAlg.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MuonAlignmentErrorDbAlg.cxx index 624856e73c0244dbbd756a34776d9b6b839722f3..6aba041fbc47922d222454effce3fa4d045f3938 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MuonAlignmentErrorDbAlg.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MuonAlignmentErrorDbAlg.cxx @@ -80,7 +80,7 @@ StatusCode MuonAlignmentErrorDbAlg::execute() { std::string line; while (getline(indata, line)) { // READING COMMENTS - if (line.substr(0, 1) == "#") { + if (line.compare(0, 1,"#") == 0) { // ATH_MSG_DEBUG("Reading a commented line saying " << line); continue; } @@ -94,7 +94,7 @@ StatusCode MuonAlignmentErrorDbAlg::execute() { double rotation(0.); // GET INPUT FILE VERSION - if (line.substr(0, 7) == "version") { + if (line.compare(0, 7, "version") == 0) { std::istringstream(line) >> flag >> version_tag; ATH_MSG_INFO("*****************************************"); ATH_MSG_INFO("Input file version " << version_tag); diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/RpcCondDbAlg.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/RpcCondDbAlg.cxx index bb9336fec3e4ec1cce3fbc8b3f6d2a69fa5017e4..ae8acb085ee256451d9b2ab512143e8c3cd9b57f 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/RpcCondDbAlg.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/RpcCondDbAlg.cxx @@ -5,7 +5,7 @@ #include "MuonCondAlg/RpcCondDbAlg.h" #include "AthenaKernel/IOVInfiniteRange.h" - +using namespace MuonCalib; // constructor RpcCondDbAlg::RpcCondDbAlg(const std::string& name, ISvcLocator* pSvcLocator) : AthReentrantAlgorithm(name, pSvcLocator), m_condSvc("CondSvc", name) { @@ -92,7 +92,6 @@ StatusCode RpcCondDbAlg::loadDataDeadPanels(EventIDRange& rangeW, RpcCondDbData* ATH_MSG_DEBUG("Size of CondAttrListCollection " << readHandle.fullKey() << " readCdo->size()= " << readCdo->size()); ATH_MSG_DEBUG("Range of input is " << range << ", range of output is " << rangeW); - CondAttrListCollection::const_iterator itr; unsigned int chan_index = 0; for (itr = readCdo->begin(); itr != readCdo->end(); ++itr) { @@ -110,17 +109,15 @@ StatusCode RpcCondDbAlg::loadDataDeadPanels(EventIDRange& rangeW, RpcCondDbData* ATH_MSG_DEBUG("panel_dead " << panel_dead); ATH_MSG_DEBUG("panel_reason " << panel_reason); - const char* ch_tmp; - std::string delimiter = ","; - std::vector<std::string> info_panel; - MuonCalib::MdtStringUtils::tokenize(panel_dead, info_panel, delimiter); + char delimiter = ','; + auto info_panel = MuonCalib::MdtStringUtils::tokenize(panel_dead, delimiter); Identifier PanelId; for (unsigned int i = 0; i < info_panel.size(); i++) { - ch_tmp = info_panel[i].c_str(); - PanelId = atoi(ch_tmp); - ATH_MSG_DEBUG("info_panel " << ch_tmp << " " << atoi(ch_tmp)); + const std::string_view &ch_tmp = info_panel[i]; + PanelId = MdtStringUtils::atoi(ch_tmp); + ATH_MSG_DEBUG("info_panel " << ch_tmp << " " << PanelId); if (PanelId.get_compact()) { ATH_MSG_DEBUG("DEADPANEL " << m_idHelperSvc->rpcIdHelper().show_to_string(PanelId)); @@ -175,16 +172,14 @@ StatusCode RpcCondDbAlg::loadDataOffPanels(EventIDRange& rangeW, RpcCondDbData* ATH_MSG_DEBUG("panel_off " << panel_off); ATH_MSG_DEBUG("panel_reason " << panel_reason); - const char* ch_tmp; - std::string delimiter = ","; - std::vector<std::string> info_panel; - MuonCalib::MdtStringUtils::tokenize(panel_off, info_panel, delimiter); + char delimiter = ','; + auto info_panel = MuonCalib::MdtStringUtils::tokenize(panel_off, delimiter); Identifier PanelId; for (unsigned int i = 0; i < info_panel.size(); i++) { - ch_tmp = info_panel[i].c_str(); - PanelId = atoi(ch_tmp); + const std::string_view &ch_tmp = info_panel[i]; + PanelId = MdtStringUtils::atoi(ch_tmp); ATH_MSG_DEBUG("info_panel " << ch_tmp << " " << PanelId); if (PanelId.get_compact()) { @@ -224,14 +219,12 @@ StatusCode RpcCondDbAlg::loadMcElementStatus(EventIDRange& rangeW, RpcCondDbData ATH_MSG_DEBUG("Range of input is " << range << ", range of output is " << rangeW); CondAttrListCollection::const_iterator itr; - unsigned int chan_index = 0; unsigned int iFracDeadStrip = 0; for (itr = readCdo->begin(); itr != readCdo->end(); ++itr) { const coral::AttributeList& atr = itr->second; CondAttrListCollection::ChanNum channum = itr->first; - Identifier chamberId; - chamberId = channum; + Identifier chamberId = Identifier(channum); std::string eff_panel, striplist, eff; @@ -244,58 +237,42 @@ StatusCode RpcCondDbAlg::loadMcElementStatus(EventIDRange& rangeW, RpcCondDbData ATH_MSG_DEBUG("striplist load is " << striplist << " " << striplist.size()); // Efficiencies and Cluster Sizes - std::string delimiter = " "; - std::vector<std::string> info_panel; - std::vector<float> info_panel_test; - MuonCalib::MdtStringUtils::tokenize(eff_panel, info_panel, delimiter); + char delimiter = ' '; + const auto info_panel = MdtStringUtils::tokenize(eff_panel, delimiter); - const char* SDBversion = (info_panel[0].c_str()); - int DBversion = atoi(SDBversion); + int DBversion = MdtStringUtils::atoi(info_panel[0]); - const char* SNStrip = (info_panel[2].c_str()); - int npanelstrip = atoi(SNStrip); + int npanelstrip = MdtStringUtils::atoi(info_panel[2]); - const char* SProjectedTracks = (info_panel[1].c_str()); - double ProjectedTracks = atof(SProjectedTracks); + double ProjectedTracks = MdtStringUtils::stof(info_panel[1]); writeCdo->setProjectedTrack(chamberId, ProjectedTracks); - const char* SEfficiency = (info_panel[3].c_str()); - double Efficiency = atof(SEfficiency); + double Efficiency = MdtStringUtils::stof(info_panel[3]); writeCdo->setEfficiency(chamberId, Efficiency); if (Efficiency <= m_panelEfficiency) writeCdo->setLowEffPanel(chamberId); - const char* SGapEfficiency = (info_panel[5].c_str()); - double GapEfficiency = atof(SGapEfficiency); + double GapEfficiency = MdtStringUtils::stof(info_panel[5]); writeCdo->setGapEfficiency(chamberId, GapEfficiency); - const char* SMeanClusterSize = (info_panel[17].c_str()); - double MeanClusterSize = atof(SMeanClusterSize); + double MeanClusterSize = MdtStringUtils::stof(info_panel[17]); writeCdo->setMeanClusterSize(chamberId, MeanClusterSize); if (DBversion > 2) { - const char* SFracClusterSize1_a = (info_panel[19].c_str()); - const char* SFracClusterSize1_b = (info_panel[20].c_str()); - double FracClusterSize1 = atof(SFracClusterSize1_a) + atof(SFracClusterSize1_b) * 10000; + double FracClusterSize1 = MdtStringUtils::stof(info_panel[19]) + MdtStringUtils::stof(info_panel[20]) * 10000; writeCdo->setFracClusterSize1(chamberId, FracClusterSize1); - const char* SFracClusterSize2_a = (info_panel[21].c_str()); - const char* SFracClusterSize2_b = (info_panel[22].c_str()); - double FracClusterSize2 = atof(SFracClusterSize2_a) + atof(SFracClusterSize2_b) * 10000; + double FracClusterSize2 = MdtStringUtils::stof(info_panel[21]) + MdtStringUtils::stof(info_panel[22]) * 10000; writeCdo->setFracClusterSize2(chamberId, FracClusterSize2); - const char* SFracClusterSize3_a = (info_panel[23].c_str()); - const char* SFracClusterSize3_b = (info_panel[24].c_str()); - double FracClusterSize3 = atof(SFracClusterSize3_a) + atof(SFracClusterSize3_b) * 10000; + double FracClusterSize3 = MdtStringUtils::stof(info_panel[23]) + MdtStringUtils::stof(info_panel[24]) * 10000; writeCdo->setFracClusterSize3(chamberId, FracClusterSize3); } else { if (info_panel.size() > 20) { - const char* SFracClusterSize1 = (info_panel[19].c_str()); - double FracClusterSize1 = atof(SFracClusterSize1); + double FracClusterSize1 = MdtStringUtils::stof(info_panel[19]); writeCdo->setFracClusterSize1(chamberId, FracClusterSize1); - const char* SFracClusterSize2 = (info_panel[20].c_str()); - double FracClusterSize2 = atof(SFracClusterSize2); + double FracClusterSize2 = MdtStringUtils::stof(info_panel[20]); writeCdo->setFracClusterSize2(chamberId, FracClusterSize2); } else { writeCdo->setFracClusterSize1(chamberId, 0.6); @@ -314,35 +291,23 @@ StatusCode RpcCondDbAlg::loadMcElementStatus(EventIDRange& rangeW, RpcCondDbData // update for the timing and error on timing // new info strip |status time error_on_time| - std::string delimiter_strip = "|"; - std::vector<std::string> info_strip; + char delimiter_strip = '|'; std::string strip_status_list = ""; - std::vector<float> info_strip_test; - - MuonCalib::MdtStringUtils::tokenize(striplist, info_strip, delimiter_strip); - const char* ch_strip2; + const auto info_strip= MuonCalib::MdtStringUtils::tokenize(striplist, delimiter_strip); if (info_strip.size() > 1) { for (unsigned int i = 0; i < info_strip.size(); ++i) { - ch_strip2 = (info_strip[i].c_str()); - - std::string delimiter_strip2 = " "; - std::vector<std::string> info_strip2; - std::vector<float> info_strip_test2; + const std::string_view &ch_strip2 = info_strip[i]; - MuonCalib::MdtStringUtils::tokenize(ch_strip2, info_strip2, delimiter_strip2); + char delimiter_strip2 = ' '; - const char* STime = (info_strip2[1].c_str()); - double Time = atof(STime); - const char* SSigmaTime = (info_strip2[2].c_str()); - double SigmaTime = atof(SSigmaTime); - const char* strip_status = (info_strip2[0].c_str()); + auto info_strip2 = MdtStringUtils::tokenize(ch_strip2, delimiter_strip2); - strip_status_list = strip_status_list + strip_status; + double Time = MdtStringUtils::stof(info_strip2[1]); + double SigmaTime = MdtStringUtils::stof(info_strip2[2]); + const auto &strip_status = info_strip2[0]; - std::vector<double> Time_vect; - Time_vect.push_back(Time); - Time_vect.push_back(SigmaTime); + strip_status_list += strip_status; Identifier strip_id; CondAttrListCollection::ChanNum stripnum; @@ -351,7 +316,7 @@ StatusCode RpcCondDbAlg::loadMcElementStatus(EventIDRange& rangeW, RpcCondDbData ATH_MSG_DEBUG("strip " << strip_id << " has time " << Time << " and " << SigmaTime); - writeCdo->setStripTime(strip_id, Time_vect); + writeCdo->setStripTime(strip_id, std::vector<double>{Time, SigmaTime}); ATH_MSG_VERBOSE("strip #" << i + 1 << " strip_id " << stripnum << " expanded " << m_idHelperSvc->rpcIdHelper().show_to_string(strip_id)); @@ -372,9 +337,9 @@ StatusCode RpcCondDbAlg::loadMcElementStatus(EventIDRange& rangeW, RpcCondDbData ATH_MSG_DEBUG("no timing info"); for (unsigned int i = 0; i < striplist.size(); i++) { - std::string part_strip = striplist.substr(i, 1); - strip_status_list = strip_status_list + part_strip; - const char* ch_panel = (part_strip.c_str()); + char part_strip = striplist[i]; + strip_status_list += part_strip; + char ch_panel = part_strip; Identifier strip_id; CondAttrListCollection::ChanNum stripnum; @@ -386,7 +351,7 @@ StatusCode RpcCondDbAlg::loadMcElementStatus(EventIDRange& rangeW, RpcCondDbData ++countpanelstrip; - if (part_strip == "0") { + if (part_strip == '0') { ++countdeadstrip; writeCdo->setDeadStrip(strip_id); if (i > 1 && i < striplist.size() - 2) { diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/CscCondDbData.h b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/CscCondDbData.h index 6c291243e3de90889330a2f2c9f166d3754d18a9..9fe455aedf402586f401df1b4ad36fbbd15447c4 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/CscCondDbData.h +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/CscCondDbData.h @@ -43,8 +43,8 @@ public: void setChannelT0Phase(IdentifierHash, bool ); void setDeadChannelHash(IdentifierHash); - void setDeadLayer (std::string, Identifier); - void setDeadStation (std::string, Identifier); + void setDeadLayer (std::string_view, Identifier); + void setDeadStation (std::string_view, Identifier); const std::vector<std::string>& getDeadLayers () const; const std::vector<std::string>& getDeadStations () const; diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/MdtCondDbData.h b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/MdtCondDbData.h index d01e400cd8bc905af16461f6bea3780662e89254..d20c494a9e56f9e3aff4f77a2f1ada8c47a28ed0 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/MdtCondDbData.h +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/MdtCondDbData.h @@ -29,10 +29,10 @@ public: virtual ~MdtCondDbData() = default; - void setDeadTube (const std::string&, Identifier); - void setDeadLayer (const std::string&, Identifier); - void setDeadMultilayer(const std::string&, Identifier); - void setDeadStation (const std::string&, Identifier); + void setDeadTube (std::string_view, Identifier); + void setDeadLayer (std::string_view, Identifier); + void setDeadMultilayer(std::string_view, Identifier); + void setDeadStation (std::string_view, Identifier); void setDeadChamber (Identifier); void setNoisyTube (Identifier); diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/RpcCalibDBEntry.h b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/RpcCalibDBEntry.h index 06c4bfe5e751e87dbc587d0df76ed5e6b0e68204..0cc21163ec57dd3c0a188bc184ce1db15b18186a 100755 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/RpcCalibDBEntry.h +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/RpcCalibDBEntry.h @@ -27,8 +27,8 @@ namespace MuonCalib{ { public: RpcCalibDBEntry(){}; - RpcCalibDBEntry(Identifier gapID, std::string etaRec, std::string etaDet, std::string phiRec1, std::string phiRec2, std::string phiDet1, std::string phiDet2); - RpcCalibDBEntry(Identifier gapID, std::string payload); + RpcCalibDBEntry(Identifier gapID, const std::string& etaRec, const std::string& etaDet, const std::string& phiRec1, const std::string& phiRec2, const std::string& phiDet1, const std::string& phiDet2); + RpcCalibDBEntry(Identifier gapID, std::string_view payload); void getColumns(std::string &recEta, std::string &detEta,std::string &recPhi1,std::string &recPhi2,std::string &detPhi1,std::string &detPhi2) const; diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/CscCondDbData.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/CscCondDbData.cxx index b6631b4fae9ffa56f0728cc2b21f19115e6ff502..b22ab3df16a8e9208156181659ec1303f77cefa1 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/CscCondDbData.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/CscCondDbData.cxx @@ -147,17 +147,17 @@ CscCondDbData::setDeadChannelHash(IdentifierHash hash){ // setDeadLayer void -CscCondDbData::setDeadLayer(std::string name, Identifier Id){ +CscCondDbData::setDeadLayer(std::string_view name, Identifier Id){ if(std::find(m_cachedDeadLayersId.begin(), m_cachedDeadLayersId.end(), Id)!=m_cachedDeadLayersId.end()) return; - m_cachedDeadLayers .push_back(name); + m_cachedDeadLayers .push_back(std::string(name)); m_cachedDeadLayersId.push_back(Id ); } // setDeadStation void -CscCondDbData::setDeadStation(std::string name, Identifier Id){ +CscCondDbData::setDeadStation(std::string_view name, Identifier Id){ if(std::find(m_cachedDeadStationsId.begin(), m_cachedDeadStationsId.end(), Id)!=m_cachedDeadStationsId.end()) return; - m_cachedDeadStations .push_back(name); + m_cachedDeadStations .push_back(std::string(name)); m_cachedDeadStationsId.push_back(Id ); } diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/MdtCondDbData.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/MdtCondDbData.cxx index 4b827d9a9012742e2aef1ff87ff0b255daa9aea5..f49c4122dd5faff36f544a5074b2a05ec656fdc0 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/MdtCondDbData.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/MdtCondDbData.cxx @@ -10,33 +10,33 @@ MdtCondDbData::MdtCondDbData(const MdtIdHelper& id_helper): m_id_helper(id_helper){} // setDeadTube void -MdtCondDbData::setDeadTube(const std::string& id_name, Identifier Id){ +MdtCondDbData::setDeadTube(std::string_view id_name, Identifier Id){ if(std::find(m_cachedDeadTubesId.begin(), m_cachedDeadTubesId.end(), Id)!=m_cachedDeadTubesId.end()) return; - m_cachedDeadTubes .push_back(id_name); + m_cachedDeadTubes .push_back(std::string(id_name)); m_cachedDeadTubesId.push_back(Id ); } // setDeadLayer void -MdtCondDbData::setDeadLayer(const std::string& id_name, Identifier Id){ +MdtCondDbData::setDeadLayer(std::string_view id_name, Identifier Id){ if(std::find(m_cachedDeadLayersId.begin(), m_cachedDeadLayersId.end(), Id)!=m_cachedDeadLayersId.end()) return; - m_cachedDeadLayers .push_back(id_name); + m_cachedDeadLayers .push_back(std::string(id_name)); m_cachedDeadLayersId.push_back(Id ); } // setDeadMultilayer void -MdtCondDbData::setDeadMultilayer(const std::string& id_name, Identifier Id){ +MdtCondDbData::setDeadMultilayer(std::string_view id_name, Identifier Id){ if(std::find(m_cachedDeadMultilayersId.begin(), m_cachedDeadMultilayersId.end(), Id)!=m_cachedDeadMultilayersId.end()) return; - m_cachedDeadMultilayers .push_back(id_name); + m_cachedDeadMultilayers .push_back(std::string(id_name)); m_cachedDeadMultilayersId.push_back(Id ); } // setDeadStation (= a chamber dead by itself) void -MdtCondDbData::setDeadStation(const std::string& id_name, Identifier Id){ +MdtCondDbData::setDeadStation(std::string_view id_name, Identifier Id){ if(std::find(m_cachedDeadStationsId.begin(), m_cachedDeadStationsId.end(), Id)!=m_cachedDeadStationsId.end()) return; - m_cachedDeadStations .push_back(id_name); + m_cachedDeadStations .push_back(std::string(id_name)); m_cachedDeadStationsId.push_back(Id ); } diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/RpcCalibDBEntry.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/RpcCalibDBEntry.cxx index 61f5901e6593edcda71cd29dc48fdd7bfc186b8e..a2b25965fd1d30cb8265ca61f28b457c14e46834 100755 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/RpcCalibDBEntry.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/RpcCalibDBEntry.cxx @@ -19,33 +19,33 @@ namespace MuonCalib{ for(unsigned int k=0;k<m_thePhiData.size();k++) delete m_thePhiData[k]; } - RpcCalibDBEntry::RpcCalibDBEntry(Identifier gapID, std::string payLoad):m_nRecEta(0),m_nDetEta(0), m_nRecPhi1(0),m_nRecPhi2(0),m_nDetPhi1(0),m_nDetPhi2(0),m_theGap(gapID) { + RpcCalibDBEntry::RpcCalibDBEntry(Identifier gapID, std::string_view payLoad):m_nRecEta(0),m_nDetEta(0), m_nRecPhi1(0),m_nRecPhi2(0),m_nDetPhi1(0),m_nDetPhi2(0),m_theGap(gapID) { std::string::size_type end=payLoad.find("END "); - std::string etaRec=payLoad.substr(0,end); + std::string_view etaRec=payLoad.substr(0,end); payLoad=payLoad.substr(end+4,payLoad.size()-end-4); end=payLoad.find("END "); - std::string etaDet=payLoad.substr(0,end); + std::string_view etaDet=payLoad.substr(0,end); payLoad=payLoad.substr(end+4,payLoad.size()-end-4); end=payLoad.find("END "); - std::string phiRec1=payLoad.substr(0,end); + std::string_view phiRec1=payLoad.substr(0,end); payLoad=payLoad.substr(end+4,payLoad.size()-end-4); end=payLoad.find("END "); - std::string phiRec2=payLoad.substr(0,end); + std::string_view phiRec2=payLoad.substr(0,end); payLoad=payLoad.substr(end+4,payLoad.size()-end-4); end=payLoad.find("END "); - std::string phiDet1=payLoad.substr(0,end); + std::string_view phiDet1=payLoad.substr(0,end); payLoad=payLoad.substr(end+4,payLoad.size()-end-4); end=payLoad.find("END "); - std::string phiDet2=payLoad.substr(0,end); + std::string_view phiDet2=payLoad.substr(0,end); - this->initData(etaRec, etaDet,phiRec1,phiRec2,phiDet1,phiDet2); + this->initData(std::string(etaRec), std::string(etaDet),std::string(phiRec1),std::string(phiRec2),std::string(phiDet1),std::string(phiDet2)); } @@ -53,23 +53,23 @@ namespace MuonCalib{ unsigned long int pos = 0; - std::string::size_type start = etaRec.find_first_not_of(" ",pos); + std::string::size_type start = etaRec.find_first_not_of(' ',pos); if(start == std::string::npos) { std::cout << "RpcCalibDBEntry::initData -- problems extracting m_nRecEta -- crashing." << std::endl; throw; } - std::string::size_type stop = etaRec.find_first_of(" ",start+1); + std::string::size_type stop = etaRec.find_first_of(' ',start+1); if (stop == std::string::npos) stop = etaRec.size(); m_nRecEta = std::stoi(etaRec.substr(start,stop-start),nullptr); etaRec.erase(pos,stop-pos); pos = 0; - start = phiRec1.find_first_not_of(" ",pos); + start = phiRec1.find_first_not_of(' ',pos); if(start == std::string::npos) { std::cout << "RpcCalibDBEntry::initData -- problems extracting m_nRecPhi1 -- crashing." << std::endl; throw; } - stop = phiRec1.find_first_of(" ",start+1); + stop = phiRec1.find_first_of(' ',start+1); if (stop == std::string::npos) stop = phiRec1.size(); m_nRecPhi1 = std::stoi(phiRec1.substr(start,stop-start),nullptr); phiRec1.erase(pos,stop-pos); @@ -163,7 +163,7 @@ namespace MuonCalib{ // initialize from db columns - RpcCalibDBEntry::RpcCalibDBEntry(Identifier gapID, std::string etaRec, std::string etaDet, std::string phiRec1, std::string phiRec2, std::string phiDet1, std::string phiDet2 ):m_nRecEta(0),m_nDetEta(0), m_nRecPhi1(0),m_nRecPhi2(0),m_nDetPhi1(0),m_nDetPhi2(0),m_theGap(gapID) + RpcCalibDBEntry::RpcCalibDBEntry(Identifier gapID, const std::string& etaRec, const std::string& etaDet, const std::string& phiRec1, const std::string& phiRec2, const std::string& phiDet1, const std::string& phiDet2 ):m_nRecEta(0),m_nDetEta(0), m_nRecPhi1(0),m_nRecPhi2(0),m_nDetPhi1(0),m_nDetPhi2(0),m_theGap(gapID) { this->initData(etaRec, etaDet,phiRec1,phiRec2,phiDet1,phiDet2); @@ -185,14 +185,14 @@ namespace MuonCalib{ float eff, errEff, res1, res2, resX, errRes1, errRes2, errResX, time, errTime, noise, errNoise, noiseC, errNoiseC, cs, errCs; - recEta_str<<m_nRecEta<<" "; - detEta_str<<m_nDetEta<<" "; + recEta_str<<m_nRecEta<<' '; + detEta_str<<m_nDetEta<<' '; - recPhi1_str<<m_nRecPhi1<<" "; - detPhi1_str<<m_nDetPhi1<<" "; + recPhi1_str<<m_nRecPhi1<<' '; + detPhi1_str<<m_nDetPhi1<<' '; - recPhi2_str<<m_nRecPhi2<<" "; - detPhi2_str<<m_nDetPhi2<<" "; + recPhi2_str<<m_nRecPhi2<<' '; + detPhi2_str<<m_nDetPhi2<<' '; @@ -217,12 +217,9 @@ namespace MuonCalib{ cs=theData->getCs(); errCs=theData->getErrCs(); - // std::cout<<" provo a metterci "<<eff<< " "<<errEff<< " "<<res1<< " "<<errRes1<< " "<<res2<< " "<<errRes2<< " "<<resX<< " "<<errResX<< " "<<time<< " "<<errTime<<std::endl; + recEta_str<< eff<< ' '<<errEff<< ' '<<res1<< ' '<<errRes1<< ' '<<res2<< ' '<<errRes2<< ' '<<resX<< ' '<<errResX<< ' '<<time<< ' '<<errTime<< ' '; + detEta_str<<noise<< ' '<<errNoise<< ' '<<noiseC<< ' '<<errNoiseC<< ' '<<cs<< ' '<<errCs<< ' '; - recEta_str<< eff<< " "<<errEff<< " "<<res1<< " "<<errRes1<< " "<<res2<< " "<<errRes2<< " "<<resX<< " "<<errResX<< " "<<time<< " "<<errTime<< " "; - detEta_str<<noise<< " "<<errNoise<< " "<<noiseC<< " "<<errNoiseC<< " "<<cs<< " "<<errCs<< " "; - - // std::cout<<" vediamo se ha funzionato, ora receta e' "<<recEta.str()<<std::endl; } @@ -247,9 +244,9 @@ namespace MuonCalib{ cs=theData->getCs(); errCs=theData->getErrCs(); - recPhi1_str<<eff<<" " <<res1<<" " <<res2<<" " <<resX<<" " <<time<< " "; - recPhi2_str<<errEff<<" " <<errRes1<<" " <<errRes2<<" " <<errResX<<" " <<errTime<< " "; - detPhi1_str<<noise<<" " <<errNoise<<" " <<noiseC<<" " <<errNoiseC<<" " <<cs<<" " <<errCs<< " "; + recPhi1_str<<eff<<' ' <<res1<<' ' <<res2<<' ' <<resX<<' ' <<time<< ' '; + recPhi2_str<<errEff<<' ' <<errRes1<<' ' <<errRes2<<' ' <<errResX<<' ' <<errTime<< ' '; + detPhi1_str<<noise<<' ' <<errNoise<<' ' <<noiseC<<' ' <<errNoiseC<<' ' <<cs<<' ' <<errCs<< ' '; } diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/RpcCondDbData.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/RpcCondDbData.cxx index b51fe176ea8be9a59018426847247002807653db..bbf0f5ab6cf247802a07447ff175f0ada630d12b 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/RpcCondDbData.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/RpcCondDbData.cxx @@ -37,7 +37,7 @@ RpcCondDbData::setDeadStripInt(Identifier chamberId, int striplist){ void RpcCondDbData::setDeadStripList(Identifier chamberId, const std::string& striplist){ if(m_cachedDeadStripList.count(chamberId)) return; - m_cachedDeadStripList[chamberId] = striplist; + m_cachedDeadStripList[chamberId] = std::move(striplist); } // setEfficiency @@ -115,7 +115,7 @@ RpcCondDbData::setProjectedTrack(Identifier chamberId, int projectedTracks){ void RpcCondDbData::setStripTime(Identifier stripId, const std::vector<double>& time){ if(m_cachedStripTime.count(stripId)) return; - m_cachedStripTime[stripId] = time; + m_cachedStripTime[stripId] = std::move(time); } diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondInterface/MuonCondInterface/IMDT_MapConversion.h b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondInterface/MuonCondInterface/IMDT_MapConversion.h index ef1d9fbddc2d5d014c810462cd57668a7f61e9bc..bc4410e8bd33c2c4c243708dee85e9e6b6282c58 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondInterface/MuonCondInterface/IMDT_MapConversion.h +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondInterface/MuonCondInterface/IMDT_MapConversion.h @@ -27,7 +27,7 @@ class IMDT_MapConversion: virtual public IAlgTool{ static const InterfaceID& interfaceID() {return IID_IMDT_MapConversion;}; - virtual const Identifier& ConvertToOffline(const std::string &OnlineId, + virtual const Identifier& ConvertToOffline(std::string_view OnlineId, bool quiet = false) const =0; }; diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/MuonCondSvc/MdtStringUtils.h b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/MuonCondSvc/MdtStringUtils.h index e1c733c7aab98335228f8ddf65885b5b1469cc62..64ccc06d0d7ab1b7e500a9253cc9ac7eb0f5c151 100755 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/MuonCondSvc/MdtStringUtils.h +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/MuonCondSvc/MdtStringUtils.h @@ -11,6 +11,14 @@ class MdtStringUtils { static void tokenize(const std::string& str, std::vector<std::string>& tokens, const std::string& delimiters = " "); + static void tokenize(const std::string& str, + std::vector<std::string>& tokens, + char delimiters = ' '); + static std::vector<std::string_view> tokenize(std::string_view str, + char delimiters = ' '); + static int atoi(std::string_view); + static float stof(std::string_view); + static int atoi(char a) noexcept { return ((int)a) - ((int)'0'); } }; } diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/MdtStringUtils.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/MdtStringUtils.cxx index c1ad020b33831998efb7cbf8d1d2e35f0806cbac..f9108120674f9e18afa7319ef8a9b243c4796405 100755 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/MdtStringUtils.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/MdtStringUtils.cxx @@ -5,6 +5,7 @@ #include <string> #include <vector> #include "MuonCondSvc/MdtStringUtils.h" +#include <charconv> namespace MuonCalib { @@ -29,4 +30,56 @@ void MdtStringUtils::tokenize(const std::string& str, } } +void MdtStringUtils::tokenize(const std::string& str, + std::vector<std::string>& tokens, + char delimiter) +{ + // Skip delimiters at beginning. + std::string::size_type lastPos = str.find_first_not_of(delimiter, 0); + // Find first "non-delimiter". + std::string::size_type pos = str.find_first_of(delimiter, lastPos); + + while (std::string::npos != pos || std::string::npos != lastPos) + { + // Found a token, add it to the vector. + tokens.push_back(str.substr(lastPos, pos - lastPos)); + // Skip delimiters. Note the "not_of" + lastPos = str.find_first_not_of(delimiter, pos); + // Find next "non-delimiter" + pos = str.find_first_of(delimiter, lastPos); + // std::cout << "Added token : " << tokens[tokens.size()-1] << "!" << std::endl; + } +} + +std::vector<std::string_view> MdtStringUtils::tokenize(std::string_view str, + char delimiter) +{ + // Skip delimiters at beginning. + std::string::size_type lastPos = str.find_first_not_of(delimiter, 0); + // Find first "non-delimiter". + std::string::size_type pos = str.find_first_of(delimiter, lastPos); + std::vector<std::string_view> tokens; + while (std::string::npos != pos || std::string::npos != lastPos) + { + // Found a token, add it to the vector. + tokens.push_back(str.substr(lastPos, pos - lastPos)); + // Skip delimiters. Note the "not_of" + lastPos = str.find_first_not_of(delimiter, pos); + // Find next "non-delimiter" + pos = str.find_first_of(delimiter, lastPos); + // std::cout << "Added token : " << tokens[tokens.size()-1] << "!" << std::endl; + } + return tokens; +} + +int MdtStringUtils::atoi(std::string_view str){ + int result=-9999; + std::from_chars(str.data(), str.data() + str.size(), result); + return result; +} + +float MdtStringUtils::stof(std::string_view str){ + //TODO: Replace this with from_chars once the compilers support it! + return std::stof(std::string(str)); +} } diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/NSWCondUtils.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/NSWCondUtils.cxx index efb5fe3edd696d79dc19726a79fe232b21ebd5a2..dabdde1407fa813dbfd8edd2c784458772a3476d 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/NSWCondUtils.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/NSWCondUtils.cxx @@ -12,55 +12,53 @@ #include "MuonCondSvc/NSWCondUtils.h" #include "GaudiKernel/MsgStream.h" #include "AthenaKernel/getMessageSvc.h" - +#include <charconv> +#include "boost/algorithm/string.hpp" namespace MuonCalib{ void NSWCondUtils::setNSWABLinesFromAscii(const std::string& filename, ALineMapContainer& writeALines, BLineMapContainer& writeBLines, const sTgcIdHelper* stgcHelper, const MmIdHelper* mmHelper) { + using namespace MuonCalib; std::ifstream inputFile; inputFile.open(filename); int nLines = 1; int nNewALines = 0; int nNewBLines = 0; std::string line; - std::string type; - std::string since_str; - std::string till_str; + std::string_view since_str; + std::string_view till_str; while(std::getline(inputFile,line)){ ++nLines; - std::vector<std::string> tokens; - std::string delimiter = ":"; - MuonCalib::MdtStringUtils::tokenize(line, tokens, delimiter); + char delimiter = ':'; + const auto tokens = MdtStringUtils::tokenize(line, delimiter); - type = tokens[0]; + const auto &type = tokens[0]; - if(type.find("#") == 0){ + if(type[0] == '#' ){ continue; } - if(type.find("Header") == 0){ - std::string delimiter = "|"; - std::vector<std::string> tokens; - MuonCalib::MdtStringUtils::tokenize(line, tokens, delimiter); + if(boost::algorithm::starts_with(type, "Header")){ + char delimiter = '|'; + auto tokens = MdtStringUtils::tokenize(line, delimiter); since_str = tokens[1]; till_str = tokens[2]; } - if(type.find("IOV") == 0){ - std::string delimiter = " "; - MuonCalib::MdtStringUtils::tokenize(line, tokens, delimiter); + if(boost::algorithm::starts_with(type, "IOV")){ + char delimiter = ' '; + auto tokens = MdtStringUtils::tokenize(line, delimiter); int ival = 1; long int iovThisBlob = 0; - std::string str_iovThisBlob = tokens[ival]; - sscanf(str_iovThisBlob.c_str(), "%80ld", &iovThisBlob); + std::string_view str_iovThisBlob = tokens[ival]; + std::from_chars(str_iovThisBlob.data(), str_iovThisBlob.data() + str_iovThisBlob.size(), iovThisBlob); } - if(type.find("Corr") == 0){ - std::string delimiter = " "; - std::vector<std::string> tokens; - MuonCalib::MdtStringUtils::tokenize(line, tokens, delimiter); + if(boost::algorithm::starts_with(type, "Corr")){ + char delimiter = ' '; + auto tokens = MdtStringUtils::tokenize(line, delimiter); if(tokens.size() != 25){ MsgStream log(Athena::getMessageSvc(), "NSWCondUtils"); @@ -70,60 +68,31 @@ namespace MuonCalib{ int ival =1; int phi, eta, mult; - std::string stationType = tokens[ival++]; - - std::string phi_str = tokens[ival++]; - sscanf(phi_str.c_str(),"%80d",&phi); - - std::string eta_str = tokens[ival++]; - sscanf(eta_str.c_str(),"%80d",&eta); - - std::string mult_str = tokens[ival++]; - sscanf(mult_str.c_str(),"%80d",&mult); + std::string_view stationType = tokens[ival++]; + phi = MdtStringUtils::atoi(tokens[ival++]); + eta = MdtStringUtils::atoi(tokens[ival++]); + mult = MdtStringUtils::atoi(tokens[ival++]); float s, z, t, rots, rotz, rott; - - std::string s_str = tokens[ival++]; - sscanf(s_str.c_str(),"%80f",&s); - - std::string z_str = tokens[ival++]; - sscanf(z_str.c_str(),"%80f",&z); - - std::string t_str = tokens[ival++]; - sscanf(t_str.c_str(),"%80f",&t); - - std::string rots_str = tokens[ival++]; - sscanf(rots_str.c_str(),"%80f",&rots); - - std::string rotz_str = tokens[ival++]; - sscanf(rotz_str.c_str(),"%80f",&rotz); - - std::string rott_str = tokens[ival++]; - sscanf(rott_str.c_str(),"%80f",&rott); + s = MdtStringUtils::stof(tokens[ival++]); + z = MdtStringUtils::stof(tokens[ival++]); + t = MdtStringUtils::stof(tokens[ival++]); + rots = MdtStringUtils::stof(tokens[ival++]); + rotz = MdtStringUtils::stof(tokens[ival++]); + rott = MdtStringUtils::stof(tokens[ival++]); float bz, bp, bn, sp, sn, tw, pg, tr, eg, ep, en; - std::string tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(),"%80f",&bz); - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(),"%80f",&bp); - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(),"%80f",&bn); - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(),"%80f",&sp); - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(),"%80f",&sn); - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(),"%80f",&tw); - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(),"%80f",&pg); - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(),"%80f",&tr); - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(),"%80f",&eg); - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(),"%80f",&ep); - tmp_str = tokens[ival++]; - sscanf(tmp_str.c_str(),"%80f",&en); + bz = MdtStringUtils::stof(tokens[ival++]); + bp = MdtStringUtils::stof(tokens[ival++]); + bn = MdtStringUtils::stof(tokens[ival++]); + sp = MdtStringUtils::stof(tokens[ival++]); + sn = MdtStringUtils::stof(tokens[ival++]); + tw = MdtStringUtils::stof(tokens[ival++]); + pg = MdtStringUtils::stof(tokens[ival++]); + tr = MdtStringUtils::stof(tokens[ival++]); + eg = MdtStringUtils::stof(tokens[ival++]); + ep = MdtStringUtils::stof(tokens[ival++]); + en = MdtStringUtils::stof(tokens[ival++]); Identifier id, id_mult; if(stationType == "MML" || stationType == "MMS"){ diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/RpcCoolStrSvc.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/RpcCoolStrSvc.cxx index 01ecaff64126de8ce0c70d389c61db63e7d2043f..e7d64c3369b92261e600619bd5be2df48324139c 100755 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/RpcCoolStrSvc.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/RpcCoolStrSvc.cxx @@ -23,6 +23,7 @@ #include "MuonCondData/RpcCalibDBEntry.h" #include "MuonCondData/RpcCalibDataContainer.h" #include "MuonCondSvc/RpcCoolStrSvc.h" +#include "MuonCondSvc/MdtStringUtils.h" namespace MuonCalib { @@ -130,9 +131,10 @@ namespace MuonCalib { while (getline(in, theLine)) { // Reads all lines - int delimiter=theLine.find(";"); - Identifier gapID(atoi(theLine.substr(0,delimiter).c_str())); - std::string payLoad=theLine.substr(delimiter+2,theLine.size()-delimiter-2); + int delimiter=theLine.find(';'); + std::string_view lineview(theLine); + Identifier gapID(MuonCalib::MdtStringUtils::atoi(lineview.substr(0,delimiter))); + std::string_view payLoad=lineview.substr(delimiter+2,theLine.size()-delimiter-2); const RpcCalibDBEntry* newEntry=new RpcCalibDBEntry(gapID, payLoad); diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/TGCTriggerDbAlg.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/TGCTriggerDbAlg.cxx index 93d66ac6493f16efe71d84afae099fca1c8ed003..9d84977eed698b701a7a96b84b54a48bbc8e522a 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/TGCTriggerDbAlg.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/TGCTriggerDbAlg.cxx @@ -195,7 +195,7 @@ void TGCTriggerDbAlg::fillReadMapBw(TGCTriggerData* writeCdo, char delimiter = '\n'; std::string field, tag; - uint32_t phimod2 = modulename[moduleId].find("b") != std::string::npos ? 1 : 0; + uint32_t phimod2 = modulename[moduleId].find('b') != std::string::npos ? 1 : 0; uint32_t modaddr = ((modulenumber[moduleId] & TGCTriggerData::MODULE_MASK)<<TGCTriggerData::MODULE_SHIFT) + ((phimod2 & TGCTriggerData::PHIMOD2_MASK)<<TGCTriggerData::PHIMOD2_SHIFT); diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/MuonCondTool/MDT_MapConversion.h b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/MuonCondTool/MDT_MapConversion.h index 71ea00e53da6caa9adbc56ea84afc3ec99af8014..d9f99406c3c6ea799e2ddbaa2f602983286749d1 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/MuonCondTool/MDT_MapConversion.h +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/MuonCondTool/MDT_MapConversion.h @@ -31,7 +31,7 @@ public: virtual StatusCode initialize(); - virtual const Identifier& ConvertToOffline(const std::string &OnlineId, + virtual const Identifier& ConvertToOffline(std::string_view OnlineId, bool quiet = false) const; // const std::string OnlineName(Identifier OfflineId); diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/CSC_DCSConditionsTool.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/CSC_DCSConditionsTool.cxx index 5ef7dfb1c31126e839e4124338c729c59c0d91bc..48bd6ad5f80cbe7650fb46856b873fec796a4261 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/CSC_DCSConditionsTool.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/CSC_DCSConditionsTool.cxx @@ -70,9 +70,11 @@ StatusCode CSC_DCSConditionsTool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) { const CondAttrListCollection* atrc=nullptr; ATH_MSG_INFO("Try to read from folder <"<<m_hvFolder<<">"); // Print out callback information - if (msgLvl(MSG::DEBUG)) ATH_MSG_DEBUG("Level " << I << " Keys: "); - std::list<std::string>::const_iterator keyIt = keys.begin(); - for (; keyIt != keys.end(); ++ keyIt) if (msgLvl(MSG::DEBUG)) ATH_MSG_DEBUG(*keyIt << " "); + if (msgLvl(MSG::DEBUG)) { + ATH_MSG_DEBUG("Level " << I << " Keys: "); + std::list<std::string>::const_iterator keyIt = keys.begin(); + for (; keyIt != keys.end(); ++ keyIt) ATH_MSG_DEBUG(*keyIt << " "); + } ATH_CHECK(detStore()->retrieve(atrc,m_hvFolder)); ATH_MSG_INFO("CondAttrListCollection from DB folder have been obtained with size "<< atrc->size()); @@ -81,8 +83,6 @@ StatusCode CSC_DCSConditionsTool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) { Identifier ChamberId; unsigned int layer_index=0; unsigned int chan_index=0; - std::map<Identifier,int>::const_iterator it; - std::pair<std::map<Identifier,int>::const_iterator,bool> ret; int hv_state, lv_state, hv_setpoint0, hv_setpoint1; for (itr = atrc->begin(); itr != atrc->end(); ++itr){ @@ -105,38 +105,34 @@ StatusCode CSC_DCSConditionsTool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) { - std::string delimiter = "_"; - std::vector<std::string> tokens; - MuonCalib::MdtStringUtils::tokenize(csc_chan_name,tokens,delimiter); - - for (unsigned int i=0; i<tokens.size(); i++) { - - if(tokens[i]!="0"){ - if (msgLvl(MSG::DEBUG)) ATH_MSG_DEBUG("Sequence for name string load is \n" << tokens[i]); - } - + char delimiter = '_'; + const auto tokens = MuonCalib::MdtStringUtils::tokenize(csc_chan_name,delimiter); + if (msgLvl(MSG::DEBUG)){ + for (unsigned int i=0; i<tokens.size(); i++) { + if(tokens[i]!="0"){ + ATH_MSG_DEBUG("Sequence for name string load is \n" << tokens[i]); + } + } } - - if((hv_state!=1 or lv_state!=1 or hv_setpoint0 <1000 or hv_setpoint1 <1000) && !tokens.empty()){ if (msgLvl(MSG::DEBUG)) ATH_MSG_DEBUG("NOT 0 HV : " << hv_state << " ChamberName : "<<tokens[0] << "wirelayer" << tokens[1]); int eta=0; int phi=0; //std::string chamber_name; - std::string layer = tokens[1]; - std::string number_layer =tokens[1].substr(1,2); - int wirelayer = atoi(const_cast<char*>(number_layer.c_str())); + std::string_view layer = tokens[1]; + std::string_view number_layer =tokens[1].substr(1,2); + int wirelayer = MuonCalib::MdtStringUtils::atoi(number_layer); //std::string chamber_name = tokens[0]; - std::string chamber_name; - std::string eta_side = tokens[0].substr(0,1); - if (eta_side == "A") eta = +1; - if (eta_side == "C") eta = -1; - std::string size_side = tokens[0].substr(1,1); + std::string_view chamber_name; + char eta_side = tokens[0][0]; + if (eta_side == 'A') eta = +1; + if (eta_side == 'C') eta = -1; + char size_side = tokens[0][1]; - if (size_side == "L") chamber_name = "CSL"; - if (size_side == "S") chamber_name = "CSS"; - std::string sector_side = tokens[0].substr(2,4); + if (size_side == 'L') chamber_name = "CSL"; + if (size_side == 'S') chamber_name = "CSS"; + std::string_view sector_side = tokens[0].substr(2,4); if (sector_side == "01" || sector_side == "02") phi=1; if (sector_side == "03" || sector_side == "04") phi=2; if (sector_side == "05" || sector_side == "06") phi=3; @@ -149,9 +145,15 @@ StatusCode CSC_DCSConditionsTool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) { ChamberId = m_idHelperSvc->cscIdHelper().elementID(chamber_name, eta, phi); Identifier WireLayerId = m_idHelperSvc->cscIdHelper().channelID(ChamberId, 1, wirelayer,1,1); if (msgLvl(MSG::DEBUG)) ATH_MSG_DEBUG("chamber Name = " <<chamber_name); - std::string WireLayerstring = chamber_name+"_"+eta_side+"_"+sector_side+"_"+layer; - m_cachedDeadWireLayers.push_back(WireLayerstring); - if (msgLvl(MSG::DEBUG)) ATH_MSG_DEBUG("Layers Off = " <<WireLayerstring); + std::string WireLayerstring = std::string(chamber_name); + WireLayerstring+='_'; + WireLayerstring+=eta_side; + WireLayerstring+='_'; + WireLayerstring+=sector_side; + WireLayerstring+='_'; + WireLayerstring+=layer; + if (msgLvl(MSG::DEBUG)) ATH_MSG_DEBUG("Layers Off = " <<WireLayerstring); + m_cachedDeadWireLayers.push_back(std::move(WireLayerstring)); m_cachedDeadWireLayersId.push_back(WireLayerId); if(m_CSC_LayerMap.count(ChamberId)) @@ -188,10 +190,11 @@ StatusCode CSC_DCSConditionsTool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) { StatusCode CSC_DCSConditionsTool::loadchamber(IOVSVC_CALLBACK_ARGS_P(I,keys)) { ATH_MSG_INFO("Load chamber from DCS DB"); // Print out callback information - if (msgLvl(MSG::DEBUG)) ATH_MSG_DEBUG("Level " << I << " Keys: "); - std::list<std::string>::const_iterator keyIt = keys.begin(); - for (; keyIt != keys.end(); ++ keyIt) if (msgLvl(MSG::DEBUG)) ATH_MSG_DEBUG(*keyIt << " "); - + if (msgLvl(MSG::DEBUG)) { + ATH_MSG_DEBUG("Level " << I << " Keys: "); + std::list<std::string>::const_iterator keyIt = keys.begin(); + for (; keyIt != keys.end(); ++ keyIt) ATH_MSG_DEBUG(*keyIt << " "); + } const CondAttrListCollection* atrc=nullptr; ATH_MSG_INFO("Try to read from folder <"<<m_chamberFolder<<">"); @@ -199,32 +202,26 @@ StatusCode CSC_DCSConditionsTool::loadchamber(IOVSVC_CALLBACK_ARGS_P(I,keys)) { ATH_MSG_INFO(" CondAttrListCollection from DB folder have been obtained with size "<< atrc->size()); CondAttrListCollection::const_iterator itr; - - std::map<Identifier,int>::const_iterator it; - - std::pair<std::map<Identifier,int>::const_iterator,bool> ret; - std::vector<std::string> chamber_good; + std::vector<std::string> chamber_good;//Not string_view because of possible scoping issues for (itr = atrc->begin(); itr != atrc->end(); ++itr){ const coral::AttributeList& atr=itr->second; if (msgLvl(MSG::DEBUG)) ATH_MSG_DEBUG("AttributeList size : " << atr.size()); - std::string chamber_enabled=*(static_cast<const std::string*>((atr["enabledChambers"]).addressOfData())); + const std::string &chamber_enabled=*(static_cast<const std::string*>((atr["enabledChambers"]).addressOfData())); - std::string delimiter = " "; - std::vector<std::string> tokens; - MuonCalib::MdtStringUtils::tokenize(chamber_enabled,tokens,delimiter); + char delimiter = ' '; + auto tokens = MuonCalib::MdtStringUtils::tokenize(chamber_enabled,delimiter); for (unsigned int i=0; i<tokens.size(); i++) { - chamber_good.push_back(tokens[i]); + chamber_good.emplace_back(tokens[i]); } } - std::string chamber_all[] = {"A01","A02","A03","A04","A05","A06","A07","A08","A09","A10","A11","A12","A13","A14","A15","A16","C01","C02","C03","C04","C05","C06","C07","C08","C09","C10","C11","C12","C13","C14","C15","C16"}; - std::vector<std::string> chamber_v(chamber_all,chamber_all+32); + std::vector<std::string_view> chamber_v{"A01","A02","A03","A04","A05","A06","A07","A08","A09","A10","A11","A12","A13","A14","A15","A16","C01","C02","C03","C04","C05","C06","C07","C08","C09","C10","C11","C12","C13","C14","C15","C16"}; sort(chamber_v.begin(), chamber_v.end()); for(unsigned int count=0; count<chamber_good.size(); count++){ @@ -233,7 +230,7 @@ StatusCode CSC_DCSConditionsTool::loadchamber(IOVSVC_CALLBACK_ARGS_P(I,keys)) { if (msgLvl(MSG::DEBUG)) ATH_MSG_DEBUG("found chamber good!\n" <<chamber_v[count]); }else { if (msgLvl(MSG::DEBUG)) ATH_MSG_DEBUG(" not found = " << chamber_good[count]); - m_cachedDeadStationsStr.push_back(chamber_good[count]); + m_cachedDeadStationsStr.emplace_back(chamber_good[count]); } } @@ -241,11 +238,11 @@ StatusCode CSC_DCSConditionsTool::loadchamber(IOVSVC_CALLBACK_ARGS_P(I,keys)) { for(unsigned int tot=0; tot<m_cachedDeadStationsStr.size(); tot++){ int eta=0; int phi=0; - std::string chamber_name; - std::string eta_side = m_cachedDeadStationsStr[tot].substr(0,1); - if (eta_side == "A") eta = +1; - if (eta_side == "C") eta = -1; - std::string sector_side = m_cachedDeadStationsStr[tot].substr(2,4); + std::string_view chamber_name; + char eta_side = m_cachedDeadStationsStr[tot][0]; + if (eta_side == 'A') eta = +1; + if (eta_side == 'C') eta = -1; + std::string_view sector_side = std::string_view(m_cachedDeadStationsStr[tot]).substr(2,4); if (sector_side == "01" || sector_side == "02") phi=1; if (sector_side == "03" || sector_side == "04") phi=2; if (sector_side == "05" || sector_side == "06") phi=3; @@ -271,9 +268,8 @@ StatusCode CSC_DCSConditionsTool::loadchamber(IOVSVC_CALLBACK_ARGS_P(I,keys)) { m_cachedDeadStationsId.insert( m_cachedDeadStationsId.end(), m_cachedDeadStationsId_chamber.begin(),m_cachedDeadStationsId_chamber.end()); std::sort(m_cachedDeadStationsId.begin(),m_cachedDeadStationsId.end(),compareId); - std::vector<Identifier>::const_iterator itId; - itId= std::unique(m_cachedDeadStationsId.begin(),m_cachedDeadStationsId.end()); - m_cachedDeadStationsId.resize(itId -m_cachedDeadStationsId.begin()); + std::vector<Identifier>::const_iterator itId= std::unique(m_cachedDeadStationsId.begin(),m_cachedDeadStationsId.end()); + m_cachedDeadStationsId.resize(std::distance(m_cachedDeadStationsId.cbegin(), itId)); return StatusCode::SUCCESS; } diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_DCSConditionsRun2Tool.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_DCSConditionsRun2Tool.cxx index f3703324ae7b3bfe639388666fcac27440966a90..f7e6e9f98de7a3127e213d97d263987f0873a19a 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_DCSConditionsRun2Tool.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_DCSConditionsRun2Tool.cxx @@ -242,7 +242,7 @@ StatusCode MDT_DCSConditionsRun2Tool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) hv_v1_ml2=*(static_cast<const float*>((atr["v1set_ML2"]).addressOfData())); - std::string delimiter2 = "_"; + char delimiter2 = '_'; std::vector<std::string> tokens2; MuonCalib::MdtStringUtils::tokenize(hv_payload,tokens2,delimiter2); @@ -261,7 +261,7 @@ StatusCode MDT_DCSConditionsRun2Tool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) // m_log << MSG::INFO << "NOT ON and NOT STANDBY HV : " <<hv_name_ml1 << " ChamberName : "<<tokens2[0] << "multilayer 1" <<endmsg; // m_cachedDeadMultiLayers.push_back(1); int multilayer =1; - std::string chamber_name = tokens2[0]; + const std::string &chamber_name = tokens2[0]; Identifier ChamberId= m_condMapTool->ConvertToOffline(chamber_name); Identifier MultiLayerId = m_mdtIdHelper->channelID(ChamberId,multilayer,1,1); m_cachedDeadMultiLayersId.push_back(MultiLayerId); @@ -274,7 +274,7 @@ StatusCode MDT_DCSConditionsRun2Tool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) //m_log << MSG::INFO << "STANDBY HV : " << hv_name_ml1<< " ChamberName : "<<tokens2[0] << "multilayer 1"<<endmsg; int multilayer =1; - std::string chamber_name = tokens2[0]; + const std::string &chamber_name = tokens2[0]; Identifier ChamberId= m_condMapTool->ConvertToOffline(chamber_name); Identifier MultiLayerId = m_mdtIdHelper->channelID(ChamberId,multilayer,1,1); m_cachedDeadMultiLayersId.push_back(MultiLayerId); @@ -285,7 +285,7 @@ StatusCode MDT_DCSConditionsRun2Tool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) //m_log << MSG::INFO << "NOT ON and NOT STANDBY HV : " <<hv_name_ml2 << " ChamberName : "<<tokens2[0] << "multilayer 2" <<endmsg; //m_cachedDeadMultiLayers.push_back(2); int multilayer =1; - std::string chamber_name = tokens2[0]; + const std::string &chamber_name = tokens2[0]; Identifier ChamberId= m_condMapTool->ConvertToOffline(chamber_name); Identifier MultiLayerId = m_mdtIdHelper->channelID(ChamberId,multilayer,1,1); m_cachedDeadMultiLayersId.push_back(MultiLayerId); @@ -298,7 +298,7 @@ StatusCode MDT_DCSConditionsRun2Tool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) //m_log << MSG::INFO << "STANDBY HV : " << hv_name_ml2<< " ChamberName : "<<tokens2[0] << "multilayer 2"<<endmsg; int multilayer =2; - std::string chamber_name = tokens2[0]; + const std::string &chamber_name = tokens2[0]; Identifier ChamberId= m_condMapTool->ConvertToOffline(chamber_name); Identifier MultiLayerId = m_mdtIdHelper->channelID(ChamberId,multilayer,1,1); m_cachedDeadMultiLayersId.push_back(MultiLayerId); @@ -307,7 +307,7 @@ StatusCode MDT_DCSConditionsRun2Tool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) if(hv_name_ml2 !="ON" && hv_name_ml2 !="STANDBY" && hv_name_ml2 !="UNKNOWN" && hv_name_ml1 !="ON" && hv_name_ml1 !="STANDBY" && hv_name_ml1 !="UNKNOWN" ){ m_cachedDeadStations.push_back(tokens2[0]); - std::string chamber_name=tokens2[0]; + const std::string &chamber_name=tokens2[0]; Identifier ChamberId= m_condMapTool->ConvertToOffline(chamber_name); m_cachedDeadStationsId.push_back(ChamberId); @@ -316,7 +316,7 @@ StatusCode MDT_DCSConditionsRun2Tool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) if(hv_name_ml2=="STANDBY" && hv_v0_ml2 != hv_v1_ml2 && hv_name_ml1=="STANDBY" && hv_v0_ml1 != hv_v1_ml1){ m_cachedDeadStations.push_back(tokens2[0]); - std::string chamber_name=tokens2[0]; + const std::string &chamber_name=tokens2[0]; Identifier ChamberId= m_condMapTool->ConvertToOffline(chamber_name); m_cachedDeadStationsId.push_back(ChamberId); @@ -378,7 +378,7 @@ StatusCode MDT_DCSConditionsRun2Tool::loadLV(IOVSVC_CALLBACK_ARGS_P(I,keys)) if(atr.size()){ hv_name=*(static_cast<const std::string*>((atr["fsmCurrentState_LV"]).addressOfData())); //m_log<<MSG::DEBUG<<" CondAttrListCollection ChanNum : "<<chanNum<<" ChanName : " << atrc->chanName(chanNum) <<endmsg; - std::string delimiter = " "; + char delimiter = ' '; std::vector<std::string> tokens; MuonCalib::MdtStringUtils::tokenize(hv_name,tokens,delimiter); for (unsigned int i=0; i<tokens.size(); i++) @@ -389,7 +389,7 @@ StatusCode MDT_DCSConditionsRun2Tool::loadLV(IOVSVC_CALLBACK_ARGS_P(I,keys)) } } - std::string delimiter2 = "_"; + char delimiter2 = '_'; std::vector<std::string> tokens2; MuonCalib::MdtStringUtils::tokenize(hv_payload,tokens2,delimiter2); @@ -403,7 +403,7 @@ StatusCode MDT_DCSConditionsRun2Tool::loadLV(IOVSVC_CALLBACK_ARGS_P(I,keys)) if(tokens[0]!="ON"){ if( m_verbose ) m_log << MSG::VERBOSE << "NOT ON LV: " << tokens[0]<< " ChamberName : "<<tokens2[0] <<endmsg; m_cachedDeadLVStations.push_back(tokens2[0]); - std::string chamber_name= tokens2[0]; + const std::string &chamber_name= tokens2[0]; Identifier ChamberId= m_condMapTool->ConvertToOffline(chamber_name); m_cachedDeadLVStationsId.push_back(ChamberId); if( m_verbose ) m_log<<MSG::VERBOSE<<"Chamber off from LV Chamber !=ON "<<tokens2[0] <<endmsg; diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_DCSConditionsTool.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_DCSConditionsTool.cxx index acfc96008d2235cbf6d296370d2feb8056f3415f..7c44fa34af1c2d1a0499c25a395643b8ae330ddf 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_DCSConditionsTool.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_DCSConditionsTool.cxx @@ -249,14 +249,13 @@ StatusCode MDT_DCSConditionsTool::loadDropChamber(IOVSVC_CALLBACK_ARGS_P(I,keys) chamber_dropped=*(static_cast<const std::string*>((atr["Chambers_disabled"]).addressOfData())); - std::string delimiter = " "; - std::vector<std::string> tokens; - MuonCalib::MdtStringUtils::tokenize(chamber_dropped,tokens,delimiter); + char delimiter = ' '; + auto tokens = MuonCalib::MdtStringUtils::tokenize(chamber_dropped,delimiter); for (unsigned int i=0; i<tokens.size(); i++) { if(tokens[i]!="0"){ - m_cachedDeadStations.push_back(tokens[i]); - std::string chamber_name=tokens[i]; + m_cachedDeadStations.push_back(std::string(tokens[i])); + std::string_view chamber_name=tokens[i]; Identifier ChamberId= m_condMapTool->ConvertToOffline(chamber_name); m_cachedDeadStationsId.push_back(ChamberId); @@ -275,7 +274,7 @@ StatusCode MDT_DCSConditionsTool::loadDropChamber(IOVSVC_CALLBACK_ARGS_P(I,keys) StatusCode MDT_DCSConditionsTool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) { - + using namespace MuonCalib; m_log.setLevel(msgLevel()); m_debug = m_log.level() <= MSG::DEBUG; m_verbose = m_log.level() <= MSG::VERBOSE; @@ -359,9 +358,8 @@ StatusCode MDT_DCSConditionsTool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) if(atr.size()==1){ hv_name=*(static_cast<const std::string*>((atr["fsm_currentState"]).addressOfData())); //m_log<<MSG::DEBUG<<" CondAttrListCollection ChanNum : "<<chanNum<<" ChanName : " << atrc->chanName(chanNum) <<endmsg; - std::string delimiter = " "; - std::vector<std::string> tokens; - MuonCalib::MdtStringUtils::tokenize(hv_name,tokens,delimiter); + char delimiter = ' '; + auto tokens= MuonCalib::MdtStringUtils::tokenize(hv_name,delimiter); for (unsigned int i=0; i<tokens.size(); i++) { @@ -371,9 +369,8 @@ StatusCode MDT_DCSConditionsTool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) } - std::string delimiter2 = "_"; - std::vector<std::string> tokens2; - MuonCalib::MdtStringUtils::tokenize(hv_payload,tokens2,delimiter2); + char delimiter2 = '_'; + auto tokens2 = MuonCalib::MdtStringUtils::tokenize(hv_payload,delimiter2); for (unsigned int i=0; i<tokens2.size(); i++) { if(tokens2[i]!="0"){ @@ -385,9 +382,9 @@ StatusCode MDT_DCSConditionsTool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) if(tokens[0]!="ON" && tokens[0]!="STANDBY" && tokens[0]!="UNKNOWN"){ if( m_verbose ) m_log << MSG::VERBOSE << "NOT ON and NOT STANDBY HV : " << tokens[0]<< " ChamberName : "<<tokens2[2] << "multilayer" << tokens2[3]<<endmsg; - m_cachedDeadMultiLayers.push_back(tokens2[2]); - int multilayer =atoi(tokens2[3].c_str()); - std::string chamber_name = tokens2[2]; + m_cachedDeadMultiLayers.push_back(std::string(tokens2[2])); + int multilayer =MdtStringUtils::atoi(tokens2[3]); + std::string_view chamber_name = tokens2[2]; Identifier ChamberId= m_condMapTool->ConvertToOffline(chamber_name); Identifier MultiLayerId = m_mdtIdHelper->channelID(ChamberId,multilayer,1,1); m_cachedDeadMultiLayersId.push_back(MultiLayerId); @@ -396,8 +393,8 @@ StatusCode MDT_DCSConditionsTool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) if( m_verbose ) m_log << MSG::VERBOSE << "STANDBY HV : " << tokens[0]<< " ChamberName : "<<tokens2[2] << "multilayer" << tokens2[3]<<endmsg; - int multilayer =atoi(tokens2[3].c_str()); - std::string chamber_name = tokens2[2]; + int multilayer =MdtStringUtils::atoi(tokens2[3]); + std::string_view chamber_name = tokens2[2]; Identifier ChamberId= m_condMapTool->ConvertToOffline(chamber_name); Identifier MultiLayerId = m_mdtIdHelper->channelID(ChamberId,multilayer,1,1); m_cachedDeadMultiLayersId_standby.push_back(MultiLayerId); @@ -435,9 +432,8 @@ StatusCode MDT_DCSConditionsTool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) setPointsV0_name=*(static_cast<const float*>((atr_v0["readBackSettings_v0"]).addressOfData())); //m_log << MSG::DEBUG << "Sequence for name string load is inside V0\n" << " "<<setPointsV0_name<< endmsg; //m_log<<MSG::DEBUG<<" CondAttrListCollection ChanName : "<<atrc_v0->chanName(chanNum) <<endmsg; - std::string delimiter2 = "_"; - std::vector<std::string> tokens2; - MuonCalib::MdtStringUtils::tokenize(setPointsV0_payload,tokens2,delimiter2); + char delimiter2 = '_'; + const auto tokens2= MuonCalib::MdtStringUtils::tokenize(setPointsV0_payload,delimiter2); //m_ChamberML_V0_chanum.insert(std::make_pair(int(chanNum),float(setPointsV0_name))); m_ChamberML_V0_chanum[int(chanNum)]=float(setPointsV0_name); @@ -451,8 +447,8 @@ StatusCode MDT_DCSConditionsTool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) } - int multilayer =atoi(tokens2[3].c_str()); - std::string chamber_name = tokens2[2]; + int multilayer =MdtStringUtils::atoi(tokens2[3]); + const std::string_view &chamber_name = tokens2[2]; Identifier ChamberId= m_condMapTool->ConvertToOffline(chamber_name); Identifier MultiLayerId = m_mdtIdHelper->channelID(ChamberId,multilayer,1,1); @@ -485,9 +481,8 @@ StatusCode MDT_DCSConditionsTool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) if(atr_v1.size()==1){ setPointsV1_name=*(static_cast<const float*>((atr_v1["readBackSettings_v1"]).addressOfData())); - std::string delimiter2 = "_"; - std::vector<std::string> tokens2; - MuonCalib::MdtStringUtils::tokenize(setPointsV1_payload,tokens2,delimiter2); + char delimiter2 = '_'; + auto tokens2 = MuonCalib::MdtStringUtils::tokenize(setPointsV1_payload,delimiter2); //m_ChamberML_V1_chanum.insert(std::make_pair(int(chanNum),float(setPointsV1_name))); m_ChamberML_V1_chanum[int(chanNum)]=float(setPointsV1_name); @@ -498,8 +493,8 @@ StatusCode MDT_DCSConditionsTool::loadHV(IOVSVC_CALLBACK_ARGS_P(I,keys)) } - int multilayer =atoi(tokens2[3].c_str()); - std::string chamber_name = tokens2[2]; + int multilayer =MuonCalib::MdtStringUtils::atoi(tokens2[3]); + std::string_view chamber_name = tokens2[2]; Identifier ChamberId= m_condMapTool->ConvertToOffline(chamber_name); Identifier MultiLayerId = m_mdtIdHelper->channelID(ChamberId,multilayer,1,1); //m_ChamberML_V1.insert(std::make_pair(MultiLayerId,setPointsV1_name)); @@ -578,9 +573,8 @@ StatusCode MDT_DCSConditionsTool::loadLV(IOVSVC_CALLBACK_ARGS_P(I,keys)) if(atr.size()==1){ hv_name=*(static_cast<const std::string*>((atr["fsm_currentState"]).addressOfData())); //m_log<<MSG::DEBUG<<" CondAttrListCollection ChanNum : "<<chanNum<<" ChanName : " << atrc->chanName(chanNum) <<endmsg; - std::string delimiter = " "; - std::vector<std::string> tokens; - MuonCalib::MdtStringUtils::tokenize(hv_name,tokens,delimiter); + char delimiter = ' '; + const auto tokens = MuonCalib::MdtStringUtils::tokenize(hv_name,delimiter); for (unsigned int i=0; i<tokens.size(); i++) { @@ -590,9 +584,8 @@ StatusCode MDT_DCSConditionsTool::loadLV(IOVSVC_CALLBACK_ARGS_P(I,keys)) } - std::string delimiter2 = "_"; - std::vector<std::string> tokens2; - MuonCalib::MdtStringUtils::tokenize(hv_payload,tokens2,delimiter2); + char delimiter2 = '_'; + auto tokens2 = MuonCalib::MdtStringUtils::tokenize(hv_payload,delimiter2); for (unsigned int i=0; i<tokens2.size(); i++) { if(tokens2[i]!="0"){ @@ -603,8 +596,8 @@ StatusCode MDT_DCSConditionsTool::loadLV(IOVSVC_CALLBACK_ARGS_P(I,keys)) if(tokens[0]!="ON"){ if( m_verbose ) m_log << MSG::VERBOSE << "NOT ON LV: " << tokens[0]<< " ChamberName : "<<tokens2[2] <<endmsg; - m_cachedDeadLVStations.push_back(tokens2[2]); - std::string chamber_name= tokens2[2]; + m_cachedDeadLVStations.push_back(std::string(tokens2[2])); + std::string_view chamber_name= tokens2[2]; Identifier ChamberId= m_condMapTool->ConvertToOffline(chamber_name); m_cachedDeadLVStationsId.push_back(ChamberId); if( m_verbose ) m_log<<MSG::VERBOSE<<"Chamber off from LV Chamber !=ON "<<tokens2[2] <<endmsg; @@ -689,18 +682,16 @@ StatusCode MDT_DCSConditionsTool::loadJTAG(IOVSVC_CALLBACK_ARGS_P(I,keys)) if(atr.size()==1){ hv_name=*(static_cast<const std::string*>((atr["fsm_currentState"]).addressOfData())); - std::string delimiter = " "; - std::vector<std::string> tokens; - MuonCalib::MdtStringUtils::tokenize(hv_name,tokens,delimiter); + char delimiter = ' '; + auto tokens = MuonCalib::MdtStringUtils::tokenize(hv_name,delimiter); for (unsigned int i=0; i<tokens.size(); i++) { if(tokens[i]!="0"){ } } - std::string delimiter2 = "_"; - std::vector<std::string> tokens2; - MuonCalib::MdtStringUtils::tokenize(hv_payload,tokens2,delimiter2); + char delimiter2 = '_'; + auto tokens2 = MuonCalib::MdtStringUtils::tokenize(hv_payload,delimiter2); for (unsigned int i=0; i<tokens2.size(); i++) { if(tokens2[i]!="0"){ @@ -710,8 +701,8 @@ StatusCode MDT_DCSConditionsTool::loadJTAG(IOVSVC_CALLBACK_ARGS_P(I,keys)) if(tokens[0]!="INITIALIZED"){ - m_cachedDeadJTAGStatus.push_back(tokens2[2]); - std::string chamber_name= tokens2[2]; + m_cachedDeadJTAGStatus.push_back(std::string(tokens2[2])); + std::string_view chamber_name= tokens2[2]; Identifier ChamberId= m_condMapTool->ConvertToOffline(chamber_name); m_cachedDeadJTAGStatusId.push_back(ChamberId); } diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_DQConditionsTool.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_DQConditionsTool.cxx index fcb4d6cb7c584e2c0359f330b5077614159a36b0..6ea08115db7881f2b2274339f3c7f4521cbd76f9 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_DQConditionsTool.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_DQConditionsTool.cxx @@ -206,7 +206,7 @@ StatusCode MDT_DQConditionsTool::loadDeadChamber(IOVSVC_CALLBACK_ARGS_P(I,keys)) else if( m_debug ) m_log<<MSG::DEBUG<<" CondAttrListCollection from DB folder have been obtained with size "<< atrc->size() <<endmsg; - + using namespace MuonCalib; CondAttrListCollection::const_iterator itr; for (itr = atrc->begin(); itr != atrc->end(); ++itr) { @@ -220,21 +220,18 @@ StatusCode MDT_DQConditionsTool::loadDeadChamber(IOVSVC_CALLBACK_ARGS_P(I,keys)) list_layer=*(static_cast<const std::string*>((atr["Dead_layer"]).addressOfData())); list_tube=*(static_cast<const std::string*>((atr["Dead_tube"]).addressOfData())); - std::string delimiter = " "; - std::vector<std::string> tokens; - std::vector<std::string> tokens_mlayer; - std::vector<std::string> tokens_layer; + char delimiter = ' '; Identifier ChamberId= m_condMapTool->ConvertToOffline(chamber_name); - MuonCalib::MdtStringUtils::tokenize(list_tube,tokens,delimiter); - MuonCalib::MdtStringUtils::tokenize(list_mlayer,tokens_mlayer,delimiter); - MuonCalib::MdtStringUtils::tokenize(list_layer,tokens_layer,delimiter); + const auto tokens = MuonCalib::MdtStringUtils::tokenize(list_tube,delimiter); + const auto tokens_mlayer = MuonCalib::MdtStringUtils::tokenize(list_mlayer,delimiter); + const auto tokens_layer = MuonCalib::MdtStringUtils::tokenize(list_layer,delimiter); for (unsigned int i=0; i<tokens.size(); i++) { if(tokens[i]!="0"){ - int ml = atoi((tokens[i].substr(0,1)).c_str()); - int layer= atoi((tokens[i].substr(1,2)).c_str()); - int tube= atoi((tokens[i].substr(2)).c_str()); + int ml = MdtStringUtils::atoi(tokens[i][0]); + int layer= MdtStringUtils::atoi(tokens[i].substr(1,2)); + int tube= MdtStringUtils::atoi(tokens[i].substr(2)); Identifier ChannelId =m_mdtIdHelper->channelID(ChamberId,ml,layer,tube); m_cachedDeadTubesId.push_back(ChannelId); @@ -245,7 +242,7 @@ StatusCode MDT_DQConditionsTool::loadDeadChamber(IOVSVC_CALLBACK_ARGS_P(I,keys)) for (unsigned int i=0; i<tokens_mlayer.size(); i++) { if(tokens_mlayer[i]!="0"){ - int ml = atoi((tokens_mlayer[i].substr(0)).c_str()); + int ml = MdtStringUtils::atoi(tokens_mlayer[i].substr(0)); Identifier ChannelId =m_mdtIdHelper->channelID(ChamberId,ml,1,1); m_cachedDeadMultiLayersId.push_back(ChannelId); @@ -256,8 +253,8 @@ StatusCode MDT_DQConditionsTool::loadDeadChamber(IOVSVC_CALLBACK_ARGS_P(I,keys)) for (unsigned int i=0; i<tokens_layer.size(); i++) { if(tokens_layer[i]!="0"){ - int ml = atoi((tokens_layer[i].substr(0,1)).c_str()); - int layer = atoi((tokens_layer[i].substr(1)).c_str()); + int ml = MdtStringUtils::atoi(tokens_layer[i].substr(0,1)); + int layer = MdtStringUtils::atoi(tokens_layer[i].substr(1)); Identifier ChannelId =m_mdtIdHelper->channelID(ChamberId,ml,layer,1); m_cachedDeadLayersId.push_back(ChannelId); @@ -275,7 +272,7 @@ StatusCode MDT_DQConditionsTool::loadDeadChamber(IOVSVC_CALLBACK_ARGS_P(I,keys)) StatusCode MDT_DQConditionsTool::loadNoisyChamber(IOVSVC_CALLBACK_ARGS_P(I,keys)) { - + using namespace MuonCalib; m_log.setLevel(msgLevel()); m_debug = m_log.level() <= MSG::DEBUG; m_verbose = m_log.level() <= MSG::VERBOSE; @@ -318,21 +315,18 @@ StatusCode MDT_DQConditionsTool::loadNoisyChamber(IOVSVC_CALLBACK_ARGS_P(I,keys) list_layer=*(static_cast<const std::string*>((atr["Noisy_layer"]).addressOfData())); list_tube=*(static_cast<const std::string*>((atr["Noisy_tube"]).addressOfData())); - std::string delimiter = " "; - std::vector<std::string> tokens; - std::vector<std::string> tokens_mlayer; - std::vector<std::string> tokens_layer; + char delimiter = ' '; Identifier ChamberId= m_condMapTool->ConvertToOffline(chamber_name); - MuonCalib::MdtStringUtils::tokenize(list_tube,tokens,delimiter); - MuonCalib::MdtStringUtils::tokenize(list_mlayer,tokens_mlayer,delimiter); - MuonCalib::MdtStringUtils::tokenize(list_layer,tokens_layer,delimiter); + auto tokens = MuonCalib::MdtStringUtils::tokenize(list_tube,delimiter); + auto tokens_mlayer = MuonCalib::MdtStringUtils::tokenize(list_mlayer,delimiter); + auto tokens_layer = MuonCalib::MdtStringUtils::tokenize(list_layer,delimiter); for (unsigned int i=0; i<tokens.size(); i++) { if(tokens[i]!="0"){ - int ml = atoi((tokens[i].substr(0,1)).c_str()); - int layer= atoi((tokens[i].substr(1,2)).c_str()); - int tube= atoi((tokens[i].substr(2)).c_str()); + int ml = MdtStringUtils::atoi(tokens[i][0]); + int layer= MdtStringUtils::atoi(tokens[i].substr(1,2)); + int tube= MdtStringUtils::atoi(tokens[i].substr(2)); Identifier ChannelId =m_mdtIdHelper->channelID(ChamberId,ml,layer,tube); m_cachedNoisyTubesId.push_back(ChannelId); @@ -343,7 +337,7 @@ StatusCode MDT_DQConditionsTool::loadNoisyChamber(IOVSVC_CALLBACK_ARGS_P(I,keys) for (unsigned int i=0; i<tokens_mlayer.size(); i++) { if(tokens_mlayer[i]!="0"){ - int ml = atoi((tokens_mlayer[i].substr(0)).c_str()); + int ml = MdtStringUtils::atoi(tokens_mlayer[i].substr(0)); Identifier ChannelId =m_mdtIdHelper->channelID(ChamberId,ml,1,1); m_cachedNoisyMultiLayersId.push_back(ChannelId); @@ -354,8 +348,8 @@ StatusCode MDT_DQConditionsTool::loadNoisyChamber(IOVSVC_CALLBACK_ARGS_P(I,keys) for (unsigned int i=0; i<tokens_layer.size(); i++) { if(tokens_layer[i]!="0"){ - int ml = atoi((tokens_layer[i].substr(0,1)).c_str()); - int layer = atoi((tokens_layer[i].substr(1)).c_str()); + int ml = MdtStringUtils::atoi(tokens_layer[i].substr(0,1)); + int layer = MdtStringUtils::atoi(tokens_layer[i].substr(1)); Identifier ChannelId =m_mdtIdHelper->channelID(ChamberId,ml,layer,1); m_cachedNoisyLayersId.push_back(ChannelId); diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_MapConversion.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_MapConversion.cxx index b9f7e3828cfd4edcff1441a1c189339c088b2c37..10dc7c3d3ad775967e5c378fb0ad865ee9afa545 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_MapConversion.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_MapConversion.cxx @@ -137,29 +137,21 @@ StatusCode MDT_MapConversion::initialize() } -const Identifier& MDT_MapConversion::ConvertToOffline(const std::string &OnlineId, +const Identifier& MDT_MapConversion::ConvertToOffline(std::string_view OnlineId, bool quiet /*=false */) const { -// int size = m_Chamber_Map.size(); - //log << MSG::VERBOSE << "*************** size is\n" << size<< endmsg; - std::map<std::string, Identifier>::iterator iter; - - //const Identifier m_Online_empty; - - if (!m_Chamber_Map.empty()){ - const auto& mapit = m_Chamber_Map.find(OnlineId); - if (ATH_UNLIKELY(mapit == m_Chamber_Map.end())) { - if (!quiet) { - ATH_MSG_ERROR( "Lookup of ID " << OnlineId << " in MDT_MapConversion::ConvertToOffline failed" ); - } - return m_Online_empty; // not quite right but should never get here - } - const Identifier & OfflineName = (mapit->second); + + if(m_Chamber_Map.empty()) return m_Online_empty; + + for(const auto &mappair : m_Chamber_Map){ + if(mappair.first != OnlineId) continue; + const Identifier & OfflineName = mappair.second; return OfflineName; - } else { - return m_Online_empty; } - + if (!quiet) { + ATH_MSG_ERROR( "Lookup of ID " << OnlineId << " in MDT_MapConversion::ConvertToOffline failed" ); + } + return m_Online_empty; // not quite right but should never get here } diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/RPC_DCSConditionsTool.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/RPC_DCSConditionsTool.cxx index 1d22116c46a4e4bc1be8b1e1df75d2c6bde71f9b..064dd3098794080f5725f6968a0d13a530182850 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/RPC_DCSConditionsTool.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/RPC_DCSConditionsTool.cxx @@ -197,17 +197,16 @@ StatusCode RPC_DCSConditionsTool::loadPanelOff(IOVSVC_CALLBACK_ARGS_P(I,keys)) if( m_debug ) m_log << MSG::DEBUG << "panel_off "<< panel_off << endmsg; if( m_debug ) m_log << MSG::DEBUG << "panel_reason "<< panel_reason_off << endmsg; - std::string delimiter = ","; - std::vector<std::string> info_panel; - MuonCalib::MdtStringUtils::tokenize(panel_off,info_panel,delimiter); + char delimiter = ','; + const auto info_panel = MuonCalib::MdtStringUtils::tokenize(panel_off,delimiter); Identifier PanelId; for(unsigned int i=0; i<info_panel.size();i++){ - const char* ch_tmp= (info_panel[i].c_str()); - if( m_debug ) m_log << MSG::DEBUG << " info_panel " << ch_tmp << " "<<atoi(ch_tmp)<< endmsg; + const std::string_view &ch_tmp= info_panel[i]; + if( m_debug ) m_log << MSG::DEBUG << " info_panel " << ch_tmp << " "<<MuonCalib::MdtStringUtils::atoi(ch_tmp)<< endmsg; - PanelId= atoi(ch_tmp); + PanelId= MuonCalib::MdtStringUtils::atoi(ch_tmp); if(PanelId.get_compact()){ if( m_debug ) m_log << MSG::DEBUG << "OFFPANEL "<<m_rpcIdHelper->show_to_string(PanelId) << endmsg; @@ -274,17 +273,16 @@ StatusCode RPC_DCSConditionsTool::loadPanelDead(IOVSVC_CALLBACK_ARGS_P(I,keys)) if( m_debug ) m_log << MSG::DEBUG << "panel_dead "<< panel_dead << endmsg; if( m_debug ) m_log << MSG::DEBUG << "panel_reason "<< panel_reason_dead << endmsg; - std::string delimiter = ","; - std::vector<std::string> info_panel; - MuonCalib::MdtStringUtils::tokenize(panel_dead,info_panel,delimiter); + char delimiter = ','; + const auto info_panel = MuonCalib::MdtStringUtils::tokenize(panel_dead,delimiter); Identifier PanelId; for(unsigned int i=0; i<info_panel.size();i++){ - const char* ch_tmp= (info_panel[i].c_str()); - if( m_debug ) m_log << MSG::DEBUG << " info_panel " << ch_tmp << " "<<atoi(ch_tmp)<< endmsg; + const auto &ch_tmp= info_panel[i]; + if( m_debug ) m_log << MSG::DEBUG << " info_panel " << ch_tmp << " "<<MuonCalib::MdtStringUtils::atoi(ch_tmp)<< endmsg; - PanelId= atoi(ch_tmp); + PanelId= MuonCalib::MdtStringUtils::atoi(ch_tmp); if(PanelId.get_compact()){ if( m_debug ) m_log << MSG::DEBUG << "DEADPANEL "<< m_rpcIdHelper->show_to_string(PanelId) << endmsg; diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/RpcDetectorStatusDbTool.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/RpcDetectorStatusDbTool.cxx index ef8a1f810670d271b1aaff1be371df0c7eaae6a2..279ee345d63bcc14bb8e61613cecff4512fd7b1b 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/RpcDetectorStatusDbTool.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/RpcDetectorStatusDbTool.cxx @@ -166,14 +166,13 @@ StatusCode RpcDetectorStatusDbTool::loadRpcDqStatus( m_log << MSG::DEBUG << "striplist load is " << striplist << " " << striplist.size() << endmsg; } - std::string delimiter = " "; - std::vector<std::string> info_panel; - std::vector<float> info_panel_test; - MuonCalib::MdtStringUtils::tokenize(eff_panel, info_panel, delimiter); + char delimiter = ' '; + using namespace MuonCalib; + const auto info_panel = MdtStringUtils::tokenize(eff_panel, delimiter); if (m_verbose) { for (unsigned int i = 0; i < info_panel.size(); i++) { - const char* ch_tmp = (info_panel[i].c_str()); + const auto &ch_tmp = info_panel[i]; m_log << MSG::VERBOSE << " info_panel " << ch_tmp << endmsg; // version(3), # tracks, #strips, eff, errors, eff_gap, errors, res_cs1, // errors, res_cs2, errors, res_csother, errors, noise, errors, @@ -182,8 +181,7 @@ StatusCode RpcDetectorStatusDbTool::loadRpcDqStatus( } } - const char* SDBversion = (info_panel[0].c_str()); - int DBversion = atoi(SDBversion); + int DBversion = MdtStringUtils::atoi(info_panel[0]); if (m_FirstCall) m_log << MSG::INFO << " DB version " << info_panel[0] << " Size of info_panel array = " << info_panel.size() << endmsg; @@ -216,117 +214,104 @@ StatusCode RpcDetectorStatusDbTool::loadRpcDqStatus( m_log << MSG::INFO << " aver_cs9_up " << info_panel[24] << endmsg; } - const char* SNStrip = (info_panel[2].c_str()); - int npanelstrip = atoi(SNStrip); + int npanelstrip = MdtStringUtils::atoi(info_panel[2]); - const char* SProjectedTracks = (info_panel[1].c_str()); - double ProjectedTracks = atof(SProjectedTracks); + double ProjectedTracks = MdtStringUtils::stof(info_panel[1]); // m_RPC_PanelProjectedTracksMap.insert(std::make_pair(chamberId,ProjectedTracks)); m_RPC_PanelProjectedTracksMap[chamberId] = ProjectedTracks; if (m_debug) m_log << MSG::DEBUG << "Size of RPC_PanelProjectedTracksMap " << m_RPC_PanelProjectedTracksMap.size() << "; in panel " << channum - << " SProjectedTracks " << SProjectedTracks << " ProjectedTracks " + << " SProjectedTracks " << info_panel[1] << " ProjectedTracks " << ProjectedTracks << endmsg; - const char* SEfficiency = (info_panel[3].c_str()); - double Efficiency = atof(SEfficiency); + double Efficiency = MdtStringUtils::stof(info_panel[3]); // m_RPC_PanelEfficiencyMap.insert(std::make_pair(chamberId,Efficiency)); m_RPC_PanelEfficiencyMap[chamberId] = Efficiency; if (m_debug) m_log << MSG::DEBUG << "Size of RPC_PanelEfficiencyMap " << m_RPC_PanelEfficiencyMap.size() << "; in panel " << channum - << " SEfficiency " << SEfficiency << " Efficiency " << Efficiency + << " SEfficiency " << info_panel[3] << " Efficiency " << Efficiency << endmsg; - const char* SGapEfficiency = (info_panel[5].c_str()); - double GapEfficiency = atof(SGapEfficiency); + double GapEfficiency = MdtStringUtils::stof(info_panel[5]); // m_RPC_GapEfficiencyMap.insert(std::make_pair(chamberId,GapEfficiency)); m_RPC_GapEfficiencyMap[chamberId] = GapEfficiency; if (m_debug) m_log << MSG::DEBUG << "Size of RPC_GapEfficiencyMap " << m_RPC_GapEfficiencyMap.size() << "; in panel " << channum - << " SGapEfficiency " << SGapEfficiency << " GapEfficiency " + << " SGapEfficiency " << info_panel[5] << " GapEfficiency " << GapEfficiency << endmsg; - const char* SMeanClusterSizeMap = (info_panel[17].c_str()); - double MeanClusterSizeMap = atof(SMeanClusterSizeMap); + double MeanClusterSizeMap = MdtStringUtils::stof(info_panel[17]); // m_RPC_PanelMeanClusterSizeMap.insert(std::make_pair(chamberId,MeanClusterSizeMap)); m_RPC_PanelMeanClusterSizeMap[chamberId] = MeanClusterSizeMap; if (m_debug) m_log << MSG::DEBUG << "Size of RPC_PanelMeanClusterSizeMap " << m_RPC_PanelMeanClusterSizeMap.size() << "; in panel " << channum - << " SMeanClusterSizeMap " << SMeanClusterSizeMap + << " SMeanClusterSizeMap " << info_panel[17] << " MeanClusterSizeMap " << MeanClusterSizeMap << endmsg; if (DBversion > 2) { - const char* SFracClusterSize1Map_a = (info_panel[19].c_str()); - const char* SFracClusterSize1Map_b = (info_panel[20].c_str()); double FracClusterSize1Map = - atof(SFracClusterSize1Map_a) + atof(SFracClusterSize1Map_b) * 10000; + MdtStringUtils::stof(info_panel[19]) + MdtStringUtils::stof(info_panel[20]) * 10000; // m_RPC_PanelFracClusterSize1Map.insert(std::make_pair(chamberId,FracClusterSize1Map)); m_RPC_PanelFracClusterSize1Map[chamberId] = FracClusterSize1Map; if (m_debug) m_log << MSG::DEBUG << "Size of RPC_PanelFracClusterSize1Map " << m_RPC_PanelFracClusterSize1Map.size() << "; in panel " - << channum << " SFracClusterSize1Map_a " << SFracClusterSize1Map_a - << " SFracClusterSize1Map_b " << SFracClusterSize1Map_b + << channum << " SFracClusterSize1Map_a " << info_panel[19] + << " SFracClusterSize1Map_b " << info_panel[20] << " FracClusterSize1Map " << FracClusterSize1Map << endmsg; - const char* SFracClusterSize2Map_a = (info_panel[21].c_str()); - const char* SFracClusterSize2Map_b = (info_panel[22].c_str()); double FracClusterSize2Map = - atof(SFracClusterSize2Map_a) + atof(SFracClusterSize2Map_b) * 10000; + MdtStringUtils::stof(info_panel[21]) + MdtStringUtils::stof(info_panel[22]) * 10000; // m_RPC_PanelFracClusterSize2Map.insert(std::make_pair(chamberId,FracClusterSize2Map)); m_RPC_PanelFracClusterSize2Map[chamberId] = FracClusterSize2Map; if (m_debug) m_log << MSG::DEBUG << "Size of RPC_PanelFracClusterSize2Map " << m_RPC_PanelFracClusterSize2Map.size() << "; in panel " - << channum << " SFracClusterSize2Map_a " << SFracClusterSize2Map_a - << " SFracClusterSize2Map_b " << SFracClusterSize2Map_b + << channum << " SFracClusterSize2Map_a " << info_panel[21] + << " SFracClusterSize2Map_b " << info_panel[22] << " FracClusterSize2Map " << FracClusterSize2Map << endmsg; - const char* SFracClusterSize3Map_a = (info_panel[23].c_str()); - const char* SFracClusterSize3Map_b = (info_panel[24].c_str()); double FracClusterSize3Map = - atof(SFracClusterSize3Map_a) + atof(SFracClusterSize3Map_b) * 10000; + MdtStringUtils::stof(info_panel[23]) + MdtStringUtils::stof(info_panel[24]) * 10000; // m_RPC_PanelFracClusterSize3Map.insert(std::make_pair(chamberId,FracClusterSize3Map)); m_RPC_PanelFracClusterSize3Map[chamberId] = FracClusterSize3Map; if (m_debug) m_log << MSG::DEBUG << "Size of RPC_PanelFracClusterSize3Map " << m_RPC_PanelFracClusterSize3Map.size() << "; in panel " - << channum << " SFracClusterSize3Map_a " << SFracClusterSize3Map_a - << " SFracClusterSize3Map_b " << SFracClusterSize3Map_b + << channum << " SFracClusterSize3Map_a " << info_panel[23] + << " SFracClusterSize3Map_b " << info_panel[24] << " FracClusterSize3Map " << FracClusterSize3Map << endmsg; } else { if (info_panel.size() > 20) { - const char* SFracClusterSize1Map = (info_panel[19].c_str()); - double FracClusterSize1Map = atof(SFracClusterSize1Map); + double FracClusterSize1Map = MdtStringUtils::stof(info_panel[19]); // m_RPC_PanelFracClusterSize1Map.insert(std::make_pair(chamberId,FracClusterSize1Map)); m_RPC_PanelFracClusterSize1Map[chamberId] = FracClusterSize1Map; if (m_debug) m_log << MSG::DEBUG << "Size of RPC_PanelFracClusterSize1Map " << m_RPC_PanelFracClusterSize1Map.size() << "; in panel " - << channum << " SFracClusterSize1Map " << SFracClusterSize1Map + << channum << " SFracClusterSize1Map " << info_panel[19] << " FracClusterSize1Map " << FracClusterSize1Map << endmsg; - const char* SFracClusterSize2Map = (info_panel[20].c_str()); - double FracClusterSize2Map = atof(SFracClusterSize2Map); + double FracClusterSize2Map = MdtStringUtils::stof(info_panel[20]); // m_RPC_PanelFracClusterSize2Map.insert(std::make_pair(chamberId,FracClusterSize2Map)); m_RPC_PanelFracClusterSize2Map[chamberId] = FracClusterSize2Map; if (m_debug) m_log << MSG::DEBUG << "Size of RPC_PanelFracClusterSize2Map " << m_RPC_PanelFracClusterSize2Map.size() << "; in panel " - << channum << " SFracClusterSize2Map " << SFracClusterSize2Map + << channum << " SFracClusterSize2Map " << info_panel[20] << " FracClusterSize2Map " << FracClusterSize2Map << endmsg; } else { // m_RPC_PanelFracClusterSize1Map.insert(std::make_pair(chamberId,0.6)); @@ -353,12 +338,10 @@ StatusCode RpcDetectorStatusDbTool::loadRpcDqStatus( // update for the timing and error on timing // new info strip |status time error_on_time| - std::string delimiter_strip = "|"; - std::vector<std::string> info_strip; + char delimiter_strip = '|'; std::string strip_status_list = ""; - std::vector<float> info_strip_test; - MuonCalib::MdtStringUtils::tokenize(striplist, info_strip, delimiter_strip); + const auto info_strip = MdtStringUtils::tokenize(striplist, delimiter_strip); if (m_debug) m_log << MSG::DEBUG << "strip list " << striplist << " info list " @@ -371,37 +354,32 @@ StatusCode RpcDetectorStatusDbTool::loadRpcDqStatus( for (unsigned int i = 0; i < info_strip.size(); i++) { - const char* ch_strip2 = (info_strip[i].c_str()); + const auto &ch_strip2 = info_strip[i]; if (m_verbose) m_log << MSG::VERBOSE << "strip # " << i << " Status+Timing INFO (time, error) " << ch_strip2 << endmsg; - std::string delimiter_strip2 = " "; - std::vector<std::string> info_strip2; - std::vector<float> info_strip_test2; + char delimiter_strip2 = ' '; // // - MuonCalib::MdtStringUtils::tokenize( - ch_strip2, info_strip2, delimiter_strip2); + const auto info_strip2 = MdtStringUtils::tokenize(ch_strip2, delimiter_strip2); if (m_verbose) { for (unsigned int ii = 0; ii < info_strip2.size(); ii++) { - const char* ch_strip_new = (info_strip2[ii].c_str()); + const auto& ch_strip_new = info_strip2[ii]; m_log << MSG::VERBOSE << " info_strip with time " << info_strip2[ii] << " again " << ch_strip_new << endmsg; } } - const char* STime = const_cast<char*>(info_strip2[1].c_str()); - double Time = atof(STime); - const char* SSigmaTime = const_cast<char*>(info_strip2[2].c_str()); - double SigmaTime = atof(SSigmaTime); - const char* strip_status = const_cast<char*>(info_strip2[0].c_str()); + double Time = MdtStringUtils::stof(info_strip2[1]); + double SigmaTime = MdtStringUtils::stof(info_strip2[2]); + const std::string_view &strip_status = info_strip2[0]; if (m_verbose) m_log << MSG::VERBOSE << "strip # " << i << " after dec: Status+Timing INFO (time, error) " << strip_status << " " << Time << "+/-" << SigmaTime << endmsg; - strip_status_list = strip_status_list + strip_status; + strip_status_list += strip_status; std::vector<double> Time_vect; Time_vect.push_back(Time); @@ -418,7 +396,7 @@ StatusCode RpcDetectorStatusDbTool::loadRpcDqStatus( << m_rpcIdHelper->show_to_string(strip_id) << endmsg; // m_RPC_StripTimeMap.insert(std::make_pair(strip_id,Time_vect)); - m_RPC_StripTimeMap[strip_id] = Time_vect; + m_RPC_StripTimeMap[strip_id] = std::move(Time_vect); countpanelstrip++; @@ -465,11 +443,11 @@ StatusCode RpcDetectorStatusDbTool::loadRpcDqStatus( } for (unsigned int i = 0; i < striplist.size(); i++) { - std::string part_strip = striplist.substr(i, 1); + char part_strip = striplist[i]; - strip_status_list = strip_status_list + part_strip; + strip_status_list += part_strip; - const char* h_panel = (part_strip.c_str()); + char h_panel = part_strip; Identifier strip_id; CondAttrListCollection::ChanNum stripnum; @@ -484,7 +462,7 @@ StatusCode RpcDetectorStatusDbTool::loadRpcDqStatus( countpanelstrip++; - if (part_strip == "0") { + if (part_strip == '0') { if (m_debug && (!m_verbose)) m_log << MSG::DEBUG << "strip #" << i + 1 << " info_strip " << part_strip << " strip_id " << stripnum << " expanded " diff --git a/MuonSpectrometer/MuonDetDescr/MuonAGDDDescription/MuonAGDDDescription/sTGCDetectorHelper.h b/MuonSpectrometer/MuonDetDescr/MuonAGDDDescription/MuonAGDDDescription/sTGCDetectorHelper.h index e03fb9b9e304d951b994740ad2301dffd84e2006..0036e8ab3e0bc44abf2c8db01edb3aae2855e29c 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonAGDDDescription/MuonAGDDDescription/sTGCDetectorHelper.h +++ b/MuonSpectrometer/MuonDetDescr/MuonAGDDDescription/MuonAGDDDescription/sTGCDetectorHelper.h @@ -26,6 +26,8 @@ public: sTGCDetectorDescription* Get_sTGCDetector(char type,int ieta,int iphi,int layer=1,char side='A'); sTGCDetectorDescription* Get_sTGCDetectorType(const std::string& type); sTGCDetectorDescription* Get_sTGCDetectorSubType(const std::string& type); + sTGCDetectorDescription* Get_sTGCDetectorType(std::string_view type); + sTGCDetectorDescription* Get_sTGCDetectorSubType(std::string_view type); AGDDPositionedDetector Get_sTGCPositionedDetector(char type,int ieta,int iphi,int layer=1,char side='A'); private: diff --git a/MuonSpectrometer/MuonDetDescr/MuonAGDDDescription/src/sTGCDetectorHelper.cxx b/MuonSpectrometer/MuonDetDescr/MuonAGDDDescription/src/sTGCDetectorHelper.cxx index 5e51b3499bce8a0ff527823d236a44a4c3426510..158ecfbb12f07a7fd620eff5f3c58de07e9b3c41 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonAGDDDescription/src/sTGCDetectorHelper.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonAGDDDescription/src/sTGCDetectorHelper.cxx @@ -100,13 +100,28 @@ AGDDPositionedDetector sTGCDetectorHelper::Get_sTGCPositionedDetector(char type, sTGCDetectorDescription* sTGCDetectorHelper::Get_sTGCDetectorType(const std::string& type) { - if (m_sTGCList.find(type) != m_sTGCList.end()) return m_sTGCList[type]; + if (auto itr = m_sTGCList.find(type); itr != m_sTGCList.end()) return itr->second; return nullptr; } sTGCDetectorDescription* sTGCDetectorHelper::Get_sTGCDetectorSubType(const std::string& type) { - if (m_sTGCListSubType.find(type) != m_sTGCListSubType.end()) return m_sTGCListSubType[type]; + if (auto itr = m_sTGCListSubType.find(type); itr != m_sTGCListSubType.end()) return itr->second; return nullptr; } +sTGCDetectorDescription* sTGCDetectorHelper::Get_sTGCDetectorType(std::string_view type) +{ + for(const auto &pair : m_sTGCList){ + if(pair.first == type) return pair.second; + } + return nullptr; +} + +sTGCDetectorDescription* sTGCDetectorHelper::Get_sTGCDetectorSubType(std::string_view type) +{ + for(const auto &pair : m_sTGCListSubType){ + if(pair.first == type) return pair.second; + } + return nullptr; +} diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/GlobalUtilities.h b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/GlobalUtilities.h index 10844c9e1bd760b3cf27a4a24a8960ab18b1935a..884a3f8e80731f12b6bff05ad7dd8c835462b384 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/GlobalUtilities.h +++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/GlobalUtilities.h @@ -15,8 +15,8 @@ namespace MuonGM { std::string buildString(int i, int ncha); - int strtoint(const std::string& str, unsigned int istart, unsigned int length); - int stationPhiTGC(const std::string& stName, int fi, int zi_input, const std::string& geometry_version); + int strtoint(std::string_view str, unsigned int istart, unsigned int length); + int stationPhiTGC(std::string_view stName, int fi, int zi_input, std::string_view geometry_version); } #endif // MUONREADOUTGEOMETRY_GLOBALUTILITIES_H diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonStation.h b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonStation.h index 20876dc7f8804bee94030bb1d8c6bb2021517a07..439092c035768bfd1ad30a22658bd54ad34db34f 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonStation.h +++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonStation.h @@ -46,7 +46,7 @@ class MuonReadoutElement; class MuonStation { public: - MuonStation(std::string stName, + MuonStation(std::string_view stName, double m_Ssize, double m_Rsize, double m_Zsize, double m_LongSsize, double m_LongRsize, double m_LongZsize, int zi, int fi, bool m_descratzneg); diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/GlobalUtilities.cxx b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/GlobalUtilities.cxx index e121ecce535ee71db533f52e0bc9acd79c169661..fb8da4a4574d68841e4b2cc4ef481d00bd4dea57 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/GlobalUtilities.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/GlobalUtilities.cxx @@ -12,6 +12,7 @@ #include <iostream> #include <sstream> #include <cmath> +#include <charconv> namespace MuonGM { @@ -19,9 +20,7 @@ namespace MuonGM std::string buildString(int i, int ncha) { if (ncha<=0) { - std::ostringstream ostigg; - ostigg << i; - return ostigg.str(); + return std::to_string(i); } else { int ij = i; std::ostringstream ostigg; @@ -36,19 +35,20 @@ std::string buildString(int i, int ncha) -int strtoint(const std::string& str, unsigned int istart, unsigned int length) +int strtoint(std::string_view str, unsigned int istart, unsigned int length) { - std::string s(str.substr(istart,length)); - int result = std::stoi(s); + std::string_view s(str.substr(istart,length)); + int result = -999; + std::from_chars(s.data(), s.data() + s.size(), result); return result; } -int stationPhiTGC(const std::string& stName, int fi, int zi_input, const std::string& geometry_version) +int stationPhiTGC(std::string_view stName, int fi, int zi_input, std::string_view geometry_version) { // fi and zi_imput are the amdb indices (1, ... 8) and (-8, 8) are their ranges - std::string stName3 = stName.substr(0,3); + std::string_view stName3 = stName.substr(0,3); int stphi = 0; int zi = std::abs(zi_input); diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonStation.cxx b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonStation.cxx index cf89b0a461e5c90b0e0debfbaefc8bc1c7af6f20..1a436c71df43715d89df1501a6b76a9bba1f672a 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonStation.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonStation.cxx @@ -18,12 +18,12 @@ namespace MuonGM { -MuonStation::MuonStation(std::string stName, +MuonStation::MuonStation(std::string_view stName, double Ssize, double Rsize, double Zsize, double LongSsize, double LongRsize, double LongZsize, int zi, int fi, bool descratzneg) { - m_statname = std::move(stName); + m_statname = std::string(stName); m_Ssize = Ssize ; m_Rsize = Rsize ; m_Zsize = Zsize ; diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/TgcReadoutElement.cxx b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/TgcReadoutElement.cxx index 60f7d9063550f3722456a268547980957f157485..f0e047b3a4518156d088ad8743a6b5aff7ce86a9 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/TgcReadoutElement.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/TgcReadoutElement.cxx @@ -262,12 +262,12 @@ int TgcReadoutElement::chamberType() const bool TgcReadoutElement::endcap() const { - return ("E" == stationType().substr(2,1)); + return (0 == stationType().compare(2,1,"E")); } bool TgcReadoutElement::forward() const { - return ("F" == stationType().substr(2,1)); + return (0 == stationType().compare(2,1,"F")); } bool TgcReadoutElement::doublet() const @@ -484,7 +484,7 @@ float TgcReadoutElement::stripDeltaPhi(int gasGap) const float dphi; int iStation = atoi(getStationType().substr(1,1).c_str()); - if (iStation != 4 || "E" != getStationType().substr(2,1)) { // except for station T4E + if (iStation != 4 || 0 != getStationType().compare(2,1,"E")) { // except for station T4E dphi = 360.*CLHEP::degree/((float) getNPhiChambers())/nDivInChamberPhi[iStation-1]; } else { // T4E diff --git a/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonInertMaterialBuilder.cxx b/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonInertMaterialBuilder.cxx index bb4ce9c84c0efea37adbfb2ff38290148cf81d1e..0bd15fa5ea072cd03e73ca2b07adf590d3bdb185 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonInertMaterialBuilder.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonInertMaterialBuilder.cxx @@ -133,9 +133,9 @@ const std::vector<const Trk::DetachedTrackingVolume*>* Muon::MuonInertMaterialBu protMass += calculateVolume((*((*msTypeIter).first->constituents()))[ic].first.get()) * (*((*msTypeIter).first->constituents()))[ic].second; } - perm = msTypeName.substr(0, 1) != "J" && m_blendLimit > 0 && protMass > m_blendLimit; + perm = msTypeName.compare(0, 1, "J") != 0 && m_blendLimit > 0 && protMass > m_blendLimit; } - if (perm) msTypeName = msTypeName + "PERM"; + if (perm) msTypeName += "PERM"; // const Trk::DetachedTrackingVolume* msTV = (*msTypeIter).first; for (unsigned int it = 0; it < (*msTypeIter).second.size(); it++) { @@ -183,11 +183,8 @@ Muon::MuonInertMaterialBuilder::buildDetachedTrackingVolumeTypes(bool blend) { while (!vol.atEnd()) { const GeoVPhysVol* cv = &(*(vol.getVolume())); const GeoLogVol* clv = cv->getLogVol(); - std::string vname = clv->getName(); - // if ( vname.size()<8 && vname.substr(0,3)=="NSW" && vname.substr(1,4)=="sTGC" ) { // do nothing NSW sTGC station - // } else if ( vname.size()<8 && vname.substr(0,3)=="NSW" && vname.substr(1,2)=="MM" ) { // do nothing NSW MM station - // } else if ( vname.size()>=8 && vname.substr(0,8)=="NewSmall" && vname.substr(1,4)=="sTGC" ) { // do nothing, probably NSW - // station } else if ( vname.size()>=8 && vname.substr(0,8)=="NewSmall" && vname.substr(1,2)=="MM" ) { // do nothing, probably + const std::string vnamestr = clv->getName(); + std::string_view vname(vnamestr); // NSW station if (vname.size() > 7 && vname.substr(vname.size() - 7, 7) == "Station") { // do nothing, active station } else { @@ -240,7 +237,7 @@ Muon::MuonInertMaterialBuilder::buildDetachedTrackingVolumeTypes(bool blend) { if (!cv->getNChildVols()) { std::vector<Amg::Transform3D> volTr; volTr.push_back(vol.getTransform()); - vols.emplace_back(clv, volTr); + vols.emplace_back(clv, std::move(volTr)); simpleTree = true; } else { getObjsForTranslation(cv, Trk::s_idTransform, vols); @@ -253,8 +250,8 @@ Muon::MuonInertMaterialBuilder::buildDetachedTrackingVolumeTypes(bool blend) { m_constituents.reserve(vols.size() + 3); for (unsigned int ish = 0; ish < vols.size(); ish++) { - std::string protoName = vname; - if (!simpleTree) protoName = vname + (vols[ish].first->getName()); + std::string protoName = std::string(vname); + if (!simpleTree) protoName += (vols[ish].first->getName()); std::string pName = vols[ish].first->getName(); ATH_MSG_VERBOSE(" check in pName " << pName << ", made of " << vols[ish].first->getMaterial()->getName() << " x0 " << vols[ish].first->getMaterial()->getRadLength() << "," diff --git a/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationBuilder.cxx b/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationBuilder.cxx index 9d19da55f089ca4a78b8a4082679b6a3e65445c6..cb0dba7899d666a0baab85aec0d99eab0e639aea 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationBuilder.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationBuilder.cxx @@ -115,10 +115,10 @@ const std::vector<const Trk::DetachedTrackingVolume*>* Muon::MuonStationBuilder: while (!vol.atEnd()) { const GeoVPhysVol* cv = &(*(vol.getVolume())); const GeoLogVol* clv = cv->getLogVol(); - std::string vname = clv->getName(); + const std::string &vname = clv->getName(); // special treatment for NSW - if (vname.substr(0, 3) == "NSW" || vname.substr(0, 8) == "NewSmall") { + if (vname.compare(0, 3, "NSW") == 0 || vname.compare(0, 8, "NewSmall") == 0) { ATH_MSG_INFO(vname << " processing NSW "); std::vector<std::pair<const Trk::DetachedTrackingVolume*, std::vector<Amg::Transform3D> > > objs; @@ -131,7 +131,7 @@ const std::vector<const Trk::DetachedTrackingVolume*>* Muon::MuonStationBuilder: std::vector<Amg::Transform3D> volTr; volTr.push_back(vol.getTransform()); std::pair<const GeoLogVol*, Trk::MaterialProperties*> cpair(clv, 0); - vols.emplace_back(cpair, volTr); + vols.emplace_back(cpair, std::move(volTr)); volNames.push_back(vname); simpleTree = true; } else { @@ -835,7 +835,8 @@ void Muon::MuonStationBuilder::glueComponents(const Trk::DetachedTrackingVolume* void Muon::MuonStationBuilder::identifyLayers(const Trk::DetachedTrackingVolume* station, int eta, int phi) const { ATH_MSG_VERBOSE(name() << " identifying layers "); - std::string stationName = station->trackingVolume()->volumeName(); + const std::string &stationNamestr = station->trackingVolume()->volumeName(); + std::string_view stationName(stationNamestr); ATH_MSG_VERBOSE(" in station " << station->name()); if (stationName.substr(0, 1) == "C") { diff --git a/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationBuilderCond.cxx b/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationBuilderCond.cxx index 424f97b7a2e16ec3e4f7a9ad9a347a555ebde94e..53837fed175629fd500c0d03b0303ac808958fe3 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationBuilderCond.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationBuilderCond.cxx @@ -125,7 +125,7 @@ Muon::MuonStationBuilderCond::buildDetachedTrackingVolumes(const EventContext& c std::string vname = clv->getName(); // special treatment for NSW - if (vname.substr(0, 3) == "NSW" || vname.substr(0, 8) == "NewSmall") { + if (vname.compare(0, 3,"NSW") == 0 || vname.compare(0, 8,"NewSmall") == 0) { ATH_MSG_INFO(vname << " processing NSW "); std::vector<std::pair<const Trk::DetachedTrackingVolume*, std::vector<Amg::Transform3D> > > objs; @@ -138,7 +138,7 @@ Muon::MuonStationBuilderCond::buildDetachedTrackingVolumes(const EventContext& c std::vector<Amg::Transform3D> volTr; volTr.push_back(vol.getTransform()); std::pair<const GeoLogVol*, Trk::MaterialProperties*> cpair(clv, 0); - vols.emplace_back(cpair, volTr); + vols.emplace_back(cpair, std::move(volTr)); volNames.push_back(vname); simpleTree = true; } else { @@ -171,7 +171,7 @@ Muon::MuonStationBuilderCond::buildDetachedTrackingVolumes(const EventContext& c // Got to mothervolume of sTGC_Sensitive/sTGC_Frame and MM_Sensitive/MM_Frame: TGCGas ArCo2 ATH_MSG_DEBUG(" ish " << ish << " protoName14 " << protoName.substr(1, 4) << " volName04 " << volNames[ish].substr(0, 4)); - if (volNames[ish].substr(0, 4) != "sTGC" && volNames[ish].substr(0, 2) != "MM") continue; + if (volNames[ish].compare(0, 4,"sTGC") != 0 && volNames[ish].substr(0, 2) != "MM") continue; std::string oName = protoName.substr(protoName.find('-') + 1); Identifier nswId = m_muonStationTypeBuilder->identifyNSW(muonMgr, oName, vols[ish].second[0]); @@ -500,9 +500,9 @@ Muon::MuonStationBuilderCond::buildDetachedTrackingVolumes(const EventContext& c } // end NSW! - if (vname.size() > 7 && vname.substr(vname.size() - 7, 7) == "Station" && - ((m_buildBarrel && vname.substr(0, 1) == "B") || (m_buildEndcap && vname.substr(0, 1) == "E") || - (m_buildCsc && vname.substr(0, 1) == "C") || (m_buildTgc && vname.substr(0, 1) == "T"))) { + if (vname.size() > 7 && vname.compare(vname.size() - 7, 7, "Station") == 0 && + ((m_buildBarrel && vname.compare(0, 1,"B") == 0) || (m_buildEndcap && vname.compare(0, 1,"E") == 0) || + (m_buildCsc && vname.compare(0, 1,"C") == 0) || (m_buildTgc && vname.compare(0, 1, "T") == 0))) { int etaphi = vol.getId(); // retrive eta/phi indexes int sign = (etaphi < 0) ? -1 : 1; etaphi = sign * etaphi; @@ -530,31 +530,31 @@ Muon::MuonStationBuilderCond::buildDetachedTrackingVolumes(const EventContext& c // if (!gmStation) ATH_MSG_WARNING("Muon station not found! " << vname << "," << eta << "," << phi); std::string stName = (clv->getName()).substr(0, vname.size() - 8); - if (stName.substr(0, 1) == "B" && eta < 0) { stName = (clv->getName()).substr(0, vname.size() - 8) + "-"; } - if (stName.substr(0, 1) == "T" || stName.substr(0, 1) == "C") { stName = vname.substr(0, 4); } + if (stName.compare(0, 1,"B") == 0 && eta < 0) { stName = (clv->getName()).substr(0, vname.size() - 8) + "-"; } + if (stName.compare(0, 1,"T") == 0 || stName.compare(0, 1,"C") == 0) { stName = vname.substr(0, 4); } // loop over prototypes const Trk::DetachedTrackingVolume* msTV = nullptr; for (msTypeIter = msTypes->begin(); msTypeIter != msTypes->end(); ++msTypeIter) { std::string msTypeName = (*msTypeIter)->name(); - if ((stName.substr(0, 1) == "T" && stName == msTypeName.substr(0, stName.size())) || - (stName.substr(0, 1) != "T" && stName == msTypeName)) { + if ((stName.compare(0, 1,"T") == 0 && 0 == msTypeName.compare(0, stName.size(),stName)) || + (stName.compare(0, 1, "T") != 0 && stName == msTypeName)) { msTV = *msTypeIter; if (msTV && gmStation) { Amg::Transform3D transf = Amg::CLHEPTransformToEigen(gmStation->getTransform()); Identifier stId(0); - if (m_idHelperSvc->hasCSC() && stName.substr(0, 1) == "C") { + if (m_idHelperSvc->hasCSC() && stName.compare(0, 1,"C") == 0) { stId = m_idHelperSvc->cscIdHelper().elementID(vname.substr(0, 3), eta, phi); } // adjust eta,phi - if (msTypeName.substr(0, 1) == "C") { + if (msTypeName.compare(0, 1,"C") == 0) { eta = 1; if (transf.translation().z() < 0) eta = 0; double phic = transf.translation().phi() + 0.1; phi = static_cast<int>(phic < 0 ? 4 * phic / M_PI + 8 : 4 * phic / M_PI); } - if (msTypeName.substr(0, 1) == "T") { + if (msTypeName.compare(0, 1,"T") == 0) { bool az = true; - std::string msName = msTV->trackingVolume()->volumeName(); + std::string_view msName ( msTV->trackingVolume()->volumeName()); if (transf.translation().z() < 0) az = false; if (msName.substr(7, 2) == "01") eta = az ? 5 : 4; if (msName.substr(7, 2) == "02") eta = az ? 5 : 4; @@ -579,19 +579,19 @@ Muon::MuonStationBuilderCond::buildDetachedTrackingVolumes(const EventContext& c if (msName.substr(7, 2) == "21") eta = az ? 5 : 4; if (msName.substr(7, 2) == "22") eta = az ? 5 : 4; } - if (m_idHelperSvc->hasTGC() && stName.substr(0, 1) == "T") { + if (m_idHelperSvc->hasTGC() && stName.compare(0, 1, "T") == 0) { int etaSt = eta - 4; if (eta < 5) etaSt = eta - 5; double phic = transf.translation().phi(); - if (msTypeName.substr(2, 1) == "E" && msTypeName.substr(0, 3) != "T4E") + if (msTypeName.compare(2, 1, "E") == 0 && msTypeName.compare(0, 3, "T4E") != 0) phi = static_cast<int>(phic < 0 ? 24 * phic / M_PI + 48 : 24 * phic / M_PI); else phi = static_cast<int>(phic < 0 ? 12 * phic / M_PI + 24 : 12 * phic / M_PI); phi++; stId = m_idHelperSvc->tgcIdHelper().elementID(vname.substr(0, 3), etaSt, phi); - } else if (m_idHelperSvc->hasRPC() && stName.substr(0, 3) == "BML") { + } else if (m_idHelperSvc->hasRPC() && stName.compare(0, 3, "BML") == 0) { stId = m_idHelperSvc->rpcIdHelper().elementID(vname.substr(0, 3), eta, phi, 1); - } else if (m_idHelperSvc->hasMDT() && stName.substr(0, 1) != "C") { + } else if (m_idHelperSvc->hasMDT() && stName.compare(0, 1, "C") != 0) { stId = m_idHelperSvc->mdtIdHelper().elementID(vname.substr(0, 3), eta, phi); } if (!(stId.get_compact())) @@ -638,9 +638,9 @@ const std::vector<const Trk::DetachedTrackingVolume*>* Muon::MuonStationBuilderC const GeoVPhysVol* cv = &(*(vol.getVolume())); const GeoLogVol* clv = cv->getLogVol(); const std::string& vname = clv->getName(); - if (vname.size() > 7 && vname.substr(vname.size() - 7, 7) == "Station" && - ((m_buildBarrel && vname.substr(0, 1) == "B") || (m_buildEndcap && vname.substr(0, 1) == "E") || - (m_buildCsc && vname.substr(0, 1) == "C") || (m_buildTgc && vname.substr(0, 1) == "T"))) { + if (vname.size() > 7 && vname.compare(vname.size() - 7, 7, "Station") == 0 && + ((m_buildBarrel && vname.compare(0, 1, "B") == 0) || (m_buildEndcap && vname.compare(0, 1, "E") == 0) || + (m_buildCsc && vname.compare(0, 1, "C") == 0) || (m_buildTgc && vname.compare(0, 1,"T") == 0))) { int etaphi = vol.getId(); // retrieve eta/phi indexes int sign = (etaphi < 0) ? -1 : 1; etaphi = sign * etaphi; @@ -670,11 +670,11 @@ const std::vector<const Trk::DetachedTrackingVolume*>* Muon::MuonStationBuilderC std::string name = (clv->getName()).substr(0, vname.size() - 8); // is this station known ? // if TGC station, look for 1 component instead - if (name.substr(0, 1) == "T") { + if (name.compare(0, 1,"T") == 0) { std::string tgc_name = cv->getChildVol(0)->getLogVol()->getName(); name = tgc_name; } - if (name.substr(0, 1) == "B" && eta < 0) { name = (clv->getName()).substr(0, vname.size() - 8) + "-"; } + if (name.compare(0, 1, "B") == 0 && eta < 0) { name = (clv->getName()).substr(0, vname.size() - 8) + "-"; } unsigned is = 0; for (unsigned in = 0; in < stations.size(); in++) { if (stations[in] != nullptr && name == stations[in]->name()) is++; @@ -683,9 +683,9 @@ const std::vector<const Trk::DetachedTrackingVolume*>* Muon::MuonStationBuilderC ATH_MSG_VERBOSE(" new station type " << name << "," << clv->getShape()->type()); ATH_MSG_VERBOSE(" prototype built from eta, phi:" << eta << "," << phi); - if (name.substr(0, 2) == "CS" || name.substr(0, 1) == "T") { + if (name.compare(0, 2,"CS") == 0 || name.compare(0, 1,"T") == 0) { if (m_muonStationTypeBuilder) { - if (name.substr(0, 2) == "CS") { + if (name.compare(0, 2, "CS") == 0) { Trk::TrackingVolume* csc_station = m_muonStationTypeBuilder->processCscStation(cv, name, cache); // create layer representation std::pair<const Trk::Layer*, const std::vector<const Trk::Layer*>*> layerRepr = @@ -782,7 +782,7 @@ const std::vector<const Trk::DetachedTrackingVolume*>* Muon::MuonStationBuilderC delete envelope; // identify prototype - if ((name.substr(0, 1) == "B" || name.substr(0, 1) == "E")) + if ((name.compare(0, 1, "B") == 0 || name.compare(0, 1,"E") == 0)) identifyPrototype(newType, eta, phi, Amg::CLHEPTransformToEigen(gmStation->getTransform()), muonMgr); // create layer representation @@ -844,8 +844,8 @@ void Muon::MuonStationBuilderCond::identifyLayers(const Trk::DetachedTrackingVol std::string stationName = station->trackingVolume()->volumeName(); ATH_MSG_VERBOSE(" in station " << station->name()); - if (stationName.substr(0, 1) == "C") { - int st = stationName.substr(0, 3) == "CSS" ? 0 : 1; + if (stationName.compare(0, 1, "C") == 0) { + int st = stationName.compare(0, 3, "CSS") == 0 ? 0 : 1; const MuonGM::CscReadoutElement* cscRE = muonMgr->getCscReadoutElement(st, eta, phi, 0); int cLay = cscRE ? 0 : 1; if (!cscRE) cscRE = muonMgr->getCscReadoutElement(st, eta, phi, cLay); @@ -870,21 +870,21 @@ void Muon::MuonStationBuilderCond::identifyLayers(const Trk::DetachedTrackingVol } } - if (stationName.substr(0, 1) == "T") { + if (stationName.compare(0, 1, "T") == 0) { int st = 7; - if (stationName.substr(0, 3) == "T1F") { + if (stationName.compare(0, 3, "T1F") == 0) { st = 0; - } else if (stationName.substr(0, 3) == "T1E") { + } else if (stationName.compare(0, 3, "T1E") == 0) { st = 1; - } else if (stationName.substr(0, 3) == "T2F") { + } else if (stationName.compare(0, 3, "T2F") == 0) { st = 2; - } else if (stationName.substr(0, 3) == "T2E") { + } else if (stationName.compare(0, 3, "T2E") == 0) { st = 3; - } else if (stationName.substr(0, 3) == "T3F") { + } else if (stationName.compare(0, 3, "T3F") == 0) { st = 4; - } else if (stationName.substr(0, 3) == "T3E") { + } else if (stationName.compare(0, 3, "T3E") == 0) { st = 5; - } else if (stationName.substr(0, 3) == "T4F") { + } else if (stationName.compare(0, 3, "T4F") == 0) { st = 6; } @@ -946,7 +946,7 @@ void Muon::MuonStationBuilderCond::identifyLayers(const Trk::DetachedTrackingVol } } - if (m_idHelperSvc->hasMDT() && (stationName.substr(0, 1) == "B" || stationName.substr(0, 1) == "E")) { + if (m_idHelperSvc->hasMDT() && (stationName.compare(0, 1, "B") == 0 || stationName.compare(0, 1, "E") == 0)) { // recalculate id Identifier stId(station->layerRepresentation()->layerType()); @@ -1213,7 +1213,7 @@ void Muon::MuonStationBuilderCond::getNSWStationsForTranslation( childName = childName + st.str(); } - std::string cName = childName.substr(0, 3) == "NSW" || childName.substr(0, 8) == "NewSmall" ? name : name + childName; + std::string cName = childName.compare(0, 3, "NSW") == 0 || childName.compare(0, 8, "NewSmall") == 0 ? name : name + childName; ATH_MSG_VERBOSE("child number,name,position:" << ic << ":" << clv->getName() << ":" << (transform * transf).translation().perp() << "," << (transform * transf).translation().z() << "," << (transform * transf).translation().phi()); diff --git a/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationTypeBuilder.cxx b/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationTypeBuilder.cxx index c21aacec4afa60341f79662cba6e12a9cf8b1c9e..8c39b0a713a6825b222e1ace24a126110f0181e8 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationTypeBuilder.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationTypeBuilder.cxx @@ -148,9 +148,9 @@ const Trk::TrackingVolumeArray* Muon::MuonStationTypeBuilder::processBoxStationC vol = new Trk::Volume(new Amg::Transform3D(transf), volBounds); ATH_MSG_VERBOSE("subvolume center:" << vol->center().x() << "," << vol->center().y() << "," << vol->center().z()); std::string cname = clv->getName(); - std::string vname = mv->getLogVol()->getName(); + const std::string &vname = mv->getLogVol()->getName(); int nameSize = vname.size() - 8; - if (cname.substr(0, nameSize) == vname.substr(0, nameSize)) cname = cname.substr(nameSize, cname.size() - nameSize); + if (cname.compare(0, nameSize, vname, 0, nameSize) == 0) cname = cname.substr(nameSize, cname.size() - nameSize); // order in X if (compVol.empty() || vol->center()[0] >= compVol.back()->center()[0]) { compVol.push_back(vol); @@ -220,7 +220,7 @@ const Trk::TrackingVolumeArray* Muon::MuonStationTypeBuilder::processBoxStationC if (uppX > maxX) ATH_MSG_WARNING(" clash between component and envelope:" << compName[i] << "upper:" << uppX << ">" << maxX); // close Rpc if no further components - if (openRpc && compName[i].substr(0, 3) != "RPC" && compName[i].substr(0, 3) != "Ded") { + if (openRpc && compName[i].compare(0, 3, "RPC") != 0 && compName[i].compare(0, 3, "Ded") != 0) { // low edge of current volume double Xcurr = compVol[i]->center()[0] - compBounds->halflengthX(); if (Xcurr >= currX + rpclowXsize + rpcuppXsize) { @@ -238,7 +238,7 @@ const Trk::TrackingVolumeArray* Muon::MuonStationTypeBuilder::processBoxStationC } } // close spacer if no further components - if (openSpacer && compName[i].substr(0, 1) != "C" && compName[i].substr(0, 2) != "LB") { + if (openSpacer && compName[i].compare(0, 1, "C") != 0 && compName[i].compare(0, 2, "LB") != 0) { // low edge of current volume double Xcurr = compVol[i]->center()[0] - compBounds->halflengthX(); if (Xcurr - currX - (spacerlowXsize + spaceruppXsize) >= -tolerance) { @@ -253,7 +253,7 @@ const Trk::TrackingVolumeArray* Muon::MuonStationTypeBuilder::processBoxStationC ATH_MSG_WARNING("clash in spacer definition!"); } } - if (compName[i].substr(0, 3) == "RPC" || compName[i].substr(0, 3) == "Ded") { + if (compName[i].compare(0, 3, "RPC") == 0 || compName[i].compare(0, 3, "Ded") == 0) { if (!openRpc) { openRpc = true; geoRpc.clear(); @@ -276,7 +276,7 @@ const Trk::TrackingVolumeArray* Muon::MuonStationTypeBuilder::processBoxStationC } comp_processed = true; } - if (compName[i].substr(0, 1) == "C" || compName[i].substr(0, 2) == "LB") { + if (compName[i].compare(0, 1, "C") == 0 || compName[i].compare(0, 2, "LB") == 0) { if (!openSpacer) { openSpacer = true; geoSpacer.clear(); @@ -304,7 +304,7 @@ const Trk::TrackingVolumeArray* Muon::MuonStationTypeBuilder::processBoxStationC } comp_processed = true; } - if (compName[i].substr(0, 3) == "MDT") { + if (compName[i].compare(0, 3, "MDT") == 0) { Trk::Volume* mdtVol; Trk::CuboidVolumeBounds* mdtBounds = nullptr; // remove z shift in transform !! bugfix !! @@ -327,9 +327,9 @@ const Trk::TrackingVolumeArray* Muon::MuonStationTypeBuilder::processBoxStationC } double shiftSign = 1.; if (std::abs(zShift) > 0.) { - std::string stName = mv->getLogVol()->getName(); - if (stName.substr(0, 4) == "BIR3" || stName.substr(0, 4) == "BIR5" || stName.substr(0, 4) == "BIR7" || - stName.substr(0, 5) == "BIR10") + const std::string &stName = mv->getLogVol()->getName(); + if (stName.compare(0, 4, "BIR3") == 0 || stName.compare(0, 4, "BIR5") == 0 || stName.compare(0, 4, "BIR7") == 0 || + stName.compare(0, 5, "BIR10") == 0) shiftSign = -1.; } const Trk::TrackingVolume* mdtTrkVol = @@ -440,7 +440,7 @@ const Trk::TrackingVolumeArray* Muon::MuonStationTypeBuilder::processTrdStationC } else { double xSize = get_x_size(cv); // printChildren(cv); - if (clv->getName().substr(0, 1) != "C" && clv->getName().substr(0, 2) != "LB") + if (clv->getName().compare(0, 1, "C") != 0 && clv->getName().compare(0, 2, "LB") != 0) transf *= Amg::AngleAxis3D(0.5 * M_PI, Amg::Vector3D(0., 1., 0.)) * Amg::AngleAxis3D(0.5 * M_PI, Amg::Vector3D(0., 0., 1.)); volBounds = new Trk::TrapezoidVolumeBounds(envelope->minHalflengthX(), envelope->maxHalflengthX(), envelope->halflengthY(), xSize); @@ -449,7 +449,7 @@ const Trk::TrackingVolumeArray* Muon::MuonStationTypeBuilder::processTrdStationC std::string cname = clv->getName(); std::string vname = mv->getLogVol()->getName(); int nameSize = vname.size() - 8; - if (cname.substr(0, nameSize) == vname.substr(0, nameSize)) cname = cname.substr(nameSize, cname.size() - nameSize); + if (cname.compare(0, nameSize, vname, 0, nameSize) == 0) cname = cname.substr(nameSize, cname.size() - nameSize); // order in X if (compVol.empty() || vol->center()[0] >= compVol.back()->center()[0]) { compVol.push_back(vol); @@ -520,7 +520,7 @@ const Trk::TrackingVolumeArray* Muon::MuonStationTypeBuilder::processTrdStationC return nullptr; } // close spacer if no further components - if (openSpacer && compName[i].substr(0, 1) != "C" && compName[i].substr(0, 2) != "LB") { + if (openSpacer && compName[i].compare(0, 1, "C") !=0 && compName[i].compare(0, 2, "LB") != 0) { if (Xcurr - currX - (spacerlowXsize + spaceruppXsize) >= -tolerance) { Trk::TrapezoidVolumeBounds* spacerBounds = new Trk::TrapezoidVolumeBounds(envX1, envX2, envY, 0.5 * (Xcurr - currX)); Amg::Transform3D tr(Amg::Translation3D(currX + spacerBounds->halflengthZ(), 0., 0.) * @@ -540,10 +540,10 @@ const Trk::TrackingVolumeArray* Muon::MuonStationTypeBuilder::processTrdStationC std::cout << "clash in spacer definition!" << std::endl; } } - if (compName[i].substr(0, 3) == "RPC" || compName[i].substr(0, 3) == "Ded") { + if (compName[i].compare(0, 3, "RPC") == 0 || compName[i].compare(0, 3, "Ded") == 0) { std::cout << " RPC components for endcaps not coded " << std::endl; } - if (compName[i].substr(0, 1) == "C" || compName[i].substr(0, 2) == "LB") { + if (compName[i].compare(0, 1, "C") == 0 || compName[i].compare(0, 2, "LB") == 0) { if (!openSpacer) { openSpacer = true; geoSpacer.clear(); @@ -585,7 +585,7 @@ const Trk::TrackingVolumeArray* Muon::MuonStationTypeBuilder::processTrdStationC } comp_processed = true; } - if (compName[i].substr(0, 3) == "MDT") { + if (compName[i].compare(0, 3, "MDT") == 0) { Trk::Volume* mdtVol = nullptr; Trk::TrapezoidVolumeBounds* mdtBounds = nullptr; if (lowX == currX) { @@ -670,7 +670,7 @@ const Trk::TrackingVolume* Muon::MuonStationTypeBuilder::processMdtBox(Trk::Volu Trk::MaterialProperties* mdtMat = nullptr; double xv = 0.; int active = 0; - if ((clv->getName()).substr(0, 3) == "MDT") { + if ((clv->getName()).compare(0, 3, "MDT") == 0) { xv = 13.0055; // the half-thickness if (!cache.m_mdtTubeMat) { const GeoTube* tube = dynamic_cast<const GeoTube*>(clv->getShape()); @@ -825,7 +825,7 @@ const Trk::TrackingVolume* Muon::MuonStationTypeBuilder::processMdtTrd(Trk::Volu if (x1v == x2v) xv = x1v; } Trk::MaterialProperties* mdtMat = nullptr; - if ((clv->getName()).substr(0, 3) == "MDT") { + if ((clv->getName()).compare(0, 3, "MDT") == 0) { xv = 13.0055; // the half-thickness if (!cache.m_mdtTubeMat) { const GeoTube* tube = dynamic_cast<const GeoTube*>(clv->getShape()); @@ -968,7 +968,7 @@ const Trk::TrackingVolume* Muon::MuonStationTypeBuilder::processRpc(Trk::Volume* Amg::Transform3D cTr(transfc[ic] * Amg::AngleAxis3D(0.5 * M_PI, Amg::Vector3D(0., 1., 0.)) * Amg::AngleAxis3D(0.5 * M_PI, Amg::Vector3D(0., 0., 1.))); Trk::MaterialProperties rpcMat(0., 10.e10, 10.e10, 13., 26., 0.); // default - if ((glv->getName()).substr(0, 3) == "Ded") { + if ((glv->getName()).compare(0, 3, "Ded") == 0) { // find if material exists already bool found = false; for (unsigned int i = 0; i < cache.m_rpcDed.size(); i++) { @@ -999,7 +999,7 @@ const Trk::TrackingVolume* Muon::MuonStationTypeBuilder::processRpc(Trk::Volume* layer = new Trk::PlaneLayer(cTr, bounds, rpcMaterial, thickness, od); layers.push_back(layer); // make preliminary identification of active layers - if ((glv->getName()).substr(0, 3) != "Ded") { + if ((glv->getName()).compare(0, 3, "Ded") != 0) { layer->setLayerType(1); } else { layer->setLayerType(0); @@ -1021,7 +1021,7 @@ const Trk::TrackingVolume* Muon::MuonStationTypeBuilder::processRpc(Trk::Volume* Amg::Transform3D cTr(transfc[ic] * Amg::AngleAxis3D(0.5 * M_PI, Amg::Vector3D(0., 1., 0.)) * Amg::AngleAxis3D(0.5 * M_PI, Amg::Vector3D(0., 0., 1.))); Trk::MaterialProperties rpcMat(0., 10.e10, 10.e10, 13., 26., 0.); // default - if ((glv->getName()).substr(0, 3) == "Ded") { + if ((glv->getName()).compare(0, 3, "Ded") == 0) { // find if material exists already bool found = false; for (unsigned int i = 0; i < cache.m_rpcDed.size(); i++) { @@ -1065,7 +1065,7 @@ const Trk::TrackingVolume* Muon::MuonStationTypeBuilder::processRpc(Trk::Volume* double gy = gtrd->getYHalfLength1(); double gz = gtrd->getZHalfLength(); - if ((gclv->getName()).substr(0, 6) == "RPC_AL") { + if ((gclv->getName()).compare(0, 6, "RPC_AL") == 0) { if (std::abs(gx - 5.0) < 0.001) { if (!cache.m_rpcExtPanel) { double volc = 8 * gx * gy * gz; @@ -1792,7 +1792,7 @@ void Muon::MuonStationTypeBuilder::collectMaterial(const GeoVPhysVol* pv, Trk::M std::string nm = lv->getName(); if (nm.empty()) nm = "Spacer"; - if (lv->getMaterial()->getName() != "Air" && nm.substr(0, 1) != "T") { + if (lv->getMaterial()->getName() != "Air" && nm.compare(0, 1,"T") != 0) { // get material properties from GeoModel Trk::Material newMP = m_materialConverter->convert(lv->getMaterial()); // current volume @@ -1872,7 +1872,7 @@ const Trk::LayerArray* Muon::MuonStationTypeBuilder::processCSCTrdComponent(cons double maxX = compBounds->maxHalflengthX(); double halfY = compBounds->halflengthY(); double halfZ = compBounds->halflengthZ(); - if (name.substr(name.size() - 5, 5) == "CSC01") { + if (name.compare(name.size() - 5, 5, "CSC01") == 0) { if (!cache.m_matCSC01) { double vol = (minX + maxX) * 2 * halfY * thickness; cache.m_matCSC01 = std::make_unique<Trk::MaterialProperties>(getAveragedLayerMaterial(pv, vol, thickness)); @@ -1998,7 +1998,7 @@ const Trk::LayerArray* Muon::MuonStationTypeBuilder::processCSCDiamondComponent( double halfY1 = compBounds->halflengthY1(); double halfY2 = compBounds->halflengthY2(); double halfZ = compBounds->halflengthZ(); - if (name.substr(name.size() - 5, 5) == "CSC02") { + if (name.compare(name.size() - 5, 5, "CSC02") == 0) { if (!cache.m_matCSC02) { double vol = ((minX + medX) * 2 * halfY1 + (medX + maxX) * 2 * halfY2) * thickness; cache.m_matCSC02 = std::make_unique<Trk::MaterialProperties>(getAveragedLayerMaterial(pv, vol, thickness)); diff --git a/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonTrackingGeometryBuilderCond.cxx b/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonTrackingGeometryBuilderCond.cxx index be7060dbdddd0e19c9d46fdafed45139745bedff..787e406040f352de5858f33ccdaf5535a5a2872d 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonTrackingGeometryBuilderCond.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonTrackingGeometryBuilderCond.cxx @@ -165,7 +165,7 @@ std::pair<EventIDRange, const Trk::TrackingGeometry*> Muon::MuonTrackingGeometry if (inertObjs && m_blendInertMaterial && m_removeBlended) { while (m_inertPerm < inertObjs->size() && - (*inertObjs)[m_inertPerm]->name().substr((*inertObjs)[m_inertPerm]->name().size() - 4, 4) == "PERM") + (*inertObjs)[m_inertPerm]->name().compare((*inertObjs)[m_inertPerm]->name().size() - 4, 4, "PERM") == 0) m_inertPerm++; } @@ -2017,7 +2017,7 @@ std::vector<const Trk::DetachedTrackingVolume*>* Muon::MuonTrackingGeometryBuild } else accepted = true; if (accepted) { - bool perm = inert->name().substr(inert->name().size() - 4, 4) == "PERM"; + bool perm = inert->name().compare(inert->name().size() - 4, 4, "PERM") == 0; if (!m_blendInertMaterial || !m_removeBlended || perm) detached.push_back(inert); if (m_blendInertMaterial && !perm) blendVols.push_back(inert); ATH_MSG_VERBOSE(" Inert volume accepted by rLimit " << inert->name() << " zMin " << zMin << " zMax " << zMax diff --git a/MuonSpectrometer/MuonG4/MuonG4SD/src/CSCSensitiveDetector.cxx b/MuonSpectrometer/MuonG4/MuonG4SD/src/CSCSensitiveDetector.cxx index 5e15094d353b1248479644c109e0d880224b42e1..01ffe2c955038caa9920fe741642649da76bc063 100755 --- a/MuonSpectrometer/MuonG4/MuonG4SD/src/CSCSensitiveDetector.cxx +++ b/MuonSpectrometer/MuonG4/MuonG4SD/src/CSCSensitiveDetector.cxx @@ -123,8 +123,8 @@ G4bool CSCSensitiveDetector::ProcessHits(G4Step* aStep,G4TouchableHistory* /*ROH // now get the geoIdentifierTag of the rpc components int gmID = 0; - if ((loc1 = volName.find("[")) != std::string::npos) { - if ((loc2 = volName.find("]", loc1+1)) != std::string::npos) { + if ((loc1 = volName.find('[')) != std::string::npos) { + if ((loc2 = volName.find(']', loc1+1)) != std::string::npos) { std::istringstream istrvar(volName.substr(loc1+1,loc2-loc1-1)); istrvar>>gmID; } diff --git a/MuonSpectrometer/MuonG4/MuonG4SD/src/CSCSensitiveDetectorCosmics.cxx b/MuonSpectrometer/MuonG4/MuonG4SD/src/CSCSensitiveDetectorCosmics.cxx index 360b6687a3504dcc112a4abfa2118b77285db9c3..f8caf9986a2efbadef86d8a8e4ace50a2a72dd94 100755 --- a/MuonSpectrometer/MuonG4/MuonG4SD/src/CSCSensitiveDetectorCosmics.cxx +++ b/MuonSpectrometer/MuonG4/MuonG4SD/src/CSCSensitiveDetectorCosmics.cxx @@ -160,8 +160,8 @@ G4bool CSCSensitiveDetectorCosmics::ProcessHits(G4Step* aStep,G4TouchableHistory // now get the geoIdentifierTag of the rpc components int gmID = 0; - if ((loc1 = volName.find("[")) != std::string::npos) { - if ((loc2 = volName.find("]", loc1+1)) != std::string::npos) { + if ((loc1 = volName.find('[')) != std::string::npos) { + if ((loc2 = volName.find(']', loc1+1)) != std::string::npos) { std::istringstream istrvar(volName.substr(loc1+1,loc2-loc1-1)); istrvar>>gmID; } diff --git a/MuonSpectrometer/MuonG4/MuonG4SD/src/MDTSensitiveDetector.cxx b/MuonSpectrometer/MuonG4/MuonG4SD/src/MDTSensitiveDetector.cxx index afaaff0a3b2cdee9431183eedd8724e19bbd464f..c1ef4370b4e52c93a482aa7678e9603173c1c76a 100755 --- a/MuonSpectrometer/MuonG4/MuonG4SD/src/MDTSensitiveDetector.cxx +++ b/MuonSpectrometer/MuonG4/MuonG4SD/src/MDTSensitiveDetector.cxx @@ -166,8 +166,8 @@ int MDTSensitiveDetector::GetIdentifier(G4TouchableHistory* touchHist) else if ((npos = volName.find("component")) != std::string::npos && (!isAssembly)) { // multilayer int gmID = 0; - if ((loc1 = volName.find("[")) != std::string::npos) { - if ((loc2 = volName.find("]", loc1+1)) != std::string::npos) { + if ((loc1 = volName.find('[')) != std::string::npos) { + if ((loc2 = volName.find(']', loc1+1)) != std::string::npos) { std::istringstream istrvar(volName.substr(loc1+1,loc2-loc1-1)); istrvar>>gmID; } @@ -206,8 +206,8 @@ int MDTSensitiveDetector::GetIdentifier(G4TouchableHistory* touchHist) stationPhi = fi; int gmID = 0; - if ((loc1 = volName.find("[")) != std::string::npos) { - if ((loc2 = volName.find("]", loc1+1)) != std::string::npos) { + if ((loc1 = volName.find('[')) != std::string::npos) { + if ((loc2 = volName.find(']', loc1+1)) != std::string::npos) { std::istringstream istrvar(volName.substr(loc1+1,loc2-loc1-1)); istrvar>>gmID; } diff --git a/MuonSpectrometer/MuonG4/MuonG4SD/src/MDTSensitiveDetectorCosmics.cxx b/MuonSpectrometer/MuonG4/MuonG4SD/src/MDTSensitiveDetectorCosmics.cxx index 8449adffede4cb25728286fb61f895834d963cac..7e86e0706c68851a3215e19846ceee7d0f1ae4b3 100755 --- a/MuonSpectrometer/MuonG4/MuonG4SD/src/MDTSensitiveDetectorCosmics.cxx +++ b/MuonSpectrometer/MuonG4/MuonG4SD/src/MDTSensitiveDetectorCosmics.cxx @@ -210,8 +210,8 @@ int MDTSensitiveDetectorCosmics::GetIdentifier(G4TouchableHistory* touchHist) else if ((npos = volName.find("component")) != std::string::npos && (!isAssembly)) { // multilayer int gmID = 0; - if ((loc1 = volName.find("[")) != std::string::npos) { - if ((loc2 = volName.find("]", loc1+1)) != std::string::npos) { + if ((loc1 = volName.find('[')) != std::string::npos) { + if ((loc2 = volName.find(']', loc1+1)) != std::string::npos) { std::istringstream istrvar(volName.substr(loc1+1,loc2-loc1-1)); istrvar>>gmID; } @@ -250,8 +250,8 @@ int MDTSensitiveDetectorCosmics::GetIdentifier(G4TouchableHistory* touchHist) stationPhi = fi; int gmID = 0; - if ((loc1 = volName.find("[")) != std::string::npos) { - if ((loc2 = volName.find("]", loc1+1)) != std::string::npos) { + if ((loc1 = volName.find('[')) != std::string::npos) { + if ((loc2 = volName.find(']', loc1+1)) != std::string::npos) { std::istringstream istrvar(volName.substr(loc1+1,loc2-loc1-1)); istrvar>>gmID; } diff --git a/MuonSpectrometer/MuonG4/MuonG4SD/src/RPCSensitiveDetector.cxx b/MuonSpectrometer/MuonG4/MuonG4SD/src/RPCSensitiveDetector.cxx index 4f17034e976160d6c206af6a54032483789fe2d9..30d11eff3c7b3b138098cf779bfc268ae48d656a 100755 --- a/MuonSpectrometer/MuonG4/MuonG4SD/src/RPCSensitiveDetector.cxx +++ b/MuonSpectrometer/MuonG4/MuonG4SD/src/RPCSensitiveDetector.cxx @@ -157,8 +157,8 @@ G4bool RPCSensitiveDetector::ProcessHits(G4Step* aStep,G4TouchableHistory*) { // now get the geoIdentifierTag of the rpc components int gmID = 0; - if ((loc1 = volName.find("[")) != std::string::npos) { - if ((loc2 = volName.find("]", loc1+1)) != std::string::npos) { + if ((loc1 = volName.find('[')) != std::string::npos) { + if ((loc2 = volName.find(']', loc1+1)) != std::string::npos) { //G4cout << "first [ is at "<<loc1<<" first ] at "<<loc2 << G4endl; std::istringstream istrvar(volName.substr(loc1+1,loc2-loc1-1)); istrvar>>gmID; @@ -177,8 +177,8 @@ G4bool RPCSensitiveDetector::ProcessHits(G4Step* aStep,G4TouchableHistory*) { std::string::size_type loc1,loc2; tech=volName.substr(npos-5,5); int gmID = 0; - if ((loc1 = volName.find("[")) != std::string::npos) { - if ((loc2 = volName.find("]", loc1+1)) != std::string::npos) { + if ((loc1 = volName.find('[')) != std::string::npos) { + if ((loc2 = volName.find(']', loc1+1)) != std::string::npos) { std::istringstream istrvar(volName.substr(loc1+1,loc2-loc1-1)); istrvar>>gmID; } diff --git a/MuonSpectrometer/MuonG4/MuonG4SD/src/RPCSensitiveDetectorCosmics.cxx b/MuonSpectrometer/MuonG4/MuonG4SD/src/RPCSensitiveDetectorCosmics.cxx index 572cbd845d4c1a58d56319b1dbc7b0054e9baaac..c48869c99889ac5186bb982d4a85a89f9b23eac4 100755 --- a/MuonSpectrometer/MuonG4/MuonG4SD/src/RPCSensitiveDetectorCosmics.cxx +++ b/MuonSpectrometer/MuonG4/MuonG4SD/src/RPCSensitiveDetectorCosmics.cxx @@ -182,8 +182,8 @@ G4bool RPCSensitiveDetectorCosmics::ProcessHits(G4Step* aStep,G4TouchableHistory // now get the geoIdentifierTag of the rpc components int gmID = 0; - if ((loc1 = volName.find("[")) != std::string::npos) { - if ((loc2 = volName.find("]", loc1+1)) != std::string::npos) { + if ((loc1 = volName.find('[')) != std::string::npos) { + if ((loc2 = volName.find(']', loc1+1)) != std::string::npos) { std::istringstream istrvar(volName.substr(loc1+1,loc2-loc1-1)); istrvar>>gmID; } @@ -202,8 +202,8 @@ G4bool RPCSensitiveDetectorCosmics::ProcessHits(G4Step* aStep,G4TouchableHistory std::string::size_type loc1,loc2; int gmID = 0; - if ((loc1 = volName.find("[")) != std::string::npos) { - if ((loc2 = volName.find("]", loc1+1)) != std::string::npos) { + if ((loc1 = volName.find('[')) != std::string::npos) { + if ((loc2 = volName.find(']', loc1+1)) != std::string::npos) { std::istringstream istrvar(volName.substr(loc1+1,loc2-loc1-1)); istrvar>>gmID; } @@ -222,8 +222,8 @@ G4bool RPCSensitiveDetectorCosmics::ProcessHits(G4Step* aStep,G4TouchableHistory std::string::size_type loc1,loc2; int gmID = 0; - if ((loc1 = volName.find("[")) != std::string::npos) { - if ((loc2 = volName.find("]", loc1+1)) != std::string::npos) { + if ((loc1 = volName.find('[')) != std::string::npos) { + if ((loc2 = volName.find(']', loc1+1)) != std::string::npos) { std::istringstream istrvar(volName.substr(loc1+1,loc2-loc1-1)); istrvar>>gmID; } diff --git a/MuonSpectrometer/MuonG4/MuonG4SD/src/TGCSensitiveDetector.cxx b/MuonSpectrometer/MuonG4/MuonG4SD/src/TGCSensitiveDetector.cxx index 4e87914aa0beb192d793527ec54dc7ff2b08ed7c..8ef51c2089c052385c8c45f85e20f89462b18bbc 100755 --- a/MuonSpectrometer/MuonG4/MuonG4SD/src/TGCSensitiveDetector.cxx +++ b/MuonSpectrometer/MuonG4/MuonG4SD/src/TGCSensitiveDetector.cxx @@ -189,8 +189,8 @@ G4bool TGCSensitiveDetector::ProcessHits(G4Step* aStep,G4TouchableHistory*) { // now get the geoIdentifierTag of the rpc components int gmID = 0; - if ((loc1 = volName.find("[")) != std::string::npos) { - if ((loc2 = volName.find("]", loc1+1)) != std::string::npos) { + if ((loc1 = volName.find('[')) != std::string::npos) { + if ((loc2 = volName.find(']', loc1+1)) != std::string::npos) { std::istringstream istrvar(volName.substr(loc1+1,loc2-loc1-1)); istrvar>>gmID; } @@ -223,7 +223,6 @@ G4bool TGCSensitiveDetector::ProcessHits(G4Step* aStep,G4TouchableHistory*) { } } else if ((npos = volName.find("TGCGas")) != std::string::npos) { - std::string currentTech = volName.substr(0,4); int volCopyNo = touchHist->GetVolume(i)->GetCopyNo(); if (volCopyNo != 0) diff --git a/MuonSpectrometer/MuonG4/MuonG4SD/src/TGCSensitiveDetectorCosmics.cxx b/MuonSpectrometer/MuonG4/MuonG4SD/src/TGCSensitiveDetectorCosmics.cxx index bfd12f3444d61091bad91f93c26e340b52baa7e0..862c5ca65e5a94c4746c1f2fbbd9aaa31f6c3070 100755 --- a/MuonSpectrometer/MuonG4/MuonG4SD/src/TGCSensitiveDetectorCosmics.cxx +++ b/MuonSpectrometer/MuonG4/MuonG4SD/src/TGCSensitiveDetectorCosmics.cxx @@ -102,7 +102,7 @@ G4bool TGCSensitiveDetectorCosmics::ProcessHits(G4Step* aStep,G4TouchableHistory } else { zside = -1; } - if (stationName.substr(2,1) == "F") { + if (stationName.compare(2,1, "F") == 0) { stationPhi = (abs(volCopyNo%100)-1)*3; if (abs(volCopyNo/100) > 3) { @@ -116,8 +116,8 @@ G4bool TGCSensitiveDetectorCosmics::ProcessHits(G4Step* aStep,G4TouchableHistory stationPhi = 24 - stationPhi; } - } else if (stationName.substr(2,1) == "E") { - if (stationName.substr(1,1) == "4") { + } else if (stationName.compare(2,1,"E") == 0) { + if (stationName.compare(1,1,"4") == 0) { stationPhi = (abs(volCopyNo%100)-1)*3+abs(volCopyNo/100); @@ -168,7 +168,6 @@ G4bool TGCSensitiveDetectorCosmics::ProcessHits(G4Step* aStep,G4TouchableHistory } } else if ((npos = volName.find("TGCGas")) != std::string::npos) { - std::string currentTech = volName.substr(0,4); int volCopyNo = touchHist->GetVolume(i)->GetCopyNo(); if (volCopyNo != 0) diff --git a/MuonSpectrometer/MuonGeoModel/MuonGeoModel/DBReader.h b/MuonSpectrometer/MuonGeoModel/MuonGeoModel/DBReader.h index 8b3893f3d0640277560664fa267f5f56da71dd86..f6440bd1e038b9c22aa85c6268294f4f7598860b 100644 --- a/MuonSpectrometer/MuonGeoModel/MuonGeoModel/DBReader.h +++ b/MuonSpectrometer/MuonGeoModel/MuonGeoModel/DBReader.h @@ -117,7 +117,7 @@ namespace MuonGM { public: virtual StatusCode ProcessDB() { return StatusCode::SUCCESS; }; void setGeometryVersion(std::string s); - std::string getGeometryVersion() const; + const std::string& getGeometryVersion() const; void setManager(MuonDetectorManager *detmgr) { m_mgr = detmgr; }; virtual ~DBReader(){}; @@ -161,7 +161,7 @@ namespace MuonGM { nmdt++; for (unsigned int i = 0; i < dhwmdt->size(); i++) { - if (s.substr(3, s.size() - 3) == MuonGM::buildString(wmdt[i].iw, 2)) { + if (s.compare(3, s.size() - 3, MuonGM::buildString(wmdt[i].iw, 2)) == 0) { mdt->numOfLayers = wmdt[i].laymdt; mdt->innerRadius = wmdt[i].tubrad * Gaudi::Units::cm; mdt->totalThickness = wmdt[i].tubsta * Gaudi::Units::cm; @@ -263,7 +263,7 @@ namespace MuonGM { int nStruct = dhwrpc->size(); bool done = false; for (unsigned int i = 0; (i < dhwrpc->size() && !done); i++) { - if (s.substr(3, s.size() - 3) == MuonGM::buildString(wrpc[i].jsta, 2)) { + if (s.compare(3, s.size() - 3, MuonGM::buildString(wrpc[i].jsta, 2)) == 0) { if (RPCprint) { log << MSG::INFO << " ProcessRPC " << s << " index " << i << " jsta =" << wrpc[i].jsta << " strings comparison:: <" << s.substr(3, s.size() - 3) << ">=<" << MuonGM::buildString(wrpc[i].jsta, 2) << ">" << endmsg; @@ -328,7 +328,7 @@ namespace MuonGM { double p, t; for (unsigned int i = 0; i < dhwtgcall->size(); i++) { - if (s.substr(3, s.size() - 3) == MuonGM::buildString(wtgcall[i].jsta, 2)) { + if (s.compare(3, s.size() - 3,MuonGM::buildString(wtgcall[i].jsta, 2)) ==0 ) { tgc->nlayers = wtgcall[i].nbevol; tgc->thickness = wtgcall[i].widchb * Gaudi::Units::cm; tgc->frame_h = wtgcall[i].fwirch * Gaudi::Units::cm; @@ -388,7 +388,7 @@ namespace MuonGM { std::string tname = s; while (tname != "XXXXX") { for (unsigned int i = 0; i < dhwcsc->size(); i++) { - if (tname.substr(3, s.size() - 3) == MuonGM::buildString(wcsc[i].jsta, 2)) { + if (tname.compare(3, s.size() - 3, MuonGM::buildString(wcsc[i].jsta, 2)) == 0) { csc->numOfLayers = wcsc[i].laycsc; csc->totalThickness = wcsc[i].ttotal * Gaudi::Units::cm; csc->thickness = csc->totalThickness; @@ -478,7 +478,7 @@ namespace MuonGM { nspa++; for (unsigned int i = 0; i < dhwspa->size(); i++) { - if (s.substr(3, s.size() - 3) == MuonGM::buildString(wspa[i].jsta, 2)) { + if (s.compare(3, s.size() - 3, MuonGM::buildString(wspa[i].jsta, 2)) == 0) { spa->thickness = wspa[i].tckspa * Gaudi::Units::cm; } } @@ -494,10 +494,10 @@ namespace MuonGM { nsup++; for (unsigned int i = 0; i < dhwsup->size(); i++) { - if (s.substr(3, s.size() - 3) == MuonGM::buildString(wsup[i].jsta, 2)) { + if (s.compare(3, s.size() - 3, MuonGM::buildString(wsup[i].jsta, 2)) == 0) { sup->alFlangeThickness = wsup[i].xxsup[0] * Gaudi::Units::cm; - if (s.substr(3, s.size() - 3) == "03") { + if (s.compare(3, s.size() - 3, "03") == 0) { sup->alHorFlangeLength = (fabs)(wsup[i].zzsup[1]) * Gaudi::Units::cm; sup->alVerFlangeLength = wsup[i].xxsup[1] * Gaudi::Units::cm - wsup[i].xxsup[0] * Gaudi::Units::cm; sup->alVerProfileThickness = wsup[i].zzsup[3] * Gaudi::Units::cm; @@ -544,7 +544,7 @@ namespace MuonGM { nded++; for (unsigned int i = 0; i < dhwded->size(); i++) { - if (s.substr(3, s.size() - 3) == MuonGM::buildString(wded[i].jsta, 2)) { + if (s.compare(3, s.size() - 3, MuonGM::buildString(wded[i].jsta, 2)) == 0) { // a lot of confusion in the various versions of the geometry in nova ded->AlThickness = 0.3 * Gaudi::Units::mm; ded->thickness = (wded[i].auphcb) * Gaudi::Units::cm; @@ -565,7 +565,7 @@ namespace MuonGM { nchv++; for (int i = 0; i < nStruct; i++) { - if (s.substr(3, s.size() - 3) == MuonGM::buildString(wchv[i].jsta, 2)) { + if (s.compare(3, s.size() - 3, MuonGM::buildString(wchv[i].jsta, 2)) == 0) { chv->thickness = wchv[i].thickness * Gaudi::Units::cm; chv->largeness = wchv[i].largeness * Gaudi::Units::cm; chv->height = wchv[i].heightness * Gaudi::Units::cm; @@ -584,7 +584,7 @@ namespace MuonGM { ncro++; for (int i = 0; i < nStruct; i++) { - if (s.substr(3, s.size() - 3) == MuonGM::buildString(wcro[i].jsta, 2)) { + if (s.compare(3, s.size() - 3, MuonGM::buildString(wcro[i].jsta, 2)) == 0) { cro->thickness = wcro[i].thickness * Gaudi::Units::cm; cro->largeness = wcro[i].largeness * Gaudi::Units::cm; cro->height = wcro[i].heightness * Gaudi::Units::cm; @@ -603,7 +603,7 @@ namespace MuonGM { ncmi++; for (int i = 0; i < nStruct; i++) { - if (s.substr(3, s.size() - 3) == MuonGM::buildString(wcmi[i].jsta, 2)) { + if (s.compare(3, s.size() - 3, MuonGM::buildString(wcmi[i].jsta, 2)) == 0) { cmi->thickness = wcmi[i].thickness * Gaudi::Units::cm; cmi->largeness = wcmi[i].largeness * Gaudi::Units::cm; cmi->height = wcmi[i].heightness * Gaudi::Units::cm; @@ -622,7 +622,7 @@ namespace MuonGM { nlbi++; for (int i = 0; i < nStruct; i++) { - if (s.substr(2, s.size() - 2) == MuonGM::buildString(wlbi[i].jsta, 2)) { + if (s.compare(2, s.size() - 2, MuonGM::buildString(wlbi[i].jsta, 2)) == 0) { lbi->thickness = wlbi[i].thickness * Gaudi::Units::cm; lbi->height = wlbi[i].height * Gaudi::Units::cm; lbi->lowerThickness = wlbi[i].lowerThickness * Gaudi::Units::cm; @@ -708,7 +708,7 @@ namespace MuonGM { halfpitch = default_halfpitch; for (int icomp = 0; icomp < stat->GetNrOfComponents(); ++icomp) { const Component *c = stat->GetComponent(icomp); - if (c->name.substr(0, 3) != "MDT") + if (c->name.compare(0, 3,"MDT") != 0) continue; MDT *mdtobj = (MDT *)mysql->GetATechnology(c->name); if (!mdtobj) { @@ -733,7 +733,7 @@ namespace MuonGM { p.phi = aptp[ipos].dphi + double(phiindex) * 45.; p.radius = aptp[ipos].r * Gaudi::Units::cm; p.z = aptp[ipos].z * Gaudi::Units::cm; - if (p.zindex < 0 && name.substr(0, 1) == "B" && hasMdts) + if (p.zindex < 0 && name.compare(0, 1,"B") == 0 && hasMdts) p.z = p.z - halfpitch; p.shift = aptp[ipos].s * Gaudi::Units::cm; if (verbose_posmap) { @@ -954,7 +954,7 @@ namespace MuonGM { MsgStream log(Athena::getMessageSvc(), "MuGM:ProcStations"); log << MSG::INFO << " Processing Stations and Components" << endmsg; - std::string cartyp, cartec; + std::string cartec; Station *stat = NULL, *previous_stat = NULL, *previous_stored = NULL; // control on new stations/subtypes @@ -1037,7 +1037,7 @@ namespace MuonGM { c = new TgcComponent; } else if (cartec == "CRO" || cartec == "CMI" || cartec == "CHV") { c = new CbmComponent; - } else if (cartec.substr(0, 2) == "LB") { + } else if (cartec.compare(0, 2, "LB") == 0) { c = new LbiComponent; } else { c = new StandardComponent; @@ -1074,7 +1074,7 @@ namespace MuonGM { } else if (cartec == "SPA") { SpaComponent *derc = (SpaComponent *)c; derc->maxwdy = derc->dy; - if (jtech == 6 && name.substr(0, 3) == "CSL") { + if (jtech == 6 && name.compare(0, 3, "CSL") == 0) { derc->dy = 1129.20 * Gaudi::Units::mm; // AMDB-Q and CTB } } else if (cartec == "MDT") { @@ -1094,9 +1094,9 @@ namespace MuonGM { // DHW 4 Feb 09 : no longer needed, read in above: derc->iswap = 1; } else if (cartec == "DED") { - } else if (cartec == "SUP" || cartec == "TGC" || cartec == "CHV" || cartec == "CRO" || cartec == "CMI" || cartec.substr(0, 2) == "LB") { + } else if (cartec == "SUP" || cartec == "TGC" || cartec == "CHV" || cartec == "CRO" || cartec == "CMI" || cartec.compare(0, 2, "LB") == 0) { - if (cartec.substr(0, 2) == "LB") { + if (cartec.compare(0, 2, "LB") == 0) { LbiComponent *derc = (LbiComponent *)c; derc->associated_CMIsubtype = ""; if ((name == "BMF1" || name == "BMF2" || name == "BMF3" || name == "BMF4" || name == "BMF5" || name == "BMF6") && derc->name == "LB02") { diff --git a/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonChamber.h b/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonChamber.h index 4ed2fda6ad8bb2dbba5553fe180ba6917e15f4c6..90fec8552aa4e6a67b8d0f5b101bfc6d496db35d 100644 --- a/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonChamber.h +++ b/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonChamber.h @@ -34,7 +34,7 @@ namespace MuonGM { double rotangle[10]; - int stationPhiTGC(const std::string& stName, int fi, int zi, const std::string& geometry_version) const; + int stationPhiTGC(std::string_view stName, int fi, int zi, std::string_view geometry_version) const; inline void setFineClashFixingFlag(int value); MuonChamber(Station *s); diff --git a/MuonSpectrometer/MuonGeoModel/src/DBReader.cxx b/MuonSpectrometer/MuonGeoModel/src/DBReader.cxx index 0cd538ff1d576bcf31f4e173dba3d89799e2832f..7438160a70f44d3d09f4666d99add7af656034f6 100644 --- a/MuonSpectrometer/MuonGeoModel/src/DBReader.cxx +++ b/MuonSpectrometer/MuonGeoModel/src/DBReader.cxx @@ -17,7 +17,7 @@ namespace MuonGM { void DBReader::setGeometryVersion(std::string geoVersion) { m_version = std::move(geoVersion); } - std::string DBReader::getGeometryVersion() const { return m_version; } + const std::string& DBReader::getGeometryVersion() const { return m_version; } std::string DBReader::TGCreadoutName(int ichtyp) { MsgStream log(Athena::getMessageSvc(), "DBReader::TGCreadoutName"); diff --git a/MuonSpectrometer/MuonGeoModel/src/MuonChamber.cxx b/MuonSpectrometer/MuonGeoModel/src/MuonChamber.cxx index aaea21962cbf761c6a56fba2f0000d78cddf5eeb..af83d67b604ed9a9e2a842dc164a0ba2762c0dbd 100644 --- a/MuonSpectrometer/MuonGeoModel/src/MuonChamber.cxx +++ b/MuonSpectrometer/MuonGeoModel/src/MuonChamber.cxx @@ -121,10 +121,11 @@ namespace MuonGM { MYSQL *mysql = MYSQL::GetPointer(); double halfpitch = m_station->mdtHalfPitch(); - std::string stName = m_station->GetName(); + const std::string stName = m_station->GetName(); + const MdtIdHelper *mdt_id = manager->mdtIdHelper(); int stationType = mdt_id->stationNameIndex(stName.substr(0, 3)); - bool is_barrel = (stName.substr(0, 1) == "B"); + bool is_barrel = (stName.compare(0, 1, "B") == 0); std::string geometry_version = manager->geometryVersion(); double extratop = m_station->GetExtraTopThickness(); @@ -168,7 +169,7 @@ namespace MuonGM { double cxpos = 0; for (int i = 0; i < m_station->GetNrOfComponents(); i++) { comp = (StandardComponent *)m_station->GetComponent(i); - if ((comp->name).substr(0, 3) == "CSC") { + if ((comp->name).compare(0, 3, "CSC") == 0) { clen = comp->dy; cthick = comp->GetThickness(); cypos = clen - comp->posy + 1.0 - length / 2.; @@ -223,8 +224,7 @@ namespace MuonGM { int mdt_index[4] = {0, 0, 0, 0}; for (int i = 0; i < m_station->GetNrOfComponents(); i++) { comp = (StandardComponent *)m_station->GetComponent(i); - std::string compName = (comp->name).substr(0, 3); - if (compName == "MDT") { + if (comp->name.compare(0,3,"MDT") == 0) { mdt_index[index] = i; index += 1; } @@ -296,7 +296,7 @@ namespace MuonGM { // double lengthShiftCP = 0.; // if this is a BOG, we want to make cutouts in the MOTHER VOLUME - if (stName.substr(0, 3) == "BOG" && (manager->IncludeCutoutsBogFlag() || manager->IncludeCutoutsFlag())) { + if (stName.compare(0, 3, "BOG") == 0 && (manager->IncludeCutoutsBogFlag() || manager->IncludeCutoutsFlag())) { if (verbose) { log << MSG::VERBOSE << "amdb org: length= " << amdbOrigine_along_length << " thickness= " << amdbOrigine_along_thickness << endmsg; @@ -339,7 +339,7 @@ namespace MuonGM { } // create the cutout with the full thickness of the STATION cut->setThickness(totthick * 1.01); // extra to be sure - if ((cut->subtype == mysql->allocPosFindSubtype(statType, fi, zi)) && (cut->icut == mysql->allocPosFindCutout(statType, fi, zi)) && + if ((cut->subtype == mysql->allocPosFindSubtype(std::string(statType), fi, zi)) && (cut->icut == mysql->allocPosFindCutout(std::string(statType), fi, zi)) && (cut->ijob == c->index)) { foundCutouts = true; @@ -352,7 +352,7 @@ namespace MuonGM { // remove overlaps between end-cap and forward region of TGC stations, // T[1-3]E1_station and T[1-3]F1_station - if (stName.substr(0, 1) == "T" && stName.substr(2, 1) == "E" && stName.substr(1, 1) != "4") { + if (stName.compare(0, 1, "T") == 0 && stName.compare(2, 1, "E") == 0 && stName.compare(1, 1, "4") != 0) { GeoTrd *strdoverlap = new GeoTrd(totthick / 4, totthick / 4, width / 2, longWidth / 2, 400. / 2); strd = &(strd->subtract((*strdoverlap) << GeoTrf::Translate3D(-totthick / 4., 0., -length / 2 + 400. / 2.))); } @@ -363,7 +363,7 @@ namespace MuonGM { } else { mtrd = getMaterialManager()->getMaterial("std::Air"); } - GeoLogVol *ltrd = new GeoLogVol(stName + "_Station", strd, mtrd); + GeoLogVol *ltrd = new GeoLogVol(std::string(stName) + "_Station", strd, mtrd); GeoPhysVol *ptrd = new GeoPhysVol(ltrd); double ypos; @@ -385,7 +385,7 @@ namespace MuonGM { for (int j = 0; j < m_station->GetNrOfComponents(); j++) { StandardComponent *d = (StandardComponent *)m_station->GetComponent(j); - std::string cn = (d->name).substr(0, 3); + std::string_view cn = std::string_view(d->name).substr(0, 3); if (cn == "RPC") { nRpc++; if (nRpc == 1) @@ -394,7 +394,7 @@ namespace MuonGM { // std::cerr << " nRpc, nDoubletR, depth " << nRpc << " " << nDoubletR // << " " << depth; // BI RPC Chambers have one one doubletR - if (!(stname.substr(0, 2) == "BI") && nDoubletR == 1 && nRpc > 1 && depth * previous_depth < 0) + if (!(stname.compare(0, 2, "BI") == 0) && nDoubletR == 1 && nRpc > 1 && depth * previous_depth < 0) nDoubletR++; // std::cerr<<" updated to "<<nDoubletR<<std::endl; @@ -424,7 +424,7 @@ namespace MuonGM { double LBpos[2] = {-1, -1}; for (int i = 0; i < m_station->GetNrOfComponents(); i++) { StandardComponent *c = (StandardComponent *)m_station->GetComponent(i); - std::string cname = (c->name).substr(0, 2); + std::string_view cname = std::string_view(c->name).substr(0, 2); if (cname == "LB") { LBI *lb = (LBI *)mysql->GetTechnology(c->name); LByShift = lb->yShift; @@ -440,7 +440,7 @@ namespace MuonGM { for (int i = 0; i < m_station->GetNrOfComponents(); i++) { StandardComponent *c = (StandardComponent *)m_station->GetComponent(i); - std::string cname = (c->name).substr(0, 3); + std::string_view cname = std::string_view(c->name).substr(0, 3); if (cname == "CRO" || cname == "CMI" || cname == "CHV") { CbmComponent *ccbm = (CbmComponent *)c; ccbm->lb_height = LBheight; @@ -454,7 +454,7 @@ namespace MuonGM { std::string CMIcomponentNumber = ""; for (int j = 0; j < m_station->GetNrOfComponents(); j++) { StandardComponent *d = (StandardComponent *)m_station->GetComponent(j); - std::string cn = (d->name).substr(0, 3); + std::string_view cn = std::string_view(d->name).substr(0, 3); if (cn == "CMI") { CMIcomponentNumber = (d->name).substr(3, 2); break; @@ -463,7 +463,7 @@ namespace MuonGM { for (int j = 0; j < m_station->GetNrOfComponents(); j++) { StandardComponent *d = (StandardComponent *)m_station->GetComponent(j); - std::string cn = (d->name).substr(0, 2); + std::string_view cn = std::string_view(d->name).substr(0, 2); if (cn == "LB") { LbiComponent *lbic = (LbiComponent *)d; if (lbic) { @@ -475,7 +475,7 @@ namespace MuonGM { // Build the MuonStation(readout-geometry) corresponding to this MuonChamber(raw-geometry) MuonStation *mstat; - if (stName.substr(0, 1) == "B") { + if (stName.compare(0, 1, "B") == 0) { mstat = new MuonStation(stName.substr(0, 3), width, totthick, length, longWidth, totthick, length, zi, fi + 1, (zi < 0 && !is_mirrored)); //!< fi here goes from 0 to 7; in amdb from 1 to 8; } else { @@ -506,8 +506,8 @@ namespace MuonGM { zpos = -length / 2. + amdbOrigine_along_length + c->posy + c->dy / 2.; xpos = c->posx; - std::string techname = c->name; - std::string type = techname.substr(0, 3); + const std::string &techname = c->name; + std::string_view type = std::string_view(techname).substr(0, 3); GeoVPhysVol *lv = nullptr; GeoVPhysVol *lvd = nullptr; @@ -530,7 +530,7 @@ namespace MuonGM { Cutout *cut = m_station->GetCutout(ii); cut->setThickness(cthickness * 1.01); // extra thickness to be sure - if ((cut->subtype == mysql->allocPosFindSubtype(statType, fi, zi)) && (cut->icut == mysql->allocPosFindCutout(statType, fi, zi)) && (cut->ijob == c->index)) { + if ((cut->subtype == mysql->allocPosFindSubtype(std::string(statType), fi, zi)) && (cut->icut == mysql->allocPosFindCutout(std::string(statType), fi, zi)) && (cut->ijob == c->index)) { double tempdx = cut->dx; double tempdy = cut->dy; @@ -538,7 +538,7 @@ namespace MuonGM { cut->dx = 0.; cut->dy = 0.; - if (stName.substr(0, 3) == "BOG") { + if (stName.compare(0, 3, "BOG") == 0) { // make the cutouts a bit longer cut->lengthY = templengthY + 31.; } @@ -568,7 +568,7 @@ namespace MuonGM { } // Corrected cutout values for BMS7, BMS14 - if (stName.substr(0, 3) == "BMS") { + if (stName.compare(0, 3, "BMS") == 0) { if (fi == 3) { // stationPhi = 4 if (std::abs(zi) == 1) { // stationEta = +-1 double margin = 1.0; // make cutout a little bigger to avoid coincident boundaries @@ -592,7 +592,7 @@ namespace MuonGM { } // the following is a fine tuning ----- MUST CHECK for a better solution - if (stName.substr(0, 3) == "BOS" && zi == -6 && type == "MDT") { + if (stName.compare(0, 3,"BOS") == 0 && zi == -6 && type == "MDT") { cut->dy = c->dy - cut->dy - cut->lengthY - halfpitch; cut->dead1 = 30.; // why this is not 30. or -30. already ????? if (techname == "MDT03") @@ -605,7 +605,7 @@ namespace MuonGM { // this mirroring of the cutout is necessary only for barrel MDT chambers; for EC the cutout will be automatically mirrored // this fix cannot be applied in 15.6.X.Y for layout < r.04.04 due to the frozen tier0 policy - if (type == "MDT" && (is_mirrored || zi < 0) && stName.substr(0, 1) == "B") { + if (type == "MDT" && (is_mirrored || zi < 0) && stName.compare(0, 1, "B") == 0) { // MDT in chambers explicitly described at z<0 have to be // rotated by 180deg to adj. tube staggering // reverse the position (x amdb) of the cutout if the m_station is mirrored @@ -621,11 +621,11 @@ namespace MuonGM { } else if (type == "RPC" || type == "DED") { Cutout *cutRpcType = new Cutout(*cut); // temporary for testing fixes to r.03.09 - if (stName.substr(0, 3) == "BMS" && zi == 4 && (c->index == 20 || c->index == 21 || c->index == 24 || c->index == 25)) { + if (stName.compare(0, 3, "BMS") == 0 && zi == 4 && (c->index == 20 || c->index == 21 || c->index == 24 || c->index == 25)) { cutRpcType->dy = 1102.5; } - if (stName.substr(0, 3) == "BOS" && zi == 6 && type == "DED") + if (stName.compare(0, 3, "BOS") == 0 && zi == 6 && type == "DED") cutRpcType->dy = 706.; cutRpcType->dy = cutRpcType->dy - c->posy; @@ -671,10 +671,9 @@ namespace MuonGM { GeoTransform *xfcomponent{nullptr}; GeoAlignableTransform *xfaligncomponent{nullptr}; // for RPCs we need a vector of transforms for M28 geometry... - // std::vector<GeoTransform*> xfrpccomponent; if (type == "CRO") { - if (stName.substr(0, 1) != "B" && is_mirrored) + if (stName.compare(0, 1, "B") != 0 && is_mirrored) mstat->setxAmdbCRO(-xpos); else mstat->setxAmdbCRO(xpos); @@ -691,7 +690,7 @@ namespace MuonGM { // ss - 24-05-2006 I don't really understand if this is needed at all // it was introduced by Isabel T. - if (zi < 0 && stName.substr(0, 3) == "BOG" && is_mirrored) { + if (zi < 0 && stName.compare(0, 3, "BOG") == 0 && is_mirrored) { // htcomponent = htcomponent*GeoTrf::RotateX3D(180.*Gaudi::Units::deg); // tubes OK but chambers wrong // htcomponent = GeoTrf::RotateX3D(180.*Gaudi::Units::deg)*htcomponent; @@ -700,15 +699,15 @@ namespace MuonGM { } // ss - 24-05-2006 I don't really understand if this is needed at all xfaligncomponent = new GeoAlignableTransform(htcomponent); - std::string key = stName + techname; + std::string key =std::string( stName) + techname; // for cutouts: // MDT cutouts for BOS1,5, BMS7,14, (problem with BMS4,10), EMS, BMG and BIS MDT14 bool mdtCutoutFlag = ((stname == "BOS" && std::abs(zi) == 6) || stname == "BMG" || techname == "MDT14" || (stname == "BMS" && (std::abs(zi) == 1 && fi == 3)) || (stname == "EMS" && (std::abs(zi) == 1 || std::abs(zi) == 3))); - if (((manager->IncludeCutoutsFlag() && mdtCutoutFlag) || (manager->IncludeCutoutsBogFlag() && stName.substr(0, 3) == "BOG")) && zi >= 0) { + if (((manager->IncludeCutoutsFlag() && mdtCutoutFlag) || (manager->IncludeCutoutsBogFlag() && stName.compare(0, 3, "BOG") == 0)) && zi >= 0) { key += "p" + buildString(mysql->allocPosFindSubtype(statType, fi, zi), 0) + "_" + buildString(mysql->allocPosFindCutout(statType, fi, zi), 0); - } else if (((manager->IncludeCutoutsFlag() && mdtCutoutFlag) || (manager->IncludeCutoutsBogFlag() && stName.substr(0, 3) == "BOG")) && zi < 0) { + } else if (((manager->IncludeCutoutsFlag() && mdtCutoutFlag) || (manager->IncludeCutoutsBogFlag() && stName.compare(0, 3, "BOG")) == 0) && zi < 0) { key += "m" + buildString(mysql->allocPosFindSubtype(statType, fi, zi), 0) + "_" + buildString(mysql->allocPosFindCutout(statType, fi, zi), 0); } @@ -720,7 +719,7 @@ namespace MuonGM { << manager->IncludeCutoutsFlag() << " manager->IncludeCutoutsBogFlag() " << manager->IncludeCutoutsBogFlag() << endmsg; } - if ((manager->IncludeCutoutsFlag() && mdtCutoutFlag) || (manager->IncludeCutoutsBogFlag() && stName.substr(0, 3) == "BOG")) { + if ((manager->IncludeCutoutsFlag() && mdtCutoutFlag) || (manager->IncludeCutoutsBogFlag() && stName.compare(0, 3, "BOG") == 0)) { lvm = r->build(vcutdef); } else { lvm = r->build(); @@ -738,7 +737,7 @@ namespace MuonGM { } } else if (type == "SPA" && manager->MinimalGeoFlag() == 0) { - if (techname == "SPA01" && stName.substr(0, 1) == "C") { + if (techname == "SPA01" && stName.compare(0, 1, "C") == 0) { if (debug) { log << MSG::DEBUG << "Ficticious spacer SPA01 in CSC chamber - skip it " << endmsg; } @@ -749,10 +748,10 @@ namespace MuonGM { htcomponent = GeoTrf::TranslateX3D(ypos) * GeoTrf::TranslateZ3D(zpos); xfcomponent = new GeoTransform(htcomponent); - std::string key = stName + techname; - if ((manager->IncludeCutoutsFlag() || (manager->IncludeCutoutsBogFlag() && stName.substr(0, 3) == "BOG")) && zi >= 0) { + std::string key = std::string(stName) + techname; + if ((manager->IncludeCutoutsFlag() || (manager->IncludeCutoutsBogFlag() && stName.compare(0, 3, "BOG") == 0)) && zi >= 0) { key += "p" + buildString(mysql->allocPosFindSubtype(statType, fi, zi), 0) + "_" + buildString(mysql->allocPosFindCutout(statType, fi, zi), 0); - } else if ((manager->IncludeCutoutsFlag() || (manager->IncludeCutoutsBogFlag() && stName.substr(0, 3) == "BOG")) && zi < 0) { + } else if ((manager->IncludeCutoutsFlag() || (manager->IncludeCutoutsBogFlag() && stName.compare(0, 3,"BOG") == 0)) && zi < 0) { key += "m" + buildString(mysql->allocPosFindSubtype(statType, fi, zi), 0) + "_" + buildString(mysql->allocPosFindCutout(statType, fi, zi), 0); } @@ -761,7 +760,7 @@ namespace MuonGM { Spacer *r = new Spacer(c); // log << MSG::DEBUG << " Building a SPA for m_station " // << key << " component name is " << c->name << endmsg; - if (manager->IncludeCutoutsFlag() || (manager->IncludeCutoutsBogFlag() && stName.substr(0, 3) == "BOG")) { + if (manager->IncludeCutoutsFlag() || (manager->IncludeCutoutsBogFlag() && stName.compare(0, 3, "BOG") == 0)) { lv = r->build(1); } else { lv = r->build(); @@ -778,7 +777,7 @@ namespace MuonGM { BeamHeight = r->height; ypos = c->posx; double xpos = (c->posz + amdbOrigine_along_thickness) - thickness / 2. + BeamHeight / 2.; - if (type.substr(0, 2) == "LB") + if (type.compare(0, 2, "LB") == 0) xpos -= LByShift; double angle = 0.; @@ -818,9 +817,9 @@ namespace MuonGM { xfcomponent = new GeoTransform(htcomponent); std::string key = stName + techname; - if ((manager->IncludeCutoutsFlag() || (manager->IncludeCutoutsBogFlag() && stName.substr(0, 3) == "BOG")) && zi >= 0) { + if ((manager->IncludeCutoutsFlag() || (manager->IncludeCutoutsBogFlag() && stName.compare(0, 3, "BOG") == 0)) && zi >= 0) { key += "p" + buildString(mysql->allocPosFindSubtype(statType, fi, zi), 0) + "_" + buildString(mysql->allocPosFindCutout(statType, fi, zi), 0); - } else if ((manager->IncludeCutoutsFlag() || (manager->IncludeCutoutsBogFlag() && stName.substr(0, 3) == "BOG")) && zi < 0) { + } else if ((manager->IncludeCutoutsFlag() || (manager->IncludeCutoutsBogFlag() && stName.compare(0, 3, "BOG") == 0)) && zi < 0) { key += "m" + buildString(mysql->allocPosFindSubtype(statType, fi, zi), 0) + "_" + buildString(mysql->allocPosFindCutout(statType, fi, zi), 0); } // can have LB of different length in same m_station: @@ -831,13 +830,13 @@ namespace MuonGM { // << key << " component name is " // << c->name << endmsg; GeoVPhysVol *fpv = m_FPVMAP->GetDetector(key); - if (fpv == 0 || (stName.substr(0, 3) == "BOG" && type == "CMI")) { - if (stName.substr(0, 3) == "BOG") { + if (fpv == 0 || (stName.compare(0, 3, "BOG") == 0 && type == "CMI")) { + if (stName.compare(0, 3, "BOG") == 0) { if (verbose) { log << MSG::VERBOSE << " Building a SpacerBeam for station " << key << " component name is " << c->name << endmsg; } } - if (manager->IncludeCutoutsFlag() || (manager->IncludeCutoutsBogFlag() && stName.substr(0, 3) == "BOG")) { + if (manager->IncludeCutoutsFlag() || (manager->IncludeCutoutsBogFlag() && stName.compare(0, 3, "BOG") == 0)) { lvo = r->build(1, is_barrel); } else { lvo = r->build(is_barrel); @@ -847,7 +846,7 @@ namespace MuonGM { // end of bar. // From centre, it is -height/2 in x, 0 in y, -length/2 in z } else { - if (stName.substr(0, 3) == "BOG") + if (stName.compare(0, 3,"BOG") == 0) if (verbose) log << MSG::VERBOSE << " This spacerbeam for station " << key << " component name is " << c->name << " already exists; re-use it " << endmsg; lvo = fpv; @@ -886,17 +885,17 @@ namespace MuonGM { bool rpcCutoutFlag = (stname == "BOS" && std::abs(zi) == 6) || (stname == "BMS" && (std::abs(zi) == 2 || std::abs(zi) == 4 || std::abs(zi) == 6)) || (stname == "BMS" && std::abs(zi) == 1 && fi == 3); std::string key = stName + techname; - if (((manager->IncludeCutoutsFlag() && rpcCutoutFlag) || (manager->IncludeCutoutsBogFlag() && stName.substr(0, 3) == "BOG")) && zi >= 0) { + if (((manager->IncludeCutoutsFlag() && rpcCutoutFlag) || (manager->IncludeCutoutsBogFlag() && stName.compare(0, 3, "BOG") == 0)) && zi >= 0) { key += "p" + buildString(mysql->allocPosFindSubtype(statType, fi, zi), 0) + "_" + buildString(mysql->allocPosFindCutout(statType, fi, zi), 0) + "_" + buildString(vcutdef.size(), 0) + "_" + buildString(rp->iswap, 0); - } else if (((manager->IncludeCutoutsFlag() && rpcCutoutFlag) || (manager->IncludeCutoutsBogFlag() && stName.substr(0, 3) == "BOG")) && zi < 0) { + } else if (((manager->IncludeCutoutsFlag() && rpcCutoutFlag) || (manager->IncludeCutoutsBogFlag() && stName.compare(0, 3, "BOG") == 0)) && zi < 0) { key += "m" + buildString(mysql->allocPosFindSubtype(statType, fi, zi), 0) + "_" + buildString(mysql->allocPosFindCutout(statType, fi, zi), 0) + "_" + buildString(vcutdef.size(), 0) + "_" + buildString(rp->iswap, 0); } GeoVPhysVol *fpv = m_FPVMAP->GetDetector(key); if (fpv == 0) { Rpc *r = new Rpc(c); - r->setLogVolName(stName + techname); + r->setLogVolName(std::string(stName) + techname); if (stName.find("BI") != std::string::npos) { std::map<std::string, float>::const_iterator yItr = rpcYTrans.find(techname); if (yItr != rpcYTrans.end()) @@ -906,7 +905,7 @@ namespace MuonGM { r->z_translation = zItr->second; } - if ((manager->IncludeCutoutsFlag() && rpcCutoutFlag) || (manager->IncludeCutoutsBogFlag() && stName.substr(0, 3) == "BOG")) { + if ((manager->IncludeCutoutsFlag() && rpcCutoutFlag) || (manager->IncludeCutoutsBogFlag() && stName.compare(0, 3, "BOG") == 0)) { lvr = r->build(manager->MinimalGeoFlag(), 1, vcutdef); } else { lvr = r->build(manager->MinimalGeoFlag()); @@ -931,11 +930,11 @@ namespace MuonGM { bool dedCutoutFlag = (stname == "BOS" && std::abs(zi) == 6) || (stname == "BMS" && (std::abs(zi) == 2 || std::abs(zi) == 4 || std::abs(zi) == 6)) || (stname == "BMS" && std::abs(zi) == 1 && fi == 3); - std::string key = stName + techname; - if (((manager->IncludeCutoutsFlag() && dedCutoutFlag) || (manager->IncludeCutoutsBogFlag() && stName.substr(0, 3) == "BOG")) && zi >= 0) { + std::string key = std::string(stName) + techname; + if (((manager->IncludeCutoutsFlag() && dedCutoutFlag) || (manager->IncludeCutoutsBogFlag() && stName.compare(0, 3,"BOG") == 0)) && zi >= 0) { key += "p" + buildString(mysql->allocPosFindSubtype(statType, fi, zi), 0) + "_" + buildString(mysql->allocPosFindCutout(statType, fi, zi), 0) + "_" + buildString(vcutdef.size(), 0); - } else if (((manager->IncludeCutoutsFlag() && dedCutoutFlag) || (manager->IncludeCutoutsBogFlag() && stName.substr(0, 3) == "BOG")) && zi < 0) { + } else if (((manager->IncludeCutoutsFlag() && dedCutoutFlag) || (manager->IncludeCutoutsBogFlag() && stName.compare(0, 3, "BOG") == 0)) && zi < 0) { key += "m" + buildString(mysql->allocPosFindSubtype(statType, fi, zi), 0) + "_" + buildString(mysql->allocPosFindCutout(statType, fi, zi), 0) + "_" + buildString(vcutdef.size(), 0); } @@ -946,7 +945,7 @@ namespace MuonGM { Ded *r = new Ded(c); if (verbose) log << MSG::VERBOSE << " Building a DED for station " << key << " component name is " << c->name << endmsg; - if ((manager->IncludeCutoutsFlag() && dedCutoutFlag) || (manager->IncludeCutoutsBogFlag() && stName.substr(0, 3) == "BOG")) { + if ((manager->IncludeCutoutsFlag() && dedCutoutFlag) || (manager->IncludeCutoutsBogFlag() && stName.compare(0, 3, "BOG") == 0)) { lvd = r->build(1, vcutdef); } else { lvd = r->build(); @@ -968,10 +967,10 @@ namespace MuonGM { double xpos = c->posx - SupComponent::yAMDB0(*c); htcomponent = GeoTrf::TranslateX3D(ypos) * GeoTrf::TranslateY3D(xpos) * GeoTrf::TranslateZ3D(zpos); - std::string key = stName + techname; - if ((manager->IncludeCutoutsFlag() || (manager->IncludeCutoutsBogFlag() && stName.substr(0, 3) == "BOG")) && zi >= 0) { + std::string key = std::string(stName) + techname; + if ((manager->IncludeCutoutsFlag() || (manager->IncludeCutoutsBogFlag() && stName.compare(0, 3,"BOG") == 0)) && zi >= 0) { key += "p" + buildString(mysql->allocPosFindSubtype(statType, fi, zi), 0) + "_" + buildString(mysql->allocPosFindCutout(statType, fi, zi), 0); - } else if ((manager->IncludeCutoutsFlag() || (manager->IncludeCutoutsBogFlag() && stName.substr(0, 3) == "BOG")) && zi < 0) { + } else if ((manager->IncludeCutoutsFlag() || (manager->IncludeCutoutsBogFlag() && stName.compare(0, 3,"BOG") == 0)) && zi < 0) { key += "m" + buildString(mysql->allocPosFindSubtype(statType, fi, zi), 0) + "_" + buildString(mysql->allocPosFindCutout(statType, fi, zi), 0); } @@ -994,7 +993,7 @@ namespace MuonGM { xfaligncomponent = new GeoAlignableTransform(htcomponent); // Define key for this TGC component - std::string key = stName + techname; + std::string key = std::string(stName) + techname; if (manager->IncludeCutoutsFlag()) { if (mysql->allocPosFindCutout(statType, fi, zi) > 0) { // If there is a cutout for this chamber, give it a special key @@ -1013,7 +1012,7 @@ namespace MuonGM { GeoVPhysVol *fpv = m_FPVMAP->GetDetector(key); if (fpv == 0) { Tgc *t = new Tgc(c); - t->setLogVolName(stName + techname); + t->setLogVolName(std::string(stName) + techname); if (manager->IncludeCutoutsFlag()) { lvt = t->build(manager->MinimalGeoFlag(), 1, vcutdef); } else { @@ -1031,7 +1030,7 @@ namespace MuonGM { htcomponent = GeoTrf::TranslateX3D(ypos) * GeoTrf::TranslateZ3D(zpos); xfaligncomponent = new GeoAlignableTransform(htcomponent); // Here define the key for this CSC component - std::string key = stName + techname; + std::string key = std::string(stName) + techname; if (manager->IncludeCutoutsFlag() && zi >= 0) { key += "p" + buildString(mysql->allocPosFindSubtype(statType, fi, zi), 0) + "_" + buildString(mysql->allocPosFindCutout(statType, fi, zi), 0); } else if (manager->IncludeCutoutsFlag() && zi < 0) { @@ -1041,7 +1040,7 @@ namespace MuonGM { GeoVPhysVol *fpv = m_FPVMAP->GetDetector(key); if (fpv == 0) { Csc *t = new Csc(c); - t->setLogVolName(stName + techname); + t->setLogVolName(std::string(stName) + techname); if (manager->IncludeCutoutsFlag()) { lvc = t->build(manager->MinimalGeoFlag(), 1, vcutdef); @@ -1593,7 +1592,7 @@ namespace MuonGM { re->m_phistripwidth = re->m_phistrippitch - rc->stripSeparation; re->m_etastripwidth = re->m_etastrippitch - rc->stripSeparation; re->m_nphistripsperpanel = int((re->m_Ssize / re->m_nphistrippanels) / re->m_phistrippitch); - if (re->getStationName().substr(0, 3) != "BME") + if (re->getStationName().compare(0, 3, "BME") != 0) while ((re->m_nphistripsperpanel % 8) != 0) { re->m_nphistripsperpanel--; } @@ -1652,7 +1651,7 @@ namespace MuonGM { re->m_Zsize = cc->GetThickness(); re->m_LongZsize = cc->GetThickness(); - std::string tname = cc->name; + const std::string &tname = cc->name; int tname_index = MuonGM::strtoint(tname, 3, 2); re->setTechnologyName(tname); @@ -1667,7 +1666,7 @@ namespace MuonGM { char index[2]; sprintf(index, "%i", cc->index); - re->m_readout_name = stName.substr(0, 4) + "_" + index; + re->m_readout_name = stName.substr(0, 4) + '_' + index; re->m_readoutParams = mysql->GetTgcRPars(tname_index); if (re->m_readoutParams == 0) { @@ -1714,8 +1713,8 @@ namespace MuonGM { log << MSG::INFO << "MuonChamber " << name << " :" << endmsg; } - int MuonChamber::stationPhiTGC(const std::string& stName, int fi, int zi_input, const std::string& geometry_version) const { - std::string stName3 = stName.substr(0, 3); + int MuonChamber::stationPhiTGC(std::string_view stName, int fi, int zi_input, std::string_view geometry_version) const { + std::string_view stName3 = stName.substr(0, 3); int stphi = 0; int zi = abs(zi_input); diff --git a/MuonSpectrometer/MuonGeoModel/src/MuonSystemDescription.cxx b/MuonSpectrometer/MuonGeoModel/src/MuonSystemDescription.cxx index b0f07b159f5f5308ad5ca1f267940459bc717988..6c38c4fa8ba34d37dc89efc13157867bfbe6db67 100644 --- a/MuonSpectrometer/MuonGeoModel/src/MuonSystemDescription.cxx +++ b/MuonSpectrometer/MuonGeoModel/src/MuonSystemDescription.cxx @@ -10,8 +10,6 @@ namespace MuonGM { - extern std::vector<std::string> tokenize(std::string); - MuonSystemDescription::MuonSystemDescription(std::string n) : barrelInnerRadius(0.), innerRadius(0.), outerRadius(0.), endcapFrontFace(0.), length(0.), barreLength(0.), barrelInterRadius(0.), extraZ(0.), extraR(0.), m_name(std::move(n)) {} diff --git a/MuonSpectrometer/MuonGeoModel/src/RDBReaderAtlas.cxx b/MuonSpectrometer/MuonGeoModel/src/RDBReaderAtlas.cxx index 92619a9d652d3cd4c16def3944e42cd701653431..85b8dcecb1f757cf9a58ba5b5a28eb49b8cf3dbc 100644 --- a/MuonSpectrometer/MuonGeoModel/src/RDBReaderAtlas.cxx +++ b/MuonSpectrometer/MuonGeoModel/src/RDBReaderAtlas.cxx @@ -460,29 +460,29 @@ namespace MuonGM { Component *c = station->GetComponent(ic); if (c == NULL) continue; - std::string cname = c->name; + const std::string &cname = c->name; - if (cname.substr(0, 3) == "CSC") + if (cname.compare(0, 3, "CSC") == 0) MuonGM::ProcessCSC(m_dhwcsc, m_wcsc, cname); - else if (cname.substr(0, 3) == "MDT") + else if (cname.compare(0, 3, "MDT") == 0) MuonGM::ProcessMDT(m_dhwmdt, m_wmdt, cname); - else if (cname.substr(0, 3) == "RPC") + else if (cname.compare(0, 3, "RPC") == 0) MuonGM::ProcessRPC(m_dhwrpc, m_wrpc, m_dhwrpcall, m_wrpcall, cname); - else if (cname.substr(0, 3) == "TGC") + else if (cname.compare(0, 3, "TGC") == 0) MuonGM::ProcessTGC(m_dhwtgc, m_wtgc, m_dhwtgcall, m_wtgcall, cname); - else if (cname.substr(0, 3) == "SPA") + else if (cname.compare(0, 3, "SPA") == 0) MuonGM::ProcessSPA(m_dhwspa, m_wspa, cname); - else if (cname.substr(0, 3) == "DED") + else if (cname.compare(0, 3, "DED") == 0) MuonGM::ProcessDED(m_dhwded, m_wded, cname); - else if (cname.substr(0, 3) == "SUP") + else if (cname.compare(0, 3, "SUP") == 0) MuonGM::ProcessSUP(m_dhwsup, m_wsup, cname); - else if (cname.substr(0, 3) == "CHV" && have_spa_details) + else if (cname.compare(0, 3, "CHV") == 0 && have_spa_details) MuonGM::ProcessCHV(m_dhwchv, m_wchv, cname); - else if (cname.substr(0, 3) == "CRO" && have_spa_details) + else if (cname.compare(0, 3, "CRO") == 0 && have_spa_details) MuonGM::ProcessCRO(m_dhwcro, m_wcro, cname); - else if (cname.substr(0, 3) == "CMI" && have_spa_details) + else if (cname.compare(0, 3, "CMI") == 0 && have_spa_details) MuonGM::ProcessCMI(m_dhwcmi, m_wcmi, cname); - else if (cname.substr(0, 2) == "LB" && have_spa_details) + else if (cname.compare(0, 2, "LB") == 0 && have_spa_details) MuonGM::ProcessLBI(m_dhwlbi, m_wlbi, cname); } } @@ -520,9 +520,8 @@ namespace MuonGM { std::vector<float> iwgs1(180), iwgs2(180), iwgs3(180); for (int i = 0; i < 3; i++) { - std::ostringstream Astr; - Astr << "_" << i; - std::string A = Astr.str(); + std::string A("_"); + A+= std::to_string(i); nwgs.push_back((*ggcd)[ich]->getDouble("NWGS" + A)); roffst.push_back((*ggcd)[ich]->getDouble("ROFFST" + A)); poffst.push_back((*ggcd)[ich]->getDouble("POFFST" + A)); @@ -530,24 +529,21 @@ namespace MuonGM { } for (int i = 0; i < nwgs[0]; i++) { - std::ostringstream Astr; - Astr << "_" << i; - std::string A = Astr.str(); + std::string A("_"); + A+= std::to_string(i); // float xxx = (*ggcd)[ich]->getDouble("IWGS1"+A); iwgs1[i] = (float)(*ggcd)[ich]->getDouble("IWGS1" + A); } for (int i = 0; i < nwgs[1]; i++) { - std::ostringstream Astr; - Astr << "_" << i; - std::string A = Astr.str(); + std::string A("_"); + A+= std::to_string(i); iwgs2[i] = (float)(*ggcd)[ich]->getDouble("IWGS2" + A); } for (int i = 0; i < nwgs[2]; i++) { - std::ostringstream Astr; - Astr << "_" << i; - std::string A = Astr.str(); + std::string A("_"); + A+= std::to_string(i); iwgs3[i] = (float)(*ggcd)[ich]->getDouble("IWGS3" + A); } @@ -597,9 +593,8 @@ namespace MuonGM { std::vector<float> iwgs1(130), iwgs2(130), iwgs3(130), slarge(33), sshort(33); for (int i = 0; i < 3; i++) { - std::ostringstream Astr; - Astr << "_" << i; - std::string A = Astr.str(); + std::string A("_"); + A+= std::to_string(i); nwgs.push_back((*ggln)[ich]->getInt("NWGS" + A)); roffst.push_back((*ggln)[ich]->getInt("ROFFST" + A)); // poffst.push_back((*ggln)[ich]->getInt("POFFST"+A)); @@ -608,24 +603,21 @@ namespace MuonGM { } for (int i = 0; i < nwgs[0]; i++) { - std::ostringstream Astr; - Astr << "_" << i; - std::string A = Astr.str(); + std::string A("_"); + A+= std::to_string(i); // float xxx = (*ggln)[ich]->getInt("IWGS1"+A); iwgs1[i] = (float)(*ggln)[ich]->getInt("IWGS1" + A); } for (int i = 0; i < nwgs[1]; i++) { - std::ostringstream Astr; - Astr << "_" << i; - std::string A = Astr.str(); + std::string A("_"); + A+= std::to_string(i); iwgs2[i] = (float)(*ggln)[ich]->getInt("IWGS2" + A); } for (int i = 0; i < nwgs[2]; i++) { - std::ostringstream Astr; - Astr << "_" << i; - std::string A = Astr.str(); + std::string A("_"); + A+= std::to_string(i); iwgs3[i] = (float)(*ggln)[ich]->getInt("IWGS3" + A); } @@ -633,9 +625,8 @@ namespace MuonGM { float pdist = (*ggln)[ich]->getFloat("PDIST"); for (int i = 0; i < nsps[0] + 1; i++) { - std::ostringstream Astr; - Astr << "_" << i; - std::string A = Astr.str(); + std::string A("_"); + A+= std::to_string(i); slarge[i] = (float)(*ggln)[ich]->getFloat("SLARGE" + A); sshort[i] = (float)(*ggln)[ich]->getFloat("SHORT" + A); } diff --git a/MuonSpectrometer/MuonGeoModel/src/Rpc.cxx b/MuonSpectrometer/MuonGeoModel/src/Rpc.cxx index 3e72f1eca58bac27ef8dd2b6ef8a702f152929ec..cedf09fefe12fa47883c4a2c737b02ea83c7f736 100644 --- a/MuonSpectrometer/MuonGeoModel/src/Rpc.cxx +++ b/MuonSpectrometer/MuonGeoModel/src/Rpc.cxx @@ -113,7 +113,7 @@ namespace MuonGM { if (minimalgeo == 1) return prpc; - if (geometry_version.substr(0, 1) != "M") { + if (geometry_version.compare(0, 1,"M") != 0) { // here layout P and following (hopefully!) if (idiv * jdiv != 1) assert(0); diff --git a/MuonSpectrometer/MuonGeoModel/src/SpacerBeam.cxx b/MuonSpectrometer/MuonGeoModel/src/SpacerBeam.cxx index ea3f404ede025a512a861ac8ba97675ca5d98bd4..177041ec9f4d9c19382ce43f434bf1920d4e01ca 100644 --- a/MuonSpectrometer/MuonGeoModel/src/SpacerBeam.cxx +++ b/MuonSpectrometer/MuonGeoModel/src/SpacerBeam.cxx @@ -26,7 +26,7 @@ namespace MuonGM { SpacerBeam::SpacerBeam(Component *ss) : DetectorElement(ss->name), m_hole_pos1(0), m_hole_pos2(0), m_lb_height(0), m_lb_width(0), m_cross_excent(0) { StandardComponent *s = (StandardComponent *)ss; - std::string componentType = (s->name).substr(0, 3); + std::string_view componentType = std::string_view(s->name).substr(0, 3); double tol = 1.e-4; @@ -84,11 +84,11 @@ namespace MuonGM { GeoPhysVol *pvol = 0; GeoLogVol *lvol = 0; const GeoMaterial *mat = getMaterialManager()->getMaterial("std::Aluminium"); - if (name.substr(0, 3) == "CHV" || name.substr(0, 3) == "CRO" || name.substr(0, 3) == "CMI") { + if (name.compare(0, 3, "CHV") == 0 || name.compare(0, 3, "CRO") == 0 || name.compare(0, 3, "CMI") == 0) { double sinexc = 0.; double cosexc = 1.; double volumelargeness = largeness; - if ((name.substr(0, 3) == "CHV" || name.substr(0, 3) == "CRO") && !is_barrel) { + if ((name.compare(0, 3, "CHV") == 0 || name.compare(0, 3, "CRO") == 0) && !is_barrel) { double ltemp = std::sqrt(length * length + excent * excent); sinexc = std::abs(excent) / ltemp; cosexc = length / ltemp; @@ -121,7 +121,7 @@ namespace MuonGM { } return pvol; - } else if (name.substr(0, 2) == "LB") { + } else if (name.compare(0, 2, "LB") == 0) { const GeoShape *LBbox = new GeoBox(height / 2., (width - length / 4.) / 2., length / 2.); // (width - length/4) is temporary until excent parameter is put into LbiComponent GeoBox *innerBox = new GeoBox(height / 2. - thickness, width / 2. + 1., length / 2. - lowerThickness); diff --git a/MuonSpectrometer/MuonGeoModel/src/StandardComponent.cxx b/MuonSpectrometer/MuonGeoModel/src/StandardComponent.cxx index ced156aa4f0cc34b8dab12bdd7dd8d3f52569f5d..32e933c803073553914b9070d60a98bfd99c6be4 100644 --- a/MuonSpectrometer/MuonGeoModel/src/StandardComponent.cxx +++ b/MuonSpectrometer/MuonGeoModel/src/StandardComponent.cxx @@ -68,16 +68,16 @@ namespace MuonGM { MYSQL *mysql = MYSQL::GetPointer(); Technology *tec = mysql->GetTechnology(name); - if (name.substr(0, 3) == "CHV") { + if (name.compare(0, 3,"CHV") == 0) { CHV *chv = (CHV *)tec; return chv->height; - } else if (name.substr(0, 3) == "CRO") { + } else if (name.compare(0, 3,"CRO") == 0) { CRO *chv = (CRO *)tec; return chv->height; - } else if (name.substr(0, 3) == "CMI") { + } else if (name.compare(0, 3,"CMI") == 0) { CMI *chv = (CMI *)tec; return chv->height; - } else if (name.substr(0, 3) == "LBI" || name.substr(0, 2) == "LB") { + } else if (name.compare(0, 3,"LBI") == 0 || name.compare(0, 2,"LB") == 0) { LBI *chv = (LBI *)tec; return chv->height; } diff --git a/MuonSpectrometer/MuonGeoModel/src/Station.cxx b/MuonSpectrometer/MuonGeoModel/src/Station.cxx index bda7b6f53fffcb424f259216a7dff627fe69f577..5e7c097713456a0932e590cf704280bcfd090731 100644 --- a/MuonSpectrometer/MuonGeoModel/src/Station.cxx +++ b/MuonSpectrometer/MuonGeoModel/src/Station.cxx @@ -317,10 +317,10 @@ namespace MuonGM { double ymin = getYMin(); double w = 0; for (unsigned int i = 0; i < m_components.size(); i++) { - std::string n = m_components[i]->name.substr(0, 3); + std::string_view n = std::string_view(m_components[i]->name).substr(0, 3); if (n == "TGC") { double dw = 20.; - std::string typetgc = m_components[i]->name.substr(3, 2); + std::string_view typetgc = std::string_view(m_components[i]->name).substr(3, 2); // in case of station containing one module if (typetgc == "01" || typetgc == "06" || typetgc == "12" || typetgc == "18" || typetgc == "19" || typetgc == "20" || typetgc == "21") { dw = 0.; @@ -366,10 +366,10 @@ namespace MuonGM { w = m_components[i]->dx2; } - std::string n = m_components[i]->name.substr(0, 3); + std::string_view n = std::string_view(m_components[i]->name).substr(0, 3); if (n == "TGC") { double dw = 20.; - std::string typetgc = m_components[i]->name.substr(3, 2); + std::string_view typetgc = std::string_view(m_components[i]->name).substr(3, 2); // in case of one station containing one module if (typetgc == "01" || typetgc == "06" || typetgc == "12" || typetgc == "18" || typetgc == "19" || typetgc == "20" || typetgc == "21") { dw = 0.; @@ -391,7 +391,7 @@ namespace MuonGM { } } - if (m_name.substr(0, 1) == "T") + if (m_name.compare(0, 1, "T") == 0) return w; else return maxdxmax; @@ -428,7 +428,7 @@ namespace MuonGM { for (int icomp = 0; icomp < GetNrOfComponents(); ++icomp) { const Component *c = GetComponent(icomp); - if (c->name.substr(0, 3) != "MDT") + if (c->name.compare(0, 3, "MDT") != 0) continue; MDT *mdtobj = (MDT *)mysql->GetATechnology(c->name); if (!mdtobj) { diff --git a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/CscIdHelper.h b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/CscIdHelper.h index cd343607fee6619852146aa2f87cffe6b11a86ad..95a0910b439144219e57f60cc9ddda8538498a05 100644 --- a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/CscIdHelper.h +++ b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/CscIdHelper.h @@ -83,7 +83,7 @@ public: // Identifier builders Identifier elementID(int stationName, int stationEta, int stationPhi, bool check = false, bool* isValid = 0) const; - Identifier elementID(const std::string& stationNameStr, int stationEta, int stationPhi, bool check = false, bool* isValid = 0) const; + Identifier elementID(std::string_view stationNameStr, int stationEta, int stationPhi, bool check = false, bool* isValid = 0) const; Identifier elementID(const Identifier& channelID) const; Identifier channelID(int stationName, int stationEta, int stationPhi, int chamberLayer, int wireLayer, int measuresPhi, int strip, bool check = false, bool* isValid = 0) const; diff --git a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MmIdHelper.h b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MmIdHelper.h index 63301a412d161268f9fbec4f5275d6a9c4e3f81d..8844583371021dc1c2752cebf1e57e98401a92fe 100644 --- a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MmIdHelper.h +++ b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MmIdHelper.h @@ -70,7 +70,7 @@ public: // Identifier builders Identifier elementID(int stationName, int stationEta, int stationPhi, bool check = false, bool* isValid = 0) const; - Identifier elementID(const std::string& stationNameStr, int stationEta, int stationPhi, bool check = false, bool* isValid = 0) const; + Identifier elementID(std::string_view stationNameStr, int stationEta, int stationPhi, bool check = false, bool* isValid = 0) const; Identifier elementID(const Identifier& channelID) const; Identifier channelID(int stationName, int stationEta, int stationPhi, int multilayer, int gasGap, int channel, bool check = false, diff --git a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelper.h b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelper.h index 0dfd2963c1d7fc62d872b99e373a55f98890da35..bde41c06ea84af98c043677fd3bb0ed30d48b2ca 100644 --- a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelper.h +++ b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelper.h @@ -125,7 +125,7 @@ public: // Access to name and technology maps - int stationNameIndex(const std::string& name) const; + int stationNameIndex(std::string_view name) const; int technologyIndex(const std::string& name) const; const std::string& stationNameString(const int& index) const; const std::string& technologyString(const int& index) const; diff --git a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/TgcIdHelper.h b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/TgcIdHelper.h index 837cbeabf4ec2ceaf8ad16e6f9f62f9caf348356..71ee04c0baa319d2f6672e5ef27f049d253410ea 100644 --- a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/TgcIdHelper.h +++ b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/TgcIdHelper.h @@ -69,11 +69,11 @@ public: // Identifier builders Identifier elementID(int stationName, int stationEta, int stationPhi, bool check = false, bool* isValid = 0) const; - Identifier elementID(const std::string& stationNameStr, int stationEta, int stationPhi, bool check = false, bool* isValid = 0) const; + Identifier elementID(std::string_view stationNameStr, int stationEta, int stationPhi, bool check = false, bool* isValid = 0) const; Identifier elementID(const Identifier& channelID) const; Identifier channelID(int stationName, int stationEta, int stationPhi, int gasGap, int isStrip, int channel, bool check = false, bool* isValid = 0) const; - Identifier channelID(const std::string& stationNameStr, int stationEta, int stationPhi, int gasGap, int isStrip, int channel, + Identifier channelID(std::string_view stationNameStr, int stationEta, int stationPhi, int gasGap, int isStrip, int channel, bool check = false, bool* isValid = 0) const; Identifier channelID(const Identifier& id, int gasGap, int isStrip, int channel, bool check = false, bool* isValid = 0) const; diff --git a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/sTgcIdHelper.h b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/sTgcIdHelper.h index 5b53afda513b34c8b2a1c99909b5533be8585e36..feda8faaf2587b8a19965b9ae51287ba56890c94 100644 --- a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/sTgcIdHelper.h +++ b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/sTgcIdHelper.h @@ -72,7 +72,7 @@ public: // Identifier builders Identifier elementID(int stationName, int stationEta, int stationPhi, bool check = false, bool* isValid = 0) const; - Identifier elementID(const std::string& stationNameStr, int stationEta, int stationPhi, bool check = false, bool* isValid = 0) const; + Identifier elementID(std::string_view stationNameStr, int stationEta, int stationPhi, bool check = false, bool* isValid = 0) const; Identifier elementID(const Identifier& channelID) const; Identifier channelID(int stationName, int stationEta, int stationPhi, int multilayer, int gasGap, int channelType, int channel, diff --git a/MuonSpectrometer/MuonIdHelpers/src/CscIdHelper.cxx b/MuonSpectrometer/MuonIdHelpers/src/CscIdHelper.cxx index ecce2660248c64e6c2df07c444cd4790578a3f97..4bd0ff75e389d28b80a92ea86e4f444c0632b7b6 100644 --- a/MuonSpectrometer/MuonIdHelpers/src/CscIdHelper.cxx +++ b/MuonSpectrometer/MuonIdHelpers/src/CscIdHelper.cxx @@ -916,7 +916,7 @@ Identifier CscIdHelper::elementID(int stationName, int stationEta, int stationPh return result; } -Identifier CscIdHelper::elementID(const std::string& stationNameStr, int stationEta, int stationPhi, bool check, bool* isValid) const { +Identifier CscIdHelper::elementID(std::string_view stationNameStr, int stationEta, int stationPhi, bool check, bool* isValid) const { Identifier id; int stationName = stationNameIndex(stationNameStr); id = elementID(stationName, stationEta, stationPhi, check, isValid); diff --git a/MuonSpectrometer/MuonIdHelpers/src/MmIdHelper.cxx b/MuonSpectrometer/MuonIdHelpers/src/MmIdHelper.cxx index a7a38c7d4ec4d8ec790874b114372c846fe664bd..d2479a2610f0ae43b51114d660e5da4ffd31cedc 100644 --- a/MuonSpectrometer/MuonIdHelpers/src/MmIdHelper.cxx +++ b/MuonSpectrometer/MuonIdHelpers/src/MmIdHelper.cxx @@ -700,7 +700,7 @@ Identifier MmIdHelper::elementID(int stationName, int stationEta, int stationPhi return result; } /*******************************************************************************/ -Identifier MmIdHelper::elementID(const std::string& stationNameStr, int stationEta, int stationPhi, bool check, bool* isValid) const { +Identifier MmIdHelper::elementID(std::string_view stationNameStr, int stationEta, int stationPhi, bool check, bool* isValid) const { Identifier id; int stationName = stationNameIndex(stationNameStr); id = elementID(stationName, stationEta, stationPhi, check, isValid); diff --git a/MuonSpectrometer/MuonIdHelpers/src/MuonIdHelper.cxx b/MuonSpectrometer/MuonIdHelpers/src/MuonIdHelper.cxx index 85a45889ba1b90cd77dad0d94e587334c4c4556f..d8bb06dbd33a244ee79339af36bf89e061e043d5 100644 --- a/MuonSpectrometer/MuonIdHelpers/src/MuonIdHelper.cxx +++ b/MuonSpectrometer/MuonIdHelpers/src/MuonIdHelper.cxx @@ -968,7 +968,7 @@ bool MuonIdHelper::isForward(const int& stationNameIndex) const { return (m_isFo bool MuonIdHelper::isSmall(const int& stationNameIndex) const { return (m_isSmall.count(stationNameIndex) == 1); } /*******************************************************************************/ // Access to name and technology maps -int MuonIdHelper::stationNameIndex(const std::string& name) const { +int MuonIdHelper::stationNameIndex(std::string_view name) const { int counter = 0; for (const std::string& station_name : m_stationNameVector) { if (name.compare(station_name) == 0) { return counter; } diff --git a/MuonSpectrometer/MuonIdHelpers/src/TgcIdHelper.cxx b/MuonSpectrometer/MuonIdHelpers/src/TgcIdHelper.cxx index aa935203b7cd29cd4f3b8d5cc45dd10490b0b865..6da1e63f89974408aaa8204176e7e23f4702470f 100644 --- a/MuonSpectrometer/MuonIdHelpers/src/TgcIdHelper.cxx +++ b/MuonSpectrometer/MuonIdHelpers/src/TgcIdHelper.cxx @@ -624,7 +624,7 @@ Identifier TgcIdHelper::elementID(int stationName, int stationEta, int stationPh return result; } -Identifier TgcIdHelper::elementID(const std::string& stationNameStr, int stationEta, int stationPhi, bool check, bool* isValid) const { +Identifier TgcIdHelper::elementID( std::string_view stationNameStr, int stationEta, int stationPhi, bool check, bool* isValid) const { Identifier id; int stationName = stationNameIndex(stationNameStr); id = elementID(stationName, stationEta, stationPhi, check, isValid); @@ -653,7 +653,7 @@ Identifier TgcIdHelper::channelID(int stationName, int stationEta, int stationPh return result; } -Identifier TgcIdHelper::channelID(const std::string& stationNameStr, int stationEta, int stationPhi, int gasGap, int isStrip, int channel, +Identifier TgcIdHelper::channelID(std::string_view stationNameStr, int stationEta, int stationPhi, int gasGap, int isStrip, int channel, bool check, bool* isValid) const { Identifier id; int stationName = stationNameIndex(stationNameStr); diff --git a/MuonSpectrometer/MuonIdHelpers/src/sTgcIdHelper.cxx b/MuonSpectrometer/MuonIdHelpers/src/sTgcIdHelper.cxx index 79e4a081cef84fdcdd5c80fee027edf7409b61f5..e8f71e7e27b81e0fcbc40dc5ffc551b977baa99a 100644 --- a/MuonSpectrometer/MuonIdHelpers/src/sTgcIdHelper.cxx +++ b/MuonSpectrometer/MuonIdHelpers/src/sTgcIdHelper.cxx @@ -891,7 +891,7 @@ Identifier sTgcIdHelper::elementID(int stationName, int stationEta, int stationP return result; } /*******************************************************************************/ -Identifier sTgcIdHelper::elementID(const std::string& stationNameStr, int stationEta, int stationPhi, bool check, bool* isValid) const { +Identifier sTgcIdHelper::elementID(std::string_view stationNameStr, int stationEta, int stationPhi, bool check, bool* isValid) const { Identifier id; int stationName = stationNameIndex(stationNameStr); id = elementID(stationName, stationEta, stationPhi, check, isValid); diff --git a/MuonSpectrometer/MuonTruthAlgs/src/MuonSegmentTruthAssociationAlg.cxx b/MuonSpectrometer/MuonTruthAlgs/src/MuonSegmentTruthAssociationAlg.cxx index 1112de6087fb156dac46d31991c4e2e7bbbb3ade..51af0c9363a51392ddab6f7dabbb0b7ca90aef2c 100644 --- a/MuonSpectrometer/MuonTruthAlgs/src/MuonSegmentTruthAssociationAlg.cxx +++ b/MuonSpectrometer/MuonTruthAlgs/src/MuonSegmentTruthAssociationAlg.cxx @@ -67,11 +67,11 @@ namespace Muon { return StatusCode::SUCCESS; } - std::string truthSegmentContainerName = m_muonTruthSegmentContainerName.key(); - int ppos = truthSegmentContainerName.find("."); + std::string truthSegmentContainerName (m_muonTruthSegmentContainerName.key()); + int ppos = truthSegmentContainerName.find('.'); truthSegmentContainerName = truthSegmentContainerName.substr(0, ppos); - std::string segmentCollectionName = m_muonSegmentCollectionName.key(); - ppos = segmentCollectionName.find("."); + std::string segmentCollectionName( m_muonSegmentCollectionName.key()); + ppos = segmentCollectionName.find('.'); segmentCollectionName = segmentCollectionName.substr(0, ppos); std::vector<const Muon::MuonSegment*> muonSegments; diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonitoring/MDTChamber.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonitoring/MDTChamber.h index e9dbdd103a0818b45386f16fb00330de45fddd82..e1f33e468b8ffdbb7b4167454532b597bd713670 100755 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonitoring/MDTChamber.h +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonitoring/MDTChamber.h @@ -22,7 +22,7 @@ class TH2F; // no TH2Fs are ever allocated by this class or owned class MDTChamber { public: - MDTChamber( std::string name ); + MDTChamber( std::string_view name ); ~MDTChamber(); TH1F_LW* mdttdc; diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonAlg.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonAlg.h index e15da23f102e86c2a2a9792f53a3407f1a76ace3..adaf973d5977be989bfdfdf86975fbf568fe991c 100755 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonAlg.h +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonAlg.h @@ -134,21 +134,21 @@ class MdtRawDataMonAlg: public AthMonitorAlgorithm { //MDTRawDataUtils_cxx bool AinB( int A, std::vector<int> & B ) const; virtual StatusCode binMdtGlobal( TH2*, char ecap ); - virtual StatusCode binMdtRegional( TH2*, std::string &xAxis ); + virtual StatusCode binMdtRegional( TH2*, std::string_view xAxis ); virtual StatusCode binMdtGlobal_byLayer( TH2*, TH2*, TH2*); virtual StatusCode binMdtOccVsLB(TH2* &h, int region, int layer); virtual StatusCode binMdtOccVsLB_Crate(TH2* &h, int region, int crate); - void ChamberTubeNumberCorrection(int & tubeNum, const std::string & hardware_name, int tubePos, int numLayers) const; + void ChamberTubeNumberCorrection(int & tubeNum, std::string_view hardware_name, int tubePos, int numLayers) const; void CorrectTubeMax(const std::string & hardware_name, int & numTubes) const; void CorrectLayerMax(const std::string & hardware_name, int & numLayers) const; virtual StatusCode fillMDTMaskedTubes(IdentifierHash, const std::string &, TH1F_LW*& h);//DEV not used at moment, should be revised int get_bin_for_LB_hist(int region, int layer, int phi, int eta, bool isBIM) const; - int get_bin_for_LB_crate_hist(int region, int layer, int phi, int eta, std::string chamber) const; + int get_bin_for_LB_crate_hist(int region, int layer, int phi, int eta, std::string_view chamber) const; // private function to initialize the selection of a certain region void mdtchamberId(); //private function to find mdt mezz cards int mezzmdt(Identifier) const; - int GetTubeMax(const Identifier & digcoll_id, const std::string & hardware_name); + int GetTubeMax(const Identifier & digcoll_id, std::string_view hardware_name); inline int cachedTubeMax(const Identifier& digcoll_id) const { return m_tubemax_map.at(digcoll_id.get_compact() & s_detectorElementMask); }; inline int cachedTubeLayerMax(const Identifier& digcoll_id) const { return m_tubelayermax_map.at(digcoll_id.get_compact() & s_detectorElementMask); }; diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataValAlg.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataValAlg.h index e7fa452cfbf5261352b4f81e1a44cc2a37920ca3..45e31cd92e1835e2b14ca23f8fce9c4bb43df185 100755 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataValAlg.h +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataValAlg.h @@ -133,12 +133,12 @@ class MdtRawDataValAlg: public ManagedMonitorToolBase { bool AinB( int A, std::vector<int> & B ); virtual StatusCode binMdtGlobal( TH2*, char ecap ); - virtual StatusCode binMdtRegional( TH2*, std::string &xAxis ); + virtual StatusCode binMdtRegional( TH2*, std::string_view xAxis ); virtual StatusCode binMdtGlobal_byLayer( TH2*, TH2*, TH2*); virtual StatusCode binMdtOccVsLB(TH2* &h, int region, int layer); virtual StatusCode binMdtOccVsLB_Crate(TH2* &h, int region, int crate); - void TubeID_to_ID_L_ML(int & tubeID, const std::string & hardware_name, int & tube, int & layer, int & ML, int max); - void ChamberTubeNumberCorrection(int & tubeNum, const std::string & hardware_name, int tubePos, int numLayers); + void TubeID_to_ID_L_ML(int & tubeID, std::string_view hardware_name, int & tube, int & layer, int & ML, int max); + void ChamberTubeNumberCorrection(int & tubeNum, std::string_view hardware_name, int tubePos, int numLayers); void CorrectTubeMax(const std::string & hardware_name, int & numTubes); void CorrectLayerMax(const std::string & hardware_name, int & numLayers); virtual StatusCode bookMDTHisto_overview( TH1*&, TString, TString, TString, int, float, float, MonGroup&); @@ -150,12 +150,12 @@ class MdtRawDataValAlg: public ManagedMonitorToolBase { void putBox(TH2* h, float x1, float y1, float x2, float y2); void putLine(TH2* h, float x1, float y1, float x2, float y2, Color_t c=kBlack); int get_bin_for_LB_hist(int region, int layer, int phi, int eta, bool isBIM); - int get_bin_for_LB_crate_hist(int region, int layer, int phi, int eta, std::string chamber); + int get_bin_for_LB_crate_hist(int region, int layer, int phi, int eta, std::string_view chamber); // private function to initialize the selection of a certain region void mdtchamberId(); //private function to find mdt mezz cards int mezzmdt(Identifier); - int GetTubeMax(const Identifier & digcoll_id, const std::string & hardware_name); + int GetTubeMax(const Identifier & digcoll_id, std::string_view hardware_name); StatusCode StoreTriggerType(); void StoreTriggerType(int type); int GetTriggerType() { return m_trigtype; } diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MDTChamber.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MDTChamber.cxx index 5483c7241f0c3880c5c3467ef1b58f2f65cd9881..d020e089d3db9dd7ef959155b920a46a35ec7668 100755 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MDTChamber.cxx +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MDTChamber.cxx @@ -13,7 +13,7 @@ #include <cmath> #include <iostream> -MDTChamber::MDTChamber(std::string name) : +MDTChamber::MDTChamber(std::string_view name) : mdttdc(0), mdttdccut_ML1(0), mdttdccut_ML2(0), @@ -41,7 +41,7 @@ MDTChamber::MDTChamber(std::string name) : mdt_DRvsSegD(0), mdttubenoise(0), mdttdctube(0), - m_hardware_name(name), + m_hardware_name(std::string(name)), m_mdthitsperchamber_InnerMiddleOuterLumi_bin(0), m_mdthitsperchamber_InnerMiddleOuterLumi_binx(0), m_mdthitsperchamber_InnerMiddleOuterLumi_biny(0), @@ -93,15 +93,15 @@ MDTChamber::MDTChamber(std::string name) : ss.clear(); //set m_station_phi - std::string statphi_s(name.substr(5,2)); + std::string_view statphi_s(name.substr(5,2)); ss << statphi_s; ss >> m_station_phi; m_station_phi--; ss.clear(); - + std::string_view name_v(m_hardware_name); //First there were only BMF1,2,3, then BMGs were added which are between the BMFs, so doing the eta-station assignment by hand. - if( m_hardware_name.substr(0, 4) == "BMF2") m_station_eta = 3; - if( m_hardware_name.substr(0, 4) == "BMF3") m_station_eta = 5; + if( name_v.substr(0, 4) == "BMF2") m_station_eta = 3; + if( name_v.substr(0, 4) == "BMF3") m_station_eta = 5; //station_phi is used as an iterator, and is thus 1 less than its value (since it always starts at 01, not 00). @@ -163,38 +163,45 @@ MDTChamber::~MDTChamber(){} void MDTChamber::SetMDTHitsPerChamber_IMO_Bin(TH2F* h){ //Plots BEE Chambers at the edge BIS plots, and EES/EEL on EIS/EIL plots //EIL goes up to EIL5 in hardware name but in reality there are only 4 eta stations! + std::string_view name_v(m_hardware_name); + std::string_view station_eta_s = name_v.substr(3,1); + std::string_view statphi_s = name_v.substr(5,2); + if(name_v.substr(0,4)=="BMF2") station_eta_s = "3"; + if(name_v.substr(0,4)=="BMF3") station_eta_s = "5"; - std::string station_eta_s = m_hardware_name.substr(3,1); - std::string statphi_s = m_hardware_name.substr(5,2); - if(m_hardware_name.substr(0,4)=="BMF2") station_eta_s = "3"; - if(m_hardware_name.substr(0,4)=="BMF3") station_eta_s = "5"; + std::string ecap_layer_IMO = std::string(name_v.substr(0,1)); + ecap_layer_IMO += name_v.substr(4,1); + ecap_layer_IMO += station_eta_s; - std::string ecap_layer_IMO = m_hardware_name.substr(0,1) + m_hardware_name.substr(4,1) + station_eta_s; if( m_station_phi == 12 && (m_station_eta == 4 || m_station_eta == 5) ) {//m_station_phi+1==actual phi station - if(m_hardware_name == "BML4A13") ecap_layer_IMO = "BA5"; - if(m_hardware_name == "BML5A13") ecap_layer_IMO = "BA6"; - if(m_hardware_name == "BML4C13") ecap_layer_IMO = "BC5"; - if(m_hardware_name == "BML5C13") ecap_layer_IMO = "BC6"; + if(name_v == "BML4A13") ecap_layer_IMO = "BA5"; + if(name_v == "BML5A13") ecap_layer_IMO = "BA6"; + if(name_v == "BML4C13") ecap_layer_IMO = "BC5"; + if(name_v == "BML5C13") ecap_layer_IMO = "BC6"; } - if(m_hardware_name == "BME1A14" || m_hardware_name == "BME1A13" ){ //protect against future fix in mdt helper + if(name_v == "BME1A14" || name_v == "BME1A13" ){ //protect against future fix in mdt helper ecap_layer_IMO = "BA4"; statphi_s = "13"; } - if(m_hardware_name == "BME1C14" || m_hardware_name == "BME1C13"){ + if(name_v == "BME1C14" || name_v == "BME1C13"){ ecap_layer_IMO = "BC4"; statphi_s = "13"; } //First there were only BMF1,2,3, then BMGs were added which are between the BMFs, so doing the ecap-layer assignment by hand. - if( m_hardware_name.substr(0, 5) == "BMF2A") ecap_layer_IMO = "BA3"; - if( m_hardware_name.substr(0, 5) == "BMF3A") ecap_layer_IMO = "BA5"; - if( m_hardware_name.substr(0, 5) == "BMF2C") ecap_layer_IMO = "BC3"; - if( m_hardware_name.substr(0, 5) == "BMF3C") ecap_layer_IMO = "BC5"; - - std::string statphi_IMO_s = m_hardware_name.substr(1,1)+","+statphi_s; + if( name_v.substr(0, 5) == "BMF2A") ecap_layer_IMO = "BA3"; + if( name_v.substr(0, 5) == "BMF3A") ecap_layer_IMO = "BA5"; + if( name_v.substr(0, 5) == "BMF2C") ecap_layer_IMO = "BC3"; + if( name_v.substr(0, 5) == "BMF3C") ecap_layer_IMO = "BC5"; + + std::string statphi_IMO_s = std::string(name_v.substr(1,1)); + statphi_IMO_s+=','; + statphi_IMO_s+=statphi_s; //Separate pesky BIR/BIM 11,15 - if(m_hardware_name.substr(0,3)=="BIR" || m_hardware_name.substr(0,3)=="BIM") - statphi_IMO_s = statphi_IMO_s+","+m_hardware_name.at(2); + if(name_v.substr(0,3)=="BIR" || name_v.substr(0,3)=="BIM"){ + statphi_IMO_s += ','; + statphi_IMO_s += name_v.at(2); + } int binx = h->GetXaxis()->FindBin( ecap_layer_IMO.c_str() ); int biny = h->GetYaxis()->FindBin( statphi_IMO_s.c_str() ); @@ -209,7 +216,7 @@ void MDTChamber::SetMDTHitsPerML_byLayer_Bins(TH2F* h_mdthitspermultilayerLumi, std::string statphi_s = m_hardware_name.substr(5,2); if(m_hardware_name == "BME1A14" || m_hardware_name == "BME1C14") statphi_s = "13"; - + std::string_view name_v(m_hardware_name); std::string statphi_ml1_s = statphi_s+",1"; std::string statphi_ml2_s = statphi_s+",2"; @@ -220,8 +227,8 @@ void MDTChamber::SetMDTHitsPerML_byLayer_Bins(TH2F* h_mdthitspermultilayerLumi, } std::string stateta_s = m_hardware_name.substr(3,1); - if(m_hardware_name.substr(0,4)=="BMF2") stateta_s = "3"; - if(m_hardware_name.substr(0,4)=="BMF3") stateta_s = "5"; + if(name_v.substr(0,4)=="BMF2") stateta_s = "3"; + if(name_v.substr(0,4)=="BMF3") stateta_s = "5"; std::string ecap_layer = m_hardware_name.substr(0,2) + m_hardware_name.at(4) + stateta_s; if( m_station_phi == 12 && (m_station_eta == 4 || m_station_eta == 5) ) {//m_station_phi+1==actual phi station @@ -238,10 +245,10 @@ void MDTChamber::SetMDTHitsPerML_byLayer_Bins(TH2F* h_mdthitspermultilayerLumi, } // Setting BMF by hand because of irregular naming convention. BMF and BMG chambers alternate; historical BMF naming is BMF1,2,3 but BMG it is 2,4,6 - if( m_hardware_name.substr(0, 5) == "BMF2A") ecap_layer = "BMA3"; - if( m_hardware_name.substr(0, 5) == "BMF3A") ecap_layer = "BMA5"; - if( m_hardware_name.substr(0, 5) == "BMF2C") ecap_layer = "BMC3"; - if( m_hardware_name.substr(0, 5) == "BMF3C") ecap_layer = "BMC5"; + if( name_v.substr(0, 5) == "BMF2A") ecap_layer = "BMA3"; + if( name_v.substr(0, 5) == "BMF3A") ecap_layer = "BMA5"; + if( name_v.substr(0, 5) == "BMF2C") ecap_layer = "BMC3"; + if( name_v.substr(0, 5) == "BMF3C") ecap_layer = "BMC5"; int binx = h_mdthitspermultilayerLumi->GetXaxis()->FindBin(ecap_layer.c_str()); int biny_m1 = h_mdthitspermultilayerLumi->GetYaxis()->FindBin(statphi_ml1_s.c_str()); diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MDTRawDataUtils.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MDTRawDataUtils.cxx index 3faa6e3c0e0f0779b2131443e675884ab8436dc0..01a6acec879be49fe270db925799504fea7acd7e 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MDTRawDataUtils.cxx +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MDTRawDataUtils.cxx @@ -220,7 +220,7 @@ StatusCode MdtRawDataValAlg::binMdtGlobal( TH2* h, char ecap ) { return StatusCode::SUCCESS; } -StatusCode MdtRawDataValAlg::binMdtRegional( TH2* h, string &xAxis ) { +StatusCode MdtRawDataValAlg::binMdtRegional( TH2* h, std::string_view xAxis ) { ///SET Ghost Entries int LowerEta=-0; @@ -565,7 +565,7 @@ StatusCode MdtRawDataValAlg::binMdtGlobal_byLayer( TH2* nHits_In, TH2* nHits_Mi } -void MdtRawDataValAlg::TubeID_to_ID_L_ML(int & tubeID, const std::string & hardware_name, int & derived_tube, int & derived_layer, int & derived_ML, int totalTubes) { +void MdtRawDataValAlg::TubeID_to_ID_L_ML(int & tubeID, std::string_view hardware_name, int & derived_tube, int & derived_layer, int & derived_ML, int totalTubes) { derived_tube = 1; derived_layer = 1; derived_ML = 1; @@ -621,7 +621,7 @@ void MdtRawDataValAlg::TubeID_to_ID_L_ML(int & tubeID, const std::string & hardw } //Correct for CutOuts -void MdtRawDataValAlg::ChamberTubeNumberCorrection(int & tubeNum, const std::string & hardware_name, int tubePos, int numLayers) { +void MdtRawDataValAlg::ChamberTubeNumberCorrection(int & tubeNum, std::string_view hardware_name, int tubePos, int numLayers) { //numLayers should be mdt_layer-1 so numLayers = 0 implies layer 1 ML 1 or mdt_layer==1 if(hardware_name.substr(0,4)=="BMS4" || hardware_name.substr(0,4)=="BMS6"){//layer 1-4 tubeId 41-48 cut out if( numLayers <= 2 ) tubeNum = tubePos + numLayers * 48; @@ -784,7 +784,7 @@ int MdtRawDataValAlg::mezzmdt(Identifier digcoll_id) { //int mezz_chamber, int m // Get the Maximum # of tubes in the chamber // the 'if' statements are for chambers with ML1 != ML2 // except for BIS8 -- mdtIdHelper gets the # layers wrong in this instance -int MdtRawDataValAlg::GetTubeMax( const Identifier & digcoll_id, const std::string & hardware_name ) { +int MdtRawDataValAlg::GetTubeMax( const Identifier & digcoll_id, std::string_view hardware_name ) { int numtubes = m_idHelperSvc->mdtIdHelper().tubeMax(digcoll_id); int numlayers = m_idHelperSvc->mdtIdHelper().tubeLayerMax(digcoll_id); int numML = m_idHelperSvc->mdtIdHelper().numberOfMultilayers(digcoll_id); @@ -811,10 +811,10 @@ int MdtRawDataValAlg::GetTubeMax( const Identifier & digcoll_id, const std::stri if( hardware_name.substr(0,3) == "BME") tubeMax = 546; - - std::map<string,float>::iterator iter_tubesperchamber = m_tubesperchamber_map.find(hardware_name); + std::string hardware_namestr(hardware_name); + std::map<string,float>::iterator iter_tubesperchamber = m_tubesperchamber_map.find(hardware_namestr); if ( iter_tubesperchamber == m_tubesperchamber_map.end() ) { - m_tubesperchamber_map.insert( make_pair( hardware_name, tubeMax ) ); + m_tubesperchamber_map.insert( make_pair( hardware_namestr, tubeMax ) ); ATH_MSG_DEBUG("Chamber " << hardware_name << " has " << tubeMax << " tubes."); } else { @@ -1499,7 +1499,7 @@ StatusCode MdtRawDataValAlg::binMdtOccVsLB_Crate(TH2* &h, int region, int crate) } -int MdtRawDataValAlg::get_bin_for_LB_crate_hist(int region, int crate, int phi, int eta, std::string chamber){ +int MdtRawDataValAlg::get_bin_for_LB_crate_hist(int region, int crate, int phi, int eta, std::string_view chamber){ int binNum = 999; if(region == 0 || region == 1){ //Barrel diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MDTRawDataUtilsRun3.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MDTRawDataUtilsRun3.cxx index 17821827d89b727769556a40aafe589b90ff6886..1cc22df572418a6c3b0268b12a8deeb3b0686ec6 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MDTRawDataUtilsRun3.cxx +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MDTRawDataUtilsRun3.cxx @@ -74,7 +74,7 @@ StatusCode MdtRawDataMonAlg::binMdtGlobal( TH2* h, char ecap ) { return StatusCode::SUCCESS; } -StatusCode MdtRawDataMonAlg::binMdtRegional( TH2* h, string &xAxis ) { +StatusCode MdtRawDataMonAlg::binMdtRegional( TH2* h, std::string_view xAxis ) { ///SET Ghost Entries int LowerEta=-0; @@ -276,7 +276,7 @@ StatusCode MdtRawDataMonAlg::binMdtGlobal_byLayer( TH2* nHits_In, TH2* nHits_Mi //Correct for CutOuts -void MdtRawDataMonAlg::ChamberTubeNumberCorrection(int & tubeNum, const std::string & hardware_name, int tubePos, int numLayers) const{ +void MdtRawDataMonAlg::ChamberTubeNumberCorrection(int & tubeNum, std::string_view hardware_name, int tubePos, int numLayers) const{ //numLayers should be mdt_layer-1 so numLayers = 0 implies layer 1 ML 1 or mdt_layer==1 if(hardware_name.substr(0,4)=="BMS4" || hardware_name.substr(0,4)=="BMS6"){//layer 1-4 tubeId 41-48 cut out if( numLayers <= 2 ) tubeNum = tubePos + numLayers * 48; @@ -442,7 +442,7 @@ int MdtRawDataMonAlg::mezzmdt(Identifier digcoll_id) const { //int mezz_chamber, // Get the Maximum # of tubes in the chamber // the 'if' statements are for chambers with ML1 != ML2 // except for BIS8 -- mdtIdHelper gets the # layers wrong in this instance -int MdtRawDataMonAlg::GetTubeMax( const Identifier & digcoll_id, const std::string & hardware_name ) { +int MdtRawDataMonAlg::GetTubeMax( const Identifier & digcoll_id, std::string_view hardware_name ) { int tubeMax(0); if( hardware_name.substr(0,4) == "BIS8" ) { // Why does mdtIdHelper get this one wrong? tubeMax = 16*3; @@ -1096,7 +1096,7 @@ StatusCode MdtRawDataMonAlg::binMdtOccVsLB_Crate(TH2* &h, int region, int crate) } -int MdtRawDataMonAlg::get_bin_for_LB_crate_hist(int region, int crate, int phi, int eta, std::string chamber) const{ +int MdtRawDataMonAlg::get_bin_for_LB_crate_hist(int region, int crate, int phi, int eta, std::string_view chamber) const{ int binNum = 999; if(region == 0 || region == 1){ //Barrel diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MdtRawDataValAlg.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MdtRawDataValAlg.cxx index 2e51be20c960f87ab3301859b36934160be9e608..20f45d3f3801009d11aaf1ffff4406fb90346215 100755 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MdtRawDataValAlg.cxx +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MdtRawDataValAlg.cxx @@ -475,7 +475,7 @@ StatusCode MdtRawDataValAlg::fillHistograms() nPrd++; hardware_name = getChamberName(*mdtCollection); float adc = (*mdtCollection)->adc(); - if(hardware_name.substr(0,3) == "BMG") adc /= 4.; + if(hardware_name.compare(0,3,"BMG") == 0) adc /= 4.; if( adc > m_ADCCut ) { nPrdcut++; @@ -1519,9 +1519,9 @@ StatusCode MdtRawDataValAlg::fillMDTHistograms( const Muon::MdtPrepData* mdtColl float tdc = mdtCollection->tdc()*25.0/32.0; // Note: the BMG is digitized with 200ps which is not same as other MDT chambers with 25/32=781.25ps - if(hardware_name.substr(0,3)=="BMG") tdc = mdtCollection->tdc() * 0.2; + if(hardware_name.compare(0,3,"BMG")==0) tdc = mdtCollection->tdc() * 0.2; float adc = mdtCollection->adc(); - if(hardware_name.substr(0,3) == "BMG") adc /= 4.; + if(hardware_name.compare(0,3,"BMG") == 0) adc /= 4.; if (chamber->mdttdc) { chamber->mdttdc->Fill(tdc); @@ -1576,9 +1576,9 @@ StatusCode MdtRawDataValAlg::fillMDTSummaryHistograms( const Muon::MdtPrepData* bool isBIM = (chambername.at(2)=='M'); float tdc = mdtCollection->tdc()*25.0/32.0; // Note: the BMG is digitized with 200ps which is not same as other MDT chambers with 25/32=781.25ps - if(chambername.substr(0,3)=="BMG") tdc = mdtCollection->tdc() * 0.2; + if(chambername.compare(0,3,"BMG")==0) tdc = mdtCollection->tdc() * 0.2; float adc = mdtCollection->adc(); - if(chambername.substr(0,3) == "BMG") adc /= 4.; + if(chambername.compare(0,3,"BMG") == 0) adc /= 4.; if( m_mdtChamberHits[iregion][ilayer][stationPhi] && adc > m_ADCCut ) m_mdtChamberHits[iregion][ilayer][stationPhi]->Fill(std::abs(stationEta)); @@ -1630,7 +1630,7 @@ StatusCode MdtRawDataValAlg::fillMDTSummaryHistograms( const Muon::MdtPrepData* //correct readout crate info for BEE,BIS7/8 int crate_region = iregion; - if(chambername.substr(0,3)=="BEE" || (chambername.substr(0,3) == "BIS" && (stationEta == 7 || stationEta == 8) )){ + if(chambername.compare(0,3,"BEE")==0 || (chambername.compare(0,3,"BIS") == 0 && (stationEta == 7 || stationEta == 8) )){ if(iregion==0) crate_region=2; if(iregion==1) crate_region=3; } @@ -1671,9 +1671,9 @@ StatusCode MdtRawDataValAlg::fillMDTOverviewHistograms( const Muon::MdtPrepData* float tdc = mdtCollection->tdc()*25.0/32.0; // Note: the BMG is digitized with 200ps which is not same as other MDT chambers with 25/32=781.25ps - if(hardware_name.substr(0,3)=="BMG") tdc = mdtCollection->tdc() * 0.2; + if(hardware_name.compare(0,3,"BMG")==0) tdc = mdtCollection->tdc() * 0.2; float adc = mdtCollection->adc(); - if(hardware_name.substr(0,3) == "BMG") adc /= 4.; + if(hardware_name.compare(0,3,"BMG") ==0 ) adc /= 4.; //Barrel -->Fill MDT Global RZ and YX if( adc>m_ADCCut ) { @@ -1767,14 +1767,14 @@ StatusCode MdtRawDataValAlg::handleEvent_effCalc(const Trk::SegmentCollection* s sc = getChamber(idHash, chamber); std::string chambername = chamber->getName(); float adc = mrot->prepRawData()->adc(); - if(chambername.substr(0,3)=="BMG") adc /= 4. ; + if(chambername.compare(0,3,"BMG")==0) adc /= 4. ; if(m_overalladc_segm_Lumi) m_overalladc_segm_Lumi->Fill(adc); if( store_ROTs.find(tmpid) == store_ROTs.end() ) { // Let's not double-count hits belonging to multiple segments store_ROTs.insert(tmpid); double tdc = mrot->prepRawData()->tdc()*25.0/32.0; // Note: the BMG is digitized with 200ps which is not same as other MDT chambers with 25/32=781.25ps - if(chambername.substr(0,3)=="BMG") tdc = mrot->prepRawData()->tdc() * 0.2; + if(chambername.compare(0,3,"BMG")==0) tdc = mrot->prepRawData()->tdc() * 0.2; // double tdc = mrot->driftTime()+500; int iregion = chamber->GetRegionEnum(); int ilayer = chamber->GetLayerEnum();