From efc469ed67acb50ebb9f83a7ad538975ec871fc5 Mon Sep 17 00:00:00 2001 From: P-A Loizeau <p.-a.loizeau@gsi.de> Date: Tue, 21 Jul 2020 18:01:17 +0200 Subject: [PATCH] mCBM 2020: improve time window event builder algo interface - Add predefined EventBuilderDetector constants for each of the typical detectors - Add interface methods taking EventBuilderDetector object as parameter - Make all other interface methods use the EventBuilderDetector one - Mark the methods using only ECbmModuleId as deprecated - Update MQ device accordingly - Disable clang-formatting in Init method of MQ device --- MQ/mcbm/CbmDeviceMcbmEventBuilderWin.cxx | 162 ++++++------- .../CbmMcbm2019TimeWinEventBuilderAlgo.cxx | 214 ++++++++++-------- .../CbmMcbm2019TimeWinEventBuilderAlgo.h | 48 +++- .../CbmMcbm2019TimeWinEventBuilderTask.cxx | 11 + .../CbmMcbm2019TimeWinEventBuilderTask.h | 10 +- 5 files changed, 251 insertions(+), 194 deletions(-) diff --git a/MQ/mcbm/CbmDeviceMcbmEventBuilderWin.cxx b/MQ/mcbm/CbmDeviceMcbmEventBuilderWin.cxx index 78640c58..cb9641ab 100644 --- a/MQ/mcbm/CbmDeviceMcbmEventBuilderWin.cxx +++ b/MQ/mcbm/CbmDeviceMcbmEventBuilderWin.cxx @@ -98,96 +98,81 @@ void CbmDeviceMcbmEventBuilderWin::InitTask() try { // InitContainers(); + /// FIXME: Disable clang formatting for now as it corrupts all alignment + /* clang-format off */ + /// Initialize the Algorithm parameters fpAlgo->SetFillHistos(fbFillHistos); fpAlgo->SetIgnoreTsOverlap(fbIgnoreTsOverlap); /// Extract Event Overlap Mode EOverlapMode mode = - ("NoOverlap" == fsEvtOverMode - ? EOverlapMode::NoOverlap - : ("MergeOverlap" == fsEvtOverMode - ? EOverlapMode::MergeOverlap - : ("AllowOverlap" == fsEvtOverMode ? EOverlapMode::AllowOverlap - : EOverlapMode::NoOverlap))); + ("NoOverlap" == fsEvtOverMode ? EOverlapMode::NoOverlap + : ("MergeOverlap" == fsEvtOverMode ? EOverlapMode::MergeOverlap + : ("AllowOverlap" == fsEvtOverMode ? EOverlapMode::AllowOverlap + : EOverlapMode::NoOverlap))); fpAlgo->SetEventOverlapMode(mode); /// Extract refdet - ECbmModuleId refDet = - ("kT0" == fsRefDet - ? ECbmModuleId::kT0 - : ("kSts" == fsRefDet - ? ECbmModuleId::kSts - : ("kMuch" == fsRefDet - ? ECbmModuleId::kMuch - : ("kTrd" == fsRefDet - ? ECbmModuleId::kTrd - : ("kTof" == fsRefDet - ? ECbmModuleId::kTof - : ("kRich" == fsRefDet - ? ECbmModuleId::kRich - : ("kPsd" == fsRefDet - ? ECbmModuleId::kPsd - : ECbmModuleId::kNotExist))))))); - - fpAlgo->SetReferenceDetector(refDet); + EventBuilderDetector refDet = ("kT0" == fsRefDet ? kEventBuilderDetT0 + : ("kSts" == fsRefDet ? kEventBuilderDetMuch + : ("kMuch" == fsRefDet ? kEventBuilderDetTrd + : ("kTrd" == fsRefDet ? kEventBuilderDetTrd + : ("kTof" == fsRefDet ? kEventBuilderDetTof + : ("kRich" == fsRefDet ? kEventBuilderDetRich + : ("kPsd" == fsRefDet ? kEventBuilderDetPsd + : kEventBuilderDetUndef))))))); + if (kEventBuilderDetUndef != refDet) { + fpAlgo->SetReferenceDetector(refDet); + } // if( kEventBuilderDetUndef != refDet ) + else { + LOG(info) << "CbmDeviceMcbmEventBuilderWin::InitTask => Trying to change " + "reference to unsupported detector, ignored! " + << fsRefDet; + } // else of if( kEventBuilderDetUndef != refDet + /// Extract detector to add if any for (std::vector<std::string>::iterator itStrAdd = fvsAddDet.begin(); itStrAdd != fvsAddDet.end(); ++itStrAdd) { - ECbmModuleId addDet = - ("kT0" == *itStrAdd - ? ECbmModuleId::kT0 - : ("kSts" == *itStrAdd - ? ECbmModuleId::kSts - : ("kMuch" == *itStrAdd - ? ECbmModuleId::kMuch - : ("kTrd" == *itStrAdd - ? ECbmModuleId::kTrd - : ("kTof" == *itStrAdd - ? ECbmModuleId::kTof - : ("kRich" == *itStrAdd - ? ECbmModuleId::kRich - : ("kPsd" == *itStrAdd - ? ECbmModuleId::kPsd - : ECbmModuleId::kNotExist))))))); - if (ECbmModuleId::kNotExist != addDet) { + EventBuilderDetector addDet = ("kT0" == *itStrAdd ? kEventBuilderDetT0 + : ("kSts" == *itStrAdd ? kEventBuilderDetSts + : ("kMuch" == *itStrAdd ? kEventBuilderDetMuch + : ("kTrd" == *itStrAdd ? kEventBuilderDetTrd + : ("kTof" == *itStrAdd ? kEventBuilderDetTof + : ("kRich" == *itStrAdd ? kEventBuilderDetRich + : ("kPsd" == *itStrAdd ? kEventBuilderDetPsd + : kEventBuilderDetUndef))))))); + if (kEventBuilderDetUndef != addDet) { fpAlgo->AddDetector(addDet); - } // if( ECbmModuleId::kNotExist != addDet ) + } // if( kEventBuilderDetUndef != addDet ) else { LOG(info) << "CbmDeviceMcbmEventBuilderWin::InitTask => Trying to add " "unsupported detector, ignored! " << (*itStrAdd); continue; - } // else of if( ECbmModuleId::kNotExist != addDet + } // else of if( kEventBuilderDetUndef != addDet ) } // for( std::vector< std::string >::iterator itStrAdd = fvsAddDet.begin(); itStrAdd != fvsAddDet.end(); ++itStrAdd ) - /// Extract detector to add if any + + /// Extract detector to remove if any for (std::vector<std::string>::iterator itStrRem = fvsDelDet.begin(); itStrRem != fvsDelDet.end(); ++itStrRem) { - ECbmModuleId remDet = - ("kT0" == *itStrRem - ? ECbmModuleId::kT0 - : ("kSts" == *itStrRem - ? ECbmModuleId::kSts - : ("kMuch" == *itStrRem - ? ECbmModuleId::kMuch - : ("kTrd" == *itStrRem - ? ECbmModuleId::kTrd - : ("kTof" == *itStrRem - ? ECbmModuleId::kTof - : ("kRich" == *itStrRem - ? ECbmModuleId::kRich - : ("kPsd" == *itStrRem - ? ECbmModuleId::kPsd - : ECbmModuleId::kNotExist))))))); - if (ECbmModuleId::kNotExist != remDet) { + EventBuilderDetector remDet = ("kT0" == *itStrRem ? kEventBuilderDetT0 + : ("kSts" == *itStrRem ? kEventBuilderDetSts + : ("kMuch" == *itStrRem ? kEventBuilderDetMuch + : ("kTrd" == *itStrRem ? kEventBuilderDetTrd + : ("kTof" == *itStrRem ? kEventBuilderDetTof + : ("kRich" == *itStrRem ? kEventBuilderDetRich + : ("kPsd" == *itStrRem ? kEventBuilderDetPsd + : kEventBuilderDetUndef))))))); + if (kEventBuilderDetUndef != remDet) { fpAlgo->RemoveDetector(remDet); - } // if( ECbmModuleId::kNotExist != remDet ) + } // if( kEventBuilderDetUndef != remDet ) else { LOG(info) << "CbmDeviceMcbmEventBuilderWin::InitTask => Trying to remove " "unsupported detector, ignored! " << (*itStrRem); continue; - } // else of if( ECbmModuleId::kNotExist != remDet ) + } // else of if( kEventBuilderDetUndef != remDet ) } // for( std::vector< std::string >::iterator itStrAdd = fvsAddDet.begin(); itStrAdd != fvsAddDet.end(); ++itStrAdd ) /// Extract Trigger window to add if any for (std::vector<std::string>::iterator itStrTrigWin = fvsSetTrigWin.begin(); @@ -205,22 +190,14 @@ void CbmDeviceMcbmEventBuilderWin::InitTask() try { /// Detector Enum Tag std::string sSelDet = (*itStrTrigWin).substr(0, charPosDel); - ECbmModuleId selDet = - ("kT0" == sSelDet - ? ECbmModuleId::kT0 - : ("kSts" == sSelDet - ? ECbmModuleId::kSts - : ("kMuch" == sSelDet - ? ECbmModuleId::kMuch - : ("kTrd" == sSelDet - ? ECbmModuleId::kTrd - : ("kTof" == sSelDet - ? ECbmModuleId::kTof - : ("kRich" == sSelDet - ? ECbmModuleId::kRich - : ("kPsd" == sSelDet - ? ECbmModuleId::kPsd - : ECbmModuleId::kNotExist))))))); + ECbmModuleId selDet = ("kT0" == sSelDet ? ECbmModuleId::kT0 + : ("kSts" == sSelDet ? ECbmModuleId::kSts + : ("kMuch" == sSelDet ? ECbmModuleId::kMuch + : ("kTrd" == sSelDet ? ECbmModuleId::kTrd + : ("kTof" == sSelDet ? ECbmModuleId::kTof + : ("kRich" == sSelDet ? ECbmModuleId::kRich + : ("kPsd" == sSelDet ? ECbmModuleId::kPsd + : ECbmModuleId::kNotExist))))))); if (ECbmModuleId::kNotExist == selDet) { LOG(info) << "CbmDeviceMcbmEventBuilderWin::InitTask => " @@ -265,22 +242,14 @@ void CbmDeviceMcbmEventBuilderWin::InitTask() try { /// Detector Enum Tag std::string sSelDet = (*itStrMinNb).substr(0, charPosDel); - ECbmModuleId selDet = - ("kT0" == sSelDet - ? ECbmModuleId::kT0 - : ("kSts" == sSelDet - ? ECbmModuleId::kSts - : ("kMuch" == sSelDet - ? ECbmModuleId::kMuch - : ("kTrd" == sSelDet - ? ECbmModuleId::kTrd - : ("kTof" == sSelDet - ? ECbmModuleId::kTof - : ("kRich" == sSelDet - ? ECbmModuleId::kRich - : ("kPsd" == sSelDet - ? ECbmModuleId::kPsd - : ECbmModuleId::kNotExist))))))); + ECbmModuleId selDet = ("kT0" == sSelDet ? ECbmModuleId::kT0 + : ("kSts" == sSelDet ? ECbmModuleId::kSts + : ("kMuch" == sSelDet ? ECbmModuleId::kMuch + : ("kTrd" == sSelDet ? ECbmModuleId::kTrd + : ("kTof" == sSelDet ? ECbmModuleId::kTof + : ("kRich" == sSelDet ? ECbmModuleId::kRich + : ("kPsd" == sSelDet ? ECbmModuleId::kPsd + : ECbmModuleId::kNotExist))))))); if (ECbmModuleId::kNotExist == selDet) { LOG(info) << "CbmDeviceMcbmEventBuilderWin::InitTask => " @@ -296,6 +265,9 @@ void CbmDeviceMcbmEventBuilderWin::InitTask() try { fpAlgo->SetTriggerMinNumber(selDet, uMinNb); } // for( std::vector< std::string >::iterator itStrMinNb = fvsSetTrigMinNb.begin(); itStrMinNb != fvsSetTrigMinNb.end(); ++itStrMinNb ) + /// FIXME: Re-enable clang formatting after formatted lines + /* clang-format on */ + /// Create input vectors fvDigiT0 = new std::vector<CbmTofDigi>(); fvDigiSts = new std::vector<CbmStsDigi>(); diff --git a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.cxx b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.cxx index 6c13b12a..aed78fbf 100644 --- a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.cxx +++ b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.cxx @@ -707,56 +707,15 @@ void CbmMcbm2019TimeWinEventBuilderAlgo::SetReferenceDetector( Int_t iTriggerMaxDigisIn, Double_t fdTimeWinBegIn, Double_t fdTimeWinEndIn) { - /// Loop on selection detectors - for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); - det != fvDets.end(); - ++det) { - if ((*det).detId == refDet) { - LOG(warning) - << "CbmMcbm2019TimeWinEventBuilderAlgo::SetReferenceDetector => " - "Reference detector already in selection detector list!" - << sNameIn; - LOG(warning) - << " => " - "It will be automatically removed from selection detector list!"; - LOG(warning) - << " => " - "Please also remember to update the selection windows to store " - "clusters!"; - RemoveDetector(refDet); - } // if( (*det).detId == selDet ) - } // for( std::vector< EventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) - if (fRefDet.detId == refDet) { - LOG(warning) - << "CbmMcbm2019TimeWinEventBuilderAlgo::SetReferenceDetector => " - "Doing nothing, identical reference detector already in use"; - } // if( fRefDet.detId == refDet ) - else { - LOG(info) << "CbmMcbm2019TimeWinEventBuilderAlgo::SetReferenceDetector => " - << "Replacing " << fRefDet.sName << " with " << sNameIn - << " as reference detector"; - LOG(warning) - << " => " - "You may want to use AddDetector after this command to add in " - "selection " - << fRefDet.sName; - LOG(warning) - << " => " - "Please also remember to update the selection windows!"; - } // else of if( fRefDet == refDet ) - fRefDet = EventBuilderDetector(refDet, - dataTypeIn, - sNameIn, - uTriggerMinDigisIn, - iTriggerMaxDigisIn, - fdTimeWinBegIn, - fdTimeWinEndIn); - - /// Update the variables storing the earliest and latest time window boundaries - UpdateTimeWinBoundariesExtrema(); - /// Update the variable storing the size if widest time window for overlap detection - UpdateWidestTimeWinRange(); + /// FIXME: Deprecated method to be removed later. For now create temp object. + SetReferenceDetector(EventBuilderDetector(refDet, + dataTypeIn, + sNameIn, + uTriggerMinDigisIn, + iTriggerMaxDigisIn, + fdTimeWinBegIn, + fdTimeWinEndIn) ); } void CbmMcbm2019TimeWinEventBuilderAlgo::AddDetector(ECbmModuleId selDet, ECbmDataType dataTypeIn, @@ -765,68 +724,46 @@ void CbmMcbm2019TimeWinEventBuilderAlgo::AddDetector(ECbmModuleId selDet, Int_t iTriggerMaxDigisIn, Double_t fdTimeWinBegIn, Double_t fdTimeWinEndIn) { - if (fRefDet.detId == selDet) { - LOG(fatal) << "CbmMcbm2019TimeWinEventBuilderAlgo::AddDetector => Cannot " - "add the reference detector as selection detector!" - << std::endl - << "=> Maybe first change the reference detector with " - "SetReferenceDetector?"; - } // if( fRefDet == selDet ) - /// Loop on selection detectors - for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); - det != fvDets.end(); - ++det) { - if ((*det).detId == selDet) { - LOG(warning) << "CbmMcbm2019TimeWinEventBuilderAlgo::AddDetector => " - "Doing nothing, selection detector already in list!" - << sNameIn; - return; - } // if( (*det).detId == selDet ) - } // for( std::vector< EventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) - fvDets.push_back(EventBuilderDetector(selDet, - dataTypeIn, - sNameIn, - uTriggerMinDigisIn, - iTriggerMaxDigisIn, - fdTimeWinBegIn, - fdTimeWinEndIn)); - - /// Update the variables storing the earliest and latest time window boundaries - UpdateTimeWinBoundariesExtrema(); - /// Update the variable storing the size if widest time window for overlap detection - UpdateWidestTimeWinRange(); + /// FIXME: Deprecated method to be removed later. For now create temp object. + AddDetector(EventBuilderDetector(selDet, + dataTypeIn, + sNameIn, + uTriggerMinDigisIn, + iTriggerMaxDigisIn, + fdTimeWinBegIn, + fdTimeWinEndIn)); } //---------------------------------------------------------------------- void CbmMcbm2019TimeWinEventBuilderAlgo::SetReferenceDetector( ECbmModuleId refDet) { switch (refDet) { case ECbmModuleId::kSts: { - SetReferenceDetector(refDet, ECbmDataType::kStsDigi, "Sts"); + SetReferenceDetector(kEventBuilderDetSts); break; } // case ECbmModuleId::kSts: case ECbmModuleId::kMuch: { - SetReferenceDetector(refDet, ECbmDataType::kMuchDigi, "Mush"); + SetReferenceDetector(kEventBuilderDetMuch); break; } // case ECbmModuleId::kMuch: case ECbmModuleId::kTrd: { - SetReferenceDetector(refDet, ECbmDataType::kTrdDigi, "Trd"); + SetReferenceDetector(kEventBuilderDetTrd); break; } // case ECbmModuleId::kTrd: case ECbmModuleId::kTof: { - SetReferenceDetector(refDet, ECbmDataType::kTofDigi, "Tof"); + SetReferenceDetector(kEventBuilderDetTof); break; } // case ECbmModuleId::kTof: case ECbmModuleId::kRich: { - SetReferenceDetector(refDet, ECbmDataType::kRichDigi, "Rich"); + SetReferenceDetector(kEventBuilderDetRich); break; } // case ECbmModuleId::kRich: case ECbmModuleId::kPsd: { - SetReferenceDetector(refDet, ECbmDataType::kPsdDigi, "Psd"); + SetReferenceDetector(kEventBuilderDetPsd); break; } // case ECbmModuleId::kPsd: case ECbmModuleId::kT0: { - SetReferenceDetector(refDet, ECbmDataType::kT0Digi, "T0"); + SetReferenceDetector(kEventBuilderDetT0); break; } // case ECbmModuleId::kT0: default: { @@ -850,31 +787,31 @@ void CbmMcbm2019TimeWinEventBuilderAlgo::SetReferenceDetector( void CbmMcbm2019TimeWinEventBuilderAlgo::AddDetector(ECbmModuleId selDet) { switch (selDet) { case ECbmModuleId::kSts: { - AddDetector(selDet, ECbmDataType::kStsDigi, "Sts"); + AddDetector(kEventBuilderDetSts); break; } // case ECbmModuleId::kSts: case ECbmModuleId::kMuch: { - AddDetector(selDet, ECbmDataType::kMuchDigi, "Mush"); + AddDetector(kEventBuilderDetMuch); break; } // case ECbmModuleId::kMuch: case ECbmModuleId::kTrd: { - AddDetector(selDet, ECbmDataType::kTrdDigi, "Trd"); + AddDetector(kEventBuilderDetTrd); break; } // case ECbmModuleId::kTrd: case ECbmModuleId::kTof: { - AddDetector(selDet, ECbmDataType::kTofDigi, "Tof"); + AddDetector(kEventBuilderDetTof); break; } // case ECbmModuleId::kTof: case ECbmModuleId::kRich: { - AddDetector(selDet, ECbmDataType::kRichDigi, "Rich"); + AddDetector(kEventBuilderDetRich); break; } // case ECbmModuleId::kRich: case ECbmModuleId::kPsd: { - AddDetector(selDet, ECbmDataType::kPsdDigi, "Psd"); + AddDetector(kEventBuilderDetPsd); break; } // case ECbmModuleId::kPsd: case ECbmModuleId::kT0: { - AddDetector(selDet, ECbmDataType::kT0Digi, "T0"); + AddDetector(kEventBuilderDetT0); break; } // case ECbmModuleId::kT0: default: { @@ -910,6 +847,97 @@ void CbmMcbm2019TimeWinEventBuilderAlgo::RemoveDetector(ECbmModuleId selDet) { << selDet; } //---------------------------------------------------------------------- +void CbmMcbm2019TimeWinEventBuilderAlgo::SetReferenceDetector(EventBuilderDetector refDetIn) +{ + /// Loop on selection detectors + for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); + det != fvDets.end(); + ++det) { + if ((*det) == refDetIn) { + LOG(warning) + << "CbmMcbm2019TimeWinEventBuilderAlgo::SetReferenceDetector => " + "Reference detector already in selection detector list!" + << refDetIn.sName; + LOG(warning) + << " => " + "It will be automatically removed from selection detector list!"; + LOG(warning) + << " => " + "Please also remember to update the selection windows to store " + "clusters!"; + RemoveDetector(refDetIn); + } // if( (*det) == refDetIn ) + } // for( std::vector< EventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) + + if (fRefDet == refDetIn) { + LOG(warning) + << "CbmMcbm2019TimeWinEventBuilderAlgo::SetReferenceDetector => " + "Doing nothing, identical reference detector already in use"; + } // if( fRefDet == refDetIn ) + else { + LOG(info) << "CbmMcbm2019TimeWinEventBuilderAlgo::SetReferenceDetector => " + << "Replacing " << fRefDet.sName << " with " << refDetIn.sName + << " as reference detector"; + LOG(warning) + << " => " + "You may want to use AddDetector after this command to add in " + "selection " + << refDetIn.sName; + LOG(warning) + << " => " + "Please also remember to update the selection windows!"; + } // else of if( fRefDet == refDetIn ) + fRefDet = refDetIn; + + /// Update the variables storing the earliest and latest time window boundaries + UpdateTimeWinBoundariesExtrema(); + /// Update the variable storing the size if widest time window for overlap detection + UpdateWidestTimeWinRange(); +} +void CbmMcbm2019TimeWinEventBuilderAlgo::AddDetector(EventBuilderDetector selDet) +{ + if (fRefDet == selDet) { + LOG(fatal) << "CbmMcbm2019TimeWinEventBuilderAlgo::AddDetector => Cannot " + "add the reference detector as selection detector!" + << std::endl + << "=> Maybe first change the reference detector with " + "SetReferenceDetector?"; + } // if( fRefDet == selDet ) + + /// Loop on selection detectors + for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); + det != fvDets.end(); + ++det) { + if ((*det) == selDet) { + LOG(warning) << "CbmMcbm2019TimeWinEventBuilderAlgo::AddDetector => " + "Doing nothing, selection detector already in list!" + << selDet.sName; + return; + } // if( (*det) == selDet ) + } // for( std::vector< EventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) + fvDets.push_back(selDet); + + /// Update the variables storing the earliest and latest time window boundaries + UpdateTimeWinBoundariesExtrema(); + /// Update the variable storing the size if widest time window for overlap detection + UpdateWidestTimeWinRange(); +} +void CbmMcbm2019TimeWinEventBuilderAlgo::RemoveDetector(EventBuilderDetector selDet) +{ + /// Loop on selection detectors + for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); + det != fvDets.end(); + ++det) { + if ((*det) == selDet) { + fvDets.erase(det); + return; + } // if( (*det) == selDet ) + } // for( std::vector< EventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) + LOG(warning) << "CbmMcbm2019TimeWinEventBuilderAlgo::RemoveDetector => Doing " + "nothing, selection detector not in list!" + << selDet.sName; +} +//---------------------------------------------------------------------- void CbmMcbm2019TimeWinEventBuilderAlgo::SetTriggerMinNumber( ECbmModuleId selDet, UInt_t uVal) { diff --git a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.h b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.h index 11386540..8acbf864 100644 --- a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.h +++ b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.h @@ -59,6 +59,13 @@ public: fdTimeWinEnd = fdTimeWinEndIn; } + bool operator ==(const EventBuilderDetector &other) const { + return (other.detId == this->detId); + } + bool operator !=(const EventBuilderDetector &other) const { + return (other.detId != this->detId); + } + /// Settings ECbmModuleId detId = ECbmModuleId::kNotExist; ECbmDataType dataType = ECbmDataType::kUnknown; @@ -76,6 +83,37 @@ public: UInt_t fuEndIndex = 0; }; +/// Pre-defined detector types +static const EventBuilderDetector kEventBuilderDetSts = EventBuilderDetector( + ECbmModuleId::kSts, + ECbmDataType::kStsDigi, + "Sts"); +static const EventBuilderDetector kEventBuilderDetMuch = EventBuilderDetector( + ECbmModuleId::kMuch, + ECbmDataType::kMuchDigi, + "Much"); +static const EventBuilderDetector kEventBuilderDetTrd = EventBuilderDetector( + ECbmModuleId::kTrd, + ECbmDataType::kTrdDigi, + "Trd"); +static const EventBuilderDetector kEventBuilderDetTof = EventBuilderDetector( + ECbmModuleId::kTof, + ECbmDataType::kTofDigi, + "Tof"); +static const EventBuilderDetector kEventBuilderDetRich = EventBuilderDetector( + ECbmModuleId::kRich, + ECbmDataType::kRichDigi, + "Rich"); +static const EventBuilderDetector kEventBuilderDetPsd = EventBuilderDetector( + ECbmModuleId::kPsd, + ECbmDataType::kPsdDigi, + "Psd"); +static const EventBuilderDetector kEventBuilderDetT0 = EventBuilderDetector( + ECbmModuleId::kT0, + ECbmDataType::kT0Digi, + "T0"); +static const EventBuilderDetector kEventBuilderDetUndef = EventBuilderDetector(); + class CbmMcbm2019TimeWinEventBuilderAlgo { public: /** Default constructor **/ @@ -116,9 +154,13 @@ public: Double_t fdTimeWinBegIn = -100, Double_t fdTimeWinEndIn = 100); - void SetReferenceDetector(ECbmModuleId refDet); - void AddDetector(ECbmModuleId selDet); - void RemoveDetector(ECbmModuleId selDet); + void SetReferenceDetector(ECbmModuleId refDet) __attribute__ ((deprecated)); + void AddDetector(ECbmModuleId selDet) __attribute__ ((deprecated)); + void RemoveDetector(ECbmModuleId selDet) __attribute__ ((deprecated)); + + void SetReferenceDetector(EventBuilderDetector refDetIn); + void AddDetector(EventBuilderDetector selDet); + void RemoveDetector(EventBuilderDetector selDet); void SetTriggerMinNumber(ECbmModuleId selDet, UInt_t uVal); void SetTriggerMaxNumber(ECbmModuleId selDet, Int_t iVal); diff --git a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.cxx b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.cxx index 82c2f600..aeb6c54e 100644 --- a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.cxx +++ b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.cxx @@ -150,6 +150,17 @@ void CbmMcbm2019TimeWinEventBuilderTask::RemoveDetector(ECbmModuleId selDet) { if (nullptr != fpAlgo) fpAlgo->RemoveDetector(selDet); } +void CbmMcbm2019TimeWinEventBuilderTask::SetReferenceDetector( + EventBuilderDetector refDet) { + if (nullptr != fpAlgo) fpAlgo->SetReferenceDetector(refDet); +} +void CbmMcbm2019TimeWinEventBuilderTask::AddDetector(EventBuilderDetector selDet) { + if (nullptr != fpAlgo) fpAlgo->AddDetector(selDet); +} +void CbmMcbm2019TimeWinEventBuilderTask::RemoveDetector(EventBuilderDetector selDet) { + if (nullptr != fpAlgo) fpAlgo->RemoveDetector(selDet); +} + void CbmMcbm2019TimeWinEventBuilderTask::SetTriggerMinNumber( ECbmModuleId selDet, UInt_t uVal) { diff --git a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.h b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.h index 6f7e6837..6c387fb7 100644 --- a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.h +++ b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.h @@ -63,9 +63,13 @@ public: void SetFillHistos(Bool_t bFlag = kTRUE); void SetOutFilename(TString sNameIn); - void SetReferenceDetector(ECbmModuleId refDet); - void AddDetector(ECbmModuleId selDet); - void RemoveDetector(ECbmModuleId selDet); + void SetReferenceDetector(ECbmModuleId refDet) __attribute__ ((deprecated)); + void AddDetector(ECbmModuleId selDet) __attribute__ ((deprecated)); + void RemoveDetector(ECbmModuleId selDet) __attribute__ ((deprecated)); + + void SetReferenceDetector(EventBuilderDetector refDet); + void AddDetector(EventBuilderDetector selDet); + void RemoveDetector(EventBuilderDetector selDet); void SetTriggerMinNumber(ECbmModuleId selDet, UInt_t uVal); void SetTriggerMaxNumber(ECbmModuleId selDet, Int_t iVal); -- GitLab