From 9af043891b8cdc91e4fed8127dea30cf02d4edbb Mon Sep 17 00:00:00 2001 From: kodaiokawa Date: Tue, 8 Mar 2022 19:37:32 +0900 Subject: [PATCH] [mod] map data --- include/TCordferBranchManager.hh | 15 +++++++++--- src/TCordferBranchManager.cpp | 39 +++++++++++++++++++++----------- 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/include/TCordferBranchManager.hh b/include/TCordferBranchManager.hh index e06c132..ee5ca72 100644 --- a/include/TCordferBranchManager.hh +++ b/include/TCordferBranchManager.hh @@ -34,8 +34,9 @@ class TCordferBranchManager vector branch; vector mbranch; vector cbranch; - Int_t rmapping[100] = {-1}; //max segment_id(geo) number - unordered_map mmapping; + Int_t rmapping[100] = {-1}; //segment_id(geo) -> branch index + //unordered_map mmapping; + Int_t mmapping[100][100] = {{-1}}; // [segment_id][ch] -> branch index unordered_map cmapping; unordered_map muxmapping; @@ -47,7 +48,7 @@ class TCordferBranchManager //for temporary bool rmapflag = false; - bool mapflag = false; + bool mmapflag = false; bool cmapflag = false; public: @@ -73,6 +74,14 @@ class TCordferBranchManager void CreateRawBranch(); void CreateMapBranch(); void CreateCalibBranch(); + Int_t MakeBranchChannelIndex(Int_t bra_id, Int_t ch_id){ + return bra_id*100 + ch_id; + } + array GetBranchChannelIndex(Int_t index){ + Int_t j = index % 100; + Int_t i = (index - j)/100; + return {i, j}; + } void CreateMapping(); void CreateRawMapping(); diff --git a/src/TCordferBranchManager.cpp b/src/TCordferBranchManager.cpp index 177dadc..4d4bf42 100644 --- a/src/TCordferBranchManager.cpp +++ b/src/TCordferBranchManager.cpp @@ -231,9 +231,10 @@ void TCordferBranchManager::CreateRawMapping(){ void TCordferBranchManager::CreateMapMapping(){ for(Int_t i=0; isize; j++){ - Int_t seg = mbranch[i]->segment_id[j]*1000 + mbranch[i]->channel[j]; - Int_t index = i*1000 + j; - mmapping[seg] = index; + mmapping[mbranch[i]->segment_id[j]][mbranch[i]->channel[j]] = MakeBranchChannelIndex(i, j); + //Int_t seg = mbranch[i]->segment_id[j]*1000 + mbranch[i]->channel[j]; + //Int_t index = i*1000 + j; + //mmapping[seg] = index; } } } @@ -362,6 +363,7 @@ void TCordferBranchManager::GiveValue(Int_t geo, Int_t ch, Int_t val){ void TCordferBranchManager::GiveRawValue(Int_t geo, Int_t ch, Int_t val){ Int_t index = rmapping[geo]; + //if not register segment if(index < 0){ if(rmapflag == false){ @@ -382,21 +384,32 @@ void TCordferBranchManager::GiveRawValue(Int_t geo, Int_t ch, Int_t val){ void TCordferBranchManager::GiveMapValue(Int_t geo, Int_t ch, Int_t val){ - Int_t seg = geo*1000 + ch; - - //if not register segment - auto itr = mmapping.find(seg); - if(itr == mmapping.end()){ - if(mapflag == false){ + //Int_t seg = geo*1000 + ch; + + ////if not register segment + //auto itr = mmapping.find(seg); + //if(itr == mmapping.end()){ + // if(mapflag == false){ + // cout << "WARNING: mmapping is not completed" << endl; + // } + // mapflag=true; + // return; + //} + Int_t index = mmapping[geo][ch]; + if(index < 0){ + if(mmapflag == false){ cout << "WARNING: mmapping is not completed" << endl; } - mapflag=true; + mmapflag=true; return; } - Int_t index = mmapping[seg]; - Int_t j = index % 1000; - Int_t i = (index - j)/1000; + array index = GetBranchChannelIndex(index); + Int_t i = index[0]; + Int_t j = index[1]; + //Int_t index = mmapping[seg]; + //Int_t j = index % 1000; + //Int_t i = (index - j)/1000; mbranch[i]->bra_val[j] = val; } -- GitLab