From 9ced96a17ae5abc5bfce52ea726cc0f23945eab2 Mon Sep 17 00:00:00 2001 From: P-A Loizeau <p.-a.loizeau@gsi.de> Date: Thu, 23 Jul 2020 15:20:14 +0200 Subject: [PATCH] mCBM 2020: in time win evt builder, reject seeds if part of reference det cluster from previous seed => This should fix the problem that in AllowOverlap mode events where cloned/split due to the cluster size when using TOF as reference => a mean cluster size of <N> in the reference detector was leading to N events for each real seed in this mode! --- .../tasks/CbmMcbm2019TimeWinEventBuilderAlgo.cxx | 13 +++++++++---- .../tasks/CbmMcbm2019TimeWinEventBuilderAlgo.h | 2 ++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.cxx b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.cxx index 43d14bc8..42e076a4 100644 --- a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.cxx +++ b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.cxx @@ -291,7 +291,9 @@ void CbmMcbm2019TimeWinEventBuilderAlgo::CheckSeed(Double_t dSeedTime, UInt_t uSeedDigiIdx) { /// If previous event valid and event overlap not allowed, check if we are in overlap /// and react accordingly - if (nullptr != fCurrentEvent && EOverlapMode::AllowOverlap != fOverMode + if (nullptr != fCurrentEvent + && (EOverlapMode::AllowOverlap != fOverMode + || dSeedTime - fdPrevEvtTime < fRefDet.GetTimeWinRange()) && dSeedTime - fdPrevEvtTime < fdWidestTimeWinRange) { /// Within overlap range switch (fOverMode) { @@ -306,11 +308,14 @@ void CbmMcbm2019TimeWinEventBuilderAlgo::CheckSeed(Double_t dSeedTime, break; } // case EOverlapMode::MergeOverlap: case EOverlapMode::AllowOverlap: { - /// Not in Merge overlap mode => should have been catched before, nothing to do + /// In allow overlap mode => reject only if reference det is in overlap + /// to avoid cloning events due to single seed cluster + LOG(debug1) << "Reject seed because part of cluster of previous one"; + return; break; } // case EOverlapMode::AllowOverlap: } // switch( fOverMode ) - } // if( prev Event exists and overlap not allowed and overlap present ) + } // if( prev Event exists and mode forbiden overlap present ) else { /// Out of overlap range or in overlap allowed mode /// => store previous event if not empty and create new one @@ -322,7 +327,7 @@ void CbmMcbm2019TimeWinEventBuilderAlgo::CheckSeed(Double_t dSeedTime, fuCurEv++; } // if( nullptr != fCurrentEvent ) fCurrentEvent = new CbmEvent(fuCurEv, dSeedTime, 0.); - } // else of if( prev Event exists and overlap not allowed and overlap present ) + } // else of if( prev Event exists and mode forbiden overlap present ) /// If window open for reference detector, search for other reference Digis matching it /// Otherwise only add the current seed diff --git a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.h b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.h index efe475a3..58dcf9b1 100644 --- a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.h +++ b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.h @@ -66,6 +66,8 @@ public: return (other.detId != this->detId); } + Double_t GetTimeWinRange() { return fdTimeWinEnd - fdTimeWinBeg; } + /// Settings ECbmModuleId detId = ECbmModuleId::kNotExist; ECbmDataType dataType = ECbmDataType::kUnknown; -- GitLab