diff --git a/reco/eventbuilder/digis/CbmSeedFinderQa.cxx b/reco/eventbuilder/digis/CbmSeedFinderQa.cxx index eabe9e48fd4ff1df9ffb7aa3eecc50d7cac8b151..62db95c0e18cf7d3123b27a6e9474127e67ead93 100644 --- a/reco/eventbuilder/digis/CbmSeedFinderQa.cxx +++ b/reco/eventbuilder/digis/CbmSeedFinderQa.cxx @@ -4,6 +4,7 @@ #include "CbmSeedFinderQa.h" +#include "CbmMCEventList.h" #include "CbmQaCanvas.h" #include "FairRootManager.h" @@ -28,6 +29,7 @@ CbmSeedFinderQa::CbmSeedFinderQa() : fOutFolder("SeedFinderQA", "Seed finder QA" fhCorrectVsFoundNoNoise = new TH2I("fhCorrectVsFoundNoNoise", "Correct digis [pct] vs. Found digis [pct], no noise; Correct; Found ", 110, -5., 105., 110, -5., 105.); + fhTimeOffset = new TH1F("fhTimeOffset", "tSeed - tMCEvent [ns]", 40, -10, 10); histFolder->Add(fhCorrectDigiRatio); histFolder->Add(fhCorrectDigiRatioNoNoise); @@ -35,6 +37,7 @@ CbmSeedFinderQa::CbmSeedFinderQa() : fOutFolder("SeedFinderQA", "Seed finder QA" histFolder->Add(fhFoundDigiRatio); histFolder->Add(fhCorrectVsFound); histFolder->Add(fhCorrectVsFoundNoNoise); + histFolder->Add(fhTimeOffset); fCanv = new CbmQaCanvas("cSummary", "", 3 * 400, 2 * 400); fCanv->Divide2D(6); @@ -49,6 +52,7 @@ CbmSeedFinderQa::~CbmSeedFinderQa() delete fhFoundDigiRatio; delete fhCorrectVsFound; delete fhCorrectVsFoundNoNoise; + delete fhTimeOffset; delete fCanv; } @@ -131,6 +135,13 @@ void CbmSeedFinderQa::FillQaInfo(const int32_t WinStart, const int32_t WinEnd, c void CbmSeedFinderQa::FillHistos() { + if (!FairRootManager::Instance() || !FairRootManager::Instance()->GetObject("MCEventList.")) { + LOG(error) << "No MC event list found"; + return; + } + CbmMCEventList* eventList = (CbmMCEventList*) FairRootManager::Instance()->GetObject("MCEventList."); + //eventList->Print(); + for (uint32_t iEvent = 0; iEvent < fvEventMatches.size(); iEvent++) { const int32_t digiCount = fvFullDigiCount.at(iEvent); const int32_t noiseCount = fvNoiseDigiCount.at(iEvent); @@ -144,6 +155,14 @@ void CbmSeedFinderQa::FillHistos() fhFoundDigiRatio->Fill(foundDigisPercent); fhCorrectVsFound->Fill(correctDigisPercent, foundDigisPercent); fhCorrectVsFoundNoNoise->Fill(correctDigisPercentNoNoise, foundDigisPercent); + + const CbmMatch* match = &(fvEventMatches.at(iEvent)); + const CbmLink& link = match->GetMatchedLink(); + + if (link.GetEntry() != -1) { + const double timeDiff = fvSeedTimesFull.at(iEvent) - eventList->GetEventTime(link.GetEntry(), link.GetFile()); + fhTimeOffset->Fill(timeDiff); + } } } diff --git a/reco/eventbuilder/digis/CbmSeedFinderQa.h b/reco/eventbuilder/digis/CbmSeedFinderQa.h index 1bb924d9836105f35c52eeaf34aa9fc1d02c0bcf..b2d1729a5b89c077ce1dbd03b777faedeafdb3f8 100644 --- a/reco/eventbuilder/digis/CbmSeedFinderQa.h +++ b/reco/eventbuilder/digis/CbmSeedFinderQa.h @@ -80,8 +80,9 @@ private: TH1F* fhCorrectDigiRatioNoNoise = nullptr; /// correct digis per event, disregarding noise TH1F* fhNoiseDigiRatio = nullptr; /// noise digis per event TH1F* fhFoundDigiRatio = nullptr; /// digis found per event - TH2I* fhCorrectVsFound = nullptr; /// correct digis per event vs found digis per event - TH2I* fhCorrectVsFoundNoNoise = nullptr; /// correct digis per event vs found digis per event, disregarding noise + TH2I* fhCorrectVsFound = nullptr; /// correct digis per event vs found digis per event + TH2I* fhCorrectVsFoundNoNoise = nullptr; /// correct digis per event vs found digis per event, disregarding noise + TH1F* fhTimeOffset = nullptr; /// difference between true event time and seed CbmQaCanvas* fCanv; ///summary canvas diff --git a/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.h b/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.h index 6bcc7484cfd577a70a66a6943a0076f9932bdec4..06e55390e0e8bf41e28d7fb5304419449b2f6c4d 100644 --- a/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.h +++ b/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.h @@ -21,6 +21,7 @@ #ifndef CbmSeedFinderSlidingWindow_h #define CbmSeedFinderSlidingWindow_h +#include <cstddef> #include <cstdint> #include <vector>