Skip to content
Snippets Groups Projects
Commit b751ad03 authored by Dominik Smith's avatar Dominik Smith
Browse files

CbmSeedFinderQa: Added histogram for difference between true event time and...

CbmSeedFinderQa: Added histogram for difference between true event time and seed time for one-to-one matched cases.
parent d6fa2131
No related branches found
No related tags found
1 merge request!741SeedFinderQaUpgrade
...@@ -20,13 +20,13 @@ CbmSeedFinderQa::CbmSeedFinderQa() : fOutFolder("SeedFinderQA", "Seed finder QA" ...@@ -20,13 +20,13 @@ CbmSeedFinderQa::CbmSeedFinderQa() : fOutFolder("SeedFinderQA", "Seed finder QA"
// --- Init histograms // --- Init histograms
fhLinkedMCEventsPerTrigger = fhLinkedMCEventsPerTrigger =
new TH1F("fhLinkedMCEventsPerTrigger", "Linked MC events per trigger (=0 for pure noise)", 5, -1, 4); new TH1F("fhLinkedMCEventsPerTrigger", "Linked MC events per trigger (=0 for pure noise)", 5, -1.5, 3.5);
fhLinkedMCEventsPerTrigger->SetCanExtend(TH1::kAllAxes); fhLinkedMCEventsPerTrigger->SetCanExtend(TH1::kAllAxes);
fhLinkedTriggersPerMCEvent = new TH1F("fhLinkedTriggersPerMCEvent", "Linked triggers per MC event", 5, -1, 4); fhLinkedTriggersPerMCEvent = new TH1F("fhLinkedTriggersPerMCEvent", "Linked triggers per MC event", 5, -1.5, 3.5);
fhLinkedTriggersPerMCEvent->SetCanExtend(TH1::kAllAxes); fhLinkedTriggersPerMCEvent->SetCanExtend(TH1::kAllAxes);
fhMatchedTriggersPerMCEvent = new TH1F("fhMatchedTriggersPerMCEvent", "Matched triggers per MC event", 5, -1, 4); fhMatchedTriggersPerMCEvent = new TH1F("fhMatchedTriggersPerMCEvent", "Matched triggers per MC event", 5, -1.5, 3.5);
fhMatchedTriggersPerMCEvent->SetCanExtend(TH1::kAllAxes); fhMatchedTriggersPerMCEvent->SetCanExtend(TH1::kAllAxes);
fhCorrectDigiRatio = new TH1F("fhCorrectDigiRatio", "Correct digis per seed [pct]", 416, -2, 102); fhCorrectDigiRatio = new TH1F("fhCorrectDigiRatio", "Correct digis per seed [pct]", 416, -2, 102);
...@@ -43,6 +43,9 @@ CbmSeedFinderQa::CbmSeedFinderQa() : fOutFolder("SeedFinderQA", "Seed finder QA" ...@@ -43,6 +43,9 @@ CbmSeedFinderQa::CbmSeedFinderQa() : fOutFolder("SeedFinderQA", "Seed finder QA"
fhTimeOffset = new TH1F("fhTimeOffsetMatched", "tSeed - tMCMatched [ns]", 20, -5, 5); fhTimeOffset = new TH1F("fhTimeOffsetMatched", "tSeed - tMCMatched [ns]", 20, -5, 5);
fhTimeOffset->SetCanExtend(TH1::kAllAxes); fhTimeOffset->SetCanExtend(TH1::kAllAxes);
fhTimeOffsetSingletOnly = new TH1F("fhTimeOffsetSingletOnly", "tSeed - tMCMatched [ns], one-to-one only", 20, -5, 5);
fhTimeOffsetSingletOnly->SetCanExtend(TH1::kAllAxes);
fhTimeOffsetClosest = new TH1F("fhTimeOffsetClosest", "tSeed - tMCClosest [ns]", 20, -5, 5); fhTimeOffsetClosest = new TH1F("fhTimeOffsetClosest", "tSeed - tMCClosest [ns]", 20, -5, 5);
fhTimeOffsetClosest->SetCanExtend(TH1::kAllAxes); fhTimeOffsetClosest->SetCanExtend(TH1::kAllAxes);
...@@ -53,13 +56,14 @@ CbmSeedFinderQa::CbmSeedFinderQa() : fOutFolder("SeedFinderQA", "Seed finder QA" ...@@ -53,13 +56,14 @@ CbmSeedFinderQa::CbmSeedFinderQa() : fOutFolder("SeedFinderQA", "Seed finder QA"
histFolder->Add(fhCorrectVsFound); histFolder->Add(fhCorrectVsFound);
histFolder->Add(fhCorrectVsFoundNoNoise); histFolder->Add(fhCorrectVsFoundNoNoise);
histFolder->Add(fhTimeOffset); histFolder->Add(fhTimeOffset);
histFolder->Add(fhTimeOffsetSingletOnly);
histFolder->Add(fhTimeOffsetClosest); histFolder->Add(fhTimeOffsetClosest);
histFolder->Add(fhLinkedMCEventsPerTrigger); histFolder->Add(fhLinkedMCEventsPerTrigger);
histFolder->Add(fhLinkedTriggersPerMCEvent); histFolder->Add(fhLinkedTriggersPerMCEvent);
histFolder->Add(fhMatchedTriggersPerMCEvent); histFolder->Add(fhMatchedTriggersPerMCEvent);
fCanv = new CbmQaCanvas("cSummary", "", 4 * 400, 3 * 400); fCanv = new CbmQaCanvas("cSummary", "", 4 * 400, 3 * 400);
fCanv->Divide2D(10); fCanv->Divide2D(11);
fOutFolder.Add(fCanv); fOutFolder.Add(fCanv);
} }
...@@ -197,7 +201,6 @@ void CbmSeedFinderQa::FillQaMCInfo() ...@@ -197,7 +201,6 @@ void CbmSeedFinderQa::FillQaMCInfo()
vMatchedTriggersPerMCEvent.resize(nEvents, 0); vMatchedTriggersPerMCEvent.resize(nEvents, 0);
for (uint32_t iSeed = 0; iSeed < fvEventMatchesPerTs.size(); iSeed++) { for (uint32_t iSeed = 0; iSeed < fvEventMatchesPerTs.size(); iSeed++) {
const CbmMatch eventMatch = fvEventMatchesPerTs.at(iSeed); const CbmMatch eventMatch = fvEventMatchesPerTs.at(iSeed);
for (int32_t iLink = 0; iLink < eventMatch.GetNofLinks(); iLink++) { for (int32_t iLink = 0; iLink < eventMatch.GetNofLinks(); iLink++) {
const CbmLink eventLink = eventMatch.GetLink(iLink); const CbmLink eventLink = eventMatch.GetLink(iLink);
...@@ -207,6 +210,16 @@ void CbmSeedFinderQa::FillQaMCInfo() ...@@ -207,6 +210,16 @@ void CbmSeedFinderQa::FillQaMCInfo()
vMatchedTriggersPerMCEvent[fEventList->GetEventIndex(matchedLink)]++; vMatchedTriggersPerMCEvent[fEventList->GetEventIndex(matchedLink)]++;
} }
for (uint32_t iSeed = 0; iSeed < fvEventMatchesPerTs.size(); iSeed++) {
const CbmMatch eventMatch = fvEventMatchesPerTs.at(iSeed);
const CbmLink matchedLink = eventMatch.GetMatchedLink();
if (vMatchedTriggersPerMCEvent[fEventList->GetEventIndex(matchedLink)] == 1) {
const double seedTime = fvSeedTimesPerTs[iSeed];
const double timeDiff = seedTime - fEventList->GetEventTime(matchedLink.GetEntry(), matchedLink.GetFile());
fhTimeOffsetSingletOnly->Fill(timeDiff);
}
}
for (const auto& value : vLinkedTriggersPerMCEvent) { for (const auto& value : vLinkedTriggersPerMCEvent) {
fhLinkedTriggersPerMCEvent->Fill(value); fhLinkedTriggersPerMCEvent->Fill(value);
} }
...@@ -306,15 +319,18 @@ void CbmSeedFinderQa::WriteHistos() ...@@ -306,15 +319,18 @@ void CbmSeedFinderQa::WriteHistos()
fhTimeOffset->DrawCopy("colz", ""); fhTimeOffset->DrawCopy("colz", "");
fCanv->cd(8); fCanv->cd(8);
fhTimeOffsetClosest->DrawCopy("colz", ""); fhTimeOffsetSingletOnly->DrawCopy("colz", "");
fCanv->cd(9); fCanv->cd(9);
fhLinkedMCEventsPerTrigger->DrawCopy("colz", ""); fhTimeOffsetClosest->DrawCopy("colz", "");
fCanv->cd(10); fCanv->cd(10);
fhLinkedTriggersPerMCEvent->DrawCopy("colz", ""); fhLinkedMCEventsPerTrigger->DrawCopy("colz", "");
fCanv->cd(11); fCanv->cd(11);
fhLinkedTriggersPerMCEvent->DrawCopy("colz", "");
fCanv->cd(12);
fhMatchedTriggersPerMCEvent->DrawCopy("colz", ""); fhMatchedTriggersPerMCEvent->DrawCopy("colz", "");
FairSink* sink = FairRootManager::Instance()->GetSink(); FairSink* sink = FairRootManager::Instance()->GetSink();
......
...@@ -106,6 +106,8 @@ private: ...@@ -106,6 +106,8 @@ private:
TH2I* fhCorrectVsFoundNoNoise = nullptr; /// correct digis per event vs found digis per event, disregarding noise TH2I* fhCorrectVsFoundNoNoise = nullptr; /// correct digis per event vs found digis per event, disregarding noise
TH1F* fhTimeOffset = nullptr; /// difference between true event time and seed time TH1F* fhTimeOffset = nullptr; /// difference between true event time and seed time
TH1F* fhTimeOffsetClosest = nullptr; /// difference between seed time and closest MC event time TH1F* fhTimeOffsetClosest = nullptr; /// difference between seed time and closest MC event time
TH1F* fhTimeOffsetSingletOnly =
nullptr; /// difference between true event time and seed time for one-to-one matched cases
CbmQaCanvas* fCanv; ///summary canvas CbmQaCanvas* fCanv; ///summary canvas
......
...@@ -57,6 +57,7 @@ void CbmSeedFinderSlidingWindow::FillSeedTimes(const std::vector<inType>* vIn, c ...@@ -57,6 +57,7 @@ void CbmSeedFinderSlidingWindow::FillSeedTimes(const std::vector<inType>* vIn, c
for (uint32_t i = 0; i < fvSeedTimes->size(); i++) { for (uint32_t i = 0; i < fvSeedTimes->size(); i++) {
fQa->FillQaSeedInfo(i, i, &eventMatches, fvSeedTimes->at(i)); fQa->FillQaSeedInfo(i, i, &eventMatches, fvSeedTimes->at(i));
} }
fQa->FillQaMCInfo();
} }
return; return;
} }
......
...@@ -77,6 +77,9 @@ public: ...@@ -77,6 +77,9 @@ public:
fIdealModeFileId = fileId; fIdealModeFileId = fileId;
} }
/** @brief Is ``ideal mode'' switched on? **/
bool IsIdealMode() { return fbIdealMode; }
/** @brief Returns number of seed times currently stored in buffer. */ /** @brief Returns number of seed times currently stored in buffer. */
size_t GetNofSeeds() { return fvSeedTimes->size(); } size_t GetNofSeeds() { return fvSeedTimes->size(); }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment