diff --git a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx index 2e69f7421a4a86d179d64c11f39cb1c56a69cce3..689dfbe4ed13bbc0e31f9b9f28ed442974023c77 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx +++ b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx @@ -123,7 +123,7 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata(const EventContext& ctx) const { ATH_MSG_ERROR( name << " " << eta << " " << phi << " " << "and dummy multilayer=1, layer=1, tube=1 ." ); - std::abort(); + return StatusCode::FAILURE; } Identifier chid1, chid2; @@ -173,7 +173,7 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata(const EventContext& ctx) const { ATH_MSG_ERROR( name << " " << eta << " " << phi << " " << " and dummy multilayer=1, layer=1, tube=1 ." ); - std::abort(); + return StatusCode::FAILURE; } mdtCsm_2nd = new MdtCsm(chid2, elementHash_2nd, subsystem_2ndcsm, mrod_2ndcsm, link_2ndcsm); @@ -200,13 +200,21 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata(const EventContext& ctx) const { subsystem, mrod, link, tdc, channel); - if (!cabling) { - ATH_MSG_ERROR( "MDTcabling can't return an online ID for the channel : " ); - ATH_MSG_ERROR( name << " " - << eta << " " << phi << " " - << multilayer << " " << layer << " " << tube ); - std::abort(); - } + if (!cabling) { + // as long as there is no BIS78 cabling, to avoid a hard crash, replace the tubeNumber + // of tubes not covered in the cabling by 1 + if (m_idHelperSvc->mdtIdHelper().stationName(channelId)==1 + && std::abs(m_idHelperSvc->mdtIdHelper().stationEta(channelId))>6 + && m_idHelperSvc->issMdt(channelId)) { + ATH_MSG_WARNING("Found BIS78 sMDT with tubeLayer="<<layer<<" and tubeNumber="<<tube<<". Setting to 1,1 for now..."); + cabling = readCdo->getOnlineId(name, eta, phi, multilayer, 1, 1,subsystem, mrod, link, tdc, channel); + } + if (!cabling) { + ATH_MSG_ERROR( "MDTcabling can't return an online ID for the channel : " ); + ATH_MSG_ERROR( name << " " << eta << " " << phi << " " << multilayer << " " << layer << " " << tube ); + return StatusCode::FAILURE; + } + } bool masked = mdtDigit->is_masked(); // Create the new AMT hit diff --git a/MuonSpectrometer/MuonDigitization/RPC_Digitization/src/RpcDigitizationTool.cxx b/MuonSpectrometer/MuonDigitization/RPC_Digitization/src/RpcDigitizationTool.cxx index 2db59976e68639cabc410b672d4c4997991c3de9..9bce3813df2ab0778d5d5d0ecbb48ceff19a057d 100644 --- a/MuonSpectrometer/MuonDigitization/RPC_Digitization/src/RpcDigitizationTool.cxx +++ b/MuonSpectrometer/MuonDigitization/RPC_Digitization/src/RpcDigitizationTool.cxx @@ -608,7 +608,14 @@ StatusCode RpcDigitizationTool::doDigitization(const EventContext& ctx, RpcDigit const HepMcParticleLink::PositionFlag idxFlag = (phit.eventId()==0) ? HepMcParticleLink::IS_POSITION: HepMcParticleLink::IS_INDEX; const HepMcParticleLink particleLink(phit->trackNumber(),phit.eventId(),evColl,idxFlag); - ATH_CHECK(DetectionEfficiency(ctx, &atlasRpcIdeta,&atlasRpcIdphi, undefPhiStripStat, rndmEngine, particleLink)); + // as long there is no proper implementation of the BIS78 cabling and digitisation, + // skip this method to avoid hard crash of digitisation + if (stationName.find("BIS")!=std::string::npos && std::abs(stationEta)>6) { + ATH_MSG_WARNING("skipping DetectionEfficiency for BIS78"); + } else { + ATH_CHECK(DetectionEfficiency(ctx, &atlasRpcIdeta,&atlasRpcIdphi, undefPhiStripStat, rndmEngine, particleLink)); + } + ATH_MSG_DEBUG ( "SetPhiOn " << m_SetPhiOn << " SetEtaOn " << m_SetEtaOn ); for( int imeasphi=0 ; imeasphi!=2; ++imeasphi){ @@ -2092,7 +2099,7 @@ int RpcDigitizationTool::ClusterSizeEvaluation(const EventContext& ctx, const Id index += m_FracClusterSize1_A.size()/2*measuresPhi ; if( index>m_FracClusterSize1_A.size() || index>m_FracClusterSize2_A.size() || index>m_FracClusterSizeTail_A.size() || index>m_MeanClusterSizeTail_A.size() ) { - ATH_MSG_ERROR ( "Index out of array in ClusterSizeEvaluation SideA " << index <<" statName "<<stationName) ; + ATH_MSG_WARNING ( "Index out of array in ClusterSizeEvaluation SideA " << index <<" statName "<<stationName) ; return 1; } FracClusterSize1 = m_FracClusterSize1_A [index]; @@ -2104,7 +2111,7 @@ int RpcDigitizationTool::ClusterSizeEvaluation(const EventContext& ctx, const Id index += m_FracClusterSize1_C.size()/2*measuresPhi - m_FracClusterSize1_A.size()/2*measuresPhi ; if( index>m_FracClusterSize1_C.size() || index>m_FracClusterSize2_C.size() || index>m_FracClusterSizeTail_C.size() || index>m_MeanClusterSizeTail_C.size() ) { - ATH_MSG_ERROR ( "Index out of array in ClusterSizeEvaluation SideC " << index <<" statName "<<stationName) ; + ATH_MSG_WARNING ( "Index out of array in ClusterSizeEvaluation SideC " << index <<" statName "<<stationName) ; return 1; } @@ -2145,7 +2152,7 @@ int RpcDigitizationTool::ClusterSizeEvaluation(const EventContext& ctx, const Id index += m_FracClusterSize1_A.size()/2*measuresPhi ; if( index>m_FracClusterSize1_A.size() || index>m_FracClusterSize2_A.size() || index>m_FracClusterSizeTail_A.size() || index>m_MeanClusterSizeTail_A.size() ) { - ATH_MSG_ERROR ( "Index out of array in ClusterSizeEvaluation SideA " << index << " statName "<<stationName) ; + ATH_MSG_WARNING ( "Index out of array in ClusterSizeEvaluation SideA " << index << " statName "<<stationName) ; return 1; } FracClusterSize1 = m_FracClusterSize1_A [index]; @@ -2157,7 +2164,7 @@ int RpcDigitizationTool::ClusterSizeEvaluation(const EventContext& ctx, const Id index += m_FracClusterSize1_C.size()/2*measuresPhi - m_FracClusterSize1_A.size()/2*measuresPhi ; if( index>m_FracClusterSize1_C.size() || index>m_FracClusterSize2_C.size() || index>m_FracClusterSizeTail_C.size() || index>m_MeanClusterSizeTail_C.size() ) { - ATH_MSG_ERROR ( "Index out of array in ClusterSizeEvaluation SideC " << index << " statName "<<stationName ) ; + ATH_MSG_WARNING ( "Index out of array in ClusterSizeEvaluation SideC " << index << " statName "<<stationName ) ; return 1; }