diff --git a/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx index 6d052c64dc234094aca7954b2c24cc0ecaa449cb..dfbe910280f1eb50b071252370d7c4908f4c7bd3 100644 --- a/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx +++ b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx @@ -65,6 +65,20 @@ Bool_t CbmAlgoBuildRawEvents::InitAlgo() return kTRUE; } +void CbmAlgoBuildRawEvents::Finish() { LOG(info) << "Total errors: " << fuErrors; } + +void CbmAlgoBuildRawEvents::ClearEventVector() +{ + /// Need to delete the object the pointer points to first + int counter = 0; + for (CbmEvent* event : fEventVector) { + LOG(debug) << "Event " << counter << " has " << event->GetNofData() << " digis"; + delete event; + counter++; + } + fEventVector.clear(); +} + void CbmAlgoBuildRawEvents::ProcessTs() { LOG_IF(info, fuNrTs % 1000 == 0) << "Begin of TS " << fuNrTs; @@ -89,67 +103,6 @@ void CbmAlgoBuildRawEvents::ProcessTs() fuNrTs++; } -void CbmAlgoBuildRawEvents::ClearEventVector() -{ - /// Need to delete the object the pointer points to first - int counter = 0; - for (CbmEvent* event : fEventVector) { - LOG(debug) << "Event " << counter << " has " << event->GetNofData() << " digis"; - delete event; - counter++; - } - fEventVector.clear(); -} - -void CbmAlgoBuildRawEvents::Finish() { LOG(info) << "Total errors: " << fuErrors; } - -Bool_t CbmAlgoBuildRawEvents::CheckDataAvailable(RawEventBuilderDetector& det) -{ - if (ECbmModuleId::kT0 == det.detId) { - if (!fT0DigiVec) { - LOG(info) << "No T0 digi input found."; - return kFALSE; - } - } - else if (ECbmModuleId::kSts == det.detId) { - if (!fStsDigis) { - LOG(info) << "No " << det.sName << " digi input found."; - return kFALSE; - } - } - else if (ECbmModuleId::kMuch == det.detId) { - if (!fMuchDigis && !fMuchBeamTimeDigis) { - LOG(info) << "No " << det.sName << " digi input found."; - return kFALSE; - } - } - else if (ECbmModuleId::kTrd == det.detId) { - if (!fTrdDigis) { - LOG(info) << "No " << det.sName << " digi input found."; - return kFALSE; - } - } - else if (ECbmModuleId::kTof == det.detId) { - if (!fTofDigis) { - LOG(info) << "No " << det.sName << " digi input found."; - return kFALSE; - } - } - else if (ECbmModuleId::kRich == det.detId) { - if (!fRichDigis) { - LOG(info) << "No " << det.sName << " digi input found."; - return kFALSE; - } - } - else if (ECbmModuleId::kPsd == det.detId) { - if (!fPsdDigis) { - LOG(info) << "No " << det.sName << " digi input found."; - return kFALSE; - } - } - return kTRUE; -} - void CbmAlgoBuildRawEvents::InitTs() { /// Reset TS based variables (analysis per TS = no building over the border) @@ -244,112 +197,6 @@ void CbmAlgoBuildRawEvents::BuildEvents() } // switch( *det ) } -UInt_t CbmAlgoBuildRawEvents::GetNofDigis(ECbmModuleId detId) -{ - switch (detId) { - case ECbmModuleId::kSts: { - return fStsDigis->size(); - } - case ECbmModuleId::kMuch: { - if (fbUseMuchBeamtimeDigi) { return fMuchBeamTimeDigis->size(); } - else { - return fMuchDigis->size(); - } - } - case ECbmModuleId::kTrd: { - return fTrdDigis->size(); - } - case ECbmModuleId::kTof: { - return fTofDigis->size(); - } - case ECbmModuleId::kRich: { - return fRichDigis->size(); - } - case ECbmModuleId::kPsd: { - return fPsdDigis->size(); - } - case ECbmModuleId::kT0: { - return fT0DigiVec->size(); //what to do here? Not in digi manager. - } - default: { - LOG(fatal) << "CbmAlgoBuildRawEvents::GetNofDigis => " - << "Trying to get digi number with unsupported detector."; - return -1; - } - } -} - -bool CbmAlgoBuildRawEvents::DetIsPresent(ECbmModuleId detId) -{ - switch (detId) { - case ECbmModuleId::kSts: { - return fStsDigis != nullptr; - } - case ECbmModuleId::kMuch: { - if (fbUseMuchBeamtimeDigi) { return fMuchBeamTimeDigis != nullptr; } - else { - return fMuchDigis != nullptr; - } - } - case ECbmModuleId::kTrd: { - return fTrdDigis != nullptr; - } - case ECbmModuleId::kTof: { - return fTofDigis != nullptr; - } - case ECbmModuleId::kRich: { - return fRichDigis != nullptr; - } - case ECbmModuleId::kPsd: { - return fPsdDigis != nullptr; - } - case ECbmModuleId::kT0: { - return fT0DigiVec != nullptr; //what to do here? Not in digi manager. - } - default: { - LOG(fatal) << "CbmAlgoBuildRawEvents::GetNofDigis => " - << "Trying to get digi number with unsupported detector."; - return -1; - } - } -} - -template<> -const CbmStsDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) -{ - return &((*fStsDigis)[uDigi]); -} -template<> -const CbmMuchBeamTimeDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) -{ - return &((*fMuchBeamTimeDigis)[uDigi]); -} -template<> -const CbmMuchDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) -{ - return &((*fMuchDigis)[uDigi]); -} -template<> -const CbmTrdDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) -{ - return &((*fTrdDigis)[uDigi]); -} -template<> -const CbmTofDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) -{ - return &((*fTofDigis)[uDigi]); -} -template<> -const CbmRichDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) -{ - return &((*fRichDigis)[uDigi]); -} -template<> -const CbmPsdDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) -{ - return &((*fPsdDigis)[uDigi]); -} - template<class DigiSeed> void CbmAlgoBuildRawEvents::LoopOnSeeds() { @@ -551,6 +398,11 @@ void CbmAlgoBuildRawEvents::SearchMatches(Double_t dSeedTime, RawEventBuilderDet detMatch.fuEndIndex = uLocalIndexEnd; } +void CbmAlgoBuildRawEvents::AddDigiToEvent(RawEventBuilderDetector& det, Int_t _entry) +{ + fCurrentEvent->AddData(det.dataType, _entry); +} + void CbmAlgoBuildRawEvents::CheckTriggerCondition(Double_t dSeedTime) { /// Check if event is filling trigger conditions and clear it if not @@ -575,11 +427,6 @@ void CbmAlgoBuildRawEvents::CheckTriggerCondition(Double_t dSeedTime) } } -void CbmAlgoBuildRawEvents::AddDigiToEvent(RawEventBuilderDetector& det, Int_t _entry) -{ - fCurrentEvent->AddData(det.dataType, _entry); -} - Bool_t CbmAlgoBuildRawEvents::HasTrigger(CbmEvent* event) { /// Check first reference detector @@ -633,6 +480,162 @@ Bool_t CbmAlgoBuildRawEvents::CheckTriggerConditions(CbmEvent* event, RawEventBu return kTRUE; } } + +//---------------------------------------------------------------------- + +Bool_t CbmAlgoBuildRawEvents::CheckDataAvailable(RawEventBuilderDetector& det) +{ + if (ECbmModuleId::kT0 == det.detId) { + if (!fT0DigiVec) { + LOG(info) << "No T0 digi input found."; + return kFALSE; + } + } + else if (ECbmModuleId::kSts == det.detId) { + if (!fStsDigis) { + LOG(info) << "No " << det.sName << " digi input found."; + return kFALSE; + } + } + else if (ECbmModuleId::kMuch == det.detId) { + if (!fMuchDigis && !fMuchBeamTimeDigis) { + LOG(info) << "No " << det.sName << " digi input found."; + return kFALSE; + } + } + else if (ECbmModuleId::kTrd == det.detId) { + if (!fTrdDigis) { + LOG(info) << "No " << det.sName << " digi input found."; + return kFALSE; + } + } + else if (ECbmModuleId::kTof == det.detId) { + if (!fTofDigis) { + LOG(info) << "No " << det.sName << " digi input found."; + return kFALSE; + } + } + else if (ECbmModuleId::kRich == det.detId) { + if (!fRichDigis) { + LOG(info) << "No " << det.sName << " digi input found."; + return kFALSE; + } + } + else if (ECbmModuleId::kPsd == det.detId) { + if (!fPsdDigis) { + LOG(info) << "No " << det.sName << " digi input found."; + return kFALSE; + } + } + return kTRUE; +} + +UInt_t CbmAlgoBuildRawEvents::GetNofDigis(ECbmModuleId detId) +{ + switch (detId) { + case ECbmModuleId::kSts: { + return fStsDigis->size(); + } + case ECbmModuleId::kMuch: { + if (fbUseMuchBeamtimeDigi) { return fMuchBeamTimeDigis->size(); } + else { + return fMuchDigis->size(); + } + } + case ECbmModuleId::kTrd: { + return fTrdDigis->size(); + } + case ECbmModuleId::kTof: { + return fTofDigis->size(); + } + case ECbmModuleId::kRich: { + return fRichDigis->size(); + } + case ECbmModuleId::kPsd: { + return fPsdDigis->size(); + } + case ECbmModuleId::kT0: { + return fT0DigiVec->size(); //what to do here? Not in digi manager. + } + default: { + LOG(fatal) << "CbmAlgoBuildRawEvents::GetNofDigis => " + << "Trying to get digi number with unsupported detector."; + return -1; + } + } +} + +bool CbmAlgoBuildRawEvents::DetIsPresent(ECbmModuleId detId) +{ + switch (detId) { + case ECbmModuleId::kSts: { + return fStsDigis != nullptr; + } + case ECbmModuleId::kMuch: { + if (fbUseMuchBeamtimeDigi) { return fMuchBeamTimeDigis != nullptr; } + else { + return fMuchDigis != nullptr; + } + } + case ECbmModuleId::kTrd: { + return fTrdDigis != nullptr; + } + case ECbmModuleId::kTof: { + return fTofDigis != nullptr; + } + case ECbmModuleId::kRich: { + return fRichDigis != nullptr; + } + case ECbmModuleId::kPsd: { + return fPsdDigis != nullptr; + } + case ECbmModuleId::kT0: { + return fT0DigiVec != nullptr; //what to do here? Not in digi manager. + } + default: { + LOG(fatal) << "CbmAlgoBuildRawEvents::GetNofDigis => " + << "Trying to get digi number with unsupported detector."; + return -1; + } + } +} + +template<> +const CbmStsDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) +{ + return &((*fStsDigis)[uDigi]); +} +template<> +const CbmMuchBeamTimeDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) +{ + return &((*fMuchBeamTimeDigis)[uDigi]); +} +template<> +const CbmMuchDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) +{ + return &((*fMuchDigis)[uDigi]); +} +template<> +const CbmTrdDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) +{ + return &((*fTrdDigis)[uDigi]); +} +template<> +const CbmTofDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) +{ + return &((*fTofDigis)[uDigi]); +} +template<> +const CbmRichDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) +{ + return &((*fRichDigis)[uDigi]); +} +template<> +const CbmPsdDigi* CbmAlgoBuildRawEvents::GetDigi(UInt_t uDigi) +{ + return &((*fPsdDigis)[uDigi]); +} + //---------------------------------------------------------------------- void CbmAlgoBuildRawEvents::CreateHistograms() {