Skip to content
Snippets Groups Projects
Commit 87c9f607 authored by Vakhtang Tsulaia's avatar Vakhtang Tsulaia
Browse files

Merge branch 'NSW_DataPrep' into 'master'

DataPreparation w/o RegionSelector

See merge request atlas/athena!38022
parents 36fa19a7 cbdd80be
No related branches found
No related tags found
No related merge requests found
......@@ -60,6 +60,20 @@ StatusCode TrigL2MuonSA::MmDataPreparator::prepareData(const TrigRoiDescriptor*
std::vector<IdentifierHash> mmHashList;
std::vector<IdentifierHash> mmHashList_cache;
// Get MM container
if(m_mmPrepContainerKey.empty()) {
ATH_MSG_INFO("no mmPrepContainerKey");
return StatusCode::SUCCESS;
}
auto mmPrepContainerHandle = SG::makeHandle(m_mmPrepContainerKey);
if (!mmPrepContainerHandle.isValid()) {
ATH_MSG_ERROR("Cannot retrieve MM PRD Container key: " << m_mmPrepContainerKey.key());
return StatusCode::FAILURE;
} else {
ATH_MSG_DEBUG("MM PRD Container retrieved with key: " << m_mmPrepContainerKey.key());
}
const Muon::MMPrepDataContainer* mmPrds = mmPrepContainerHandle.cptr();
if (m_use_RoIBasedDataAccess) {
// ATH_MSG_ERROR("RoI based data access is not available yet");
......@@ -75,62 +89,44 @@ StatusCode TrigL2MuonSA::MmDataPreparator::prepareData(const TrigRoiDescriptor*
std::vector<uint32_t> mmRobList;
m_regionSelector->ROBIDList(*iroi, mmRobList);
}
else {
ATH_MSG_DEBUG("Use full data access");
if (!mmHashList.empty()) {
TrigRoiDescriptor fullscan_roi( true );
m_regionSelector->HashIDList(fullscan_roi, mmHashList);
ATH_MSG_DEBUG("mmHashList.size()=" << mmHashList.size());
// Get MM collections
for(const IdentifierHash& id : mmHashList) {
std::vector<uint32_t> mmRobList;
m_regionSelector->ROBIDList(fullscan_roi, mmRobList);
if(m_doDecoding) {
if(m_decodeBS) {
// if ( m_rawDataProviderTool->convert(mmRobList).isFailure()) {
// ATH_MSG_WARNING("Conversion of BS for decoding of MMs failed");
// }
ATH_MSG_ERROR("Conversion of BS for decoding of MMs is not available yet");
}
if ( m_mmPrepDataProvider->decode(mmRobList).isFailure() ) {
ATH_MSG_WARNING("Problems when preparing MM PrepData ");
Muon::MMPrepDataContainer::const_iterator MMcoll = mmPrds->indexFind(id);
if( MMcoll == mmPrds->end() ) {
continue;
}
if( (*MMcoll)->size() == 0) {
ATH_MSG_DEBUG("Empty MM list");
continue;
}
mmHashList_cache.push_back(id);
mmCols.push_back(*MMcoll);
}
}//do decoding
}
}
else {
ATH_MSG_DEBUG("Use full data access");
if (!mmHashList.empty()) {
// Get MM container
const Muon::MMPrepDataContainer* mmPrds;
auto mmPrepContainerHandle = SG::makeHandle(m_mmPrepContainerKey);
mmPrds = mmPrepContainerHandle.cptr();
if (!mmPrepContainerHandle.isValid()) {
ATH_MSG_ERROR("Cannot retrieve MM PRD Container key: " << m_mmPrepContainerKey.key());
if(m_doDecoding || m_decodeBS) {
ATH_MSG_ERROR("decoding of MMs is not available yet");
return StatusCode::FAILURE;
} else {
ATH_MSG_DEBUG("MM PRD Container retrieved with key: " << m_mmPrepContainerKey.key());
}
// Get MM collections
for(const IdentifierHash& id : mmHashList) {
Muon::MMPrepDataContainer::const_iterator MMcoll = mmPrds->indexFind(id);
if( MMcoll == mmPrds->end() ) {
continue;
}
if( (*MMcoll)->size() == 0) {
ATH_MSG_DEBUG("Empty MM list");
continue;
}
mmHashList_cache.push_back(id);
mmCols.push_back(*MMcoll);
for(const auto& mmcoll : *mmPrds) {
mmCols.push_back(mmcoll);
}
}
for( const Muon::MMPrepDataCollection* mm : mmCols ){
mmHits.reserve( mmHits.size() + mm->size() );
......
......@@ -60,6 +60,20 @@ StatusCode TrigL2MuonSA::StgcDataPreparator::prepareData(const TrigRoiDescriptor
std::vector<IdentifierHash> stgcHashList;
std::vector<IdentifierHash> stgcHashList_cache;
// Get sTGC container
if(m_stgcPrepContainerKey.empty()) {
ATH_MSG_INFO("no stgcPrepContainerKey");
return StatusCode::SUCCESS;
}
auto stgcPrepContainerHandle = SG::makeHandle(m_stgcPrepContainerKey);
if (!stgcPrepContainerHandle.isValid()) {
ATH_MSG_ERROR("Cannot retrieve sTgc PRD Container key: " << m_stgcPrepContainerKey.key());
return StatusCode::FAILURE;
} else {
ATH_MSG_DEBUG("sTgc PRD Container retrieved with key: " << m_stgcPrepContainerKey.key());
}
const Muon::sTgcPrepDataContainer* stgcPrds = stgcPrepContainerHandle.cptr();
if (m_use_RoIBasedDataAccess) {
// ATH_MSG_ERROR("RoI based data access is not available yet");
......@@ -85,60 +99,41 @@ StatusCode TrigL2MuonSA::StgcDataPreparator::prepareData(const TrigRoiDescriptor
}
}//do decoding
}
else {
ATH_MSG_DEBUG("Use full data access");
if (!stgcHashList.empty()) {
TrigRoiDescriptor fullscan_roi( true );
m_regionSelector->HashIDList(fullscan_roi, stgcHashList);
ATH_MSG_DEBUG("stgcHashList.size()=" << stgcHashList.size());
// Get sTGC collections
for(const IdentifierHash& id : stgcHashList) {
std::vector<uint32_t> stgcRobList;
m_regionSelector->ROBIDList(fullscan_roi, stgcRobList);
if(m_doDecoding) {
if(m_decodeBS) {
if ( m_rawDataProviderTool->convert(stgcRobList).isFailure()) {
ATH_MSG_WARNING("Conversion of BS for decoding of sTgcs failed");
}
ATH_MSG_ERROR("Conversion of BS for decoding of sTgcs is not available yet");
}
if ( m_stgcPrepDataProvider->decode(stgcRobList).isFailure() ) {
ATH_MSG_WARNING("Problems when preparing sTgc PrepData ");
}
}//do decoding
Muon::sTgcPrepDataContainer::const_iterator STGCcoll = stgcPrds->indexFind(id);
}
if( STGCcoll == stgcPrds->end() ) {
continue;
}
if (!stgcHashList.empty()) {
if( (*STGCcoll)->size() == 0) {
ATH_MSG_DEBUG("Empty STGC list");
continue;
}
// Get sTGC container
const Muon::sTgcPrepDataContainer* stgcPrds;
auto stgcPrepContainerHandle = SG::makeHandle(m_stgcPrepContainerKey);
stgcPrds = stgcPrepContainerHandle.cptr();
if (!stgcPrepContainerHandle.isValid()) {
ATH_MSG_ERROR("Cannot retrieve sTgc PRD Container key: " << m_stgcPrepContainerKey.key());
return StatusCode::FAILURE;
} else {
ATH_MSG_DEBUG("sTgc PRD Container retrieved with key: " << m_stgcPrepContainerKey.key());
}
// Get sTGC collections
for(const IdentifierHash& id : stgcHashList) {
Muon::sTgcPrepDataContainer::const_iterator STGCcoll = stgcPrds->indexFind(id);
stgcHashList_cache.push_back(id);
stgcCols.push_back(*STGCcoll);
}
}
if( STGCcoll == stgcPrds->end() ) {
continue;
}
}
else {
ATH_MSG_DEBUG("Use full data access");
if( (*STGCcoll)->size() == 0) {
ATH_MSG_DEBUG("Empty STGC list");
continue;
}
if(m_doDecoding || m_decodeBS) {
ATH_MSG_ERROR("decoding of sTGCs is not available yet");
return StatusCode::FAILURE;
}
stgcHashList_cache.push_back(id);
stgcCols.push_back(*STGCcoll);
// Get sTgc collections
for(const auto& stgccoll : *stgcPrds) {
stgcCols.push_back(stgccoll);
}
}
for( const Muon::sTgcPrepDataCollection* stgc : stgcCols ){
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment