From 263f3c30fd40b65c29f5e0b9221689bb5693f77f Mon Sep 17 00:00:00 2001 From: lenain <lenain@lpccaen.in2p3.fr> Date: Mon, 8 Aug 2022 09:56:06 +0200 Subject: [PATCH] Added saturated and echo signal processing --- NPLib/Detectors/Vendeta/TVendetaPhysics.cxx | 62 +++++++++++++-------- 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/NPLib/Detectors/Vendeta/TVendetaPhysics.cxx b/NPLib/Detectors/Vendeta/TVendetaPhysics.cxx index 3c2564bb4..2f5ab4925 100644 --- a/NPLib/Detectors/Vendeta/TVendetaPhysics.cxx +++ b/NPLib/Detectors/Vendeta/TVendetaPhysics.cxx @@ -93,12 +93,15 @@ void TVendetaPhysics::BuildPhysicalEvent() { unsigned int mysizeLGE = m_PreTreatedData->GetLGMultEnergy(); unsigned int mysizeHGE = m_PreTreatedData->GetHGMultEnergy(); + for (UShort_t e = 0; e < mysizeLGE ; e++) { + LG_DetectorNumber.push_back(m_PreTreatedData->GetLGDetectorNbr(e)); LG_Q1.push_back(m_PreTreatedData->GetLGQ1(e)); LG_Q2.push_back(m_PreTreatedData->GetLGQ2(e)); LG_Time.push_back(m_PreTreatedData->GetLGTime(e)); LG_Qmax.push_back(m_PreTreatedData->GetLGQmax(e)); + } for (UShort_t e = 0; e < mysizeHGE ; e++) { @@ -109,6 +112,7 @@ void TVendetaPhysics::BuildPhysicalEvent() { HG_Qmax.push_back(m_PreTreatedData->GetHGQmax(e)); } + /* m_AnodeNumber=-1; */ } @@ -119,49 +123,63 @@ void TVendetaPhysics::PreTreat() { // clear pre-treated object ClearPreTreatedData(); - // instantiate CalibrationManager static CalibrationManager* Cal = CalibrationManager::getInstance(); unsigned int mysizeLG = m_EventData->GetLGMultEnergy(); unsigned int mysizeHG = m_EventData->GetHGMultEnergy(); - - // LG pretreat + + // LG pretreat + static double LG_Limits[4] = {16172,16804,16810,16341}; + int ID_Saturation = -1; + int ID_Echoes =-1; for (UShort_t i = 0; i < mysizeLG ; ++i){ int det = m_EventData->GetLGDetectorNbr(i); double Qmax = m_EventData->GetLGQmax(i); double TimeOffset=0; - TimeOffset = Cal->GetValue("Vendeta/DET"+NPL::itoa(det)+"_LG_ANODE"+NPL::itoa(m_AnodeNumber)+"_TIMEOFFSET",0); double Time = m_EventData->GetLGTime(i) + TimeOffset; - - m_PreTreatedData->SetLGDetectorNbr(det); - m_PreTreatedData->SetLGQ1(m_EventData->GetLGQ1(i)); - m_PreTreatedData->SetLGQ2(m_EventData->GetLGQ2(i)); - m_PreTreatedData->SetLGTime(Time); - m_PreTreatedData->SetLGQmax(Qmax); - + // Remove saturated detector and echoes (signals after a specific amplitude) + if(Qmax < LG_Limits[det-1] && det != ID_Saturation && det != ID_Echoes ){ + m_PreTreatedData->SetLGDetectorNbr(det); + m_PreTreatedData->SetLGQ1(m_EventData->GetLGQ1(i)); + m_PreTreatedData->SetLGQ2(m_EventData->GetLGQ2(i)); + m_PreTreatedData->SetLGTime(Time); + m_PreTreatedData->SetLGQmax(Qmax); + if(Qmax > 17000){ + ID_Echoes = det; + } + } + else if(Qmax > LG_Limits[det-1]){ + ID_Saturation = det; + } } - + // HG pretreat + static double HG_Limits[4] = {16292,16314,16604,16399}; + ID_Saturation = -1; + ID_Echoes =-1; for (UShort_t i = 0; i < mysizeHG ; ++i){ - int det = m_EventData->GetHGDetectorNbr(i); double Qmax = m_EventData->GetHGQmax(i); double TimeOffset=0; TimeOffset = Cal->GetValue("Vendeta/DET"+NPL::itoa(det)+"_HG_ANODE"+NPL::itoa(m_AnodeNumber)+"_TIMEOFFSET",0); - double Time = m_EventData->GetHGTime(i) + TimeOffset; - m_PreTreatedData->SetHGDetectorNbr(det); - m_PreTreatedData->SetHGQ1(m_EventData->GetHGQ1(i)); - m_PreTreatedData->SetHGQ2(m_EventData->GetHGQ2(i)); - m_PreTreatedData->SetHGTime(Time); - m_PreTreatedData->SetHGQmax(Qmax); - + if(Qmax < HG_Limits[det-1] && det != ID_Saturation && det != ID_Echoes ){ + m_PreTreatedData->SetHGDetectorNbr(det); + m_PreTreatedData->SetHGQ1(m_EventData->GetHGQ1(i)); + m_PreTreatedData->SetHGQ2(m_EventData->GetHGQ2(i)); + m_PreTreatedData->SetHGTime(Time); + m_PreTreatedData->SetHGQmax(Qmax); + if(Qmax > 17000){ + ID_Echoes = det; + } + } + else if(Qmax > HG_Limits[det-1]){ + ID_Saturation = det; + } } - - } -- GitLab