Skip to content
Snippets Groups Projects
Commit 9ced96a1 authored by Pierre-Alain Loizeau's avatar Pierre-Alain Loizeau
Browse files

mCBM 2020: in time win evt builder, reject seeds if part of reference det...

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!
parent 8c5148ca
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
......@@ -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;
......
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