diff --git a/macro/run/run_reco.C b/macro/run/run_reco.C index b318ab8f944a0b3f9314324162e7d50954b97233..9bcac0d06b152d7a61224dd1be004b4cec82732b 100644 --- a/macro/run/run_reco.C +++ b/macro/run/run_reco.C @@ -222,8 +222,16 @@ void run_reco(TString input = "", /* switch between 2019 and 2021 version here, which have the same interface CbmMcbm2019TimeWinEventBuilderTask* evBuildRaw = new CbmMcbm2019TimeWinEventBuilderTask(); -*/ - Cbm2021EventBuilderTask* evBuildRaw = new Cbm2021EventBuilderTask(); + + //Choose between NoOverlap, MergeOverlap, AllowOverlap + evBuildRaw->SetEventOverlapMode(EOverlapMode::AllowOverlap); // for 2019 version + */ + + CbmTaskBuildRawEvents* evBuildRaw = new CbmTaskBuildRawEvents(); + + //Choose between NoOverlap, MergeOverlap, AllowOverlap + evBuildRaw->SetEventOverlapMode( + EOverlapModeRaw::AllowOverlap); // for raw version evBuildRaw->SetTsParameters(0.0, 1.e7, 0.0); @@ -243,8 +251,6 @@ void run_reco(TString input = "", // Set STS as reference detector evBuildRaw->SetReferenceDetector(kEventBuilderDetSts); - //Choose between NoOverlap, MergeOverlap, AllowOverlap - evBuildRaw->SetEventOverlapMode(EOverlapMode::AllowOverlap); evBuildRaw->SetTriggerMinNumber(ECbmModuleId::kSts, 10); evBuildRaw->SetTriggerMaxNumber(ECbmModuleId::kSts, -1); diff --git a/reco/eventbuilder/CMakeLists.txt b/reco/eventbuilder/CMakeLists.txt index 497cfe31ff6413256cfd962c36b0f820d481cc51..17f0aaa1af6f661c70b2b23a2d3d5318f393d875 100644 --- a/reco/eventbuilder/CMakeLists.txt +++ b/reco/eventbuilder/CMakeLists.txt @@ -67,8 +67,8 @@ link_directories( ${LINK_DIRECTORIES}) set(SRCS -digis/Cbm2021EventBuilderAlgo.cxx -digis/Cbm2021EventBuilderTask.cxx +digis/CbmAlgoBuildRawEvents.cxx +digis/CbmTaskBuildRawEvents.cxx digis/CbmBuildEventsIdeal.cxx digis/CbmBuildEventsIdealNew.cxx digis/CbmBuildEventsQA.cxx diff --git a/reco/eventbuilder/CbmEventBuilderLinkDef.h b/reco/eventbuilder/CbmEventBuilderLinkDef.h index bdbb341089fe66e9bc0f60b15b90ecbf3c86dd56..1f6d5431ab5e6535572681af5dc6a41f3f47b566 100644 --- a/reco/eventbuilder/CbmEventBuilderLinkDef.h +++ b/reco/eventbuilder/CbmEventBuilderLinkDef.h @@ -4,14 +4,14 @@ #pragma link off all classes; #pragma link off all functions; -#pragma link C++ class Cbm2021EventBuilderAlgo + ; -#pragma link C++ class Cbm2021EventBuilderTask + ; +#pragma link C++ class CbmAlgoBuildRawEvents + ; +#pragma link C++ class CbmTaskBuildRawEvents + ; #pragma link C++ class CbmBuildEventsFromTracksIdeal + ; #pragma link C++ class CbmBuildEventsFromTracksReal + ; #pragma link C++ class CbmEventBuilderQA + ; #pragma link C++ class CbmBuildEventsIdeal + ; #pragma link C++ class CbmBuildEventsIdealNew + ; -#pragma link C++ class CbmBuildEventsQA+; +#pragma link C++ class CbmBuildEventsQA + ; #pragma link C++ class CbmBuildEventsSimple + ; //#pragma link C++ class CbmEvBuildSource+; diff --git a/reco/eventbuilder/digis/Cbm2021EventBuilderAlgo.cxx b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx similarity index 79% rename from reco/eventbuilder/digis/Cbm2021EventBuilderAlgo.cxx rename to reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx index 7900102945b552c38cb8ef5f83effc8db47a9495..4dc89a563a80f147277af123b03031de859adea5 100644 --- a/reco/eventbuilder/digis/Cbm2021EventBuilderAlgo.cxx +++ b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx @@ -5,7 +5,7 @@ * GNU Lesser General Public Licence (LGPL) version 3, * * copied verbatim in the file "LICENSE" * ********************************************************************************/ -#include "Cbm2021EventBuilderAlgo.h" +#include "CbmAlgoBuildRawEvents.h" /// CBM headers #include "CbmEvent.h" @@ -33,14 +33,14 @@ /// C/C++ headers // ---- Default constructor -------------------------------------------- -Cbm2021EventBuilderAlgo::Cbm2021EventBuilderAlgo() {} +CbmAlgoBuildRawEvents::CbmAlgoBuildRawEvents() {} // ---- Destructor ----------------------------------------------------- -Cbm2021EventBuilderAlgo::~Cbm2021EventBuilderAlgo() {} +CbmAlgoBuildRawEvents::~CbmAlgoBuildRawEvents() {} // ---- Init ----------------------------------------------------------- -Bool_t Cbm2021EventBuilderAlgo::InitAlgo() { - LOG(info) << "Cbm2021EventBuilderAlgo::InitAlgo => Starting sequence"; +Bool_t CbmAlgoBuildRawEvents::InitAlgo() { + LOG(info) << "CbmAlgoBuildRawEvents::InitAlgo => Starting sequence"; // Get a handle from the IO manager FairRootManager* ioman = FairRootManager::Instance(); @@ -51,14 +51,14 @@ Bool_t Cbm2021EventBuilderAlgo::InitAlgo() { } // if( kFALSE == CheckDataAvailable( fRefDet ) ) /// Check if data for detectors in selection list are available - for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); + for (std::vector<RawEventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) { if (kFALSE == CheckDataAvailable(*det)) { LOG(fatal) << "No digi input for one of selection detector, stopping there!"; } // if( kFALSE == CheckDataAvailable( *det ) ) - } // for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) + } // for (std::vector<RawEventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) /// Access the TS metadata to know TS start time if needed if (fdTsStartTime < 0 || fdTsLength < 0 || fdTsOverLength < 0) { @@ -76,13 +76,13 @@ Bool_t Cbm2021EventBuilderAlgo::InitAlgo() { if (fbFillHistos) { CreateHistograms(); } // if( fbFillHistos ) - LOG(info) << "Cbm2021EventBuilderAlgo::InitAlgo => Done"; + LOG(info) << "CbmAlgoBuildRawEvents::InitAlgo => Done"; return kTRUE; } // ---- ProcessTs ------------------------------------------------------ -void Cbm2021EventBuilderAlgo::ProcessTs() { +void CbmAlgoBuildRawEvents::ProcessTs() { LOG_IF(info, fuNrTs % 1000 == 0) << "Begin of TS " << fuNrTs; InitTs(); @@ -107,7 +107,7 @@ void Cbm2021EventBuilderAlgo::ProcessTs() { fuNrTs++; } -void Cbm2021EventBuilderAlgo::ClearEventVector() { +void CbmAlgoBuildRawEvents::ClearEventVector() { /// Need to delete the object the pointer points to first int counter = 0; for (CbmEvent* event : fEventVector) { @@ -120,12 +120,12 @@ void Cbm2021EventBuilderAlgo::ClearEventVector() { fEventVector.clear(); } // ---- Finish --------------------------------------------------------- -void Cbm2021EventBuilderAlgo::Finish() { +void CbmAlgoBuildRawEvents::Finish() { LOG(info) << "Total errors: " << fuErrors; } // --------------------------------------------------------------------- -Bool_t Cbm2021EventBuilderAlgo::CheckDataAvailable(EventBuilderDetector& det) { +Bool_t CbmAlgoBuildRawEvents::CheckDataAvailable(RawEventBuilderDetector& det) { // Get a handle from the IO manager FairRootManager* ioman = FairRootManager::Instance(); @@ -170,21 +170,21 @@ Bool_t Cbm2021EventBuilderAlgo::CheckDataAvailable(EventBuilderDetector& det) { return kTRUE; } // --------------------------------------------------------------------- -void Cbm2021EventBuilderAlgo::InitTs() { +void CbmAlgoBuildRawEvents::InitTs() { /// Reset TS based variables (analysis per TS = no building over the border) /// Reference detector fRefDet.fuStartIndex = 0; fRefDet.fuEndIndex = 0; /// Loop on detectors in selection list - for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); + for (std::vector<RawEventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) { (*det).fuStartIndex = 0; (*det).fuEndIndex = 0; - } // for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) + } // for (std::vector<RawEventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) } -void Cbm2021EventBuilderAlgo::BuildEvents() { +void CbmAlgoBuildRawEvents::BuildEvents() { /// Call LoopOnSeed with proper template argument switch (fRefDet.detId) { case ECbmModuleId::kSts: { @@ -221,7 +221,7 @@ void Cbm2021EventBuilderAlgo::BuildEvents() { break; } // case ECbmModuleId::kT0: default: { - LOG(fatal) << "Cbm2021EventBuilderAlgo::BuildEvents => " + LOG(fatal) << "CbmAlgoBuildRawEvents::BuildEvents => " << "Trying to search event seeds with unsupported det: " << fRefDet.sName; break; @@ -229,7 +229,7 @@ void Cbm2021EventBuilderAlgo::BuildEvents() { } // switch( *det ) } -UInt_t Cbm2021EventBuilderAlgo::GetNofDigis(ECbmModuleId detId) { +UInt_t CbmAlgoBuildRawEvents::GetNofDigis(ECbmModuleId detId) { switch (detId) { case ECbmModuleId::kSts: { return fStsDigis->size(); @@ -257,14 +257,14 @@ UInt_t Cbm2021EventBuilderAlgo::GetNofDigis(ECbmModuleId detId) { return fT0DigiVec->size(); //what to do here? Not in digi manager. } default: { - LOG(fatal) << "Cbm2021EventBuilderAlgo::GetNofDigis => " + LOG(fatal) << "CbmAlgoBuildRawEvents::GetNofDigis => " << "Trying to get digi number with unsupported detector."; return -1; } } } -bool Cbm2021EventBuilderAlgo::DetIsPresent(ECbmModuleId detId) { +bool CbmAlgoBuildRawEvents::DetIsPresent(ECbmModuleId detId) { switch (detId) { case ECbmModuleId::kSts: { return fStsDigis != nullptr; @@ -292,7 +292,7 @@ bool Cbm2021EventBuilderAlgo::DetIsPresent(ECbmModuleId detId) { return fT0DigiVec != nullptr; //what to do here? Not in digi manager. } default: { - LOG(fatal) << "Cbm2021EventBuilderAlgo::GetNofDigis => " + LOG(fatal) << "CbmAlgoBuildRawEvents::GetNofDigis => " << "Trying to get digi number with unsupported detector."; return -1; } @@ -300,36 +300,36 @@ bool Cbm2021EventBuilderAlgo::DetIsPresent(ECbmModuleId detId) { } template<> -const CbmStsDigi* Cbm2021EventBuilderAlgo::GetDigi(UInt_t uDigi) { +const CbmStsDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) { return &((*fStsDigis)[uDigi]); } template<> -const CbmMuchBeamTimeDigi* Cbm2021EventBuilderAlgo::GetDigi(UInt_t uDigi) { +const CbmMuchBeamTimeDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) { return &((*fMuchBeamTimeDigis)[uDigi]); } template<> -const CbmMuchDigi* Cbm2021EventBuilderAlgo::GetDigi(UInt_t uDigi) { +const CbmMuchDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) { return &((*fMuchDigis)[uDigi]); } template<> -const CbmTrdDigi* Cbm2021EventBuilderAlgo::GetDigi(UInt_t uDigi) { +const CbmTrdDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) { return &((*fTrdDigis)[uDigi]); } template<> -const CbmTofDigi* Cbm2021EventBuilderAlgo::GetDigi(UInt_t uDigi) { +const CbmTofDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) { return &((*fTofDigis)[uDigi]); } template<> -const CbmRichDigi* Cbm2021EventBuilderAlgo::GetDigi(UInt_t uDigi) { +const CbmRichDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) { return &((*fRichDigis)[uDigi]); } template<> -const CbmPsdDigi* Cbm2021EventBuilderAlgo::GetDigi(UInt_t uDigi) { +const CbmPsdDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) { return &((*fPsdDigis)[uDigi]); } template<class DigiSeed> -void Cbm2021EventBuilderAlgo::LoopOnSeeds() { +void CbmAlgoBuildRawEvents::LoopOnSeeds() { /// Access the TS metadata if needed to know TS start time and overlap size Double_t dTsStartTime = fdTsStartTime; Double_t dOverlapStart = fdTsStartTime + fdTsLength; @@ -338,7 +338,7 @@ void Cbm2021EventBuilderAlgo::LoopOnSeeds() { pTsMetaData = dynamic_cast<TimesliceMetaData*>(fTimeSliceMetaDataArray->At(0)); if (nullptr == pTsMetaData) - LOG(fatal) << Form("Cbm2021EventBuilderAlgo::LoopOnSeeds => " + LOG(fatal) << Form("CbmAlgoBuildRawEvents::LoopOnSeeds => " "No TS metadata found for TS %6u.", fuNrTs); @@ -350,7 +350,7 @@ void Cbm2021EventBuilderAlgo::LoopOnSeeds() { /// Print warning in first TS if time window borders out of potential overlap if ((0.0 < fdEarliestTimeWinBeg && dOverlapSize < fdLatestTimeWinEnd) || (dOverlapSize < fdWidestTimeWinRange)) { - LOG(warning) << "Cbm2021EventBuilderAlgo::LoopOnSeeds => " + LOG(warning) << "CbmAlgoBuildRawEvents::LoopOnSeeds => " << Form("Event window not fitting in TS overlap, risk of " "incomplete events: %f %f %f %f", fdEarliestTimeWinBeg, @@ -385,7 +385,7 @@ void Cbm2021EventBuilderAlgo::LoopOnSeeds() { } // for( UInt_t uDigi = 0; uDigi < uNbRefDigis; ++uDigi ) } // if ( fT0DigiVec ) else - LOG(fatal) << "Cbm2021EventBuilderAlgo::LoopOnSeeds => " + LOG(fatal) << "CbmAlgoBuildRawEvents::LoopOnSeeds => " << "T0 as reference detector but vector not found!"; } // if (ECbmModuleId::kT0 == fRefDet.detId) else { @@ -414,33 +414,32 @@ void Cbm2021EventBuilderAlgo::LoopOnSeeds() { } // else of if (ECbmModuleId::kT0 == fRefDet.detId) => Digi containers controlled by DigiManager } -void Cbm2021EventBuilderAlgo::CheckSeed(Double_t dSeedTime, - UInt_t uSeedDigiIdx) { +void CbmAlgoBuildRawEvents::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 + && (EOverlapModeRaw::AllowOverlap != fOverMode || dSeedTime - fdPrevEvtTime < fRefDet.GetTimeWinRange()) && dSeedTime - fdPrevEvtTime < fdWidestTimeWinRange) { /// Within overlap range switch (fOverMode) { - case EOverlapMode::NoOverlap: { + case EOverlapModeRaw::NoOverlap: { /// No overlap allowed => reject LOG(debug1) << "Reject seed due to overlap"; return; break; - } // case EOverlapMode::NoOverlap: - case EOverlapMode::MergeOverlap: { + } // case EOverlapModeRaw::NoOverlap: + case EOverlapModeRaw::MergeOverlap: { /// Merge overlap mode => do nothing and go on filling current event break; - } // case EOverlapMode::MergeOverlap: - case EOverlapMode::AllowOverlap: { + } // case EOverlapModeRaw::MergeOverlap: + case EOverlapModeRaw::AllowOverlap: { /// 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: + } // case EOverlapModeRaw::AllowOverlap: } // switch( fOverMode ) } // if( prev Event exists and mode forbiden overlap present ) else { @@ -494,7 +493,7 @@ void Cbm2021EventBuilderAlgo::CheckSeed(Double_t dSeedTime, break; } // case ECbmModuleId::kT0: default: { - LOG(fatal) << "Cbm2021EventBuilderAlgo::LoopOnSeeds => " + LOG(fatal) << "CbmAlgoBuildRawEvents::LoopOnSeeds => " << "Trying to search matches with unsupported det: " << fRefDet.sName << std::endl << "You may want to add support for it in the method."; @@ -510,7 +509,7 @@ void Cbm2021EventBuilderAlgo::CheckSeed(Double_t dSeedTime, } // else of if( fdRefTimeWinBeg < fdRefTimeWinEnd ) /// Search for matches for each detector in selection list - for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); + for (std::vector<RawEventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) { switch ((*det).detId) { @@ -548,14 +547,14 @@ void Cbm2021EventBuilderAlgo::CheckSeed(Double_t dSeedTime, break; } // case ECbmModuleId::kT0: default: { - LOG(fatal) << "Cbm2021EventBuilderAlgo::LoopOnSeeds => " + LOG(fatal) << "CbmAlgoBuildRawEvents::LoopOnSeeds => " << "Trying to search matches with unsupported det: " << (*det).sName << std::endl << "You may want to add support for it in the method."; break; } // default: } // switch( *det ) - } // for( std::vector< EventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) + } // for( std::vector< RawEventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) /// Check if event is filling trigger conditions and clear it if not if (HasTrigger(fCurrentEvent)) { @@ -563,18 +562,18 @@ void Cbm2021EventBuilderAlgo::CheckSeed(Double_t dSeedTime, /// In case of NoOverlap or MergeOverlap, we can and should start checking the next window /// from end of current window in order to save CPU and avoid duplicating - if (EOverlapMode::NoOverlap == fOverMode - || EOverlapMode::MergeOverlap == fOverMode) { + if (EOverlapModeRaw::NoOverlap == fOverMode + || EOverlapModeRaw::MergeOverlap == fOverMode) { /// Update reference detector fRefDet.fuStartIndex = fRefDet.fuEndIndex; /// Loop on selection detectors - for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); + for (std::vector<RawEventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) { (*det).fuStartIndex = (*det).fuEndIndex; - } // for( std::vector< EventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) + } // for( std::vector< RawEventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) } // If no overlap or merge overlap } // if( !HasTrigger( fCurrentEvent ) ) else { @@ -585,8 +584,8 @@ void Cbm2021EventBuilderAlgo::CheckSeed(Double_t dSeedTime, } template<class DigiCheck> -void Cbm2021EventBuilderAlgo::SearchMatches(Double_t dSeedTime, - EventBuilderDetector& detMatch) { +void CbmAlgoBuildRawEvents::SearchMatches(Double_t dSeedTime, + RawEventBuilderDetector& detMatch) { /// This algo relies on time sorted vectors for the selected detectors UInt_t uLocalIndexStart = detMatch.fuStartIndex; UInt_t uLocalIndexEnd = detMatch.fuStartIndex; @@ -623,7 +622,7 @@ void Cbm2021EventBuilderAlgo::SearchMatches(Double_t dSeedTime, if (uLocalIndexEnd < uLocalIndexStart) uLocalIndexEnd = uNbSelDigis; } // if ( fT0DigiVec ) else - LOG(fatal) << "Cbm2021EventBuilderAlgo::SearchMatches => " + LOG(fatal) << "CbmAlgoBuildRawEvents::SearchMatches => " << "T0 as selection detector but vector not found!"; } // if( ECbmModuleId::kT0 == detMatch.detId ) else { @@ -670,31 +669,31 @@ void Cbm2021EventBuilderAlgo::SearchMatches(Double_t dSeedTime, detMatch.fuEndIndex = uLocalIndexEnd; } -void Cbm2021EventBuilderAlgo::AddDigiToEvent(EventBuilderDetector& det, - Int_t _entry) { +void CbmAlgoBuildRawEvents::AddDigiToEvent(RawEventBuilderDetector& det, + Int_t _entry) { fCurrentEvent->AddData(det.dataType, _entry); } -Bool_t Cbm2021EventBuilderAlgo::HasTrigger(CbmEvent* event) { +Bool_t CbmAlgoBuildRawEvents::HasTrigger(CbmEvent* event) { /// Check first reference detector if (kFALSE == CheckTriggerConditions(event, fRefDet)) { return kFALSE; } // if (kFALSE == CheckTriggerConditions(event, fRefDet) ) /// Loop on selection detectors - for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); + for (std::vector<RawEventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) { if (kFALSE == CheckTriggerConditions(event, *det)) return kFALSE; - } // for( std::vector< EventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) + } // for( std::vector< RawEventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) /// All Ok, trigger is there return kTRUE; } Bool_t -Cbm2021EventBuilderAlgo::CheckTriggerConditions(CbmEvent* event, - EventBuilderDetector& det) { +CbmAlgoBuildRawEvents::CheckTriggerConditions(CbmEvent* event, + RawEventBuilderDetector& det) { /// Check if both Trigger conditions disabled for this detector if (0 == det.fuTriggerMinDigis && det.fiTriggerMaxDigis < 0) { return kTRUE; @@ -738,7 +737,7 @@ Cbm2021EventBuilderAlgo::CheckTriggerConditions(CbmEvent* event, } // else of else if( iNbDigis < det.fiTriggerMaxDigis ) } //---------------------------------------------------------------------- -void Cbm2021EventBuilderAlgo::CreateHistograms() { +void CbmAlgoBuildRawEvents::CreateHistograms() { /// FIXME: Disable clang formatting for histograms declaration for now /* clang-format off */ fhEventTime = new TH1F("hEventTime", @@ -759,7 +758,7 @@ void Cbm2021EventBuilderAlgo::CreateHistograms() { 1000, 0, 10000); /// Loop on selection detectors - for (std::vector< EventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det) { + for (std::vector< RawEventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det) { /// In case name not provided, do not create the histo to avoid name conflicts! if( "Invalid" == (*det).sName ) { @@ -774,7 +773,7 @@ void Cbm2021EventBuilderAlgo::CreateHistograms() { (*det).sName.data() ), 600, 0, 600, 4000, 0, 4000) ); - } // for( std::vector< EventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) + } // for( std::vector< RawEventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) AddHistoToVector(fhEventTime, "evtbuild"); AddHistoToVector(fhEventDt, "evtbuild"); @@ -792,7 +791,7 @@ void Cbm2021EventBuilderAlgo::CreateHistograms() { /// FIXME: Re-enable clang formatting after histograms declaration /* clang-format on */ } -void Cbm2021EventBuilderAlgo::FillHistos() { +void CbmAlgoBuildRawEvents::FillHistos() { Double_t dPreEvtTime = -1.0; for (CbmEvent* evt : fEventVector) { fhEventTime->Fill(evt->GetStartTime() * 1e-9); @@ -808,12 +807,12 @@ void Cbm2021EventBuilderAlgo::FillHistos() { fvhNbDigiPerEvtTimeDet[uDetIdx]->Fill( evt->GetStartTime() * 1e-9, evt->GetNofData(fvDets[uDetIdx].dataType)); - } // for( std::vector< EventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) + } // for( std::vector< RawEventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) dPreEvtTime = evt->GetStartTime(); } // for( CbmEvent * evt: fEventVector ) } -void Cbm2021EventBuilderAlgo::ResetHistograms(Bool_t /*bResetTime*/) { +void CbmAlgoBuildRawEvents::ResetHistograms(Bool_t /*bResetTime*/) { fhEventTime->Reset(); fhEventDt->Reset(); fhEventSize->Reset(); @@ -835,50 +834,50 @@ void Cbm2021EventBuilderAlgo::ResetHistograms(Bool_t /*bResetTime*/) { */ } //---------------------------------------------------------------------- -void Cbm2021EventBuilderAlgo::SetReferenceDetector(ECbmModuleId refDet, - ECbmDataType dataTypeIn, - std::string sNameIn, - UInt_t uTriggerMinDigisIn, - Int_t iTriggerMaxDigisIn, - Double_t fdTimeWinBegIn, - Double_t fdTimeWinEndIn) { +void CbmAlgoBuildRawEvents::SetReferenceDetector(ECbmModuleId refDet, + ECbmDataType dataTypeIn, + std::string sNameIn, + UInt_t uTriggerMinDigisIn, + Int_t iTriggerMaxDigisIn, + Double_t fdTimeWinBegIn, + Double_t fdTimeWinEndIn) { /// FIXME: Deprecated method to be removed later. For now create temp object. - SetReferenceDetector(EventBuilderDetector(refDet, - dataTypeIn, - sNameIn, - uTriggerMinDigisIn, - iTriggerMaxDigisIn, - fdTimeWinBegIn, - fdTimeWinEndIn)); + SetReferenceDetector(RawEventBuilderDetector(refDet, + dataTypeIn, + sNameIn, + uTriggerMinDigisIn, + iTriggerMaxDigisIn, + fdTimeWinBegIn, + fdTimeWinEndIn)); } -void Cbm2021EventBuilderAlgo::AddDetector(ECbmModuleId selDet, - ECbmDataType dataTypeIn, - std::string sNameIn, - UInt_t uTriggerMinDigisIn, - Int_t iTriggerMaxDigisIn, - Double_t fdTimeWinBegIn, - Double_t fdTimeWinEndIn) { +void CbmAlgoBuildRawEvents::AddDetector(ECbmModuleId selDet, + ECbmDataType dataTypeIn, + std::string sNameIn, + UInt_t uTriggerMinDigisIn, + Int_t iTriggerMaxDigisIn, + Double_t fdTimeWinBegIn, + Double_t fdTimeWinEndIn) { /// FIXME: Deprecated method to be removed later. For now create temp object. - AddDetector(EventBuilderDetector(selDet, - dataTypeIn, - sNameIn, - uTriggerMinDigisIn, - iTriggerMaxDigisIn, - fdTimeWinBegIn, - fdTimeWinEndIn)); + AddDetector(RawEventBuilderDetector(selDet, + dataTypeIn, + sNameIn, + uTriggerMinDigisIn, + iTriggerMaxDigisIn, + fdTimeWinBegIn, + fdTimeWinEndIn)); } //---------------------------------------------------------------------- //---------------------------------------------------------------------- -void Cbm2021EventBuilderAlgo::SetReferenceDetector( - EventBuilderDetector refDetIn) { +void CbmAlgoBuildRawEvents::SetReferenceDetector( + RawEventBuilderDetector refDetIn) { /// Loop on selection detectors - for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); + for (std::vector<RawEventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) { if ((*det) == refDetIn) { - LOG(warning) << "Cbm2021EventBuilderAlgo::SetReferenceDetector => " + LOG(warning) << "CbmAlgoBuildRawEvents::SetReferenceDetector => " "Reference detector already in selection detector list!" << refDetIn.sName; LOG(warning) @@ -890,15 +889,15 @@ void Cbm2021EventBuilderAlgo::SetReferenceDetector( "clusters!"; RemoveDetector(refDetIn); } // if( (*det) == refDetIn ) - } // for( std::vector< EventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) + } // for( std::vector< RawEventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) if (fRefDet == refDetIn) { LOG(warning) - << "Cbm2021EventBuilderAlgo::SetReferenceDetector => " + << "CbmAlgoBuildRawEvents::SetReferenceDetector => " "Doing nothing, identical reference detector already in use"; } // if( fRefDet == refDetIn ) else { - LOG(info) << "Cbm2021EventBuilderAlgo::SetReferenceDetector => " + LOG(info) << "CbmAlgoBuildRawEvents::SetReferenceDetector => " << "Replacing " << fRefDet.sName << " with " << refDetIn.sName << " as reference detector"; LOG(warning) @@ -917,9 +916,9 @@ void Cbm2021EventBuilderAlgo::SetReferenceDetector( /// Update the variable storing the size if widest time window for overlap detection UpdateWidestTimeWinRange(); } -void Cbm2021EventBuilderAlgo::AddDetector(EventBuilderDetector selDet) { +void CbmAlgoBuildRawEvents::AddDetector(RawEventBuilderDetector selDet) { if (fRefDet == selDet) { - LOG(fatal) << "Cbm2021EventBuilderAlgo::AddDetector => Cannot " + LOG(fatal) << "CbmAlgoBuildRawEvents::AddDetector => Cannot " "add the reference detector as selection detector!" << std::endl << "=> Maybe first change the reference detector with " @@ -927,16 +926,16 @@ void Cbm2021EventBuilderAlgo::AddDetector(EventBuilderDetector selDet) { } // if( fRefDet == selDet ) /// Loop on selection detectors - for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); + for (std::vector<RawEventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) { if ((*det) == selDet) { - LOG(warning) << "Cbm2021EventBuilderAlgo::AddDetector => " + LOG(warning) << "CbmAlgoBuildRawEvents::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 ) + } // for( std::vector< RawEventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) fvDets.push_back(selDet); /// Update the variables storing the earliest and latest time window boundaries @@ -944,23 +943,23 @@ void Cbm2021EventBuilderAlgo::AddDetector(EventBuilderDetector selDet) { /// Update the variable storing the size if widest time window for overlap detection UpdateWidestTimeWinRange(); } -void Cbm2021EventBuilderAlgo::RemoveDetector(EventBuilderDetector selDet) { +void CbmAlgoBuildRawEvents::RemoveDetector(RawEventBuilderDetector selDet) { /// Loop on selection detectors - for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); + for (std::vector<RawEventBuilderDetector>::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) << "Cbm2021EventBuilderAlgo::RemoveDetector => Doing " + } // for( std::vector< RawEventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) + LOG(warning) << "CbmAlgoBuildRawEvents::RemoveDetector => Doing " "nothing, selection detector not in list!" << selDet.sName; } //---------------------------------------------------------------------- -void Cbm2021EventBuilderAlgo::SetTriggerMinNumber(ECbmModuleId selDet, - UInt_t uVal) { +void CbmAlgoBuildRawEvents::SetTriggerMinNumber(ECbmModuleId selDet, + UInt_t uVal) { /// Check first if reference detector if (fRefDet.detId == selDet) { fRefDet.fuTriggerMinDigis = uVal; @@ -972,7 +971,7 @@ void Cbm2021EventBuilderAlgo::SetTriggerMinNumber(ECbmModuleId selDet, } // if( fRefDet == selDet ) /// Loop on selection detectors - for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); + for (std::vector<RawEventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) { if ((*det).detId == selDet) { @@ -983,15 +982,15 @@ void Cbm2021EventBuilderAlgo::SetTriggerMinNumber(ECbmModuleId selDet, return; } // if( (*det).detId == selDet ) - } // for( std::vector< EventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) + } // for( std::vector< RawEventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) LOG(warning) - << "Cbm2021EventBuilderAlgo::SetTriggerMinNumber => " + << "CbmAlgoBuildRawEvents::SetTriggerMinNumber => " "Doing nothing, detector neither reference nor in selection list!" << selDet; } -void Cbm2021EventBuilderAlgo::SetTriggerMaxNumber(ECbmModuleId selDet, - Int_t iVal) { +void CbmAlgoBuildRawEvents::SetTriggerMaxNumber(ECbmModuleId selDet, + Int_t iVal) { /// Check first if reference detector if (fRefDet.detId == selDet) { fRefDet.fiTriggerMaxDigis = iVal; @@ -1003,7 +1002,7 @@ void Cbm2021EventBuilderAlgo::SetTriggerMaxNumber(ECbmModuleId selDet, } // if( fRefDet == selDet ) /// Loop on selection detectors - for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); + for (std::vector<RawEventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) { if ((*det).detId == selDet) { @@ -1014,19 +1013,19 @@ void Cbm2021EventBuilderAlgo::SetTriggerMaxNumber(ECbmModuleId selDet, return; } // if( (*det).detId == selDet ) - } // for( std::vector< EventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) + } // for( std::vector< RawEventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) LOG(warning) - << "Cbm2021EventBuilderAlgo::SetTriggerMaxNumber => " + << "CbmAlgoBuildRawEvents::SetTriggerMaxNumber => " "Doing nothing, detector neither reference nor in selection list!" << selDet; } -void Cbm2021EventBuilderAlgo::SetTriggerWindow(ECbmModuleId selDet, - Double_t dWinBeg, - Double_t dWinEnd) { +void CbmAlgoBuildRawEvents::SetTriggerWindow(ECbmModuleId selDet, + Double_t dWinBeg, + Double_t dWinEnd) { /// Check if valid time window: end strictly after beginning if (dWinEnd <= dWinBeg) - LOG(fatal) << "Cbm2021EventBuilderAlgo::SetTriggerWindow => " + LOG(fatal) << "CbmAlgoBuildRawEvents::SetTriggerWindow => " "Invalid time window: [ " << dWinBeg << ", " << dWinEnd << " ]"; @@ -1040,7 +1039,7 @@ void Cbm2021EventBuilderAlgo::SetTriggerWindow(ECbmModuleId selDet, } // if( fRefDet == selDet ) /// Loop on selection detectors - for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); + for (std::vector<RawEventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) { if ((*det).detId == selDet) { @@ -1049,11 +1048,11 @@ void Cbm2021EventBuilderAlgo::SetTriggerWindow(ECbmModuleId selDet, bFound = kTRUE; } // if( (*det).detId == selDet ) - } // for( std::vector< EventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) + } // for( std::vector< RawEventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) if (kFALSE == bFound) { LOG(warning) - << "Cbm2021EventBuilderAlgo::SetTriggerWindow => " + << "CbmAlgoBuildRawEvents::SetTriggerWindow => " "Doing nothing, detector neither reference nor in selection list!" << selDet; } // if( kFALSE == bFound ) @@ -1063,31 +1062,31 @@ void Cbm2021EventBuilderAlgo::SetTriggerWindow(ECbmModuleId selDet, /// Update the variable storing the size if widest time window for overlap detection UpdateWidestTimeWinRange(); } -void Cbm2021EventBuilderAlgo::UpdateTimeWinBoundariesExtrema() { +void CbmAlgoBuildRawEvents::UpdateTimeWinBoundariesExtrema() { /// Initialize with reference detector fdEarliestTimeWinBeg = fRefDet.fdTimeWinBeg; fdLatestTimeWinEnd = fRefDet.fdTimeWinEnd; /// Loop on selection detectors - for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); + for (std::vector<RawEventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) { fdEarliestTimeWinBeg = std::min(fdEarliestTimeWinBeg, (*det).fdTimeWinBeg); fdLatestTimeWinEnd = std::max(fdLatestTimeWinEnd, (*det).fdTimeWinEnd); - } // for( std::vector< EventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) + } // for( std::vector< RawEventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) } -void Cbm2021EventBuilderAlgo::UpdateWidestTimeWinRange() { +void CbmAlgoBuildRawEvents::UpdateWidestTimeWinRange() { /// Initialize with reference detector fdWidestTimeWinRange = fRefDet.fdTimeWinEnd - fRefDet.fdTimeWinBeg; /// Loop on selection detectors - for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); + for (std::vector<RawEventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) { fdWidestTimeWinRange = std::max(fdWidestTimeWinRange, (*det).fdTimeWinEnd - (*det).fdTimeWinBeg); - } // for( std::vector< EventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) + } // for( std::vector< RawEventBuilderDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) } //---------------------------------------------------------------------- -ClassImp(Cbm2021EventBuilderAlgo) +ClassImp(CbmAlgoBuildRawEvents) diff --git a/reco/eventbuilder/digis/Cbm2021EventBuilderAlgo.h b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.h similarity index 72% rename from reco/eventbuilder/digis/Cbm2021EventBuilderAlgo.h rename to reco/eventbuilder/digis/CbmAlgoBuildRawEvents.h index 0ccfd51b39ee4c23bdf53d2d90ec48f92649bc55..61a47bfa04b6285fafc3a5ab8ac79bee52a75bce 100644 --- a/reco/eventbuilder/digis/Cbm2021EventBuilderAlgo.h +++ b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.h @@ -5,11 +5,10 @@ * GNU Lesser General Public Licence (LGPL) version 3, * * copied verbatim in the file "LICENSE" * ********************************************************************************/ -#ifndef CBM2021EVENTBUILDERALGO_H -#define CBM2021EVENTBUILDERALGO_H +#ifndef CBMALGOBUILDRAWEVENTS_H +#define CBMALGOBUILDRAWEVENTS_H /// CBM headers -#include "../../fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.h" // for EOverlapMode and EventBuilderDetector #include "CbmMuchBeamTimeDigi.h" #include "CbmMuchDigi.h" #include "CbmPsdDigi.h" @@ -40,27 +39,26 @@ class TH2; class TNamed; class TCanvas; -/* get from CbmMcbm2019TimeWinEventBuilderAlgo.h for now -enum class EOverlapMode { NoOverlap, MergeOverlap, AllowOverlap }; +enum class EOverlapModeRaw { NoOverlap, MergeOverlap, AllowOverlap }; -class EventBuilderDetector { +class RawEventBuilderDetector { public: - EventBuilderDetector() { ; } - EventBuilderDetector(ECbmModuleId detIdIn, - ECbmDataType dataTypeIn, - std::string sNameIn) { + RawEventBuilderDetector() { ; } + RawEventBuilderDetector(ECbmModuleId detIdIn, + ECbmDataType dataTypeIn, + std::string sNameIn) { detId = detIdIn; dataType = dataTypeIn; sName = sNameIn; } - EventBuilderDetector(ECbmModuleId detIdIn, - ECbmDataType dataTypeIn, - std::string sNameIn, - UInt_t uTriggerMinDigisIn, - Int_t iTriggerMaxDigisIn, - Double_t fdTimeWinBegIn, - Double_t fdTimeWinEndIn) - : EventBuilderDetector(detIdIn, dataTypeIn, sNameIn) { + RawEventBuilderDetector(ECbmModuleId detIdIn, + ECbmDataType dataTypeIn, + std::string sNameIn, + UInt_t uTriggerMinDigisIn, + Int_t iTriggerMaxDigisIn, + Double_t fdTimeWinBegIn, + Double_t fdTimeWinEndIn) + : RawEventBuilderDetector(detIdIn, dataTypeIn, sNameIn) { fuTriggerMinDigis = uTriggerMinDigisIn; fiTriggerMaxDigis = iTriggerMaxDigisIn; @@ -68,10 +66,10 @@ public: fdTimeWinEnd = fdTimeWinEndIn; } - bool operator==(const EventBuilderDetector& other) const { + bool operator==(const RawEventBuilderDetector& other) const { return (other.detId == this->detId); } - bool operator!=(const EventBuilderDetector& other) const { + bool operator!=(const RawEventBuilderDetector& other) const { return (other.detId != this->detId); } @@ -95,35 +93,34 @@ public: }; /// 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 Cbm2021EventBuilderAlgo { +static const RawEventBuilderDetector kEventBuilderDetSts = + RawEventBuilderDetector(ECbmModuleId::kSts, ECbmDataType::kStsDigi, "Sts"); +static const RawEventBuilderDetector kEventBuilderDetMuch = + RawEventBuilderDetector(ECbmModuleId::kMuch, ECbmDataType::kMuchDigi, "Much"); +static const RawEventBuilderDetector kEventBuilderDetTrd = + RawEventBuilderDetector(ECbmModuleId::kTrd, ECbmDataType::kTrdDigi, "Trd"); +static const RawEventBuilderDetector kEventBuilderDetTof = + RawEventBuilderDetector(ECbmModuleId::kTof, ECbmDataType::kTofDigi, "Tof"); +static const RawEventBuilderDetector kEventBuilderDetRich = + RawEventBuilderDetector(ECbmModuleId::kRich, ECbmDataType::kRichDigi, "Rich"); +static const RawEventBuilderDetector kEventBuilderDetPsd = + RawEventBuilderDetector(ECbmModuleId::kPsd, ECbmDataType::kPsdDigi, "Psd"); +static const RawEventBuilderDetector kEventBuilderDetT0 = + RawEventBuilderDetector(ECbmModuleId::kT0, ECbmDataType::kT0Digi, "T0"); +static const RawEventBuilderDetector kEventBuilderDetUndef = + RawEventBuilderDetector(); + + +class CbmAlgoBuildRawEvents { public: /** Default constructor **/ - Cbm2021EventBuilderAlgo(); + CbmAlgoBuildRawEvents(); - Cbm2021EventBuilderAlgo(const Cbm2021EventBuilderAlgo&) = delete; - Cbm2021EventBuilderAlgo operator=(const Cbm2021EventBuilderAlgo&) = delete; + CbmAlgoBuildRawEvents(const CbmAlgoBuildRawEvents&) = delete; + CbmAlgoBuildRawEvents operator=(const CbmAlgoBuildRawEvents&) = delete; /** Destructor **/ - ~Cbm2021EventBuilderAlgo(); + ~CbmAlgoBuildRawEvents(); /** Initiliazation at the beginning of a run **/ Bool_t InitAlgo(); @@ -152,9 +149,9 @@ public: Double_t fdTimeWinBegIn = -100, Double_t fdTimeWinEndIn = 100); - void SetReferenceDetector(EventBuilderDetector refDetIn); - void AddDetector(EventBuilderDetector selDet); - void RemoveDetector(EventBuilderDetector selDet); + void SetReferenceDetector(RawEventBuilderDetector refDetIn); + void AddDetector(RawEventBuilderDetector selDet); + void RemoveDetector(RawEventBuilderDetector selDet); void SetTriggerMinNumber(ECbmModuleId selDet, UInt_t uVal); void SetTriggerMaxNumber(ECbmModuleId selDet, Int_t iVal); @@ -171,7 +168,7 @@ public: } /// Control flags - void SetEventOverlapMode(EOverlapMode mode) { fOverMode = mode; } + void SetEventOverlapMode(EOverlapModeRaw mode) { fOverMode = mode; } void SetIgnoreTsOverlap(Bool_t bFlagIn = kTRUE) { fbIgnoreTsOverlap = bFlagIn; } @@ -218,7 +215,7 @@ public: private: /// Internal methods - Bool_t CheckDataAvailable(EventBuilderDetector& det); + Bool_t CheckDataAvailable(RawEventBuilderDetector& det); void InitTs(); void BuildEvents(); @@ -229,10 +226,10 @@ private: void LoopOnSeeds(); void CheckSeed(Double_t dSeedTime, UInt_t uSeedDigiIdx); template<class DigiCheck> - void SearchMatches(Double_t dSeedTime, EventBuilderDetector& detMatch); - void AddDigiToEvent(EventBuilderDetector& det, Int_t uIdx); + void SearchMatches(Double_t dSeedTime, RawEventBuilderDetector& detMatch); + void AddDigiToEvent(RawEventBuilderDetector& det, Int_t uIdx); Bool_t HasTrigger(CbmEvent*); - Bool_t CheckTriggerConditions(CbmEvent* event, EventBuilderDetector& det); + Bool_t CheckTriggerConditions(CbmEvent* event, RawEventBuilderDetector& det); void UpdateTimeWinBoundariesExtrema(); void UpdateWidestTimeWinRange(); @@ -247,17 +244,23 @@ private: Bool_t fbFillHistos {kTRUE}; //! Switch ON/OFF filling of histograms Bool_t fbUseMuchBeamtimeDigi = kTRUE; //! Switch between MUCH digi classes /// Event building mode and detectors selection - EOverlapMode fOverMode {EOverlapMode::AllowOverlap}; - - EventBuilderDetector fRefDet = - EventBuilderDetector(ECbmModuleId::kT0, ECbmDataType::kT0Digi, "T0"); - std::vector<EventBuilderDetector> fvDets = { - EventBuilderDetector(ECbmModuleId::kSts, ECbmDataType::kStsDigi, "kSts"), - EventBuilderDetector(ECbmModuleId::kMuch, ECbmDataType::kMuchDigi, "kMuch"), - EventBuilderDetector(ECbmModuleId::kTrd, ECbmDataType::kTrdDigi, "kTrd"), - EventBuilderDetector(ECbmModuleId::kTof, ECbmDataType::kTofDigi, "kTof"), - EventBuilderDetector(ECbmModuleId::kRich, ECbmDataType::kRichDigi, "kRich"), - EventBuilderDetector(ECbmModuleId::kPsd, ECbmDataType::kPsdDigi, "kPsd")}; + EOverlapModeRaw fOverMode {EOverlapModeRaw::AllowOverlap}; + + RawEventBuilderDetector fRefDet = + RawEventBuilderDetector(ECbmModuleId::kT0, ECbmDataType::kT0Digi, "T0"); + std::vector<RawEventBuilderDetector> fvDets = { + RawEventBuilderDetector(ECbmModuleId::kSts, ECbmDataType::kStsDigi, "kSts"), + RawEventBuilderDetector(ECbmModuleId::kMuch, + ECbmDataType::kMuchDigi, + "kMuch"), + RawEventBuilderDetector(ECbmModuleId::kTrd, ECbmDataType::kTrdDigi, "kTrd"), + RawEventBuilderDetector(ECbmModuleId::kTof, ECbmDataType::kTofDigi, "kTof"), + RawEventBuilderDetector(ECbmModuleId::kRich, + ECbmDataType::kRichDigi, + "kRich"), + RawEventBuilderDetector(ECbmModuleId::kPsd, + ECbmDataType::kPsdDigi, + "kPsd")}; Double_t fdEarliestTimeWinBeg = kdDefaultTimeWinBeg; Double_t fdLatestTimeWinEnd = kdDefaultTimeWinEnd; @@ -327,7 +330,7 @@ private: Double_t fdPrevEvtEndTime = 0.; //! Save previous event last digi time information - ClassDefNV(Cbm2021EventBuilderAlgo, 1); + ClassDefNV(CbmAlgoBuildRawEvents, 1); }; -#endif // CBM2021EVENTBUILDERALGO_H +#endif // CBMALGOBUILDRAWEVENTS_H diff --git a/reco/eventbuilder/digis/Cbm2021EventBuilderTask.cxx b/reco/eventbuilder/digis/CbmTaskBuildRawEvents.cxx similarity index 83% rename from reco/eventbuilder/digis/Cbm2021EventBuilderTask.cxx rename to reco/eventbuilder/digis/CbmTaskBuildRawEvents.cxx index ecd723123f5e8dcc9f568605dfc86b9f513ae556..5b73309a155d70535e54e3cfb321137c5cb4deb2 100644 --- a/reco/eventbuilder/digis/Cbm2021EventBuilderTask.cxx +++ b/reco/eventbuilder/digis/CbmTaskBuildRawEvents.cxx @@ -5,8 +5,8 @@ * GNU Lesser General Public Licence (LGPL) version 3, * * copied verbatim in the file "LICENSE" * ********************************************************************************/ -#include "Cbm2021EventBuilderTask.h" -#include "Cbm2021EventBuilderAlgo.h" +#include "CbmTaskBuildRawEvents.h" +#include "CbmAlgoBuildRawEvents.h" #include "CbmDigiManager.h" #include "CbmEvent.h" @@ -22,22 +22,22 @@ #include <TFile.h> // ---- Default constructor ------------------------------------------- -Cbm2021EventBuilderTask::Cbm2021EventBuilderTask() - : FairTask("Cbm2021EventBuilderTask") { +CbmTaskBuildRawEvents::CbmTaskBuildRawEvents() + : FairTask("CbmTaskBuildRawEvents") { /// Create Algo. To be made generic/switchable when more event building algo are available! - fpAlgo = new Cbm2021EventBuilderAlgo(); + fpAlgo = new CbmAlgoBuildRawEvents(); } // ---- Destructor ---------------------------------------------------- -Cbm2021EventBuilderTask::~Cbm2021EventBuilderTask() {} +CbmTaskBuildRawEvents::~CbmTaskBuildRawEvents() {} // ---- Initialisation ---------------------------------------------- -void Cbm2021EventBuilderTask::SetParContainers() { +void CbmTaskBuildRawEvents::SetParContainers() { /// Nothing to do } // ---- Init ---------------------------------------------------------- -InitStatus Cbm2021EventBuilderTask::Init() { +InitStatus CbmTaskBuildRawEvents::Init() { /// Get a handle from the IO manager FairRootManager* ioman = FairRootManager::Instance(); @@ -120,11 +120,11 @@ InitStatus Cbm2021EventBuilderTask::Init() { } // ---- ReInit ------------------------------------------------------- -InitStatus Cbm2021EventBuilderTask::ReInit() { return kSUCCESS; } +InitStatus CbmTaskBuildRawEvents::ReInit() { return kSUCCESS; } // ---- Exec ---------------------------------------------------------- -void Cbm2021EventBuilderTask::Exec(Option_t* /*option*/) { - LOG(debug2) << "Cbm2021EventBuilderTask::Exec => Starting sequence"; +void CbmTaskBuildRawEvents::Exec(Option_t* /*option*/) { + LOG(debug2) << "CbmTaskBuildRawEvents::Exec => Starting sequence"; //Read STS digis if (fDigiMan->IsPresent(ECbmModuleId::kSts)) { @@ -215,12 +215,12 @@ void Cbm2021EventBuilderTask::Exec(Option_t* /*option*/) { /// Save the resulting vector of events in TClonesArray FillOutput(); - LOG(debug2) << "Cbm2021EventBuilderTask::Exec => Done"; + LOG(debug2) << "CbmTaskBuildRawEvents::Exec => Done"; } // ---- Finish -------------------------------------------------------- -void Cbm2021EventBuilderTask::Finish() { +void CbmTaskBuildRawEvents::Finish() { if (fbFillHistos) { SaveHistos(); } // if( fbFillHistos ) /// Call Algo finish method @@ -228,7 +228,7 @@ void Cbm2021EventBuilderTask::Finish() { } //---------------------------------------------------------------------- -void Cbm2021EventBuilderTask::FillOutput() { +void CbmTaskBuildRawEvents::FillOutput() { /// Clear TClonesArray before usage. fEvents->Delete(); @@ -249,7 +249,7 @@ void Cbm2021EventBuilderTask::FillOutput() { fpAlgo->ClearEventVector(); } //---------------------------------------------------------------------- -void Cbm2021EventBuilderTask::SaveHistos() { +void CbmTaskBuildRawEvents::SaveHistos() { /// Obtain vector of pointers on each histo from the algo (+ optionally desired folder) std::vector<std::pair<TNamed*, std::string>> vHistos = fpAlgo->GetHistoVector(); @@ -281,59 +281,59 @@ void Cbm2021EventBuilderTask::SaveHistos() { histoFile->Close(); } //---------------------------------------------------------------------- -void Cbm2021EventBuilderTask::SetFillHistos(Bool_t bFlag) { +void CbmTaskBuildRawEvents::SetFillHistos(Bool_t bFlag) { fbFillHistos = bFlag; if (nullptr != fpAlgo) fpAlgo->SetFillHistos(fbFillHistos); } -void Cbm2021EventBuilderTask::SetOutFilename(TString sNameIn) { +void CbmTaskBuildRawEvents::SetOutFilename(TString sNameIn) { fsOutFileName = sNameIn; } -void Cbm2021EventBuilderTask::SetReferenceDetector( - EventBuilderDetector refDet) { +void CbmTaskBuildRawEvents::SetReferenceDetector( + RawEventBuilderDetector refDet) { if (nullptr != fpAlgo) fpAlgo->SetReferenceDetector(refDet); } -void Cbm2021EventBuilderTask::AddDetector(EventBuilderDetector selDet) { +void CbmTaskBuildRawEvents::AddDetector(RawEventBuilderDetector selDet) { if (nullptr != fpAlgo) fpAlgo->AddDetector(selDet); } -void Cbm2021EventBuilderTask::RemoveDetector(EventBuilderDetector selDet) { +void CbmTaskBuildRawEvents::RemoveDetector(RawEventBuilderDetector selDet) { if (nullptr != fpAlgo) fpAlgo->RemoveDetector(selDet); } -void Cbm2021EventBuilderTask::SetTriggerMinNumber(ECbmModuleId selDet, - UInt_t uVal) { +void CbmTaskBuildRawEvents::SetTriggerMinNumber(ECbmModuleId selDet, + UInt_t uVal) { if (nullptr != fpAlgo) fpAlgo->SetTriggerMinNumber(selDet, uVal); } -void Cbm2021EventBuilderTask::SetTriggerMaxNumber(ECbmModuleId selDet, - Int_t iVal) { +void CbmTaskBuildRawEvents::SetTriggerMaxNumber(ECbmModuleId selDet, + Int_t iVal) { if (nullptr != fpAlgo) fpAlgo->SetTriggerMaxNumber(selDet, iVal); } -void Cbm2021EventBuilderTask::SetTriggerWindow(ECbmModuleId det, - Double_t dWinBeg, - Double_t dWinEnd) { +void CbmTaskBuildRawEvents::SetTriggerWindow(ECbmModuleId det, + Double_t dWinBeg, + Double_t dWinEnd) { if (nullptr != fpAlgo) fpAlgo->SetTriggerWindow(det, dWinBeg, dWinEnd); } -void Cbm2021EventBuilderTask::SetTsParameters(Double_t dTsStartTime, - Double_t dTsLength, - Double_t dTsOverLength) { +void CbmTaskBuildRawEvents::SetTsParameters(Double_t dTsStartTime, + Double_t dTsLength, + Double_t dTsOverLength) { if (nullptr != fpAlgo) fpAlgo->SetTsParameters(dTsStartTime, dTsLength, dTsOverLength); } -void Cbm2021EventBuilderTask::SetEventOverlapMode(EOverlapMode mode) { +void CbmTaskBuildRawEvents::SetEventOverlapMode(EOverlapModeRaw mode) { if (nullptr != fpAlgo) fpAlgo->SetEventOverlapMode(mode); } -void Cbm2021EventBuilderTask::SetIgnoreTsOverlap(Bool_t bFlagIn) { +void CbmTaskBuildRawEvents::SetIgnoreTsOverlap(Bool_t bFlagIn) { if (nullptr != fpAlgo) fpAlgo->SetIgnoreTsOverlap(bFlagIn); } -void Cbm2021EventBuilderTask::ChangeMuchBeamtimeDigiFlag(Bool_t bFlagIn) { +void CbmTaskBuildRawEvents::ChangeMuchBeamtimeDigiFlag(Bool_t bFlagIn) { if (nullptr != fpAlgo) fpAlgo->ChangeMuchBeamtimeDigiFlag(bFlagIn); fbUseMuchBeamtimeDigi = bFlagIn; } //---------------------------------------------------------------------- -ClassImp(Cbm2021EventBuilderTask) +ClassImp(CbmTaskBuildRawEvents) diff --git a/reco/eventbuilder/digis/Cbm2021EventBuilderTask.h b/reco/eventbuilder/digis/CbmTaskBuildRawEvents.h similarity index 77% rename from reco/eventbuilder/digis/Cbm2021EventBuilderTask.h rename to reco/eventbuilder/digis/CbmTaskBuildRawEvents.h index 1f5ced7c2b24a189044c07ae448976f971fb6db7..78f29d270ba8f57edb2c494bfebcf745ecd20371 100644 --- a/reco/eventbuilder/digis/Cbm2021EventBuilderTask.h +++ b/reco/eventbuilder/digis/CbmTaskBuildRawEvents.h @@ -5,11 +5,8 @@ * GNU Lesser General Public Licence (LGPL) version 3, * * copied verbatim in the file "LICENSE" * ********************************************************************************/ -#ifndef CBMM2021EVENTBUILDERTASK_H -#define CBMM2021EVENTBUILDERTASK_H - -// CBM headers -#include "../../fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.h" // for EOverlapMode and EventBuilderDetector +#ifndef CBMTASKBUILDRAWEVENTS_H +#define CBMTASKBUILDRAWEVENTS_H /// FAIRROOT headers #include "FairTask.h" @@ -32,23 +29,26 @@ #include <vector> class CbmDigiManager; -class Cbm2021EventBuilderAlgo; +class CbmAlgoBuildRawEvents; +class RawEventBuilderDetector; class TClonesArray; -class Cbm2021EventBuilderTask : public FairTask { +enum class EOverlapModeRaw; + +class CbmTaskBuildRawEvents : public FairTask { public: /** Default constructor **/ - Cbm2021EventBuilderTask(); + CbmTaskBuildRawEvents(); - Cbm2021EventBuilderTask(const Cbm2021EventBuilderTask&) = delete; - Cbm2021EventBuilderTask operator=(const Cbm2021EventBuilderTask&) = delete; + CbmTaskBuildRawEvents(const CbmTaskBuildRawEvents&) = delete; + CbmTaskBuildRawEvents operator=(const CbmTaskBuildRawEvents&) = delete; /** Constructor with parameters (Optional) **/ - // Cbm2021EventBuilderTask(Int_t verbose); + // CbmTaskBuildRawEvents(Int_t verbose); /** Destructor **/ - ~Cbm2021EventBuilderTask(); + ~CbmTaskBuildRawEvents(); /** Initiliazation of task at the beginning of a run **/ @@ -70,9 +70,9 @@ public: void SetFillHistos(Bool_t bFlag = kTRUE); void SetOutFilename(TString sNameIn); - void SetReferenceDetector(EventBuilderDetector refDet); - void AddDetector(EventBuilderDetector selDet); - void RemoveDetector(EventBuilderDetector selDet); + void SetReferenceDetector(RawEventBuilderDetector refDet); + void AddDetector(RawEventBuilderDetector selDet); + void RemoveDetector(RawEventBuilderDetector selDet); void SetTriggerMinNumber(ECbmModuleId selDet, UInt_t uVal); void SetTriggerMaxNumber(ECbmModuleId selDet, Int_t iVal); @@ -83,7 +83,7 @@ public: Double_t dTsLength, Double_t dTsOverLength); - void SetEventOverlapMode(EOverlapMode mode); + void SetEventOverlapMode(EOverlapModeRaw mode); void SetIgnoreTsOverlap(Bool_t bFlagIn); void ChangeMuchBeamtimeDigiFlag(Bool_t bFlagIn = kFALSE); @@ -103,7 +103,7 @@ private: Bool_t fbUseMuchBeamtimeDigi = kTRUE; //! Switch between MUCH digi classes - Cbm2021EventBuilderAlgo* fpAlgo = nullptr; + CbmAlgoBuildRawEvents* fpAlgo = nullptr; TClonesArray* fEvents = nullptr; //! output container of CbmEvents @@ -112,7 +112,7 @@ private: /** Name of the histogram output file **/ TString fsOutFileName {"data/HistosEvtWin.root"}; - ClassDef(Cbm2021EventBuilderTask, 1); + ClassDef(CbmTaskBuildRawEvents, 1); }; -#endif // CBMM2021EVENTBUILDERTASK_H +#endif // CBMTASKBUILDRAWEVENTS_H