diff --git a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.cxx b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.cxx index 43d14bc8d85ca41fb058d87b0d9c3fe980caa6f4..42e076a49f186bcc1fbdfae87ba1e2644d5e4d08 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 efe475a3fc5758b7c0be2c381732a044c9112f97..58dcf9b1ae4554cfe2a7def3bc26e73aae34fed4 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;