diff --git a/reco/eventbuilder/digis/CbmBuildEventsQA.cxx b/reco/eventbuilder/digis/CbmBuildEventsQA.cxx index 5e2831ee4d7d164d8e43f67d878eda7e31e7fbd0..9c3457dec1685da8d3e4e1f74b5845580a531542 100644 --- a/reco/eventbuilder/digis/CbmBuildEventsQA.cxx +++ b/reco/eventbuilder/digis/CbmBuildEventsQA.cxx @@ -9,6 +9,7 @@ #include "CbmEvent.h" #include "CbmLink.h" #include "CbmMatch.h" +#include "CbmModuleList.h" #include "CbmStsDigi.h" #include "FairLogger.h" #include "FairRootManager.h" @@ -124,17 +125,19 @@ InitStatus CbmBuildEventsQA::Init() { fDigiMan = CbmDigiManager::Instance(); fDigiMan->Init(); - //Init STS digis - if (fDigiMan->IsPresent(ECbmModuleId::kSts)) { - LOG(info) << "CbmBuildEventsQA(): Found STS digi input."; - } else { - LOG(fatal) << "CbmBuildEventsQA(): No STS digi input."; + // --- Check input data + for (ECbmModuleId system = ECbmModuleId::kMvd; + system < ECbmModuleId::kNofSystems; + ++system) { + if (fDigiMan->IsMatchPresent(system)) { + LOG(info) << GetName() << ": Found match branch for " + << CbmModuleList::GetModuleNameCaps(system); + fSystems.push_back(system); + } } - - if (fDigiMan->IsMatchPresent(ECbmModuleId::kSts)) { - LOG(info) << "CbmBuildEventsQA(): Found STS match branch."; - } else { - LOG(fatal) << "CbmBuildEventsQA(): No STS match branch."; + if (fSystems.empty()) { + LOG(fatal) << GetName() << ": No match branch found!"; + return kFATAL; } return kSUCCESS; @@ -166,12 +169,13 @@ void CbmBuildEventsQA::MatchEvent(CbmEvent* event) { // << ", STS digis : " << event->GetNofData(ECbmDataType::kStsDigi); // --- Loop over digis - for (Int_t iDigi = 0; iDigi < event->GetNofData(ECbmDataType::kStsDigi); + for (Int_t iDigi = 0; + iDigi < event->GetNofData(GetDigiType(ECbmModuleId::kSts)); iDigi++) { - Int_t index = event->GetIndex(ECbmDataType::kStsDigi, iDigi); - const CbmStsDigi* digi = fDigiMan->Get<CbmStsDigi>(index); + Int_t index = event->GetIndex(GetDigiType(ECbmModuleId::kSts), iDigi); + //const CbmStsDigi* digi = fDigiMan->Get<CbmStsDigi>(index); not needed ? const CbmMatch* digiMatch = fDigiMan->GetMatch(ECbmModuleId::kSts, index); - assert(digi); + //assert(digi); assert(digiMatch); // --- Update event match with digi links @@ -191,4 +195,20 @@ void CbmBuildEventsQA::MatchEvent(CbmEvent* event) { // =========================================================================== +// ===== Get digi type ===================================================== +ECbmDataType CbmBuildEventsQA::GetDigiType(ECbmModuleId system) { + switch (system) { + case ECbmModuleId::kMvd: return ECbmDataType::kMvdDigi; + case ECbmModuleId::kSts: return ECbmDataType::kStsDigi; + case ECbmModuleId::kRich: return ECbmDataType::kRichDigi; + case ECbmModuleId::kMuch: return ECbmDataType::kMuchDigi; + case ECbmModuleId::kTrd: return ECbmDataType::kTrdDigi; + case ECbmModuleId::kTof: return ECbmDataType::kTofDigi; + case ECbmModuleId::kPsd: return ECbmDataType::kPsdDigi; + default: return ECbmDataType::kUnknown; + } +} +// =========================================================================== + + ClassImp(CbmBuildEventsQA) diff --git a/reco/eventbuilder/digis/CbmBuildEventsQA.h b/reco/eventbuilder/digis/CbmBuildEventsQA.h index d13212c58af15022b6ea85b7683d2f7c31da2546..346d1afaa1a797104b4a13a85fe25de923664acf 100644 --- a/reco/eventbuilder/digis/CbmBuildEventsQA.h +++ b/reco/eventbuilder/digis/CbmBuildEventsQA.h @@ -5,7 +5,7 @@ #ifndef CBMBUILDEVENTSQA_H_ #define CBMBUILDEVENTSQA_H 1 - +#include "CbmDefs.h" #include <FairTask.h> class TClonesArray; @@ -36,9 +36,10 @@ public: private: - CbmDigiManager* fDigiMan = nullptr; //! - TClonesArray* fEvents; ///< Input array (class CbmEvent) - Int_t fNofEntries; ///< Number of processed entries + CbmDigiManager* fDigiMan = nullptr; //! + std::vector<ECbmModuleId> fSystems {}; // List of detector systems + TClonesArray* fEvents; ///< Input array (class CbmEvent) + Int_t fNofEntries = 0; ///< Number of processed entries /** Task initialisation **/ virtual InitStatus Init(); @@ -49,6 +50,8 @@ private: **/ void MatchEvent(CbmEvent* event); + ECbmDataType GetDigiType(ECbmModuleId system); + CbmBuildEventsQA(const CbmBuildEventsQA&); CbmBuildEventsQA& operator=(const CbmBuildEventsQA&);